Triage decision workflow with Jev
Support triage is the workflow TypeSafe reaches for first: one ticket state, several atomic questions, code that routes. This page is the decision workflow slice of a full pack (contracts → thresholds → handoff → audit). Independent unofficial notes. Official sketches: quick start and intent routing. We do not sell keys.
Input contract (before the call)
Put only what the questions name:
{
"ticket": { "id": "T-1042", "body": "…", "channel": "email" },
"customer": { "plan": "pro", "open_incidents": 1 },
"policy": { "p1": "P1 = safety or complete outage" }
}
Point instructions at `ticket.body`. Drop CRM novels — jev-1.13 loses accuracy on distractors and you still pay input tokens (vendor price: $0.042 / MTok, confirm on models page).
One request, three primitives
Official quick-start mix:
| Id | Type | Job |
|---|---|---|
department |
Choice | billing / technical / sales / other |
frustration |
Score | calm → civil → strong language |
is_urgent |
Noul | time-sensitivity as P(yes) |
Optional fourth: Choice intent (order_status, product_question, return_exchange, complaint, other) if you also route handlers.
All of these share state and run in parallel. Do not ask Jev to write the reply.
Code owns the graph
def triage(resp):
dept = resp.answers["department"]
urgent = resp.answers["is_urgent"].noul
if dept.confidence < FLOOR: # tune — see thresholds page
return handoff("unclear_queue")
if dept.choice == "other":
return handoff("unmapped_queue")
if urgent >= URGENT_TAU and dept.choice == "technical":
return "page_oncall"
return f"queue:{dept.choice}"
Conjunctions (urgent and technical) stay in code.
Cascade when the taxonomy is deep
A 200-leaf product taxonomy should not be one Choice. TypeSafe’s hierarchical cookbook: Choice per node, greedy or beam, length-normalized path score.
Confidence abort: if confidence < ABORT at any node, stop and return the parent (or a human). That beats a confident wrong leaf.
Taxonomy tips:
- Every node includes
other. - Contrast siblings in
criteria. - Do not reuse a Noul τ on Choice confidence.
- Log node id + edge probabilities for audit (decision trace).
Pack map
| Slice | Page |
|---|---|
| This workflow | you are here |
| Floors and τ | confidence thresholds |
| Humans | handoff |
| Worked ticket | support triage |
Worked sketch: status-page incident inbox
A SaaS status page collects inbound reports during an incident. Classify intent + urgency, then code pages or files. Domain is incident comms, not a generic helpdesk ticket.
{
"report": {
"id": "INC-88",
"body": "Checkout 500s in eu-west. We are a launch partner going live in 40 minutes."
},
"incident": { "id": "inc_12", "component": "payments" },
"policy": { "page": "Page if payments + time-sensitive customer impact." }
}
| Id | Type | Job |
|---|---|---|
intent |
Choice | outage_report / status_question / noise / other |
urgency |
Noul | Time-sensitive customer impact vs policy.page? |
intent, urg = answers["intent"], answers["urgency"].noul
if intent.confidence < FLOOR:
return handoff("comms_review")
if intent.choice == "outage_report" and urg >= URGENT_TAU:
return "page_comms"
return f"file:{intent.choice}"
Do not ask Jev to write the status tweet. Jaggedness: no dates — “40 minutes” is text; paging policy is yours. Official intent-routing floors (0.5) are examples. Pin jev-1.13.0.
What this page does not claim
No invented triage accuracy. Schema-safe ≠ correct. Not official TypeSafe. Not a Zendesk clone — support triage is the pack hub.
FAQ
Intent then code, or one Choice for the queue name? Prefer atomic intent + urgency, then a code graph. Hidden conjunctions in one Choice are hard to eval.
When do I cascade? When a single Choice would exceed a sane option set (well below the 255 cap). See the hierarchical cookbook; we do not clone it.
Noul 0.5 on urgency? Treat as undecided. Review. Do not page.
Where do humans sit?
Handoff when confidence is low or intent is other.
Hub: Use cases. 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.