Skip to content
TechWithSwag

Jev, and the case for a decision layer underneath your LLM

· 5 min read

On this page

Most agent loops I build lately have the same shape, no matter what the agent is actually for: call an LLM, get back something that's supposed to be JSON, validate it, sometimes retry because the model wrapped it in a sentence or picked a field name that wasn't in the schema. That's true even for genuinely small decisions — the saveLead tool in this site's own chat widget only fires once the model has decided the visitor has actually shared a name, email, and project. That decision is a single bit. It still costs a full generative call to get there.

TypeSafe AI, a research lab started by former OpenAI researcher Diogo Almeida, just came out of stealth with a model called Jev that's built specifically to replace that kind of call — not with a smaller LLM, but with a different category of model entirely.

The pitch: stop generating text for decisions

A regular LLM call looks like this no matter how small the question is:

context ──▶ generate tokens ──▶ generate more tokens ──▶ parse the result

Jev, which TypeSafe calls a "System 1 model," instead takes context and returns a bounded, typed value directly:

context ──▶ Jev ──▶ true / false, or A / B / C, or a 0–10 score, or 0.87

The name is a deliberate reference to Kahneman's System 1 / System 2 distinction — System 1 being the fast, intuitive judgment your brain makes without deliberate reasoning, System 2 being the slower, effortful kind. The implied division of labor is that an LLM stays the System 2 layer — planning, writing, explaining — while a System 1 model handles the high-volume, low-stakes calls happening constantly around it: route this ticket, retry this request, score this response, flag this transaction.

How it's actually different

According to TypeSafe's announcement, the mechanical difference is real, not just a prompting trick. LLMs sample tokens one at a time, so latency scales with output length. Jev is trained (via what they call reinforcement learning for calibrated decisions) to compute probabilities over a fixed, pre-defined output space in parallel, in a single pass. The numbers they publish:

  • 70–500ms end to end, versus 3–329 seconds for comparable LLM calls on the same class of task.
  • Calibrated probabilities as the actual output — not a token that looks like a probability, but a number where, in their framing, higher confidence really does track higher accuracy.
  • $0.042 per million input tokens, with output currently free — their words are "too cheap to meter."

Those are the vendor's own benchmarks from a company that's still in early access, not something independently verified, so I'd treat the specific multiples with the usual skepticism you'd give any launch post. But the underlying idea doesn't depend on the exact numbers holding up: constraining the output space to a fixed set of typed values removes an entire category of failure — the model can't hallucinate a fifth option when only four exist, and there's nothing left to parse or retry on malformed JSON.

What it doesn't fix

This is the part worth sitting with, because it's easy to round "can't produce an invalid shape" up to "can't be wrong." Those are different claims. A bounded model can still confidently return false when the right answer was true, or pick option B with high stated confidence when C was correct. Type-safety constrains the shape of the mistake, not whether one happens. For anything with real consequences — approving a transaction, deciding an agent's next action — you still need the same judgment calls about acceptable error rates and where a human needs to be in the loop that you'd apply to any classifier.

Where this fits into agent loops

The interesting target for this isn't chat, it's the control flow around agents — the part that's currently built out of a lot of small, repeated LLM calls:

LLM ─▶ use a tool
LLM ─▶ inspect the result
LLM ─▶ retry?
LLM ─▶ pick the next tool
LLM ─▶ done?

Swap the middle three for a fast typed model and the shape becomes closer to LLM: plan and act with Jev: retry — 0.91 running underneath it for the routing questions. TypeSafe demoed this with a Doom-playing bot making about 10 decisions a second and a Wikipedia-navigating agent choosing between dozens of outbound links per page — both cases where an LLM call per decision would be too slow or too expensive to run in real time, and where the honest answer doesn't need a paragraph, just a choice.

The bigger claim

TypeSafe's actual thesis is broader than one model: that "AI" doesn't have to mean one generative model doing every kind of intelligence — that generation, reasoning, and fast bounded decisions might end up being three different jobs, done by three different kinds of models, the way a backend doesn't run everything through one general-purpose service. Jev is early — waitlisted, unproven outside their own benchmarks, and it's one company's bet on that split. But the split itself matches something I keep running into building agent-shaped tools: most of the calls in a loop like the one above aren't asking the model to think. They're asking it to decide. Those don't feel like the same problem, and it's a little surprising it's taken this long for someone to stop treating them as one.

Get new posts by email

Full-stack and DevOps notes, straight to your inbox when I publish. No spam, and you can unsubscribe any time.

Share this post