Кол-центр витрачає до 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 сек |
Процес розробки
- Аналітика: збір вимог, аудит поточної інфраструктури, заміри метрик (talk time, abandon rate, answer rate).
- Проектування: архітектура системи, вибір стеку (Python, asyncio, PostgreSQL + Redis, Kafka для черг), проектування ML-пайплайну.
- Розробка: реалізація алгоритму предиктивного набору, навчання ML-моделі, інтеграція з CRM та IP-телефонією (Asterisk, FreeSWITCH).
- Тестування: симуляція навантаження, A/B-тестування з контрольною групою.
- Деплой: контейнеризація (Docker, Kubernetes), моніторинг (Prometheus, Grafana), розгортання на bare-metal або хмарі.
- Підтримка: 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 та підготуємо комерційну пропозицію. Зв'яжіться з нами для консультації.







