Розробка AI-системи предиктивного набору номера (Predictive Dialer)

Кол-центр витрачає до 40% часу операторів на очікування з'єднання, а середній agent utilization становить 60–70%. Предиктивний дайлер (англ. [predictive dialer](https://en.wikipedia.org/wiki/Predictive_dialer)) вирішує цю проблему — за умови правильно налаштованого алгоритму та ML-моделі. Ми розробл

Напрямки AI-розробки

Часті запитання

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

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1441
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1301
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    998
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1267
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    714
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    1006

Кол-центр витрачає до 40% часу операторів на очікування з'єднання, а середній agent utilization становить 60–70%. Предиктивний дайлер (англ. predictive dialer) вирішує цю проблему — за умови правильно налаштованого алгоритму та ML-моделі. Ми розробляємо AI-системи предиктивного набору, які підвищують productive talk time до 90% та утримують abandoned calls у межах 3%. Окупність такої системи — 6–12 місяців за рахунок зростання утилізації операторів. Отримайте консультацію з оптимізації обдзвону: оцінимо потенціал зростання та підготуємо КП.

Алгоритм предиктивного набору

from dataclasses import dataclass from typing import Callable import asyncio import numpy as np @dataclass class DialerMetrics: active_calls: int available_agents: int avg_call_duration: float avg_answer_rate: float avg_ring_time: float abandonment_rate: float = 0 class PredictiveDialer: MAX_ABANDONMENT_RATE = 0.03 PACING_ADJUSTMENT_STEP = 0.05 def __init__(self): self.pacing_factor = 1.2 self.metrics_window = [] def calculate_calls_to_initiate(self, metrics: DialerMetrics) -> int: available = metrics.available_agents - metrics.active_calls if available <= 0: return 0 predicted = int(available * self.pacing_factor / metrics.avg_answer_rate) if metrics.abandonment_rate > self.MAX_ABANDONMENT_RATE: self.pacing_factor = max(1.0, self.pacing_factor - self.PACING_ADJUSTMENT_STEP) elif metrics.abandonment_rate < self.MAX_ABANDONMENT_RATE * 0.5: self.pacing_factor = min(3.0, self.pacing_factor + self.PACING_ADJUSTMENT_STEP) return max(0, predicted - metrics.active_calls) async def run_dialing_loop(self, contacts: list[dict], get_metrics: Callable[[], DialerMetrics], initiate_call: Callable[[dict], None]): contact_index = 0 while contact_index < len(contacts): metrics = await get_metrics() calls_to_make = self.calculate_calls_to_initiate(metrics) for _ in range(calls_to_make): if contact_index >= len(contacts): break contact = contacts[contact_index] if await self.should_call(contact): await initiate_call(contact) contact_index += 1 await asyncio.sleep(1) 

ML-предикція answer rate

class AnswerRatePredictor: FEATURES = [ "hour_of_day", "day_of_week", "previous_attempts", "last_contact_days", "phone_type", "timezone_offset", "segment", ] def predict_answer_probability(self, contact: dict, now: datetime) -> float: features = self.extract_features(contact, now) return self.model.predict_proba([features])[0][1] 

ML-модель навчається на історичних логах дзвінків: мінімум 50 000 записів для стабільної роботи. Використовуємо градієнтний бустинг (CatBoost/LightGBM) — він дає приріст answer rate на 15–20% порівняно з евристиками. Feature engineering включає не лише перелічені ознаки, а й ковзні метрики по оператору: середня тривалість розмови за останню годину, частота передзвонів.

Як алгоритм уникає порушення норм abandoned rate?

FCC обмежує відсоток покинутих дзвінків — не більше 3%. Наш алгоритм динамічно регулює pacing factor на основі поточного abandonment rate. Якщо показник перевищує 3%, коефіцієнт знижується, щоб зменшити кількість одночасних дзвінків. Якщо показник нижче 1.5%, коефіцієнт збільшується, максимізуючи продуктивність. Така адаптація гарантує дотримання регуляторних вимог без ручного налаштування. У разі збою телеметрії алгоритм автоматично переходить у консервативний режим (pacing factor = 1.0).

Чому важлива ML-предикція answer rate?

Answer rate — ймовірність відповіді контакту. Її точне передбачення дозволяє набирати рівно стільки номерів, щоб зайняті оператори не чекали. Ми використовуємо градієнтний бустинг (CatBoost/LightGBM) та історичні дані для навчання моделі з ознаками часу доби, дня тижня, історії спроб та сегменту клієнта. Це дає приріст answer rate на 15–20% порівняно з простими правилами та знижує кількість незавершених викликів. У продакшені модель перенавчається щотижня з автоматичним відкатом на попередню версію при просіданні метрик.

Порівняння типів дайлерів

Характеристика Preview Dialer Progressive Dialer Predictive Dialer (наш)
Очікування оператора + (оператор бачить профіль) – (автоматичний набір після звільнення) – (набір до звільнення)
Утилізація операторів 40–60% 70–80% 85–95%
Abandoned calls 0% 1–2% <3%
Складність ML немає низька висока

Predictive dialer в середньому в 1,5 рази збільшує productive talk time порівняно з progressive dialer та в 2 рази — порівняно з preview dialer — за умови дотримання abandoned rate <3%.

Ключові метрики для бізнесу

Метрика До впровадження Після впровадження
Agent utilization 60–70% 85–95%
Abandoned calls 5–10% <3%
Productive talk time 30–40% 60–70%
Середній час очікування оператора 10–15 сек 1–2 сек

Процес розробки

  1. Аналітика: збір вимог, аудит поточної інфраструктури, заміри метрик (talk time, abandon rate, answer rate).
  2. Проектування: архітектура системи, вибір стеку (Python, asyncio, PostgreSQL + Redis, Kafka для черг), проектування ML-пайплайну.
  3. Розробка: реалізація алгоритму предиктивного набору, навчання ML-моделі, інтеграція з CRM та IP-телефонією (Asterisk, FreeSWITCH).
  4. Тестування: симуляція навантаження, A/B-тестування з контрольною групою.
  5. Деплой: контейнеризація (Docker, Kubernetes), моніторинг (Prometheus, Grafana), розгортання на bare-metal або хмарі.
  6. Підтримка: SLA 99.9%, доопрацювання моделі за результатами експлуатації.

Що входить у роботу

  • Розробка алгоритму предиктивного набору та ML-моделі.
  • Інтеграція з вашою телефонією та CRM.
  • Документація (архітектура, API, інструкція з експлуатації).
  • Навчання операторів та адміністраторів.
  • Гарантійна підтримка 6 місяців.

Економія від впровадження становить 30–50% операційних витрат на обдзвін за рахунок зростання утилізації операторів. FCC regulations on autodialers

Метрики компанії

Ми — команда AI-інженерів з 5+ роками досвіду в продакшені. Реалізували 20+ проектів для кол-центрів у банківській та телеком-галузях.

Строки

Базовий predictive dialer з простими правилами — від 6 до 8 тижнів. Повноцінна система з ML-оптимізацією (передбачення answer rate, time-to-call) — 3–4 місяці. Вартість розраховується індивідуально.

Замовте аудит поточних метрик — оцінимо потенціал зростання productive talk time та підготуємо комерційну пропозицію. Зв'яжіться з нами для консультації.