Один из ключевых вопросов, который задаёт каждый руководитель продаж: «Почему конверсия у одних менеджеров 35%, а у других — 12%?» Ответ лежит в звонках. Но кто будет их слушать?
Я исследовал этот процесс и обнаружил интересную вещь: большинство CRM и колл-центровых инструментов дают запись звонка и транскрипт — и считают задачу решённой. Но транскрипт в 8 000 слов — это не аналитика. Это новая работа.
Анализ: где теряется контроль
Я провёл интервью с несколькими руководителями небольших отделов продаж. Картина была одинаковой:
- Прослушивают в лучшем случае 5–10% звонков, только когда что-то пошло не так
- Скрипт продаж есть у всех, но проверить его соблюдение — нет ресурсов
- Обратная связь менеджерам — раз в неделю, по памяти, без конкретики
- Результат: одни и те же ошибки повторяются месяцами
Проблема не в отсутствии данных — данных завались. Проблема в отсутствии интерпретации.
Инсайт: продать нужно не транскрипт, а решение
Ключевое осознание пришло после одного интервью: руководитель сказал — «Мне не нужна запись, мне нужно знать: этот менеджер вообще задавал квалифицирующие вопросы или сразу начал продавать цену?»
Это переформатировало всю архитектуру продукта. Не «расшифруй звонок», а «оцени звонок по заданному скрипту и скажи, где было отклонение».
Решение: конвейер от аудио до управленческого инсайта
Загрузка аудио (до 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 для мониторинга
Результат
Платформа закрывает 100% звонков — руководитель получает оценку каждого, а не выборку. Дашборды показывают KPI по менеджерам: конверсия, топ-ошибки по скрипту, динамика по неделям.
Подробный технический разбор архитектуры и вызовов — в моём блоге.
Главный урок: правильный вопрос важнее правильного алгоритма. Я мог бы сделать «крутой транскрибатор» — вместо этого сделал инструмент управления качеством продаж.