Use cases · Last updated

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:

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.

Sources