Support triage with Jev
Customer support is the example TypeSafe uses throughout its docs: incoming tickets need a queue, a temperature reading, and time pressure — a Choice, a Score, and a Noul on one state. This hub is the full pack (not a single recipe). Unofficial. Official bodies: quick start. We do not issue keys.
Pack (read in order)
- Decision workflow — contracts, question map, cascade abort
- Confidence thresholds — risk-scaled floors
- Human handoff — what reviewers see
- This page — official ticket sketch + use-case map extras
- Intent routing — when some intents skip LLMs
Official three-question ticket
Use TypeSafe’s quick-start body (department / frustration / is_urgent). Put ticket text, product, and policy excerpts in structured state. Point at ticket.body.
Then code:
- Choice confidence below your floor → handoff
- Else route on
department.choice(includeother) - High
is_urgent.nouljumps the queue; band near 0.5 gets a second look - High frustration and technical → page only if your conjunction says so
What the use-case map adds
TypeSafe also lists: extract issues and commitments from call transcripts; detect churn risk and refund requests; verify drafted replies against policy. Each is more questions on the same or a follow-up state — not a different product. Reply text still comes from a template or LLM.
Deep taxonomies: cascade Choices with confidence abort (workflow), following their hierarchical cookbook — we do not clone a rival recipe page.
Worked sketch: developer-platform support
A B2B API company triages tickets from integrators. This pack is not a Zendesk clone: Jev does not store tickets, send macros, or SLA-clock a queue. Domain is developer support, not a consumer refund desk.
{
"ticket": {
"id": "DEV-310",
"body": "sandbox webhook signatures fail after we rotated the endpoint secret. Launch is Friday."
},
"account": { "plan": "enterprise", "integration": "webhooks" }
}
| Id | Type | Job |
|---|---|---|
department |
Choice | billing / technical / sales / other |
frustration |
Score | calm → sharp (3 levels) |
is_urgent |
Noul | Launch / outage time pressure? |
dept, urg = answers["department"], answers["is_urgent"].noul
if dept.confidence < FLOOR:
return handoff("unclear_queue")
if dept.choice == "technical" and urg >= URGENT_TAU:
return "page_oncall_webhooks"
return f"queue:{dept.choice}"
Cite the official quick start; do not paste their sample ticket. Pair intent routing when webhook_signature should skip an LLM and hit a runbook.
Pin jev-1.13.0. Vendor $0.042 / M input (claim). Jaggedness: no dates — “Friday” is text; paging policy is yours.
When not to use (not a helpdesk)
- You need a ticketing product (assign, SLA, CSAT). Compare vs ticket queues.
- You want Jev to write the integrator reply.
- A regex on
webhook+ plan already routes 95% — skip Jev for that slice.
FAQ
Can Jev replace the agent? No. It classifies and scores. Agents (or humans) act.
Do we publish triage accuracy? No. Run offline evaluation.
Is this Zendesk / Intercom? No. Those products own the queue. Jev owns typed questions on filtered state.
Where is the decision graph? Triage decision workflow.
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.