DZ//Denis Zhiglov CV ↓
← All cases · Call centre & support
SYS-09real time

Answering-machine detection on live calls

Drops the call when a machine answers, so operators talk only to people: ~30 s saved per such call, and machines take 20–40% of calls.

95%F1 after retraining

System flow

01 · InputFirst 3 s of a call
02 · ModelCatBoost · 184 audio features
03 · ActionDrop the call if a machine
04 · ImpactOperators talk to people
GuardsFail-safe: any error counts as a human. Retraining removed the 10 s vs 3 s gap between training and production audio.

How it works

How it works

The call centre was spending operator time on calls answered by machines: 20–40% of all calls, about 30 seconds each. I trained a model that tells a human from a machine by the first three seconds of audio. It runs as a separate service next to the telephony and decides during the call; if anything goes wrong, the call is treated as human so that no live player is lost. The first version worked worse on real calls: it had learned on 10 seconds of audio but got only 3 in production. After retraining on real conditions, recall went from 79% to 93%. The service was handed over to the VoIP team and runs on the auto-dialer.

System spec
Input
The first 3 seconds of every outbound call.
Model
CatBoost on 184 acoustic features, served by FastAPI and wired into the telephony stack.
Action
Drops the call when a machine answers, so operators talk only to people: ~30 s saved per such call, and machines take 20–40% of calls.
Guards
Fail-safe: any error counts as a human. Retraining removed the 10 s vs 3 s gap between training and production audio.
Impact
Recall 79% → 93%, F1 85% → 95%, false positives 3.6% → 2.9%. Handed over to the VoIP team.
CatBoost / audio features / FastAPI / Asterisk

Numbers

Before and after retraining

version 1version 2
Recall
79%
93%
F1
84.8%
95%

False positives — lower is better

version 1version 2
False positive rate
3.6%
2.9%