MVP AI-сервиса для аналитики NPS и отзывов в Додо
На прошлой неделе закончился курс AI Product Engineer от Байрама (курс, кстати топ, рекомендую). В первом дз нужно было сделать агента для анализа отзывов. Я свой собрал еще месяц назад, нопонял, что в канале про это еще не рассказывал.
В Додо регулярно собираем фидбек и NPS. Разбирать это руками – долго и неудобно. Я навайбкодил агента: загружаешь выгрузку → на выходе интерактивная аналитика с умной категоризацией.
Что получилось
— Сначала 6000 строк обрабатывались ~60 мин, после нескольких итераций оптимизации довел ~3 мин (в 20 раз быстрее)
— В срезах видно динамику NPS, доли категорий, сегменты и примеры отзывов
— Стоимость вызово LLM снижаю за счет кэша и гибких режимов обработки
Немного про техническую начинку
Агентная архитектура
MasterCoordinator – дирижер: парсит файл, запускает классификацию, собирает метрики и финальную структуру.
ClassificationAgent – умный "свитчер": сначала простые правила (словари), если не хватает — сравнение по смыслу (эмбеддинги), при низкой уверенности – эскалация в LLM.
InsightAgent – "аналитик": по метрикам и распределениям генерит краткое резюме и рекомендации.
Все модули слабо связаны: координатор подменяемо получает «агентов» и возвращает один доменный результат, который дальше маппится во фронт.
Стек
Бэкенд: Python + FastAPI, четкие DTO на Pydantic, эндпоинты: загрузка, статус/результат, экспорт, плюс WebSocket прогресса.
Фронтенд: ванильный JS + Chart.js + Jinja2. Графики – NPS-таймлайн, категории, демография, помесячка; кликаешь по категории — видишь примеры отзывов.
Инфра и скорость
Docker Compose (web, redis), healthcheck, non-root; в деве – hot reload.
Кэш по MD5 контента (Redis/SQLite) – ускоряет повторы и экономит.
Режимы исполнения переключаются конфигом: потоковый, асинхронный с ограничением параллельности, пакетные эмбеддинги, параллельные батчи с авто-фоллбеком.
Телеметрия: время, стоимость, использование инструментов, cache hit rate, контроль памяти и авто-дауншифт, если упираемся в ресурсы.
Я прорабатывал всю логику и архитектуру, а код писал Claude Code. Одну фичу ради интереса сделал через gpt-5 в Cursor. Старался делать сразу продакшен райди.
Итог
В целом получилось сделать около боевой сервис, но все равно надо немного полировки, чтобы отпускать в свободное плавание. При этом я сейчас один, а AI инициатив в компании много. Поэтому поставил пока проект на паузу, чтобы навалиться на более денежные штуки. Как-нибудь еще обязательно вернусь, чтобы добить!
Post #65
465