CallLens

Платформа аналітики дзвінків · працює на API

Кожен дзвінок відділу продажів — транскрибований і оцінений автоматично.

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

дзвінок → вебхук → транскрипція → оцінка → дашборд

Початок роботи

Запуск за чотири кроки

Один раз під'єднуєте джерело — далі все відбувається без вашої участі.

  1. 01

    Реєстрація

    Створюєте робочий простір команди й запрошуєте керівників відділу.

  2. 02

    Підключення джерела

    Генеруєте вебхук-адресу й секрет та вказуєте їх у своїй телефонії або CRM. Записи починають надходити автоматично.

  3. 03

    Налаштування чек-листа

    Описуєте критерії оцінки: привітання, виявлення потреби, робота із запереченнями, домовленість про наступний крок.

  4. 04

    Готово

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

Демонстрація

Подивіться, як це працює

Наше демо розпізнавання реального дзвінка — та приклад аудіозапису, на якому воно працювало.

Запис екрана: CallLens розшифровує й оцінює реальний дзвінок у кабінеті.

Архітектура

Шлях дзвінка крізь систему

П'ять зон обробки. Синхронне приймання на Symfony повертає відповідь за мілісекунди, а вся «важка» робота йде асинхронно у воркерах і викликає зовнішні API . Власний GPU не потрібен.

  1. A
    Зона · Клієнт
    поза вашим контуром

    Джерело дзвінка

    • Джерело Twilio · Binotel · Ringostat · Bitrix24
    • Подія завершення дзвінка
    • Дані запис mp3/wav, бажано двоканальний (менеджер/клієнт окремо)
  2. B
    Зона · Symfony (синхронно)
    < 50 мс

    Приймання вебхука

    • Endpoint POST /v1/calls/webhook
    • Безпека перевірка підпису HMAC-SHA256
    • Дедуп ідемпотентність за call_id
    • Дія зберегти аудіо в Hetzner S3 → dispatch у Messenger
    • Відповідь 202 Accepted одразу, не чекаючи обробки
  3. C
    Зона · Воркери (асинхронно)
    Messenger

    Обробка дзвінка

    • Транспорт Redis / Doctrine · ретраї з backoff · dead-letter
    • Виклики через Symfony HttpClient за єдиним інтерфейсом
    Конвеєр · зовнішні API
    платно/хв
    1 · STTDeepgram / AssemblyAI → транскрипт + діаризація + таймкоди слів
    2 · LLMGPT-4o-mini / Gemini → JSON-оцінка по критеріях + цитати (structured output)
    3 · EMBOpenAI / Voyage → вектори реплік для пошуку
  4. D
    Зона · Дані
    Doctrine ORM

    PostgreSQL + pgvector

    • Сутності Call · Transcript · Utterance(+vector) · Score · Tenant
    • Ізоляція дані розділені за tenant_id (мультитенантність)
    • Пошук семантичний по векторах (pgvector, індекс HNSW)
  5. E
    Зона · Інтерфейс
    REST

    Подача та дашборд

    • API Symfony REST (JSON), автентифікація за токеном і тенантом
    • Аналітика Cube — семантичний шар і пре-агрегації над PostgreSQL для швидких звітів
    • UI Next.js (React) — оцінки, транскрипт, звіти, пошук по дзвінках

Бурштинова зона C — єдина, що залежить від зовнішніх платних API. Усе сховано за інтерфейсом, тож провайдера можна замінити, а згодом — перенести транскрипцію на власний GPU, не чіпаючи зони A, B, D, E.

Рішення про інфраструктуру

Чому API, а не власний GPU

На старті й ранньому зростанні платні API дешевші за власний GPU у 3–4 рази — і значно простіші в експлуатації. Власний GPU стає вигідним лише на великому обсязі.

обрано на старті

Платні API

$310–520 / міс

за 50 000 хв/міс (≈ 10 000 дзвінків)

  • ✓Нуль DevOps на інференс
  • ✓Оплата лише за фактичне використання
  • ✓Миттєве масштабування під навантаження
  • ✓Запуск за тижні, без капітальних витрат

Власний GPU

$1 300–2 040 / міс

за той самий обсяг 50 000 хв/міс

  • ✕GPU простоює ~96% часу на малому обсязі
  • ✕Потрібен DevOps: vLLM, моніторинг, оновлення моделей
  • ✕Фіксована вартість незалежно від навантаження
  • →Окупається лише з ~215 000 хв/міс
Місячна вартість на старті (50 000 хв)
Платні API≈ $415
Власний GPU≈ $1 670

Усе сховано за єдиним інтерфейсом, тож коли обсяг перетне ~215 000 хв/міс, транскрипцію переносимо на власний GPU без переписування системи — зони архітектури A, B, D, E лишаються незмінними.

Від звуку до аналітики

Як розмова стає цифрою

Чотири перетворення: сирий звук дзвінка крок за кроком стає структурованою оцінкою менеджера та зведеною аналітикою.

01 · Звук

Сирий аудіозапис дзвінка

02 · Текст + ролі
Менеджер
Доброго дня! Підкажіть, що для вас зараз найважливіше?
Клієнт
Хочемо знизити витрати на логістику.

Транскрипт із діаризацією

03 · Оцінка
Привітання9/10
Виявлення потреби8/10
Робота із запереченнями5/10

«…надішлю комерційну пропозицію вже сьогодні» — цитата-доказ

Оцінка за вашим чек-листом

04 · Аналітика
М1М2М3М4М5

Середні оцінки по команді

Звіти та аналітика

Метрики поверх PostgreSQL з Cube

Cube — семантичний шар над базою: метрики описуються один раз, а віддаються через API з пре-агрегаціями та кешем. Звіти лишаються швидкими на самому PostgreSQL — без окремого пошукового рушія.

Джерело

PostgreSQL

Call · Score · Utterance

Семантичний шар

Cube

пре-агрегації + кеш

Доступ

API

REST / GraphQL / SQL

Інтерфейс

Next.js

дашборди та звіти

cube · модель метрик
cubes:
  - name: calls
    sql_table: calls
    measures:
      - name: avg_score
        sql: score
        type: avg
      - name: count
        type: count
    dimensions:
      - name: manager
        sql: manager_id
        type: string
      - name: week
        sql: created_at
        type: time
    pre_aggregations:
      - name: by_manager_week
        measures: [avg_score, count]
        dimensions: [manager]
        granularity: week

Середній бал по менеджеру

avg_score
М1М2М3М4М5

Динаміка якості по тижнях

granularity: week

Топ заперечень клієнтів

count
Ціна42
Терміни впровадження28
Працюємо з конкурентом19
Складна інтеграція11

Підключення джерела

Що таке «реєстрація вебхука»

Після реєстрації в розділі Налаштування → Інтеграції ви отримуєте власну вебхук-адресу та секретний ключ. Цю адресу ви вказуєте у своїй телефонії чи CRM.

Коли дзвінок завершується, ваша система надсилає на цю адресу повідомлення із посиланням на запис. Symfony перевіряє підпис, зберігає аудіо й ставить дзвінок у чергу на обробку. Одне налаштування на старті — далі автоматично.

  • ✓Підпис HMAC-SHA256 захищає від підробних запитів.
  • ✓Двоканальні записи — менеджер і клієнт на окремих доріжках, без помилок діаризації.
  • ✓Немає вебхука — записи можна завантажувати вручну або через REST API.
вебхук дзвінка
POST https://api.calllens.app/v1/calls/webhook
X-CallLens-Signature: sha256=9f3a…

{
  "call_id": "c_8421",
  "recording_url": "https://…/rec.mp3",
  "agent_id": "mgr_17",
  "channels": "dual",
  "started_at": "2026-06-17T09:14:02Z",
  "duration_sec": 312
}
Symfony — приймання
#[Route]('/v1/calls/webhook', methods:['POST'])
public function handle(Request $r): Response
{
    $this->verifySignature($r);        // HMAC
    $bus->dispatch(new ProcessCall($payload));
    return new Response(status: 202);
}

Інфраструктура · залізо

Одного виділеного сервера достатньо

Уся важка обробка — транскрипція, оцінка, ембединги — виконується на зовнішніх API, тож серверу не потрібен GPU. Він тримає лише застосунок, воркери, базу та чергу — це спокійно тягне один виділений сервер Hetzner.

Виділений сервер

Hetzner AX-line

  • AMD Ryzen · 8 ядер / 16 потоків
  • 64 ГБ DDR5 ECC
  • 2 × 512 ГБ NVMe (RAID 1)
  • 1 Гбіт/с, без ліміту трафіку
від €46 / міс

+ ~€39 одноразово (налаштування)

Сховище аудіо

Hetzner Object Storage

  • S3-сумісне (працює з тим самим кодом)
  • ЦОД у ЄС · GDPR (замість Cloudflare)
  • 1 ТБ сховища + 1 ТБ трафіку в базі
  • далі — pay-as-you-go
€4.99 / міс за 1 ТБ

S3 API-виклики та вхідний трафік — безкоштовно

Разом за інфраструктуру
≈ €50–65 / міс

сервер + сховище

Чому одного сервера достатньо

  • ✓Немає GPU — лише веб, воркери, база, черга
  • ✓Воркери чекають на відповіді API (I/O), а не вантажать CPU
  • ✓PostgreSQL + Redis спокійно живуть на 64 ГБ і NVMe
  • →Масштаб: більший сервер або +окремий воркер

Що встановлено на сервері

Повний стек проєкту на одному вузлі (натисніть для деталей):

aaPanel — керування та аналітика сервера

Безкоштовна веб-панель для адміністрування сервера: вебсервер, бази, домени, SSL, cron і бекапи — у графічному інтерфейсі, без ручної консолі. Окремо дає аналітику роботи сервера в реальному часі.

•Моніторинг CPU / RAM / диску / трафіку
•SSL-сертифікати в кілька кліків
•Бекапи за розкладом
•Файрвол і журнали безпеки

Ціни Hetzner вказані без ПДВ і орієнтовні — перевірте актуальні конфігурації та вартість на сайті Hetzner перед замовленням.

Готові підключити свій відділ продажів?

Реєстрація, вебхук, чек-лист — і перші оцінки вже сьогодні.

Почати →