Skip to content
Ticket triage

Triage every ticket in one call: who handles it, how urgent, is a refund asked for, how angry.

This is the workflow every System One quickstart uses, and the one where the benchmark has the most to say: on a public customer-service suite Jev scores 0.79 zero-shot, and an open encoder fine-tuned on the same workflow 0.746. Your queues are not the demo’s queues; the fine-tune is what makes the routing yours.

In development — the benchmark numbers on this page are measured; the Decide-1 model is in training.

The problem

A prompt per queue, drifting

Routing rules live in a prompt in one service and a slightly different prompt in another.

No probability to act on

You want “auto-route when p > 0.9, human when p < 0.6” — a chat model gives you neither number.

Frustration is ordinal

A 0–2 rubric is a score, not a class. The expected level between rungs is the useful signal.

How it works with Decide
  1. 1

    Save the decision set once

    `ticket-triage`: department (choice over your queues), urgency (score), refund_requested (noul), frustration (score). Versioned; called by name.

  2. 2

    Route on thresholds

    Auto-route above 0.9, escalate above urgency 0.8, human below confidence 0.6.

  3. 3

    Tune on last quarter’s tickets

    The queue each ticket ended up in is the label. That is the fine-tune the benchmark measured.

r = client.decide(set="ticket-triage@3", state=ticket)
if r["department"].confidence < 0.6:  route_to_human(ticket)
elif r["urgency"].score > 1.6:        page_on_call(ticket)
else:                                 assign(r["department"].choice)
# extract in the same call: order id, amount, dates — with offsets
  • Choice — pick one option, a probability on each
  • Score — a position on your ordered rubric
  • Noul — a calibrated yes/no probability
  • Extract — spans and records with offsets
Something you can check

typed-decisions / customer_service (100 states × 5 questions): Jev 0.790 zero-shot; open encoder fine-tuned in-domain 0.746 (its card claims 0.764); open encoder zero-shot 0.376.

Numbers about Jev are its authors' or the cited source's; numbers from the benchmark are ours, on one harness, with the raw JSON published. Full table.

Get early access — and tell us which decision you'd hand over first

We're building Metatext Decide with the first teams that use it. Leave your email, answer as much as you like, and say yes to a short interview if you want a say in what ships.

  • Early access to Decide as it opens up
  • A 20-minute interview if you want one — research, not a pitch
  • The benchmark harness and raw results, today
  • No spam — early-access updates only
Where do decisions happen in your stack today?
What kind of decisions?
Have you tried Jev?
What stops you using a hosted decision API?
Would you pay?
Open to a 20-minute interview?

Research, not a pitch — we want to hear how you decide today.

Early-access updates only. No spam, unsubscribe any time.

Questions

Can it extract the order number too?
Yes — extract is a fourth primitive here, with offsets. Jev never returns spans.
How many tickets do I need to tune?
The benchmark’s in-domain fine-tune used the suite’s training split; a few hundred labelled tickets per queue is the working assumption. Calibration needs hundreds of held-out judgments to fit reliably.