Urgency scoring Jev pattern
Place a ticket on a four-level urgency rubric your SLA code already understands.

Urgency is ordered. Calm is not the opposite of outage in a flat taxonomy — it is a position on a scale. Score returns a probability-weighted value that can land between levels, which is what you want when a customer is blocked but the product is up.
This urgency scoring schema is a paste-ready TypeSafe Jev request for jev-latest. Copy the JSON, keep thresholds in your code, and calibrate on your labels. Jev Patterns is independent and not affiliated with TypeSafe AI.
Use urgency scoring when
- You already have SLA buckets and need to map text onto them.
- You want a number you can sort an inbox by.
- Pagers should fire on the top of the rubric, not on the word “urgent.”
Do not use urgency scoring when
- You only need a yes/no jump-the-queue flag — use a Noul.
- Urgency depends on revenue or contract terms that are not in state.
- You are writing the apology email.
Confidence thresholds for urgency scoring
Keep these in your code. They are not part of the model call.
| When | Action |
|---|---|
| urgency.score >= 2.5 and urgency.confidence >= 0.70 | Page the on-call rotation |
| urgency.score >= 1.5 | Place in the same-day queue |
| urgency.confidence < 0.60 | Do not page; show the distribution to triage |
Pass examples
Org-wide checkout down
Outage. Score should sit near 3.
{
"ticket": {
"body": "Checkout has been down for our whole org for 40 minutes."
}
}Cannot export
Blocked for this person, not a platform outage. Around 2.
{
"ticket": {
"body": "The CSV export spinner never finishes. I need this for a board meeting at 3."
}
}How-to
Calm. Around 0.
{
"ticket": {
"body": "Where do I rotate an API key? Whenever you have a moment."
}
}Ambiguous examples
ASAP with no stake
The word is not the rubric. Without a blocked task, stay near Waiting.
{
"ticket": {
"body": "Please look at this ASAP!!"
}
}Past outage
Serious, but not paging-now. Score should not treat history as a live outage.
{
"ticket": {
"body": "Yesterday's outage ate two hours. Can someone tell us what happened?"
}
}VIP namedrop
Social pressure is not an outage. Keep it in code if you have a VIP flag in state.
{
"ticket": {
"body": "Our CEO is asking. Need an update."
}
}The problem urgency scoring is for
Priority fields that customers pick themselves are gamed. Everything is P1. Rule-based urgency scoring — keyword lists for “down”, “urgent”, “ASAP” — fires on polite people who write urgently about fonts. Chat-model JSON that returns low|medium|high still samples a word, then you map the word onto an SLA you already had as numbers.
Urgency scoring is ordered. Calm is not a sibling of outage in a flat taxonomy; it is a position on a scale your on-call already understands. A Jev Score returns a probability-weighted value that can sit between levels. 2.14 on a 0–3 rubric is not “round to 2.” It is a position. Pagers should fire on the top of the rubric, not on the word urgent.
SERP write-ups on AI ticket priority almost always emit three or four labels and a free-text reason. They do not give you a weighted score you can sort an inbox by. That is what this urgency scoring pattern is for.
Why this urgency scoring schema uses Jev
The criteria array is the rubric, low to high: Calm — informational; Waiting — wants a reply; Blocked — cannot complete the task; Outage — the product is down. Urgency scoring cannot return 7. It cannot return “kinda blocked.” The mass on each level is in the response.
A Noul is the wrong primitive when you need to sort. is_urgent is a jump-the-queue gate. Urgency scoring is a spectrum for the rest of the pile. Use both on the same ticket if you want a boolean override plus a sortable number. They are independent questions.
Keep writer models out of this path. Urgency scoring does not draft the apology. It tells you whether the apology can wait.
What to put in state for urgency scoring
Include the ticket body, seat count or plan, and any open incident flags. “Checkout has been down for our whole org for 40 minutes” plus account_seats: 120 is a different Score than the same sentence from a free-tier hobby project — if you pass that context.
Do not put revenue in the instructions (“treat enterprise as outage”). Put the plan in state and keep the rubric honest. Instructions that smuggle policy make calibration undebuggable.
If the product status page is red, pass it. Urgency scoring without the incident banner will treat a calm customer on a burning platform as Waiting.
How to wire urgency scoring in code
Sort the inbox by score descending. Page only when score >= 2.5, or when the mass on level 3 crosses a threshold you measured. Do not stringify 2.14 into “blocked.”
If you already auto-assign with support ticket routing, run urgency scoring in the same request. Parallel questions share state and barely add latency.
Calibrate the page threshold on a week of labeled tickets before you wire PagerDuty. A Score is calibrated in aggregate, not guaranteed on one outage tweet.
Eval plan: take 100 tickets your team already tagged with SLA. Compare human tags to the weighted score. If blocked and outage collapse into each other, rewrite the two top criteria — do not add adjectives to instructions. Urgency scoring is only as separable as the rubric.
Failure modes
Rounding the weighted score
Math.round(2.14) is how you page for a blocked-but-up customer. Threshold the weighted value or read the mass on the top level.
Four labels as a Choice
Choice has no order. Urgency scoring is a Score so adjacent levels share mass instead of competing as unrelated keys.
Apology copy in the same call
Jev will not write the status email. If you need language, call a writer after the Score.
Copy, run, calibrate
The JSON in the rail is the urgency scoring request for jev-latest. Copy it into your stack, or open Urgency scoring in Jev Studio and draw the fixture bars. Thresholds stay in your repository. Calibrate on your labels before you auto-apply. Official model docs live at docs.typesafe.ai. Jev Patterns is independent and not affiliated with TypeSafe AI.
Related reading: Choice, Score, Noul, confidence thresholds, when not to use Jev.
Urgency scoring: FAQ
- What is urgency scoring in Jev?
- Urgency scoring is a Jev Score on a 0–3 rubric: Calm, Waiting, Blocked, Outage. It returns a probability-weighted score your SLA code can sort and page on.
- Why not use a Noul instead of urgency scoring?
- A Noul is a yes/no jump-the-queue flag. Urgency scoring places the rest of the queue on an ordered rubric. Many desks want both.
- What should page from urgency scoring?
- Start by paging when the weighted score is at least 2.5, or when Outage carries most of the mass. Measure on your labels before you trust it.
- Can urgency scoring see that the status page is red?
- Only if you put the incident in state. Urgency scoring does not browse the web.
- Is urgency scoring a chatbot feature?
- No. It returns a number and a distribution. There is no message to the customer.
Last reviewed 21 September 2026. Independent of TypeSafe AI.
Next
Related Jev Patterns

Support
Support ticket routing
Send a ticket to the right department and flag whether it should jump the queue.

Support
Escalate to human
A single Noul: should a person take this over from the bot or the junior queue?

Agents
Agent continue or stop
After a tool result, decide whether to continue, retry, ask the user, or halt.

Studio
Run Urgency scoring in Studio
Fixture bars first. Optional live call stays in this browser.