ProductionAI Automation EngineerLLM Application EngineerInternal Tools Engineer

Sales Call Insight — Анализатор звонков

Задача

Автоматизировать контроль качества звонков в отделах продаж малого и среднего бизнеса с помощью AI.

⚡

Проблема

Руководитель отдела продаж вручную прослушивает только небольшую выборку звонков. Остальной массив остаётся без системной проверки, поэтому повторяющиеся ошибки менеджеров и причины снижения конверсии трудно обнаружить.

💡

Инсайт

Руководитель не хочет слушать звонки — он хочет знать, кто из менеджеров теряет клиентов и на каком шаге скрипта. Продукт должен давать не транскрипт, а управленческий инсайт.

Моя роль

Лично отвечал за анализ процесса, архитектуру, модель данных, критерии оценки, AI-assisted реализацию, интеграции, проверку, деплой и эксплуатацию

Результат

SaaS-платформа с batch-обработкой до 200 звонков, гибкими скриптами оценки, RBAC-ролями и дашбордами KPI по менеджерам

Production-сервис используется для анализа звонков и контроля качества продаж.

Проверено: 1 сентября 2026 г.
ReactTypeScriptNode.jsExpressPostgreSQLPrismaBullMQRedis 7Better AuthYandex SpeechKitYandexGPTDocker
Архитектура решения

Основной поток данных и обработки

Публично описанный контур системы
Архитектура Sales Call Insight: React-интерфейс, Node.js API, BullMQ и Redis, Object Storage, SpeechKit, YandexGPT, PostgreSQL и отчёты KPI
Компоненты и связи показаны без закрытых данных и эксплуатационных реквизитов.

Личная зона ответственности

  • Анализ процесса контроля качества звонков и формализация критериев оценки
  • Архитектура сервиса, модель данных и очереди фоновой обработки
  • Интеграция Yandex SpeechKit и YandexGPT
  • Проверка пользовательских сценариев, деплой и эксплуатация

Как проверялось решение

  • Batch-сценарии загрузки и обработки звонков
  • Проверка ролевой модели и доступа к данным
  • E2E-проверка пути от аудио до отчёта

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

Я исследовал этот процесс и обнаружил интересную вещь: большинство CRM и колл-центровых инструментов дают запись звонка и транскрипт — и считают задачу решённой. Но транскрипт в 8 000 слов — это не аналитика. Это новая работа.

Анализ: где теряется контроль

Я провёл интервью с несколькими руководителями небольших отделов продаж. Картина была одинаковой:

  • Прослушивают только небольшую выборку звонков, обычно когда что-то уже пошло не так
  • Скрипт продаж есть у всех, но проверить его соблюдение — нет ресурсов
  • Обратная связь менеджерам — раз в неделю, по памяти, без конкретики
  • Результат: одни и те же ошибки повторяются месяцами

Проблема не в отсутствии данных — данных завались. Проблема в отсутствии интерпретации.

Инсайт: продать нужно не транскрипт, а решение

Ключевое осознание пришло после одного интервью: руководитель сказал — «Мне не нужна запись, мне нужно знать: этот менеджер вообще задавал квалифицирующие вопросы или сразу начал продавать цену?»

Это переформатировало всю архитектуру продукта. Не «расшифруй звонок», а «оцени звонок по заданному скрипту и скажи, где было отклонение».

Решение: конвейер от аудио до управленческого инсайта

Загрузка аудио (до 200 файлов за раз)
  → Очередь BullMQ → Yandex Object Storage
    → Yandex SpeechKit (транскрибация с диаризацией)
      → YandexGPT (оценка по скрипту, сентимент-анализ)
        → Структурированный отчёт по каждому звонку
          → Агрегированные дашборды по менеджерам

Архитектурные решения, которые мне важны

Переразбор без повторной транскрибации. Если руководитель захотел изменить скрипт или добавить новый критерий — система не гоняет аудио через SpeechKit заново. Транскрипт уже сохранён, LLM просто переоценивает его по новым критериям. Это экономия API-квот и денег клиента.

BullMQ + Redis для очередей. Загрузить 200 звонков одновременно — не проблема. Очередь забирает их в фоне, сервер не падает, пользователь видит прогресс в реальном времени.

Гибкая система скриптов. Скрипты настраиваются через интерфейс без кода. Можно задать критерии, вес каждого, порог допустимого отклонения. Руководитель настраивает — не разработчик.

RBAC с тремя ролями. Владелец бизнеса видит всё. Менеджер — только свои звонки и свой рейтинг. Агент — только текущую сессию. Это важно: менеджеры не должны сравнивать друг друга в реальном времени — это создаёт нездоровую конкуренцию.

Стек

  • Frontend: React 18 + TanStack Query v5 (серверный стейт) + shadcn/ui
  • Backend: Node.js + Express + Prisma ORM + PostgreSQL 16
  • Очереди: BullMQ + Redis 7
  • AI/Cloud: Yandex SpeechKit (ASR), Yandex Object Storage, YandexGPT
  • Auth: Better Auth
  • Инфраструктура: Docker + UFW + Fail2ban + SSH-tunnel для мониторинга

Результат

Платформа ставит в обработку каждый загруженный звонок, а не случайную ручную выборку. Дашборды показывают KPI по менеджерам: конверсию, повторяющиеся ошибки по скрипту и динамику по неделям.

Подробный технический разбор архитектуры и вызовов — в моём блоге.

Главный урок: правильный вопрос важнее правильного алгоритма. Я мог бы сделать «крутой транскрибатор» — вместо этого сделал инструмент управления качеством продаж.

Как считается результат

Публично описываются функции production-системы. Количественные бизнес-метрики публикуются только после сверки с рабочими данными.

Ограничения

Система использует внешние сервисы распознавания и LLM, поэтому качество и скорость зависят от входного аудио и доступности провайдеров.

Связанный материал
Прочитать технический разбор
Похожая задача

Нужно автоматизировать похожий процесс?

Покажите текущий сценарий, данные и желаемый результат — я помогу определить первый рабочий этап и формат подключения.