Открыть демо

Демо к тестовому заданию CityCar

Агенты, которым можно доверять

Руководитель пишет одну фразу. Система поднимает amoCRM и звонки, считает метрики, пишет отчёт и сверяет в нём каждое число. Решения остаются за человеком.

Без ключа API демо работает на сохранённых ответах модели. Проверки кода выполняются по-настоящему, прямо в браузере. Или разберите звонок

90сделок в amoCRM
142звонка за 30 дней
121разбор звонка моделью
31число в отчёте сверено кодом
17тестов pytest

Принцип

LLM интерпретирует. Код считает и проверяет. Человек решает.

LLM

Модель

Работает там, где данные неструктурированные: речь, свободный запрос, текст отчёта.

  • Разбирает запрос руководителя в структуру: период, отдел, менеджеры.
  • Извлекает из звонка итог, следующий шаг, возражения и риски, со ссылками на цитаты.
  • Пишет интерпретацию и черновик рекомендаций только по fact pack.
Код

Код

Считает всё, что можно посчитать. Поэтому цифры воспроизводимы, а выводы AI проверяемы.

  • Синхронизирует amoCRM и телефонию: пагинация, лимит 7 запросов в секунду, идемпотентность.
  • Считает метрики и аномалии, ищет сделки без задач и с просрочками.
  • Проверяет цитаты, сверяет числа отчёта с fact pack, решает, что уходит человеку.
Человек

Человек

Принимает решения, которые меняют CRM или касаются людей.

  • Утверждает рекомендации и любые действия с клиентами и в CRM.
  • Разбирает спорные звонки, прежде чем делать выводы о менеджере.
  • Задаёт справочники: менеджер и добавочный, правила связи звонков со сделками.

Журнал работы агентов

Одна фраза. Девять шагов до решения.

Так выглядит прогон в демо. У каждого шага подписано, кто его сделал: модель, код или человек.

  1. Orchestrator LLM

    Разбирает запрос в структуру: отдел продаж, 30 дней, 4 менеджера.

    {"intent": "sales_department_review", "period_days": 30}
  2. Проверка прав Код

    Роль: руководитель отдела. Доступ к данным 4 менеджеров разрешён, запрос записан в журнал аудита.

  3. CRM Sync Код

    Снимок amoCRM: 90 сделок, 267 задач. Изменения подтягиваются инкрементально по updated_at.

  4. Telephony Adapter Код

    142 звонка за период, 135 с записью. 14 не связаны ни с одной сделкой.

  5. STT и Call Analysis LLM

    121 разбор берётся из кэша по ключу: транскрипт, версия промпта, модель. Новых вызовов модели: 0.

  6. Sales Analytics Код

    Fact pack: 75 открытых сделок, 6 отклонений от медианы, 30 сделок под риском.

  7. Report Agent LLM

    6 наблюдений и 4 рекомендации. Пишет только по фактам, которые посчитал код.

  8. Validator Код

    Сверяет 31 число с fact pack: расхождений нет. Все ссылки ведут на существующие сделки и звонки.

  9. Человек в контуре Человек

    4 решения ждут руководителя. В CRM ничего не изменено.

Живое демо

Отчёт, который проверяет сам себя

Это не скриншот. Ниже работает настоящее демо: прогон агентов, KPI, наблюдения с доказательствами и очередь решений.

Открыть демо на весь экран

Из чего состоит отчёт

Цифры считает код. Слова пишет модель.

Наблюдение модели31 число сверено

У Дмитрия Ковалёва 9 из 19 открытых сделок (47%) без открытых задач, у остальных менеджеров медиана 6%. В 8 сделках последний звонок закончился договорённостью, но следующий шаг не зафиксирован в CRM.

Validator подсвечивает каждое число. Число, которого нет в fact pack, стало бы красным, и отчёт ушёл бы человеку на проверку.

Считает код
Без открытых задач
1419%
С просроченными задачами
1621%
Обещано в звонке, задачи нет
10
Сделок под риском
116млн ₽

Сделки без открытых задач

Отклонение от медианы
Анна Соколова5%
Дмитрий Ковалёв47%
Марина Лебедева15%
Игорь Петров6%

Правило задано в коде: менеджер заметно выше медианы остальных. Порог виден в подсказке в демо.

Решает человекРОП

Разобрать с Дмитрием Ковалёвым 8 сделок, где договорённость есть в звонке, а задачи в CRM нет. Начать с самой крупной: 5 060 000 ₽.

Система предлагает, но ничего не меняет в CRM.

Чего в отчёте нет и почему

  • План продажЕго нет ни в amoCRM, ни в телефонии. Выполнение плана не оценивается.
  • МаржинальностьЕё нет в источниках. Прибыльность сделок не считается.
  • Выводы о людяхЗа период закрыто всего 15 сделок. Для оценки менеджеров этого мало.

Разбор звонка

Модель цитирует. Код проверяет цитаты.

Каждый вывод о звонке ссылается на фразу из транскрипта. Подмените фразу клиента или уберите задачу в CRM и посмотрите, как изменится маршрутизация.

Разбор подтверждён кодом8 из 8 цитат найдены в транскрипте. Следующий шаг согласован, задача в CRM есть.
Первичный звонок: тест-драйвМенеджер Дмитрий, 1 мин 30 с
Разбор модели
Итогназначена встреча
Следующий шагтест-драйв в субботу
Возражениецена, отработано частично

Устройство

Небольшой код, понятные роли

Python 3.12, FastAPI, Pydantic, Anthropic SDK, pytest, Vercel. Интерфейс на чистом HTML, CSS и JS.

  • amo_leads_attention.pyСделки без задач или с просрочкой через amoCRM API v4. 48 строк.Код
  • sales_analytics.pyМетрики, аномалии, сделки под риском, связь «обещание и задача».Код
  • call_analysis.pyСхема разбора звонка, проверка цитат, маршрутизация на ревью.Код
  • report_validator.pyЧисла в тексте отчёта входят в fact pack, ссылки ведут на существующие сделки и звонки.Код
  • llm.pyCall Analysis и Report Agent: Claude API, structured output по Pydantic-схемам.LLM
  • api/index.pyFastAPI на Vercel: /api/analyze, /api/report, /api/health.Код
  • tests/17 тестов: amoCRM на моках, схема, цитаты, аналитика, валидатор, API.Код

Ограничения

Что в демо не настоящее

  • Данные синтетические. Люди, клиенты, сделки и звонки выдуманы. STT по аудио, PostgreSQL, очереди и авторизация описаны в архитектуре, но в демо не реализованы.
  • amoCRM проверен на моках. Код сверен с документацией API v4, на реальном аккаунте его не запускали.
  • Сохранённые ответы модели написаны Claude и проходят те же проверки, что и живые.
  • Validator сверяет числа с множеством всех чисел fact pack. Число, которое случайно совпало с другим значением, он не поймает. Следующий шаг: ссылки «число → поле fact pack» в structured output.
  • Ключ посетителя не сохраняется и не логируется. Лимит живых запросов на серверном ключе хранится в памяти инстанса.

Посмотрите, как это работает

Запустите анализ отдела, откройте доказательства, примите решения. Без регистрации и без ключа API.