"The call didn't convert" isn't something you can fix. "People hang up at the pitch when they hear the brand name" is. A school-book publisher we work with scores every AI call after it ends, with separate one-word fields for the outcome, the primary drop reason, and the stage of the script where the call broke. It also tracks whether the caller suspected a bot, and when. Counting those fields across thousands of calls tells the team exactly which line to rewrite. Here's the setup.
Add failure analytics to your agent: Try Edesy free — Rs 50 free credit, no demo needed.
Three fields that explain failures
1. Outcome. What finally happened: approved, not interested, not qualified, callback, wrong person, no answer, dropped early, hostile.
2. Drop reason. Why a call that didn't succeed ended:
| Value | Meaning |
|---|---|
| NONE | The call succeeded |
| BUSY | Person was busy, driving or in a meeting |
| REFUSED_QUALIFICATION | Wouldn't answer the qualifying question |
| NO_INTEREST | Declined after hearing the offer |
| LANGUAGE_MISMATCH | Spoke a language the agent couldn't follow |
| AUDIO_UNCLEAR | Bad line or noise |
| AGENT_ERROR | Agent repeated itself, asked the wrong thing, broke the flow |
| AI_SUSPECTED | Caller realised it was automated and disengaged |
| UNKNOWN | Can't tell from the transcript |
Rule: pick the reason that actually ended the call, not the first moment of friction.
3. Stage. Where it broke: opening, pitch, qualification question, second question, close.
What the combinations tell you
| Pattern | Likely fix |
|---|---|
| Many drops at OPENING | Shorter first line, reason up front (30-second calls) |
| NO_INTEREST at PITCH | Stronger reason or offer, fewer words |
| REFUSED_QUALIFICATION at Q1 | Question feels intrusive or confusing, so rephrase |
| LANGUAGE_MISMATCH anywhere | Wrong language for the list; add bilingual mode or a detector (multilingual handoff) |
| AGENT_ERROR | Prompt bug: repeated greeting, re-asking known details |
| AI_SUSPECTED right after a slow reply | Latency or pronunciation, not the script (dead air) |
About bot suspicion
Tracking whether callers suspected an AI, and at which stage, is a useful quality signal: suspicion right after a delayed or robotic turn points to latency, stretched words or a mispronounced brand. It is not a reason to hide that the call is automated. We recommend telling callers upfront; see recording consent wording.
How the scoring runs
Each field is a separate short evaluator on the same transcript that returns one word. Running them independently keeps each one simple and consistent. The results become dashboard columns and can be exported or sent to your CRM. More on the mechanics: score every AI call automatically.
Good evaluator instructions:
- A shared preamble describing the call's goal and who AGENT and USER are.
- "Output ONLY ONE WORD from the allowed list."
- "If the transcript is empty or unintelligible, output UNKNOWN."
- One-line definitions for every value.
A weekly review routine
- Count calls by outcome.
- For failures, count by drop reason × stage.
- Pick the biggest single cell (e.g. NO_INTEREST at PITCH).
- Rewrite that one line; run a few hundred calls; compare.
One change at a time, so you know what worked.
Try it
Create a free account, add outcome, drop reason and stage fields to your agent, and run 50 calls. The full use case is in how a publisher reaches teachers with AI calls.