Most teams meet Jev with one question: isn’t this just an LLM prompt with extra steps? The honest answer is that for any single decision, you can absolutely do it with a chat model. The difference shows up in the second decision, the hundredth, and the one at 3 a.m. that returns something your parser did not expect. Here is the same job done both ways.

The job

Take one support ticket and answer three things: which team owns it, is it urgent, and should the customer get a follow-up call. This is the example TypeSafe uses in its own quickstart, and it is a good one because every part of it is a decision, not prose.

The LLM way

You write a prompt: here is the ticket, respond with JSON containing team, urgent, call, using these exact values. Then you parse. The failure modes are familiar to anyone who has shipped this:

  • The model answers with a sentence around the JSON. You strip it and hope.
  • It picks a team you did not list. You coerce and hope.
  • It wraps the JSON in markdown fences. It adds a friendly preamble. It apologizes for the confusion.
  • It hallucinates confidence, or expresses none, and you learn nothing about how sure it was.

None of these are catastrophic alone. Together they mean your decision path has a text-generation failure domain wrapped around it. You also paid for output tokens — the JSON plus any chatter — and waited for a full completion, typically hundreds of milliseconds to seconds for small models, longer under load.

The Jev way

You send the ticket as the state and three typed questions. The response is not text that happens to contain an answer. It is the answer: department: billing, probability 0.84, confidence 0.60, is_urgent: 0.999. TypeSafe’s quickstart example returns exactly this for the classic “my Stripe connection keeps failing” ticket — billing at 0.84, urgent at 0.999, in a single call.

Three properties matter more than the token math:

1. The schema is the contract. A choice question can only return one of the options you defined. The failure mode where the model invents a fifth team does not exist.

2. Confidence is a first-class field. Your code decides what happens to the unsure ones — human review, a slower path, a default. With a chat model, “I think it’s billing” and “it’s billing” look identical.

3. Parallel questions are free-ish. All three questions ride one state read. With a chat model, three reliable answers usually means three calls or one brittle mega-prompt.

Latency and cost

TypeSafe publishes 70–500 ms per call regardless of question count, and $0.042 per million input tokens with output free. A chat completion small enough to be cheap is fast-ish; one big enough to be reliable is neither. The pricing guide works the arithmetic; the short version is that at decision workloads the bill differs by orders of magnitude, and the vendor’s 20–200× latency claim is consistent with the architecture: no text is generated, so no autoregressive decoding loop runs.

When the LLM still wins

This is not a chat-models-are-dead argument. A decision model decides; it does not write. If the deliverable is prose — a reply to that customer, a summary of the thread, a changelog entry — you need a language model, and batching that work to Jev would be a category error. The pattern that has emerged across the agents and browsers entries in this directory is the split itself: a language model drafts, Jev judges the drafts or routes the work, and code acts on the verdict. Builders who report both halves of that stack in one system are the best evidence for where the line sits.

How to decide

Ask what the output is for. If a human reads it, you want an LLM. If a branch statement reads it — if department == "billing" — you want typed answers with probabilities. And if you have already shipped the LLM version and it works, the cheapest migration is the hybrid: keep the generator, replace the parse step with one Jev call. The state and question design guide covers how to move a prompt over.

Published 25 September 2026. API behavior checked against TypeSafe AI’s published documentation on this date; comparisons describe architecture, not a controlled benchmark.