Escalate to human Jev pattern
A single Noul: should a person take this over from the bot or the junior queue?

Escalation is a door, not a department. Use a Noul so you can set the tripwire in code (0.75 for consumers, 0.4 for enterprise). Put what the bot already tried in state — otherwise everything looks like it needs a human.
This escalate to human schema is a paste-ready TypeSafe Jev request for jev-latest. Copy the JSON, keep thresholds in your code, and calibrate on your labels. Jev Patterns is independent and not affiliated with TypeSafe AI.
Use escalate to human when
- A bot, junior queue, or agent loop is about to spend another turn.
- You have a human queue with finite capacity.
- Anger, legal risk, or a missing fact should short-circuit automation.
Do not use escalate to human when
- You already know it needs a human because of a mechanical rule (VIP flag, chargeback).
- You want the model to write the handoff note.
- Escalation means picking which team — that is routing.
Confidence thresholds for escalate to human
Keep these in your code. They are not part of the model call.
| When | Action |
|---|---|
| needs_human.noul >= 0.75 | Escalate immediately; stop the bot |
| plan == 'enterprise' && needs_human.noul >= 0.45 | Escalate — lower the tripwire for high-value accounts in code |
| needs_human.noul < 0.45 | Continue automation |
Pass examples
Payday at risk
Escalate. The user asked for a person and the stakes are payroll.
{
"user_message": "If it fails Friday we miss payday. I want a call.",
"bot_attempts": [
"Linked the CSV template"
]
}First how-to
Low. Let the bot try.
{
"user_message": "How do I rotate an API key?",
"bot_attempts": []
}Bot already failed twice
Escalate. Repeating the same step is not a plan.
{
"user_message": "That did not work either.",
"bot_attempts": [
"Reset cache",
"Reset cache again"
]
}Ambiguous examples
Annoyed but simple
Tone is not enough. A Noul around 0.5 means unsure.
{
"user_message": "This is annoying. Just tell me where the toggle is.",
"bot_attempts": []
}Legal phrasing, small ask
Might be a trust-and-safety question. Put product surface in state.
{
"user_message": "Please confirm in writing that logs are retained 30 days."
}Already escalated
Short-circuit in code. Do not ask Jev if the flag is already set.
{
"already_escalated": true,
"user_message": "Hello?"
}The problem escalate to human is for
Chat stacks hide behind “if the user seems upset, escalate.” The generator then writes a sympathetic paragraph and keeps going. Escalation is not a tone. Escalate to human is a Noul: probability that a person should take this now.
Legal holds, self-harm, VIP contracts, repeated tool failure, and “this is not in the runbook” are reasons to hand off. They do not look the same in text. You pass those facts in state. The Noul is the gate. Your runtime performs the transfer.
Do not let a writer model announce the handoff and then ask another question. Once needs_human clears, stop the bot.
Why this escalate to human schema uses Jev
A Choice of bot | human is tempting and worse: it hides uncertainty as a winner-take-all. Escalate to human as a Noul lets you say “above 0.70, transfer; below 0.20, continue; middle, offer a person.”
Pair with support ticket routing and urgency scoring. A technical outage might already be on-call. needs_human is for the thread that should leave automation even if the department is obvious.
Jev will not page Slack. Your code will.
What to put in state for escalate to human
Include the latest user message, bot steps tried, error count, customer tier, open legal flag, moderation Nouls if any, and whether the user asked for a person in those words. Escalate to human should see the ask.
If a previous needs_human was 0.4 and you continued, pass that. Loops that re-ask forever are a product bug.
Keep medical or criminal content in the moderation screen first. This pattern is the handoff, not the taxonomy of harm.
How to wire escalate to human in code
needs_human.noul >= 0.70 → transfer, stop tools, notify the queue. 0.20–0.70 → show a “talk to a person” control. Below 0.20 → continue automation.
If the user literally asked for a human, you can short-circuit in code and skip the model. Deterministic beats clever.
After transfer, do not run writer models on the same turn. The person owns the next sentence.
Eval plan: tag threads where a human eventually took over. escalate to human should have been high before the third bot failure, not after the customer types in all caps. If the Noul only fires on profanity, your criteria are sentiment, not handoff.
Failure modes
Empathy copy instead of a gate
Escalate to human returns a number. The “I’m connecting you” sentence is a template.
No stop after transfer
If the agent keeps calling tools, you did not escalate. You narrated.
VIP only in instructions
Put tier in state. Instructions that say “always escalate platinum” belong in code as a rule.
Copy, run, calibrate
The JSON in the rail is the escalate to human request for jev-latest. Copy it into your stack, or open Escalate to human in Jev Studio and draw the fixture bars. Thresholds stay in your repository. Calibrate on your labels before you auto-apply. Official model docs live at docs.typesafe.ai. Jev Patterns is independent and not affiliated with TypeSafe AI.
Related reading: Choice, Score, Noul, confidence thresholds, when not to use Jev.
Escalate to human: FAQ
- What is the escalate to human Jev pattern?
- Escalate to human is a Noul named needs_human. It is the probability a person should take the thread. Your runtime performs the transfer.
- Should escalate to human be a Choice of bot vs human?
- A Noul keeps the middle band usable. A Choice hides uncertainty. This pattern uses the Noul.
- What if the user types “human”?
- Honor it in code. You do not need escalate to human for an explicit request, though the Noul should also come back high if you still call it.
- Does escalate to human write the handoff message?
- No. Jev does not generate text. Use a template after you transfer.
- How does escalate to human relate to urgency scoring?
- Urgency scoring orders the pile. Escalate to human decides whether automation must drop the thread. They can run in one request.
Last reviewed 21 September 2026. Independent of TypeSafe AI.
Next
Related Jev Patterns

Support
Support ticket routing
Send a ticket to the right department and flag whether it should jump the queue.

Support
Urgency scoring
Place a ticket on a four-level urgency rubric your SLA code already understands.

Agents
Agent continue or stop
After a tool result, decide whether to continue, retry, ask the user, or halt.

Studio
Run Escalate to human in Studio
Fixture bars first. Optional live call stays in this browser.