Skip to the experiment
Jev Guide

Score

Score urgency.

A Score question rates a message against an ordered rubric you define. This recipe uses three levels — Routine, Time-sensitive, and Urgent — described in full below.

The rubric sent to Jev

  1. 0Routine — a general question, comment, or minor request with no deadline or breakage implied
  2. 1Time-sensitive — something is blocked or inconvenient, but there is a reasonable window to respond
  3. 2Urgent — active harm, an outage, a security exposure, or a deadline that has already arrived

Score

Score urgency

Live testing off
Sample
Message

Read-only while live testing is unavailable.

Run
Live testing is currently unavailable on this deployment.
Output

Level: 0.05 of 2

Routine — a general question, comment, or minor request with no deadline or breakage implied

  1. Level 095.0%
  2. Level 15.0%
  3. Level 20.0%

This score reflects Jev's read of the message against the rubric above. It is not an objective measurement of urgency, and a high score is not proof the situation is actually severe. Confidence: 0.93.

Illustrative example

Not a live or recorded response — shown to illustrate the shape of an answer.

Build this

urgency-scoring.ts
import { score, TypeSafeClient } from "@typesafe-ai/sdk";
 
const client = new TypeSafeClient(); // reads TYPESAFE_API_KEY, defaults to jev-latest
 
const message = "Loving the new dashboard redesign! One small idea: it'd be nice if the export button were a little bigger and easier to find.";
 
const { answers } = await client.systemOne({
state: message,
model: "jev-latest",
questions: {
urgency: score(
"How urgently does this message need a response from support?",
[
"Routine — a general question, comment, or minor request with no deadline or breakage implied",
"Time-sensitive — something is blocked or inconvenient, but there is a reasonable window to respond",
"Urgent — active harm, an outage, a security exposure, or a deadline that has already arrived",
],
),
},
});
 
const { score: level, legend, probabilities, confidence } = answers.urgency;
 
// `level` can land between two whole levels; round it before indexing `legend`.
// Object.values() reads levels in order (0, 1, 2, ...) without depending on the exact key type.
console.log("Level " + level.toFixed(2) + ": " + Object.values(legend)[Math.round(level)]);
console.log(probabilities, confidence);

Type-checked against @typesafe-ai/sdk 0.6.0 as part of this site's build. Not executed against the live API by this guide.

npm install @typesafe-ai/sdk — requires Node.js 20+. Set TYPESAFE_API_KEY in your environment.

Keep TYPESAFE_API_KEY on the server. Never embed it in client code or ship it in a browser bundle.

Emotion is not the same as urgency

The “Angry about a typo” sample above is written with strong emotional language — capital letters, exclamation marks, “SO frustrated” — but describes a cosmetic footer typo the customer explicitly says can wait. A useful urgency score should track the operational stakes in the message, not just its tone. Compare it with the calm-but-urgent board-meeting sample above; when a result is illustrative rather than live or recorded, the values shown are hand-authored examples of this pattern, not measured output.

Reading the score

score is a position on the level line and can land between two levels — a 3-level rubric runs from 0 to 2. It is Jev's read of the message against the rubric above, not an objective measurement of urgency: a high score is not proof that a situation is actually severe, and a low one is not a guarantee it can wait. Use it as one input to a decision, and check the full probability spread when the score sits near a boundary.