Beehive Logic

Call Analytics Platform — автоматизована транскрипція та AI-оцінювання якості для кол-центру (Go)

| Go · PostgreSQL · Redis · Echo · Templ · OpenAI · AssemblyAI

Огляд

Клієнт керує кол-центром продажів і підтримки та фактично «тонув» у необробленому аудіо. Записи розмов потрапляли на FTP-сервер, але керівники не мали способу — окрім прослуховування сотень MP3 щодня — зрозуміти, які дзвінки були якісними, які порушили скрипт, а які залишили клієнта незадоволеним.

Потрібен був єдиний внутрішній веб-застосунок, який автоматично приймає кожен дзвінок від телефонного провайдера, транскрибує його, оцінює за конфігурованим списком питань якості та представляє результати у швидкому дашборді з фільтрами, з яким реально можна працювати.

Call Analytics Platform — архітектура системи


Мій внесок

Я спроєктував і реалізував усю систему від початку до кінця на Go.

Бекенд і пайплайн

Webhook-ендпоінт (POST /call) приймає метадані дзвінків, які надсилає телефонний провайдер, і ставить фонові задачі в чергу. П’ять незалежних фонових воркерів, кожен спирається на чергу в БД зі статусами pending → done / failed, лічильниками спроб, логікою повторів та збереженням помилок по кожному завданню:

  • Duration worker — підключається до FTP клієнта, потоково читає MP3 і визначає реальну тривалість аудіо.
  • Transcription worker — надсилає аудіо до AssemblyAI і зберігає транскрипт, з захистом від «надто коротких» записів.
  • AI evaluation worker — формує промпт із транскрипту та динамічного списку питань якості, керованих через UI, викликає OpenAI, валідує структуровану JSON-відповідь і зберігає її з хешем для детекту змін (повторна оцінка запускається лише тоді, коли реально змінилися вхідні дані).
  • Webhook log cleanup worker — застосовує гнучку політику зберігання логів вебхуків.
  • Error log cleanup worker — те саме для історії помилок.

Веб-застосунок

  • HTTP-шар на Echo v4 з чітким поділом handler → service → repository.
  • Серверний рендеринг UI на Templ (компільовані типобезпечні Go-шаблони) — без накладних витрат SPA, швидкий перший рендер.
  • DataTables з повноцінним server-side processing (пагінація, фільтрація, сортування виконуються в PostgreSQL, а не в браузері) для таблиць дзвінків та логів вебхуків.
  • Налаштування видимості колонок зберігаються окремо для кожного користувача в БД — кожен менеджер бачить свій звичний вид.
  • Рольовий доступ (адміністратор / звичайний користувач), сесії в Redis через scs, безпечний флоу зміни пароля.
  • Налаштування у самому застосунку для ключів AssemblyAI, моделі та параметрів OpenAI, питань AI та зберігання логів — тонке налаштування пайплайну без жодних редеплоїв.
  • Вбудоване відтворення MP3, що проксується з FTP, — менеджер слухає дзвінок поряд із транскриптом та AI-оцінкою.

Дашборд дзвінків — DataTable із серверною фільтрацією

Інфраструктура

  • PostgreSQL (sqlx) з 25+ версіонованими міграціями, що застосовуються автоматично при старті через golang-migrate.
  • Redis для сесій.
  • Docker Compose для локальної розробки; один бінарник для продакшну.
  • Робота з часовою зоною (Europe/Kyiv), структурне логування через logrus.

Керування користувачами з рольовим доступом


Налаштування з UI

Кожну частину пайплайна можна підлаштувати з інтерфейсу — без редеплоїв. Керівники задають ключі AssemblyAI, параметри моделі OpenAI, мінімальну тривалість аудіо, типи маршрутів транскрибування та політику зберігання логів прямо в екрані налаштувань.

Налаштування — AssemblyAI, OpenAI, ретенція

Список AI-питань якості — це окрема CRUD-сутність. Додати новий критерій («чи привітався оператор?», «чи був конфлікт?», «чи запропонували TG-бот?») — питання секунд: вводимо у відповідний екран — і наступна партія дзвінків уже оцінюється за ним.

AI-питання якості — гнучкі, керовані через CRUD


Технологічний стек

ШарТехнологія
МоваGo (Golang)
HTTP-фреймворкEcho v4
Рендеринг UITempl (компільовані типобезпечні Go-шаблони)
База данихPostgreSQL із sqlx, 25+ версіонованих міграцій через golang-migrate
СесіїRedis (через scs)
AI / MLOpenAI API, AssemblyAI
ІнтеграціїПриймання аудіо з FTP, вебхуки телефонії
Frontend-інтерактивDataTables зі server-side processing
ІнфраструктураDocker Compose, продакшн-деплой одним бінарником
СпостережуваністьСтруктурне логування logrus, часова зона Europe/Kyiv

Результат

Замість годин ручного прослуховування клієнт отримав автоматизований пайплайн, який обробляє кожен записаний дзвінок упродовж кількох хвилин після появи файлу на FTP.

  • Керівники відкривають єдиний дашборд, фільтрують за датою, оператором або вердиктом AI — і відразу провалюються до транскрипту з оцінками по кожному питанню.
  • Додати новий критерій якості — секунди: ввели питання в UI налаштувань, і наступний пакет дзвінків уже оцінюється з його урахуванням.
  • Платформа стабільно працює в продакшні та є основним інструментом команди для контролю якості розмов.
Beehive Logic

Високопродуктивна програмна інженерія для лідерів ринку. Працюємо в різних регіонах України, обслуговуємо клієнтів по всьому світу.

Послуги

Компанія

© 2026 Beehive Logic