Не всегда нужна LLM: Data-to-Text, ETL и 10b.kz
Если на любую задачу хочется ответить «давайте просто прикрутим LLM», этот доклад может быть немного болезненным. Потому что иногда лучший AI-ход — вообще не тащить тяжёлую модель туда, где можно обойтись нормальной архитектурой, Python и здравым смыслом.
Мадияр Хамзанов — Senior AI Engineer / Data Scientist в Caterpillar, ex-Director of Data Science в Forte Bank и сооснователь 10b.kz — показывает, где LLM не нужна и что работает лучше.
В докладе: — как в 10b.kz используют Data-to-Text для генерации инсайтов без тяжёлых LLM — как обрабатывают 100 млн записей на 16 ГБ RAM и не падают по OOM — почему кастомный ETL на Python иногда выигрывает у тяжёлого стека — как Claude Code и Cursor ускоряют продуктовую аналитику и доставку фич — как из сырого API госзакупок вырастили продукт с 1000+ активных пользователей
Видео
Презентация
1 / 22Текст презентации
Слайд 1: Не каждая задача —
Не каждая задача — задача для LLM Как в 10b.kz устроен Python-ETL на сотнях миллионов строк, почему колоночное хранение — ClickHouse, как мы генерим «AI-отчёты» без токенов LLM, и как Claude Code реально ускоряет продуктовую разработку. МАДИЯР ХАМЗАНОВ SENIOR AI ENGINEER · CATERPILLAR СООСНОВАТЕЛЬ · 10B.KZ
Слайд 2: Мадияр Хамзанов
Мадияр Хамзанов Мехмат МГУ, теорвер. 10+ лет в Data Science. 10+ моделей в проде, суммарный эффект ≈ $4.2M. Forte Bank, Director of Data Science — команда 20+ человек. Caterpillar, Senior AI Engineer — индустриальный AI. 10b.kz — вместе с одноклассником Алмасом.
Слайд 3: Мехмат МГУ
Мехмат МГУ Кафедра теории вероятностей и математической статистики. Вся аналитика 10b.kz на квантилях, CV, корреляциях — это прямая практика того, что учил. Там же понял: для 80% задач «модель» — это перцентиль, а не градиентный бустинг. Разбираться в распределениях до сих пор полезнее, чем знать очередной фреймворк.
Слайд 4: МГУ → Forte Bank → Caterpillar → 10b
МГУ → Forte Bank → Caterpillar → 10b Forte Bank · Director of Data Science · Алматы Команда 20+ человек, ML в проде Кредитный скоринг, антифрод, рекомендации. Разошлись с банком: хотел строить продукты на данных, банк предлагал идти в RPA. Caterpillar · Senior AI Engineer · USA Индустриальный AI в бигтехе Телематика, диагностика, предиктивное обслуживание. Масштаб — на три порядка больше банковского. Сооснователь · вдвоём с Алмасом Всё свободное время. Без инвестиций, без команды. Один сервер. $80 в месяц на всё.
Слайд 5: Мы читали рэп
Мы читали рэп Одна школа в Костанае. Тот же состав. С 2009 года. Слева на фото — Алмас. Справа — я. Сейчас он селлер на Kaspi и параллельно делает фронт и дизайн 10b.kz. Я — бэк, данные, ML. Продукт держится на доверии, накопленном за 16 лет. Никаких NDA, никаких «чёткого разделения ответственности».
Слайд 6: Переехал к нему вайбкодить
Переехал к нему вайбкодить Чтобы разогнать старт, приехал из США в Костанай. Поселился в комнате Алмаса. Матрас на полу, три монитора. Закрыли критический кусок за 14 дней вместо 3 месяцев по Zoom'у. Продукт пишется физически рядом. Всё остальное — костыли к этому.
Слайд 7: Алмас — фронт, дизайн,
Алмас — фронт, дизайн, Kaspi Next.js, Tailwind, много дизайна. Рисует экраны на бумаге прежде чем идти в Figma. Параллельно — активный селлер на Kaspi. Знает на практике, что нужно поставщику, которому мы продаём аналитику. Без его фронта 10b.kz был бы очередной аналитической портянкой, которую никто не досматривает до конца.
Слайд 8: Один сервер. $80 / мес.
1000+ активных пользователей. Один сервер. $80 / мес. ЗАЯВКИ УЧАСТНИКОВ ЛОТЫ ОРГАНИЗАЦИЙ СО СКОРИНГОМ СЖАТЫХ В CLICKHOUSE HETZNER · СЕРВЕР + 1 TB RAILWAY · ФРОНТ ДОМЕН, DEEPSEEK, ПРОЧЕЕ МАРКЕТИНГ Бесплатно для пользователя. Данные госзакупок — открытые , продавать переупаковку государственного датасета — не по совести. Монетизация — B2B-API и enterprise.
Слайд 9: Одна машина. Никакого Spark.
Одна машина. Никакого Spark. источники goszakup, samruk, xarid, НБРК, kaspi, mpstats REST + парсеры на requests оркестрация Airflow 2.9 22 DAG'а, cron + soft-fail ETL язык Python 3.12 requests, ThreadPoolExecutor, никаких фреймворков хранилище ClickHouse · 1TB том RAW → STG → DMRT слои метадата PostgreSQL 16 только Airflow state фронт Next.js + Railway второй ClickHouse на HTTPS, dual-write Весь репозиторий — Python-скрипты + SQL-файлы + один config.json. Без dbt, без Kafka, без Airbyte. Скучно, просто, работает.
Слайд 10: Как тянуть большой API без OOM
Как тянуть большой API без OOM Никогда не собираем весь ответ API в память. Стримим батчами прямо в ClickHouse. # Генератор по страницам API + HTTP-писатель в ClickHouse BATCH = 10_000 def writer(ch, batch): ch.insert_json_each_row(batch) # POST /?query=INSERT ... FORMAT JSONEachRow batch = [] for row in api_iter(): # генератор страниц, не list batch.append(flatten(row)) if len(batch) >= BATCH: writer(ch, batch); batch.clear() if batch: writer(ch, batch) ThreadPool 40–60 воркеров Ротация N токенов Exponential backoff 429/5xx ReplacingMergeTree Soft-fail → Telegram Итог: скрипт тянет 100M+ записей с RSS ≈ 500 MB. Памяти — ровно на batch-буфер. Остальное — на диске, колоночно сжато.
Слайд 11: Почему ClickHouse, а не альтернативы
Почему ClickHouse, а не альтернативы Суть колоночности Postgres хранит построчно. AVG(lot_amount) по 30M строк — читает все колонки этих строк. ClickHouse — поколоночно . Тот же запрос читает только lot_amount.bin. На 50 колонках — десятки раз по I/O. Плюс LZ4/ZSTD (63M заявок → 6.8 GB), SIMD, skip-индексы, projections. Сравнение под задачу ИНСТРУМЕНТ ЧТО НЕ ТАК DuckDB embedded, не server Snowflake / BigQuery платят за скан — разорение Postgres OLTP. 30M строк агрегаты — задыхается ClickHouse open-source, обычная VM, 1000+ юзеров
Слайд 12: ОБЪЁМ РАЗУМНЫЙ СТЕК
63M строк — не бигдата ОБЪЁМ РАЗУМНЫЙ СТЕК < 10 GB Pandas / Postgres / SQLite 10 GB – 1 TB ClickHouse / DuckDB на одной машине ← мы здесь 1 – 10 TB ClickHouse cluster / Snowflake / BigQuery 10 TB+ Spark / Trino / Presto Карго-культ «много данных → нужен Spark» выжигает команды и бюджеты там, где хватило бы одной ноды.
Слайд 13: «AI-отчёты» можно делать
«AI-отчёты» можно делать без LLM. Пользователь читает: «премиум-заказчик, топ-20%, закрытых схем 12%, можно участвовать». Ему всё равно, откуда этот текст: из GPT-5 за $0.01 или из concat() в SQL за Во втором случае результат детерминирован, дёшев, аудируем и не галлюцинирует.
Слайд 14: Три шага без единого токена
Три шага без единого токена 1. 1. Выбрать метрики. 5–10 ключевых, которые реально решают задачу. 2. 2. Определить пороги. Знание домена, не ML. score ≥ 80 → «премиум», cv < 0.5 → «стабильно», trend > 0.7 → «рост». 3. 3. Склеить SQL-шаблон. concat() + CASE WHEN. Результат — готовый markdown в колонке. concat( '| Рейтинг | ', toString(score), '/100 | ', CASE WHEN score >= 80 THEN '🏆Премиум (топ-20%)' WHEN score >= 60 THEN '✅Хороший' WHEN score >= 40 THEN '⚠️Средний' ELSE '⚡Сложный' END, ' |' scripts/dmrt/org_scoring.py — 1882 строки SQL, отчёт на 72K организаций за минуты.
Слайд 15: Скоринг 43 / 100
Скоринг 43 / 100 РГП «Больница МЦ УДП РК», Астана. 9 210 лотов за 2 года, 29.5 млрд ₸, средний чек 3.2 млн. Рейтинг 43 собран из 4 квантильных скоров: 17/25 поставщики, 4/25 успешность, 10/25 ЗЦП, 12/25 демпинг. app.10b.kz/share/ eoj0x3iXTq ОТКРЫТЬ LIVE
Слайд 16: Текст, которого не
Текст, которого не писал ни человек, ни LLM Справа — «Анализ демпинга» на той же странице. Таблицы, медианы, CV, распределение по агрессивности — всё из статистики. Один SELECT, ноль токенов, пересчёт на 72K организаций одним запуском ETL. concat() + CASE formatReadableQuantity multiIf для единиц 0 токенов LLM
Слайд 17: «Закладывай скидку
«Закладывай скидку Самый ценный блок отчёта — не цифры, а вывод. «Медианная цена победителей 93.08%. Типичный демпинг 6.9%. Ваша целевая цена = X × 0.93.» Пользователь получает не сырой датасет, а готовое действие. Это и есть ценность. SCRIPTS/DMRT/ORG_SCORING.PY · ≈ 120 СТРОК CASE/IF
Слайд 18: Прогноз вероятности выиграть лот
Прогноз вероятности выиграть лот 64 фичи × 30M лотов с итогами → датасет для градиентного бустинга готов. Модель — не новость. Интересно, что реально стреляет. Таргеты Топ-фичи 60% работы — фиче-инжиниринг. 40% — подбор таргета, который реально предсказуем. Вероятность состоявшегося лота Ожидаемое число участников Ожидаемый % снижения цены Вероятность выигрыша для конкретного поставщика Метод закупки (ЗЦП vs единый источник) История заказчика: good_rate, dumping Размер лота / медиана категории Сезонность: месяц × тип товара Регион × категория, HHI
Слайд 19: Рынок банковских гарантий РК
Рынок банковских гарантий РК 13 трлн ₸ по контрактам за 15 месяцев, 1.55M контрактов, 23 банка. Топ-3 — 64.7% объёма. HHI > 1800. Halyk Bank 600K · 4.14T ₸ Kaspi Bank 333K · 340B ₸ BCC 263K · 2.53T ₸ ForteBank 132K · 1.74T ₸ Jusan 108K · 700B ₸ Freedom Bank 5.8K · 187B ₸ Тот же датасет — скоринг контрагентов, PD-модели поставщиков, KYC-сигналы. То, на что в банке уходит 20 человек, из открытых данных считается одним SQL.
Слайд 20: Вайбкодинг — множитель, не замена
Вайбкодинг — множитель, не замена Где реально ускоряет Где не помогает Практика: начинаю с точного промпта, кладу файлы, схемы, пример входа-выхода. Прошу сначала план, потом код. Правка плана экономит 10× на переделках. SQL-миграции, новые колонки — 30 сек вместо 20 мин Новый источник по аналогии — вот Colombia, сделай Узбекистан Рефакторинг SQL-шаблона на 2000 строк Документация по существующему коду Разбор ночного падения по логам Навигация: «где читается таблица X» Архитектурные решения — что и зачем Понимание домена (меньше конкурентов = лучше) Перф-тюнинг SQL на больших таблицах Тонкие гонки в многопоточке Продуктовые приоритеты
Слайд 21: Начал снимать рилсы
Начал снимать рилсы Инженерный продукт без аудитории — это PDF в Google Drive. Запустил контент для проверки. 842 510 просмотров · 300 158 уникальных зрителей · +2756% роста. 85.8% неподписчики — реальный новый трафик. Формат: короткие видео с конкретными инсайтами из продукта. Что закупают, у кого маржа, где риск. ЗА МЕСЯЦ, БЕЗ РЕКЛАМНОГО БЮДЖЕТА
Слайд 22: Открытые данные госзакупок РК. Бесплатно. Без регистрации.
10b.kz @mkhamzanov @almaskasymzhanov Открытые данные госзакупок РК. Бесплатно. Без регистрации. ПРОДУКТ МАДИЯР · INSTAGRAM АЛМАС · INSTAGRAM
Другие доклады митапа
- ЕАЭволюция ИИ-агентов: OpenClaw, Hermes и новые подходы Елдан Абдрашим
- ХБRAG vs Fine-tuning vs Agents Хайдар Булхайыр
- АГAgentic engineering Азамат Галимжанов



















