Skip to content
SupportNOUL

Escalate to human Jev pattern

A single Noul: should a person take this over from the bot or the junior queue?

A ticket leaving a queue tray toward a brass plate marked Human
needs_human is a Noul, not a paragraph.

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.

WhenAction
needs_human.noul >= 0.75Escalate immediately; stop the bot
plan == 'enterprise' && needs_human.noul >= 0.45Escalate — lower the tripwire for high-value accounts in code
needs_human.noul < 0.45Continue 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.