Коротко
AI-РОП — автономный AI-агент, который сам обходит лиды в CRM, собирает полный контекст (поля, переписку, транскрипции звонков), оценивает менеджеров по чек-листу и действует: ставит задачи, дозаполняет поля, пишет заключения в Битрикс24. Работает в фоне, возвращается к лидам по расписанию и даёт руководителю дашборд по отделу.
История одной системы NeuralOps — от «руководитель не успевает читать все сделки» до агента, который сам обходит лиды, слушает звонки, оценивает менеджеров по чек-листу и ставит задачи прямо в Битрикс24.
AI-РОП — это автономный AI-агент, который сам обходит лиды в CRM, собирает по каждому полный контекст (поля карточки, переписку, транскрипции звонков), оценивает работу менеджера по чек-листу и действует: ставит задачи, дозаполняет поля, пишет заключения в таймлайн. В отличие от чат-бота, он работает в фоне, без участия человека, и сам возвращается к лидам по расписанию.
Задача
У любого руководителя отдела продаж (РОПа) одна и та же боль: лидов сотни, а времени — нет. Невозможно вручную открыть каждую карточку, прочитать переписку, переслушать звонки и понять, кто из менеджеров реально ведёт клиента, а кто «забыл перезвонить» неделю назад.
Обычные дашборды в CRM показывают цифры: сколько звонков, на какой стадии сделка. Но они не отвечают на главный вопрос — качественно ли менеджер отработал конкретного клиента. Для этого нужно вчитываться в контекст: что обещали, что сделали, был ли разговор по делу или клиент просто сбросил трубку.
Мы поставили задачу так: сделать агента, который работает как живой РОП-контролёр. Он должен:
- проходить по списку лидов по заданному фильтру (вся воронка, конкретная стадия, один менеджер);
- собирать по каждому лиду полный контекст — поля карточки, историю звонков и их транскрипции, переписку по email, сообщения из открытых линий, задачи и открытые дела;
- оценивать работу менеджера по настраиваемому чек-листу (скрипту);
- не просто «ставить оценку», а действовать: дозаполнять поля, ставить задачи, писать заключение в таймлайн карточки;
- возвращаться к лиду повторно через разумные интервалы и отслеживать динамику;
- показывать руководителю агрегированную аналитику — средний балл, частые «флаги», разрез по менеджерам.
Важная деталь с самого начала: это не чат-бот. У нас уже были чат-боты в Битриксе и точечные действия в карточках. РОП — принципиально другой режим: батчевый обходчик, который работает в фоне сам по себе и сам инициирует действия.
Реализация
Ниже — семь решений, которые отличают фонового обходчика от чат-бота: от модели данных и пайплайна одного прогона до борьбы с галлюцинациями на звонках, контура для персональных данных и возврата к лидам по расписанию.
Четыре сущности
В основе — несколько таблиц, и разделение между ними ключевое:
- Агент — конфигурация: какая LLM-модель, системный промпт (по сути ТЗ для РОПа), фильтр лидов, ссылка на скрипт оценки, набор источников данных и whitelist полей, которые агенту разрешено заполнять.
- Прогон — один проход: статус, кто запустил (вручную или по расписанию), счётчики обработанных лидов и агрегированные метрики.
- Отчёт по лиду — снимок карточки на момент анализа, собранные данные, результат оценки, балл, текстовый анализ, флаги и предпринятые действия.
- Трекер лида — слой возврата: один трекер на пару «агент + лид», история всех проверок и записи звонков для аналитики.
Почти все «гибкие» поля вынесли в JSONB — чтобы добавлять источники данных и типы действий без миграций БД.
Pipeline одного прогона
- Берём Redis-лок на агента — защита от двух одновременных прогонов.
- Тянем лиды по фильтру с пагинацией. Стандартный прогон берёт только новые лиды, уже наблюдаемые повторно не гоняются — иначе на воронке в 600+ лидов мы бы бесконечно перепроверяли одно и то же.
- По каждому лиду собираем контекст: карточка, история активностей, комментарии таймлайна, транскрипции звонков, задачи менеджера, открытые дела, чаты открытых линий.
- Tool-loop с LLM. Агент получает весь контекст и набор инструментов: выставить итоговую оценку, заполнить поле (строго по whitelist), поставить менеджеру задачу-дело, написать заключение в карточку, дозаполнить контакт, назначить дату следующей проверки.
- Считаем метрики без обращения к LLM — средний балл, топ флагов, разрез по менеджерам.
Звонки: транскрибация на лету
Один из самых ценных источников — записи звонков. Если у звонка ещё нет текста, агент сам его транскрибирует: качает запись из телефонии, отдаёт мультимодальной LLM (модель работает с аудио напрямую, а не через отдельный ASR-движок) и сохраняет результат обратно в карточку. На следующем прогоне транскрипция уже готова — повторно не платим. По сути здесь работает наш отдельный продукт — аналитика звонков, встроенная в РОПа как источник данных.
Отдельная история — борьба с галлюцинациями. 15-секундный звонок (автоответчик + гудки) модель легко превращала в фантазию про «бюджет 2 млн и тест-драйв завтра». Решили двумя приёмами: заставляем модель сначала классифицировать запись (разговор / автоответчик / тишина…) и передаём ей длительность. Видя «≈ 15 сек», модель физически не может уместить туда длинный диалог.
Где живут данные: контур и 152-ФЗ
AI-РОП работает с персональными данными клиентов — транскрипциями звонков, телефонами, email. Поэтому контур обработки — это не деталь, а часть архитектуры.
По умолчанию фоновые задачи (та же транскрибация) идут через дешёвые быстрые модели — ради экономии и скорости. Но для клиентов, которым важно соответствие 152-ФЗ, агент разворачивается на российском контуре: текстовые LLM-задачи переключаются на GigaChat / YandexGPT через единый роутер (LiteLLM), без зависимости от зарубежных провайдеров. Выбор контура — это настройка агента, а не отдельная сборка.
Дисциплина «не затирать» — в коде, а не в промпте
Когда агент дозаполняет контакт, логика «дополняем, но не перезаписываем» встроена в код, а не в инструкцию для LLM. Телефоны и email добавляются к существующему массиву с дедупом, а имя/должность пишутся только если поле пустое. Причина: РОП работает в фоне, и нельзя полагаться на то, что модель не сократит ФИО или не подставит чужие данные. Критичную дисциплину держим в детерминированном коде.
Возврат к лиду и планировщик
Агент не «прошёл и забыл». LLM сама решает, когда вернуться к лиду (минимум 3 дня — пользователи жаловались, что РОП заходит слишком часто). Отдельный планировщик раз в минуту сканирует трекеры с наступившим сроком и запускает точечную проверку. Длинный батч на сотни лидов при этом не блокирует точечные проверки — они идут параллельно.
Уведомления
Руководитель получает одно итоговое сообщение на лид — заголовок, ссылка, менеджер и балл, флаги, пара строк анализа и список действий. Менеджеру отдельно прилетает уведомление, только когда РОП поставил ему задачу. Шлём личные сообщения в чат, а не всплывашки-колокольчики: колокольчик легко пропустить и нельзя обсудить, а сообщение остаётся в истории.
Админ-панель: дашборды и стоимость в рублях
AI-РОП — не чёрный ящик. Вся работа агента видна в админ-панели, и для B2B-клиента это так же важно, как сами вердикты.
- Тонкая настройка промпта-ТЗ, чек-листа, фильтров и whitelist полей — без правок кода.
- Дашборды по отделу: средний балл, частота флагов, разрез по менеджерам, динамика оценок по конкретному лиду на графике. Руководитель видит не «кто сколько звонил», а кто как отрабатывает.
- Контроль стоимости в рублях. Фоновый агент сам тратит деньги на LLM — на тысячах лидов это нельзя пускать вслепую. Панель показывает расход по дням и по задачам, так что бюджет предсказуем, а не «прилетает в конце месяца».
- Логи диалогов агента с моделью — для отладки поведения и разбора спорных оценок.
Дашборд разделяет два типа метрик: сущностные (звонки) считаются по дате самого события из CRM, а метрики работы РОПа (балл, флаги, затраты) — по дате проверки. Звонки дедуплицируются, направление и звонивший берутся из данных телефонии.
Результат
Получился автономный контролёр отдела продаж, который сам собирает полный контекст по каждому лиду (включая транскрибацию звонков), оценивает менеджеров по чек-листу, действует в CRM (ставит задачи, дозаполняет поля, пишет заключения — с защитой через whitelist и режим dry-run как предохранитель), возвращается к лидам по расписанию и даёт руководителю агрегированную картину по отделу.
Цифры с боевого внедрения:
- обработано больше 1000 лидов;
- затранскрибировано около 3000 звонков — без отдельного сервиса распознавания, силами самого агента;
- из них ~25% оказались «пустыми» (автоответчик, гудки, сорванный звонок) — агент их отсёк, а не сочинил по ним несуществующие диалоги;
- менеджерам поставлено около 600 задач с конкретным контекстом;
- на этом внедрении агент активно ведёт порядка 1000 лидов одновременно — объём, который РОП физически не обойдёт руками.
Руководитель вместо «открыть 1000 карточек» получает поток коротких сводок с вердиктом по каждому лиду и дашборд по менеджерам. А менеджеры — конкретные задачи с контекстом, а не абстрактное «работай лучше».
Стек
Backend: FastAPI, SQLAlchemy (async) + PostgreSQL (гибкие поля в JSONB), Redis (распределённые локи), APScheduler (планировщик возврата к лидам). Доступ к LLM с tool calling — через единый роутер (LiteLLM), что позволяет переключать модель и контур (зарубежные провайдеры или российский — GigaChat / YandexGPT) настройкой агента. Для фоновых задач вроде транскрибации берём дешёвые быстрые модели ради экономии.
Интеграция с Битрикс24 через REST: работа с лидами, активностями, таймлайном, телефонией, открытыми линиями, задачами и личными сообщениями.
Frontend: Vue 3 + Pinia + Vue Router — кабинет управления агентами, таблицы прогонов и отчётов, карточки лидов с графиком динамики оценок; гранулярные права (RBAC) на просмотр/запуск/редактирование.
Частые вопросы
Нет. Он снимает с РОПа рутинный обход карточек и слушание звонков, давая готовые вердикты и дашборды. Решения о людях, мотивации и стратегии остаются за руководителем — агент даёт ему фактуру, а не отнимает роль.
Текущая реализация работает с Битрикс24 (self-hosted) через REST: лиды, активности, таймлайн, телефония, открытые линии, задачи. Архитектура источников данных вынесена в гибкие поля, поэтому подключение других CRM — вопрос адаптера, а не переписывания ядра.
Тремя уровнями. Whitelist полей — агент может писать только в разрешённые поля. Логика «дополняем, но не перезаписываем» зашита в детерминированный код, а не в промпт. И режим dry-run — агент сначала показывает, что он сделал бы, без реальных изменений в CRM.
Для клиентов с требованиями 152-ФЗ агент разворачивается на российском контуре: текстовые LLM-задачи идут через GigaChat / YandexGPT без зарубежных провайдеров. Контур переключается настройкой, а не отдельной сборкой.
Да. Расход на LLM виден в админ-панели по дням и по задачам, в рублях. Фоновый агент не тратит бюджет вслепую — стоимость предсказуема и контролируема.
