Stop asking your LLM multiple-choice questions: a guide to decision models
Decision models answer the small questions inside agents in milliseconds for a fraction of an LLM call. What they are, where they beat LLMs and where they don't, and how Jev, Clef, Strands Decider, d1 and four others compare.
Inside every agent is a stream of tiny questions. Is this ticket urgent? Which tool comes next? Is this command safe to run? Did that step actually work? Most teams send each one to a frontier LLM, and wait about a second and pay for output tokens to get back a single word.
In mid-September, TypeSafe AI shipped a model that answers those questions without writing anything at all. Jev reads the input once, scores the answers you allowed, and returns a probability for each, for $0.042 per million input tokens, with output free. TypeSafe claimed it was 193.6× faster than the LLMs it replaced. The developers who tried it reported something less dramatic but still striking: a median speed-up of 7× and a bill 30× lower, according to an analysis of nearly 13,000 launch-week posts.
Then came the land rush. Within three weeks, Cloudflare, AWS, Liquid AI, OpenAI, a Stanford and NVIDIA team and a dozen open-source projects had shipped their own, several with free weights. One AWS engineer put the cost of building one at “hundreds or thousands of dollars”.
So which one should you use, and when should you still reach for an LLM? This guide explains what decision models are and aren’t, compares all eight you can use today on speed, accuracy, price, ease of use, fine-tuning, data policy and capacity, and points out where the marketing runs ahead of the benchmarks.
Every number links to its source. Most performance figures come from the vendors themselves; where a test is independent, we say so.
What a decision model is
A decision model answers questions from a fixed menu. You send it some input (the state: a support ticket, an agent’s planned action, a document) and a set of typed questions. It returns exactly one answer per question, chosen from the options you allowed, with a probability for every option.
Three question types have become standard across vendors:
- Choice: pick one of several options (“which team should handle this: billing, technical or sales?”).
- Score: pick a point on an ordered scale (“how severe: none, minor, major, critical?”).
- Yes/no: TypeSafe calls this a Noul; it returns the probability that the answer is yes.
Here’s what a call looks like, using TypeSafe’s API (from its quickstart):
{
"model": "jev-latest",
"state": "Checkout has been failing for every customer for the last hour.",
"questions": {
"department": {
"type": "choice",
"instructions": "Which team should handle this",
"criteria": {
"billing": "Payments, invoices and refunds",
"technical": "Outages, errors and configuration",
"sales": "Plans and upgrades"
}
}
}
}
The response is {"department": {"choice": "technical", "confidence": 0.78}}, plus token usage. There’s no text to parse, and the answer can’t be anything other than one of your three options.
How it works. The open models show the trick. They take a pretrained language model, keep its body (the “torso” that reads and understands the input), and replace the part that generates text with a small scoring head. That head reads the model’s internal representation and scores every allowed option in one pass. AWS’s Strands Decider does this with a head of about a million parameters on top of a 2-billion-parameter model.
Because it reads the input once and generates nothing, a decision model is fast, its latency barely depends on how many questions you ask, and you pay only for input tokens. It’s also cheap to build: AWS’s model trains in about 70 minutes on eight H100s. That’s why so many appeared so quickly.
What a decision model is not
Not an LLM with structured outputs
LLMs can already return JSON. OpenAI’s Structured Outputs guarantees the response matches your schema, so an LLM can also only answer “billing”, “technical” or “sales”. The differences are elsewhere:
- Speed and cost. An LLM generates its answer token by token and bills you for those output tokens, even for a one-word answer. A decision model scores the options in one pass and bills input only.
- Probabilities. A decision model gives a probability for every option, so you can act differently at 95% than at 55%. An LLM gives you an answer, not a distribution, unless you ask it to state its confidence in words.
- Predictability. The same input gives the same scores. LLM sampling adds variation.
One correction to the marketing: decision models are not more accurate than frontier LLMs, and not necessarily better calibrated. On the independent JevBench v1.0, an OpenAI frontier model asked to state its own probabilities scored 97.1% accuracy against Jev’s 96.3%, with better calibration. But it took about a second per decision and cost roughly six times as much. The pitch is speed, cost and predictability at good accuracy, not being smarter.
And “type safe” isn’t the same as correct. A decision model can’t return an invalid answer, but it can still return the wrong valid one.
Not a classic classifier
A fine-tuned classifier (a BERT-style model, or logistic regression on embeddings) learns a fixed set of labels at training time. To add a category, you retrain it. A decision model takes the options and their descriptions with each request, so you can change your categories in code.
If you have a fixed task, lots of labelled data and no plans to change it, a trained classifier can still be cheaper, faster and just as accurate. The line is blurry: Laya, one of the decision models below, is itself a BERT-family encoder with a decision head on top.
Not embeddings or a reranker
Embedding similarity tells you how close two texts are, as a score with no calibrated meaning, and it can’t follow instructions or a rubric. A reranker orders a list of passages against a query. Decision models can rerank a short list, but Jev caps a question at 255 options. For large candidate sets, embedding retrieval or a dedicated reranker stays the first step. Stanford and NVIDIA’s CLM-8B sits in between: it’s built like an embedding model but answers decision-model questions.
The models at a glance
| Model | Maker | Weights | Size | Images | Context (tokens) | Price (input) |
|---|---|---|---|---|---|---|
| Jev 1.13 | TypeSafe AI | Closed | Undisclosed | No | 64K per request | $0.042 / M |
| Clef | Cloudflare | Apache 2.0 | 27B | Yes | 65,536 | $0.24 / M |
| Clef-flash | Cloudflare | Apache 2.0 | 9B | Yes | 65,536 | $0.09 / M |
| Strands Decider 2B | AWS Strands Labs | Apache 2.0, plus data and training code | 1.9B | No | 4,096 | Free, self-host |
| d1 | Liquid AI | Closed | Undisclosed | No | 65,536 | $0.04 / M; free tier |
| Laya | Convai Innovations | Apache 2.0 | 421M | No | 512–8,192 | Free on Vercel until 31 Oct |
| CLM-8B | Stanford and NVIDIA | Apache 2.0 | 8B | No | 2,048 | Free, self-host |
| OpenAI Decisions API | OpenAI | Closed | Undisclosed | Yes | Unpublished | Unpublished (preview) |
None of the hosted models charge for output. We keep these numbers current in our decision models table.
| Model | Vendor-reported latency | Independent score (JevBench v1.5.5) | Fine-tuning | Trains on your data? |
|---|---|---|---|---|
| Jev 1.13 | 70–500 ms end to end | 80.0, the reference system; 0.62 s | None offered | No; zero retention for enterprise |
| Clef | 209 ms median | 77.3; 0.87 s | Hands-on RL service | No, unless you use fine-tuning |
| Clef-flash | 39 ms median | 70.3; 0.55 s | Same | Same |
| Strands Decider 2B | 115 ms median (RTX 3090) | Not listed | Full recipe published | Runs locally |
| d1 | Not published | Not listed | None (“not trainable”) | Not documented |
| Laya | 33 ms (T4 GPU) | 23.0 (multilingual) | Notebook provided | Not documented |
| CLM-8B | “Up to 9× faster than Jev” | Not listed | Tools provided | Runs locally |
| OpenAI Decisions API | ~150 ms (DevDay slide, unverified) | Not listed | Unknown | Unknown |
Vendor latencies are measured on the vendor’s own hardware. JevBench measures over the network from a server in Germany, so its figures include round-trip time and aren’t comparable with the vendor numbers.
The models in detail
TypeSafe Jev: the original
Jev started the category and is still the reference everyone measures against. It’s the cheapest hosted option at $0.042 per million input tokens. It’s text only, and TypeSafe doesn’t disclose its architecture or size. The current version is jev-1.13.0.
- Strengths: the best independent score on JevBench, and the best knowledge-heavy reasoning of the group: Cloudflare’s own model card shows Jev well ahead of Clef on graduate-level science questions (78.3 vs 48.0 on GPQA Diamond). It has the richest docs, with cookbooks for confidence-gated routing, guardrails and re-ranking, SDKs for Python and JavaScript, and support in Vercel’s AI SDK, LangChain and others.
- Limits: 40 requests or 100,000 tokens per second, adjusted “dynamically” and without notice; higher limits on enterprise plans. The site still says early access, there’s no published SLA, and the regions aren’t documented. Its docs warn about counting, arithmetic, date comparisons and large, noisy inputs.
- Data: TypeSafe’s privacy policy says it won’t train on your inputs. Zero data retention is available for enterprise customers. There’s no fine-tuning.
Cloudflare Clef and Clef-flash: open weights at the edge
Clef and Clef-flash put a scoring head on Qwen models (27B and 9B) and run on Workers AI, Cloudflare’s model platform. The weights are on Hugging Face under Apache 2.0, though the training data isn’t.
- Strengths: the only hosted models that read images (up to four per request), and a 65,536-token context. They’re fully compatible with Jev’s API, so switching is a matter of changing the endpoint. Clef-flash is very fast in Cloudflare’s tests, at 39 ms median.
- Price: Clef costs $0.24 per million input tokens, about six times Jev. Clef-flash costs $0.09. Workers AI’s free allowance (10,000 “neurons” a day) covers roughly 460,000 Clef tokens or 1.2 million Clef-flash tokens a day.
- Independent results: JevBench rates Clef close to Jev on capability, but not “Jev-class”, because it’s more than twice as expensive and slower over the network. Some early users on Hacker News reported it slower than Jev in their own tests.
- Fine-tuning: a reinforcement-learning service that trains on your own traffic, captured through Cloudflare’s AI Gateway. For now it’s done hands-on with Cloudflare’s engineers, with a self-serve version promised later. Cloudflare notes tuning may cost some general performance.
- Data: Cloudflare says it doesn’t read, store or train on your requests unless you opt into fine-tuning. It doesn’t document a Clef-specific rate limit.
AWS Strands Decider 2B: the one you can run on a laptop
Strands Decider 2B started as AWS engineer Marc Brooker’s side project. It’s a 1.9-billion-parameter model with a tiny pointer head, and it’s the most open of the group: weights, training data and training scripts are all published under Apache 2.0.
- Strengths: it runs locally. AWS reports 115 ms median on an RTX 3090 and 150–230 ms on an M3 Pro Mac, so your data never leaves your machine and there’s no per-call bill.
pip install strands-decidergives you a CLI and a local server with a Jev-compatible endpoint. You can retrain it on your own data in about 11 hours on a single RTX 3090. - Limits: a 4,096-token context, text only, and noticeably less capable. It scores 72.3% on JevBench’s public tasks, and 50.5% on the hard tier. The authors say long, multi-step documents are its weak spot. There’s no hosted AWS version.
Liquid AI d1: the cheap hosted alternative
d1 is a closed, hosted, text-only model from Liquid AI. It works with TypeSafe’s SDKs, has a free model (d1:free), and costs $0.04 per million input tokens through Vercel’s AI Gateway. That’s about the same as Jev. Liquid claims it edges out Jev on an aggregate score, but we’ve only seen that claim in secondary coverage. Liquid hasn’t published its size, rate limits or data policy.
Laya: the small encoder
Laya from Convai Innovations is a 421M-parameter encoder (a ModernBERT model with a decision head), with a 322M multilingual version covering 100+ languages. It’s tiny and fast, at about 33 ms on an old T4 GPU, and open under Apache 2.0.
It’s free through Vercel’s AI Gateway until 31 October; the price after that isn’t published. Its context is short (512 tokens in English by default) and it needs calibrating on your own domain. Its independent score is low. Laya is best for high-volume, short-input classification you can host yourself.
CLM-8B: built for ranking actions
CLM-8B from Stanford and NVIDIA works like an embedding model: it encodes the input and each option separately. That means you can cache the options. When an agent picks from the same 1,000 possible actions over and over, CLM encodes them once, and the authors report it ranks them up to 13× faster than Jev. It’s open under Apache 2.0, with a 2,048-token context. A larger multimodal version is promised for early October.
OpenAI Decisions API: the LLM that acts like one
Announced at DevDay on 29 September and in limited preview, OpenAI’s Decisions API points a GPT-6 model at questions with fixed answers. It’s a constrained version of a normal language model rather than a new kind of model. A DevDay slide reportedly showed 150 ms against 1.6 seconds for a normal call. There are no public docs or prices yet, and it’s unclear whether it returns probabilities.
The open-source crowd
JevBench lists dozens of community models, some ranking near the top: Winnow-12B, Cygnet, Plumb-4B, and Imajev-4B (with image input). Most reuse Jev’s API format and an open Qwen model. They’re worth a look if you self-host, but verify them on your own data first.
Read benchmarks carefully
- JevBench is the main independent benchmark, but by its own description it’s “a one-person hobby project”. It uses Jev as the reference system: a “Jev-class” model must be within 2× of Jev’s cost and latency. That favours cheap hosted models like Jev. Its versions change quickly, and rankings differ between its site and its GitHub README.
- Vendor benchmarks are chosen by the vendor. Cloudflare reports Clef winning three of four TypeSafe workflow evals, and also shows Jev far ahead on knowledge questions. Both can be true for different workloads.
- Latency numbers aren’t comparable across sources: GPU-side medians from a vendor and network round trips from Germany measure different things.
The only benchmark that matters is your own: 200 real examples from your workload, labelled by hand, run through two or three candidates.
Using one well
- Switching is cheap. Jev’s request format has become the de facto standard. Clef, d1, Laya, Strands Decider and CLM all accept it or something close. Write against it once and you can swap models by changing a URL.
- Gate on confidence. TypeSafe’s docs suggest treating below 0.5 as genuinely uncertain and requiring above 0.9 for destructive actions, and tuning both thresholds on your own data.
- Cascade to an LLM. Ask the decision model first and fall back to an LLM only when it’s unsure. Vercel’s AI Gateway has this built in as evaluation fallbacks, for example rerunning a question on GPT-6 when confidence drops below 0.6. You pay for both calls only on the hard cases.
- Ask atomic questions. Several small, specific questions beat one broad one. Put arithmetic and date logic in code, not in the question. Batching questions into one call is much cheaper: TypeSafe says 12× for its examples.
When not to use one
- Anything generative: writing, summarising, code, explanations, chat, open-ended answers.
- Counting, arithmetic and dates. Do those in code.
- Knowledge-heavy judgement, where frontier LLMs and Jev clearly lead the open models.
- When none of your options may be right. A decision model always picks one.
- When you can’t act on uncertainty. A 55% answer still needs a decision, and you have to design what happens next.
- When a classifier you already have works. If it’s accurate, cheap and calibrated on a fixed label set, keep it.
Which one to pick
- Best default for hosted use: Jev. It’s the cheapest per token, the strongest independently, and has the best docs. Watch its rate limits and the missing SLA.
- You need images, or you’re on Cloudflare: Clef-flash for speed and price, Clef for accuracy. Same API as Jev.
- Data can’t leave your infrastructure: Strands Decider 2B for small, local tasks; Clef or CLM-8B on your own GPUs for harder ones.
- High volume, short inputs, many languages: Laya.
- You’re picking from a large, fixed set of actions: CLM-8B, with cached options.
- Hard or knowledge-heavy decisions: a frontier LLM, or a decision model with an LLM fallback.
Decision models won’t replace LLMs. They take over the quick, repetitive choices inside agents and pipelines: routing, triage, gating and checks. Those steps were too slow and too expensive to hand to a frontier model every time.
