Triage confidence thresholds
Thresholds turn Jev answers into act / review / abstain. They are product policy, not a model hyperparameter TypeSafe ships. This unofficial page is the threshold slice of the triage pack. Official starting pattern: confidence. We do not sell keys.
Two axes (do not collapse them)
| Axis | Where it lives | Use in triage |
|---|---|---|
choice / score / noul |
answer payload | What queue or how hot |
confidence |
Choice & Score only | Whether to trust the argmax |
| Distance from 0.5 | Noul | Whether to treat yes/no as decided |
Official intent-routing sketch: if intent.confidence < 0.5 → human; if complaint and (complexity.score > 1 or complexity confidence < 0.5) → human. Those 0.5 / 1 values are examples. Fit on offline eval.
Risk-scaled floors
TypeSafe’s confidence page: read-only actions can use a lower bar than irreversible ones.
FLOORS = {
"route_to_queue": 0.55, # illustrations — replace
"page_oncall": 0.85,
"issue_refund_flag": 0.90,
}
def allow(ans, action):
return ans.confidence >= FLOORS[action]
Noul urgency: pick URGENT_TAU (many teams start above 0.7) and a band around 0.5 that always reviews. Do not treat 0.5 as “medium frustration.”
Cascade abort: a separate ABORT on each taxonomy Choice — see workflow.
How to fit (production gate)
- Pin
jev-1.13.0. - Replay labeled tickets with frozen questions.
- Plot accuracy vs confidence; pick a floor where auto-act error rate ≤ your SLA.
- Raise floors after a criteria edit; aliases can move (
jev-latest). - Never copy a Noul τ onto Choice confidence (jaggedness: they are not interchangeable).
Worked sketch: FNOL intake floors
First-notice-of-loss intake for an auto insurer. Floors differ per question type, not one magic number. Domain is claims intake, not card disputes.
{
"fnol": "Hit a parked car in a garage. Airbag did not deploy. I can still drive."
}
| Id | Type | Floor idea (illustrations) |
|---|---|---|
line |
Choice | Auto-file to collision only if confidence ≥ 0.70 |
injury_hint |
Noul | Review if in (0.35, 0.65); page medical liaison if ≥ 0.80 |
severity |
Score | Desk adjuster if score ≥ 2 and confidence ≥ 0.80 |
line, inj, sev = answers["line"], answers["injury_hint"], answers["severity"]
if line.confidence < 0.70:
return review("uncertain_line")
if 0.35 < inj.noul < 0.65:
return review("ambiguous_injury")
if sev.score >= 2 and sev.confidence >= 0.80:
return "desk_adjuster"
return f"queue:{line.choice}"
Choice/Score have confidence. Noul does not — gate on the probability or its distance from 0.5. Official 0.5 / 0.9 banking figures on the confidence-gated pattern are another domain’s examples.
Vendor $0.042 / M input (claim). Jaggedness: no dates or injury math. HITL: handoff. After a criteria edit, freeze the question ids and replay the same FNOL set before you lower a floor. Aliases (jev-latest) can move a calibrated 0.70. Log the resolved model next to every auto-file.
FAQ
Should every action use 0.9? No. Over-gating sends the whole queue to humans and hides calibration.
What if I only care about the best option? TypeSafe agent-skill note: you can take the max without a floor. Floors exist for risk.
Can I reuse a Noul τ as Choice confidence? No. Different axes. See glossary: confidence threshold.
Does pinning jev-latest keep floors valid?
No. Pin jev-1.13.0 after you fit. Aliases can move.
Hub: Use cases. Siblings: workflow, handoff. Official: docs.typesafe.ai.
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.