ИИ-менеджер по продажам
ИИ-менеджер отвечает клиенту круглосуточно, но только фактами из подготовленной базы, сам оформляет заявку и отдаёт человеку всё, чего в базе нет. Живой менеджер по вакансиям стоит 71 000 ₽ в месяц.
Опубликовано 24.08.2026 · цифры сверены 01.09.2026
Как собрать ИИ-приём заявок: восемь шагов
- База фактов. Соберите цены, сроки, состав услуг и условия в документы. Отвечать бот будет только по ним.
- Только из документов. Нет документа — нет ответа. Иначе модель назовёт правдоподобную цену, которой у вас нет.
- Что считается заявкой. Опишите заранее: имя, контакт, задача, срок. Без этого бот просто поговорит и отпустит.
- Один вход. Поставьте бота туда, где клиент уже пишет: сайт, Telegram, WhatsApp. Переписка не должна растекаться.
- Передача человеку. Вопрос не из базы уходит человеку вместе с историей разговора, а не остаётся без ответа.
- Журнал. Записывайте каждый диалог и каждую заявку: по ним видно, чего в базе не хватает.
- Приёмка на живых вопросах. Прогоните десяток типовых вопросов: цена, сроки, гарантия, возврат. Ответ без источника — брак, а не мелочь.
- Две цифры. Следите, сколько обращений стало заявками и сколько раз бот не нашёл ответа.
Что под какую задачу
- Поток одинаковых вопросов — бот с базой фактов окупается сразу.
- Сложные сделки — бот только собирает контакт и передаёт человеку, торговаться он не должен.
- Медицина, право, финансы — только ответы из документов и обязательная проверка человеком.
Ниже — как собран наш приём заявок: девять модулей, пороги приёмки и журнал диалогов.
Где проект сейчас
Что было нужно
Требование одно: не терять обращения вне рабочих часов и доводить их до заявки без человека. Первая линия отвечает на цену, сроки, состав и условия — вопросы с готовым ответом в документах компании. Работа шаблонная, но цена ошибки в ней не шаблонная: клиент уносит из чата обязательство, а не текст, и заявка, оформленная с чужой цифрой, дороже неотвеченной.
Ограничение, из которого выросла вся конструкция: языковая модель на вопрос о цене возвращает правдоподобное число, а не отсутствие ответа. В разговоре это простительно, в поддержке нет. Значит у каждого фактического утверждения должен быть источник, и источник должен проверяться механически.
| Метод | Что из него взято | Каноническое имя · источник |
|---|---|---|
| Разведка до сборки обзор рынка решений | 23 проекта на GitHub, отбор по зрелости. Четыре зрелых: Chatwoot, Onyx, RAGFlow, Dify. Вывод — брать их паттерны, а не платформу: при потоке около сотни обращений в сутки комбайн из пяти контейнеров дороже задачи | Обзор существующих решений до проектированиясобственное правило лаборатории, внешнего источника нет |
| Прожарка в три раунда скиллы Мэтта Покока | Правка только после исследования корня; три неудачные попытки в одном месте — повод обсуждать устройство, а не делать четвёртую; одно задание описывает одну задачу; положительный рецепт работает лучше запрета | собственное правило лаборатории, внешнего источника нет |
| Запись решений формат ADR | Восемь документов: контекст, решение, отвергнутая альтернатива, последствие, дата. Лежат в репозитории рядом с кодом — вопрос «почему тут нет Docker» имеет письменный ответ | Architecture Decision RecordsNygard, «Documenting Architecture Decisions», 2011 |
| Глубокие модули узкий интерфейс, толстая реализация | Адаптер канала и модуль базы знаний: снаружи два-три вызова, внутри что угодно. Веб-виджет добавляется адаптером, векторный поиск — внутри модуля, ядро в обоих случаях не трогается | Deep modules; порты и адаптерыOusterhout, 2018 · Cockburn, «Hexagonal architecture», 2005 |
| Ограниченная петля bounded agent loop | Модель сама выбирает инструмент, но не больше шести итераций на обращение. Предохранитель против бесконечного цикла вызовов при неудачном поиске | Агентный цикл ReAct с потолком итерацийYao et al., ICLR, 2023 |
| Громкий отказ fail loudly | Пустой результат поиска не подменяется ответом и не гасится молча: он превращается в вызов эскалации. Отсутствие документа — легальный исход, а не ошибка выполнения | Воздержание от ответа (abstention); fail fastEl-Yaniv & Wiener, JMLR, 2010 · Shore, IEEE Software, 2004 |
| Приёмка порогами набор диалогов как линейка | Пороги в числах заданы до запуска, а не после первой жалобы. Тот же набор служит линейкой при смене модели | Пререгистрация порогов; golden set как регрессионная линейкаNosek et al., PNAS, 2018 |
Готовое решение не подошло по цене эксплуатации. Chatwoot Captain — платный Enterprise, Dify — пять с лишним контейнеров, и любой разбор ошибки упирается в чужую архитектуру. Открытого агента поддержки с продажами не существует вовсе: все собирают на общих платформах.
Как собрано
Один процесс на Python и SQLite рядом: ни контейнеров, ни очереди, ни векторного хранилища. Паттерны платформ при этом взяты целиком — маршрутизация через function calling с лимитом итераций, пустой ответ вместо ответа без источника, эскалация как инструмент, курируемые эталонные ответы.
Пустой результат поиска не превращается в ответ. Он превращается в вызов эскалации — другого выхода из этой ветки нет.
На чём держится конструкция
Решения и основания
Каждое записано отдельным документом с датой, альтернативой и ценой. Через полгода вопрос «почему тут нет Docker» возникнет обязательно, и ответ должен лежать в репозитории рядом с кодом.
| № | Решение | Основание |
|---|---|---|
| 0001 | Первая версия — только Telegram | Мультиканальность — самая дорогая часть платформ поддержки. Вынесена за адаптер, а не отрезана |
| 0002 | Один процесс, не платформа | Сотня обращений в сутки; чужой комбайн не диагностируется |
| 0003 | Агентный поиск, без эмбеддингов | База курируемая и небольшая — полнотекстовый индекс точнее. Векторы добавляются внутрь модуля без смены интерфейса |
| 0004 | База обновляется файлом в чат | Git под капотом даёт версии и откат |
| 0005 | Эскалация-реле, правило источника | Клиент остаётся в одном чате; пустой результат не становится ответом |
| 0006 | Модель за адаптером | Смена модели и провайдера — две переменные конфига |
| 0007 | systemd и venv, без Docker | Один процесс на своём сервере; контейнер ничего не добавляет |
| 0008 | Хостинг в Европе | Отдельно от сервера аналитики |
Чем платит конструкция
| Решение | Чем ограничивает |
|---|---|
| Только Telegram | Клиент, пришедший на сайт, написать не может |
| Полнотекстовый поиск | Вопрос чужими словами может не найтись при наличии ответа в базе |
| Курируемая база | Пополняется вручную; агент сам не учится |
| Правило источника | Часть обращений гарантированно ложится на человека |
| Дешёвая модель | Качество ниже флагманов. Разрешены только провайдеры без обучения на переданных данных — в диалогах контакты клиентов |
| Один процесс без Docker | Горизонтально не масштабируется |
Своими словами агент отвечает на логических вопросах: устройство формата, разница между вариантами, следующий шаг. Ограничение касается фактических утверждений — цена, дата, состав, условия. Их источник это документ базы, и совпадение проверяется автоматической сверкой на приёмке.
Что получилось
Пороги, по которым принимали
Ноль фактов вне базы — единственный порог без допуска. Остальные пункты допускают процент; этот нет, потому что одна цифра, которой нет в документах, стоит дороже, чем девяносто корректных ответов приносят. Это асимметричная функция потерь: цена ложного «да» и цена пропуска не равны, и порог ставится по дорогой стороне.
Тот же набор диалогов остаётся линейкой при смене модели: адаптер переключает провайдера конфигом, а прогон по набору показывает, что изменилось.
- Выборка
- Девять диалогов, 47 сообщений за пять дней с 19 по 23 августа: 23 реплики от людей, 21 от бота. Это пилот, а не статистика — на таком объёме считаются штуки, не доли.
- Проверки
- Пороги приёмки заданы до запуска: корректных не меньше 90 % по оценке судьёй с выборочной проверкой глазами, фактов вне базы ноль, десять инъекций из подготовленного набора отбиты. Фактические значения прогона на странице приводятся порогами, а не числами: точные цифры снимаются с рабочей базы и появятся отдельной записью.
- Не обобщается
- База знаний на пилоте пуста, заявок оформлено ноль: проверен контур приёма, зеркала и доставки, а не качество ответов по документам. Ноль расхода — свойство бесплатного тарифа модели, а не конструкции.
- Не измерено
- Доля обращений, доведённых до заявки, и доля эскалаций на живом потоке; стоимость обращения в токенах. Контур персональных данных отложен до масштабирования.
Агент развёрнут и принимает обращения круглосуточно. Снимок рабочей базы на 25.08.2026: девять диалогов, 47 сообщений за пять дней, денежный расход нулевой.
Кауфман Lab — лаборатория архитектуры искусственного интеллекта. Мы проектируем процессы и методологии. Код устаревает с каждым новым поколением моделей — методология нет, поэтому в проектах разбирается именно она. Собрать систему по этой схеме сможет любая современная нейросеть.
Что пошло не так
Четыре отказа из журнала коммитов — все пойманы до того, как их увидел клиент.
/start и подобное отсекаетсяОтдельным решением закрыт риск на входе: пилот запускался вообще без базы знаний — сначала проверялся контур приёма, зеркала и доставки, и только потом подключался поиск. Ошибка в контуре и ошибка в поиске так не смешиваются.
Что сознательно не вошло
Что обычно спрашивают
Что такое ИИ-менеджер по продажам?
ИИ-менеджер по продажам — это обработка обращений в мессенджере программой вместо дежурного оператора. Нужен малому бизнесу, который теряет обращения вечером и в выходные. Кауфман Lab собирает агента, который отвечает фактами из курируемой базы, оформляет заявку и передаёт человеку то, чего в базе нет: менеджер по работе с клиентами по рынку стоит 71 000 ₽ в месяц за одну смену. Догадок агент не строит и о цене по памяти не отвечает.
Чем это отличается от обычного RAG-бота?
Поиск вызывает модель, а не обвязка: она решает, искать ли, что искать и достаточно ли найденного. Пустой результат — легальный исход, а не ошибка. Эскалация встроена как инструмент модели, а не как кнопка в интерфейсе оператора.
Как оформляется заявка и куда она попадает?
Оформление — отдельный инструмент агента: он вызывается, когда в диалоге появились контакт и суть запроса. Заявка ложится строкой в журнал и тем же моментом уходит уведомлением оператору, без выгрузки и без ручного переноса. Диалог при этом продолжается в том же чате — клиента никуда не переключают.
Как обновляется база знаний?
Отправкой .md-файла в админ-чат. Агент определяет категорию и место, коммитит в git, пересобирает индекс и отчитывается числом документов. Версии и откат достаются от git бесплатно; отдельная команда пересобирает индекс вручную.
Что мешает подсунуть агенту вредный запрос?
На входе стоит отдельная лёгкая модель: спам, попытки инъекции и офтоп до ядра не доходят. Поверх — модерация со словарями, предупреждением, блокировкой и сигналом оператору. Десять отбитых попыток инъекции — один из порогов приёмки.
Что происходит, когда человек не отвечает?
Диалог помечен как ожидающий человека. Клиенту при этом уже сказано честно: уточню и вернусь. Это хуже мгновенного ответа и лучше уверенного ответа без источника.
Сколько стоит обращение?
Расход только на модель: поиск, индекс и хранилище стоят ноль. Точная цифра за обращение снимается с рабочей базы по счётчику токенов и появится в карточке отдельной записью. Для сравнения: менеджер по работе с клиентами по вакансиям hh.ru — 71 000 ₽ в месяц.
Кто такой нейросотрудник и что он умеет?
Нейросотрудник — это программа, которая ведёт переписку с клиентом вместо дежурного оператора: отвечает фактами из подготовленной базы, сама оформляет заявку и передаёт человеку то, чего в базе нет. Здесь это агент в Telegram, работает круглосуточно. Сам он не учится и не додумывает: базу пополняет человек отправкой файла в админ-чат, а пилот из 9 диалогов и 47 сообщений за пять дней проверял контур приёма, а не качество ответов по документам.
Заменит ли ИИ-менеджер по продажам человека?
ИИ-менеджер в этой сборке живого человека не заменяет: продажи и допродажи в первой версии сознательно отложены, а агент принимает обращение, отвечает по документам базы и оформляет заявку, когда в диалоге появились контакт и суть. Всё, чего в базе нет, уходит оператору: тот получает историю и черновик ответа, а его ответ возвращается клиенту в тот же чат. Правило источника гарантированно оставляет часть обращений человеку — это свойство конструкции, а не недоделка.
Можно ли принимать заявки с сайта?
Пока нет: агент работает только в Telegram, и клиент прямо с сайта написать ему не может — это названо в границах открытым текстом. Второй канал заложен швом с самой первой версии: веб-виджет отложен и подключается отдельным адаптером, ядро при этом не трогается. Сейчас обращение приходит в Telegram, а заявка из него строкой ложится в журнал, и оператору тем же моментом уходит уведомление.
- Nygard M. Documenting Architecture Decisions, 2011. cognitect.com
- Ousterhout J. A Philosophy of Software Design. Yaknyam Press, 2018 — deep modules.
- Cockburn A. Hexagonal architecture, 2005. alistair.cockburn.us
- Yao S., Zhao J., Yu D., Du N., Shafran I., Narasimhan K., Cao Y. ReAct: Synergizing Reasoning and Acting in Language Models. ICLR, 2023. arXiv:2210.03629
- El-Yaniv R., Wiener Y. On the Foundations of Noise-free Selective Classification. Journal of Machine Learning Research, 11, 2010 — воздержание от ответа как легальный исход.
- Shore J. Fail Fast. IEEE Software, 21(5), 2004. doi:10.1109/MS.2004.1331296
- Nosek B. A., Ebersole C. R., DeHaven A. C., Mellor D. T. The preregistration revolution. PNAS, 115(11), 2018. doi:10.1073/pnas.1708274114
- Es S., James J., Espinosa-Anke L., Schockaert S. RAGAS: Automated Evaluation of Retrieval Augmented Generation. 2023. arXiv:2309.15217 — faithfulness: утверждение выводимо из документа.
- Zheng L. et al. Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena. NeurIPS, 2023. arXiv:2306.05685
- OWASP. Top 10 for Large Language Model Applications — LLM01: Prompt Injection. owasp.org