fedorthinks
Все проекты
В проде2025 — настоящее

MiamiFlow — CRM танцевальной студии, которой управляют четыре ИИ-агента

Продакшен-CRM, на которой работает реальная танцевальная студия, с четырьмя ReAct-агентами (tool-use) на передовой: Ева онбордит клиентов и продаёт абонементы в Telegram, Анна ведёт операции ресепшена в вебе, Майя — управленческий копилот администратора, Вика продаёт аренду зала. За ними — собственный LLM-шлюз для надёжности под нагрузкой, распознавание скриншотов оплаты с подтверждением человеком и model-agnostic стек. Живёт на miamistudio.org.

Открыть
Роль
Solo engineer & architect
Стек
Python · FastAPI · SQLAlchemy · PostgreSQL · Redis · Next.js · TypeScript · aiogram · OpenRouter · Docker · Railway
Период
2025 — настоящее

Проблема

Танцевальная студия держится на сотне мелких операций: онбординг родителей, продажа абонементов, сбор оплат, бронь аренды зала, отметка посещаемости и ответы на одни и те же вопросы весь день. Почти всё это ложится на одного-двух администраторов, делающих рутину в чате и таблицах. MiamiFlow заменяет этот ад настоящей CRM — и ставит на передовую четырёх ИИ-агентов, которые реально делают работу, а не просто её хранят.

Что делает — четыре агента, четыре задачи

MiamiFlow работает в продакшене для реальной студии, и четыре ReAct-агента (tool-use) несут клиентскую и операционную нагрузку:

  • Ева — Telegram-агент для родителей и учеников. Она онбордит новых клиентов, создаёт профили детей, записывает их в группы, продаёт абонементы и отвечает на вопросы о расписании, ценах, правилах и тренерах. Выдаёт QR-коды для оплаты и даже читает скриншоты оплаты, чтобы сопоставить их с нужным счётом, — а затем передаёт человеку-администратору на проверку и активацию. Тёплый, узнаваемый голос.
  • Анна — веб-чат-агент для ресепшена. Вместо кликов по формам персонал просто говорит Анне, что нужно: зарегистрировать оплату, изменить абонемент, найти ученика, написать группе, — и она превращает обычный язык в правильные операции по всей CRM.
  • Майяуправленческий копилот администратора. Спроси у неё, как обстоят дела с посещаемостью, финансами, долгами или расписанием, — и она вытащит цифры и сделает действия по всей школе через широкий ReAct-набор инструментов: отчёты, финансы, расписание, тренеры и не только.
  • Вика — второй Telegram-агент, посвящённый продаже аренды зала: проверка доступности, расчёт цены и бронирование зала.

Вокруг агентов — полноценная админ-поверхность: счета, абонементы, журналы посещаемости, финансы и долги, заработок тренеров, скидки, соревнования, локации, мониторинг агентов и учёт стоимости LLM.

Что я построил

В одиночку, от и до: FastAPI-бэкенд (чисто разложенный на API, сервисы, модели и агентов с их инструментами), админ-приложение на Next.js + TypeScript с десятками экранов, два Telegram-бота, базу данных и миграции и самих агентов.

Агенты — это настоящие ReAct-циклы с типизированными инструментами: каждая возможность (записать ребёнка, продать абонемент, принять оплату, забронировать аренду, поискать по документам студии, вытащить отчёт о посещаемости) — это инструмент, который модель может вызвать. Майя, помощник администратора, стримит свои рассуждения и вызовы инструментов по SSE, так что персонал видит, как она работает, а не ждёт чёрный ящик.

Архитектурные решения

Собственный LLM-шлюз. Когда три агента и два бота разом дёргают модель, упираешься в лимиты провайдера и молча теряешь запросы (HTTP 429). Поэтому я построил LLM Gate — внутренний OpenAI-совместимый прокси между приложениями и провайдерами (OpenRouter, Groq), который делает rate limiting, очередь запросов, приоритизацию и circuit breaking. Переключить любой сервис на него — это правка одной строки base_url. Это слой устойчивости, который держит агентов надёжными под реальной конкурентной нагрузкой.

Model-agnostic по дизайну. Каждый LLM-вызов идёт через шлюз поверх OpenRouter, так что модель — это настройка: быстрая и дешёвая по умолчанию, сменяемая на Claude, GPT или другую модель без правки кода агентов. Тот же тезис, что я повторяю: не женись на одной модели.

Human-in-the-loop там, где двигаются деньги. Продажа автоматизирована; подтверждение оплаты — нет. Ева распознаёт скриншот оплаты и прикрепляет его к счёту, но человек-администратор проверяет его и активирует абонемент. Чувствительные, необратимые действия намеренно загорожены человеком.

Стоимость и поведение, которые видно. Логирование и стоимость по каждому LLM-вызову плюс экран мониторинга агентов — студия видит, что агенты делают и сколько это стоит. Наблюдаемость встроена, а не приколочена сбоку.

Чистая архитектура, с тестами. FastAPI с SQLAlchemy и миграциями Alembic, Redis, слоистый бэкенд с чисто отделёнными агентами и инструментами, наборы e2e / performance / security тестов, в Docker и с деплоем на Railway.

Текущий статус

MiamiFlow работает в продакшене на miamistudio.org, ведя ежедневную жизнь реальной студии — реальные клиенты, реальные счета, реальные деньги. Я сделал его в одиночку, дирижируя ИИ-агентами по поэтапной спеке и владея архитектурой, дизайном агентов и ревью. Это самый полный пример того, о чём я всё время говорю: ИИ-агенты, которые не просто болтают, а реально делают работу — безопасно, наблюдаемо и в продакшене.