Один из ключевых вопросов руководителя продаж: почему одни менеджеры стабильно проводят разговор по скрипту, а другие теряют клиента на раннем этапе? Ответ лежит в звонках. Но кто будет их слушать?
Я исследовал этот процесс и обнаружил интересную вещь: большинство 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 по менеджерам: конверсию, повторяющиеся ошибки по скрипту и динамику по неделям.
Подробный технический разбор архитектуры и вызовов — в моём блоге.
Главный урок: правильный вопрос важнее правильного алгоритма. Я мог бы сделать «крутой транскрибатор» — вместо этого сделал инструмент управления качеством продаж.