Tool deep diveDecisions and control

Jev by TypeSafe AI: typed decisions your code can branch on

Jev is a decision model, not a chat model. Send state and typed questions, get back choices, scores and yes-probabilities with calibrated confidence. Includes confidence gates, shadow mode and fail-open patterns.

Checked 13 Oct 202616 min read

Vendor
TypeSafe AI
Licence
Proprietary API; the Python and JavaScript SDKs are MIT
Latest release
v0.6.0 · 15 Sep 2026 · Release notes (opens in a new tab)

Best for

Routing, gating and scoring text inside your code with calibrated confidence, at request-path speed and low cost

Avoid when

You need generated text, reasons, arithmetic, date math, images or long context, or you cannot test your language

Learn it hands-onJev by TypeSafe AI: typed decisions your code can branch on is taught in Agent Operations: See, Control, and Optimize Agents, with machine-verified labs.
On this page
  1. What it is and where it sits
  2. When to pick it
  3. How it works
  4. Members only: Set it up
  5. Members only: Production configuration
  6. Members only: Patterns that work
  7. Members only: Wiring it into the stack
  8. Members only: Operating it
  9. Members only: Alternatives compared
  10. Members only: Learn it hands-on

Jev answers questions about text with typed values and probabilities, and never writes a sentence. You send a state (a message, a record, a JSON object) and a set of named questions. Each answer comes back as a choice from your list, a position on your scale, or the probability that a statement is true. Your code branches on it like any other value.

What it is and where it sits#

Jev is the first model in what TypeSafe AI calls the System One class: models trained to make fast, narrow judgments that software consumes directly. TypeSafe is an independent, venture-backed company co-founded by Diogo Almeida, who worked on the RLHF research behind InstructGPT at OpenAI. The public SDKs shipped in September 2026, so treat the product as young: limits, prices and models can move.

One endpoint does everything: POST https://api.typesafe.ai/v1/systemone. The request carries a state (string, JSON object or array), a model and a map of questions. There are three question types:

TypeYou defineYou get back
choiceUp to 255 named optionsThe chosen option, a probability per option, a confidence from 0 to 1
score2 to 10 ordered levelsA probability-weighted score (it can land between levels), a legend, probabilities, confidence
noulA yes or no questionThe probability that the answer is yes, from 0 to 1

Every question in a request sees the same state and is evaluated in parallel and in isolation, so one answer never leaks into another. Adding questions costs a few input tokens and barely changes latency.

In the stack, Jev sits in the decisions layer, inside your own code. It does not replace your chat model or your agent. It decides which handler runs, whether a draft passes a check, how urgent a ticket is, or whether a person should look before anything happens. The expensive model only runs for the requests that need it.

The JavaScript SDK earns the company name: in TypeScript the answer types are inferred from your questions, so answers.route.choice has the type "billing" | "technical" | "sales" and a misspelled label fails the build.

When to pick it#

Pick Jev when the answer space is closed and you need to know how sure the model is:

  • Routing and triage. A ticket goes to one of five teams, a message to one of eight handlers, with a confidence gate in front of each action.
  • Checks before an action. "Does this reply promise a refund?", "Does the source support this quote?", "Does this message contain personal data?"
  • Scoring on your rubric. Urgency, frustration, risk or answer quality on levels you write, with a number you can threshold.
  • Many judgments over one state. Ask twenty questions about one document in one call and combine them in code.
  • Replacing a prompt-and-parse step. Where you ask an LLM to "return JSON" for a label and then validate it, Jev returns the label by construction.

Pick something else when:

  • You need words. Replies, summaries, extraction of free values, code. Jev gives no reasons for its answers either, so a decision that needs a written rationale needs another model.
  • The work is arithmetic, counting or date comparison. TypeSafe's own docs say to keep these in code.
  • The input is not text. Jev takes strings, JSON objects and arrays of text. Convert images or audio first.
  • The language is not English and you cannot test. English is the primary training language. Other languages work "but not equally well", in the vendor's words.
  • The signal is lexical. If a curated keyword list or a regex already decides the case, it is free, deterministic and often more accurate on short inputs. A decision model earns its place on semantic judgments: intent, relevance, support for a claim.

Compared with the nearest options: a small chat model with JSON-schema output can return any shape, but the confidence it reports is generated text, not a measured probability. A fine-tuned classifier you host is cheaper at very high volume and keeps data in house, but needs labelled data and retraining for every new label. Rules cost nothing but break on paraphrase.

How it works#

1. Input A arrives: refund order 1042. 2. The typed decision model returns action refund with probability 0.93. 3. 0.93 is above the 0.8 threshold, so the refund runs automatically. 4. Input B arrives: refund three months of a plan. 5. The model returns probability 0.41, below the threshold. 6. B goes to a person to review, or to a safe fallback. 7. In shadow mode, candidate model v2 scores both inputs too. Its answers are logged beside the live ones and never acted on: it agrees on A and differs on B.Shadow modelogged, never acted onInput ARefund order #1042Typed decision modelaction: "refund"p: …threshold 0.8A 0.93B 0.41Runs automaticallyA: refund issuedPerson or fallbackB: in reviewCandidate v2same input, no action#1042 v1 0.93 v2 0.88agrees#1043 v1 0.41 v2 0.86differs

A request names each question. The key is yours and is never sent to the model, so the full question goes in instructions. Point at parts of a JSON state with backticked paths such as ticket.messages[0].text.

json

{
  "model": "jev-1.13.0",
  "state": { "ticket": "Help! My payouts have been failing for 3 days." },
  "questions": {
    "team": {
      "type": "choice",
      "instructions": "Which team should handle `ticket`?",
      "criteria": { "billing": "Payments, refunds", "technical": "Bugs, outages", "sales": "Pricing, upgrades" }
    },
    "urgent": { "type": "noul", "instructions": "Does `ticket` convey urgency?" }
  }
}

The response carries one answer per key, the versioned model that answered, and token usage. A choice answer looks like {"type": "choice", "choice": "billing", "probabilities": {"billing": 0.88, "technical": 0.12, "sales": 0.0}, "confidence": 0.81}.

Probabilities and confidence are different numbers. TypeSafe trains Jev with what it calls reinforcement learning for calibrated decisions (RLCD), so that across many answers, outcomes given a probability of 0.8 come true about 80% of the time. Calibration describes groups of predictions, not any single answer. Confidence is a statistic derived from the distribution: for a choice with n options it is (p_max - 1/n) / (1 - 1/n), so an even split scores 0 and certainty scores 1. Score confidence also counts how far probability sits from the peak level. A noul has no separate confidence; the probability is the signal, and |2p - 1| puts it on the same scale.

Models and price on 2026-10-13. The current model is jev-1.13.0. The alias jev-latest points to it and is the SDK default; jev-preview points to the same build today. Price is $0.042 per million input tokens, and output tokens are free. Each request holds up to 64k tokens, with 32k for the state plus the longest question. Published rate limits are 100k tokens per second and 80 requests per second, and TypeSafe says they are "adjusting dynamically" and can change without notice. Higher limits come with custom and enterprise plans.

Set it up

Create a key in the TypeSafe console (console.typesafe.ai) and try questions in its browser Playground first. Then make the same call from a shell:

Members only below this line

Get the full Jev by TypeSafe AI: typed decisions your code can branch on deep dive free

What you get on this page:

  • 7 members sections

Free. You also get Stratiflux Weekly: one email a week, unsubscribe anytime.

Also in the members part

  1. Production configuration
  2. Patterns that work
  3. Wiring it into the stack
  4. Operating it
  5. Alternatives compared
  6. Learn it hands-on

Sources

Checked against these on 13 Oct 2026.

  1. TypeSafe docs: introduction to Jev and System One (opens in a new tab)docs.typesafe.ai
  2. TypeSafe docs: models, pricing, limits and aliases (opens in a new tab)docs.typesafe.ai
  3. TypeSafe docs: HTTP API reference (POST /v1/systemone) (opens in a new tab)docs.typesafe.ai
  4. TypeSafe docs: confidence and how it is calculated (opens in a new tab)docs.typesafe.ai
  5. TypeSafe docs: confidence-gated routing pattern (opens in a new tab)docs.typesafe.ai
  6. TypeSafe docs: Jev 1.13 jaggedness (known failure modes) (opens in a new tab)docs.typesafe.ai
  7. TypeSafe JavaScript SDK reference (opens in a new tab)docs.typesafe.ai
  8. TypeSafe Python SDK usage guide (opens in a new tab)docs.typesafe.ai
  9. TypeSafe Data Processing Agreement (opens in a new tab)typesafe.ai
  10. TypeSafe blog: introducing System One models and Jev (opens in a new tab)typesafe.ai
  11. system-one-adapter: the same questions answered by an LLM (opens in a new tab)github.com
  12. OpenInference TypeSafe instrumentation (DECISION spans) (opens in a new tab)github.com
  13. Braintrust docs: TypeSafe integration (tracing and Jev as judge) (opens in a new tab)braintrust.dev