Use cases · Last updated

Triage human handoff

Handoff is a first-class outcome of triage, not a failure of Jev. TypeSafe’s routing examples send low-confidence intents and high-complexity complaints to a person. This unofficial page is the handoff slice of the pack. Confirm patterns on docs.typesafe.ai. No keys sold.

When code should refuse to auto-route

Signal Typical handoff reason (you name the enum)
Choice confidence < floor uncertain_intent
Choice == other unmapped_label
Noul near 0.5 on safety / legal ambiguous_yes_no
Cascade abort taxonomy_uncertain
Policy Noul high + destructive action policy_review
Empty or multilingual state you have not eval’d insufficient_state

Do not invent an HTTP status for these. They are application outcomes next to a 200.

Payload to the human (audit)

Send what a reviewer can check in seconds:

Do not ask Jev to draft the agent reply. Official jaggedness: generation is the wrong job. A template or an LLM writes words after the decision.

After the human acts

Write the gold label back into your offline set (eval harness). That is how floors move. Log the trace as a decision trace, not a chat log.

Worked sketch: card-dispute HITL

A payments ops queue receives cardholder disputes. Auto-route only when Choice confidence clears the floor. Domain is chargebacks, not a hotel concierge.

{
  "dispute": {
    "id": "CB-902",
    "narrative": "I never shopped here. The charge is from a city I visited last year though."
  },
  "ledger": { "mcc": "5999", "amount_cents": 4800 }
}
Id Type Job
kind Choice true_fraud / friendly_fraud / merchant_error / other
urgency Noul Representment deadline pressure in the narrative?
kind = answers["kind"]
if kind.confidence < FLOOR_DISPUTE:   # higher than a read-only queue
    return handoff(
        reason="uncertain_intent",
        packet={
            "state": filtered,
            "choice": kind.choice,
            "probabilities": kind.probabilities,
            "confidence": kind.confidence,
            "model": "jev-1.13.0",
            "already": "no representment filed",
        },
    )
return f"queue:{kind.choice}"

HITL when confidence is low — even if argmax is true_fraud. Amount is extracted in code (jaggedness: no math). Official intent-routing “confidence < 0.5 → human” is an example, not a chargeback default. See thresholds.

When not to use auto-route

Vendor $0.042 / M input (claim). We do not sell keys. A reviewer who only sees argmax will rubber-stamp true_fraud. Send the full distribution. If TypeSafe is unreachable, fail closed on representment — do not invent a Choice. Handoff is still an application 200, not a TypeSafe 4xx.

FAQ

Should low frustration + low confidence still page? Page on your conjunction rules, not on a single Score. See workflow.

Is handoff the same as abstention? Abstention is the model/policy saying “no auto action.” Handoff is the queue you send that case to. See abstention.

HTTP 200 and still a human? Yes. Low confidence is not a TypeSafe error status.

What if the reviewer disagrees with argmax? Store their label. Replay. Do not silently raise τ in production without eval.

Hub: Use cases. Sibling: thresholds.

Disclaimer

This is an independent unofficial site and is not affiliated with TypeSafe AI; official documentation is available at https://docs.typesafe.ai. Never treat jev.pro as TypeSafe official documentation. We do not sell, issue, or proxy API keys.

Sources