Define "stuck".
Most escalation rules trigger too late, because "stuck" was never defined. Pick three concrete heuristics; the agent escalates when any one is true.
- Same intent re-classified after two turns (the caller is rephrasing).
- Sentiment trajectory drops more than 0.4 in the last three turns.
- The agent has used a fallback phrase ("I'm not quite sure I caught that") twice in the same call.
Sentiment thresholds.
Sentiment is measured per turn on a −1 to +1 scale. Two thresholds matter: the floor and the trajectory.
| Floor | Escalate if any single turn registers below −0.6 |
| Trajectory | Escalate if 3-turn rolling slope is below −0.15/turn |
| Recovery | De-escalate only after 3 consecutive positive turns |
Warm handoff, scripted.
The single biggest CSAT killer is the cold transfer — re-explaining the problem to the third person on a call. AICall never cold-transfers. The agent ends with a one-sentence summary read out loud, then connects the human. The receiving human sees the transcript and the summary before the click-over.
// agent handoff template "Thanks for that. I'm going to bring my colleague {agent_name} into the call now — they handle exactly this. Before I hand you over: I've explained that you're calling about {intent}, that {key_facts}, and that you'd like {desired_outcome}. They'll pick up in just a moment."
Three rules, always.
Escalation invariants
- The caller is never told "you'll need to call back". Ever.
- The human gets full context before the connection — no re-introductions.
- Every escalation is logged with the trigger reason; weekly review surfaces drift.
Weekly drift review.
Once a week we run a 30-minute review with your QA lead: every escalation, classified by trigger reason. Most teams find that 80% of escalations come from 3-5 intent clusters; once those clusters are fixed in the playbook, escalation rate drops 40% inside a quarter.
Escalation isn't failure. It's signal. The right place to use the signal is in the playbook, not the rule itself.