From 118,000 unattended calls to 401 qualified leads in the CRM
Dialer Intelligence Pipeline
The challenge
A high-volume outbound calling operation had two systems that never spoke to each other: a commercial dialer where every call produced a recording, a transcript and a summary, and a separate CRM where the actual sales work happened. No native integration existed between them, and the only off-the-shelf bridge could copy a contact across but could not judge whether the conversation was worth anything.
The result was a backlog of 118,084 unreviewed calls across 26 campaigns spanning sixteen months. Only 1.9% of them were real conversations — the rest were no-answer, voicemail, disconnected or wrong-number. Finding a motivated seller meant reading past roughly fifty dead calls for every live one, so nobody did. The leads sat in the dialer and never became CRM contacts.
What we built
We built a pipeline that turns raw call records into scored, written-up CRM leads without anyone listening to a call.
A deterministic filter runs first and discards the noise outright, keeping a call only if it is actually writable and shows conversation signal — an agent-graded engaged disposition, or sufficient duration paired with a summary or a multi-turn transcript, or a keyword from the client's own taxonomy. This removes roughly 98% of the volume before a single model call is made, which is what makes the economics work at this scale.
Every surviving conversation goes to one classifier that reads the transcript alongside the dialer's own summary and returns a single structured verdict across 17 fields — a 0–10 motivation score, a hot/warm/cold tier, seller versus buyer, timeline, price expectations, property condition, pain points, and CRM tags drawn from a fixed vocabulary with no invented tags permitted. Hard disqualifiers override the score outright, and where the transcript and the summary disagree, the transcript wins.
Each qualified lead is written into the CRM as a complete contact: deduplicated against what is already there, tagged with its priority and signals, given a plain-English analysis note explaining what happened on the call and how to proceed, and logged with a link back to the original recording. Every write carries an idempotency marker, so re-runs never duplicate.
It runs in two modes — a one-time catch-up over the entire calling history, and a daily incremental pass. Deliberately built with no orchestration framework, no queue and no database, so the non-technical operator can run and edit it from a four-option menu.
What was delivered
What the pipeline filtered, end to end
- 118,084calls reviewed
- 2,208real conversations
- 401leads delivered
98.3%
write success
401 of 408 attempted
100%
hot leads delivered
both production runs
~80 min
to process 369 leads
zero partial writes
- 118,084 calls reviewed, 2,208 real conversations identified, 401 leads delivered to the CRM
- 98.3% write success on the qualified set
- 100% of hot leads delivered — in both production runs
- 100% classification coverage across all 2,208 qualifying conversations
- Roughly 98% of call volume filtered out before any human or model review
- 369 leads processed and written end to end in about 80 minutes, with zero partial writes
Every figure above is taken from the delivered system itself. Where we don't have a client-verified business outcome, we report what was built and measured rather than estimating an improvement.
Tech stack
- Claude
- Python
- Bash
- JSONL state files
- Dialer REST API
- CRM REST API
Related service
AI Workflow & Business Process AutomationAutomate the work your team shouldn't be doing by hand.
Have a similar project?
Tell us your goal and we'll map the fastest path to results.