impruthvi.me
All notes

What If AI Didn't Generate Text? Inside TypeSafe AI's Jev

2026-09-1714 min read

TypeSafe AI just introduced Jev, a model built to make typed, probabilistic decisions instead of generating text.

I wanted to understand what that actually means for backend developers: how Jev differs from LLM structured outputs, where decision models fit into real software architecture, and whether this could become a new primitive for building AI-powered applications.

This article breaks down the architecture, the performance claims, the limitations, and what a Jev-style workflow could look like inside a Laravel application.

We Might Be Using LLMs for the Wrong Job

Most AI applications today follow roughly the same pattern:

Application
    
Large Language Model
    
Generate Tokens
    
Parse / Validate Output
    
Application Logic

This makes sense when the output is actually language.

Writing an email? Generate text.

Explaining some code? Generate text.

Having a conversation? Generate text.

But a surprising amount of production AI isn't really asking the model to write anything.

We're asking questions like:

  • Which department should handle this ticket?
  • Is this transaction suspicious?
  • Should this agent retry?
  • Which tool should be called next?
  • How urgent is this request?
  • Does this output violate a policy?
  • Should this workflow continue or stop?

These are decisions, not writing tasks.

Yet we often send them through models primarily designed to generate language one token at a time.

TypeSafe AI is exploring a different idea:

What if the model didn't need to generate text at all?

Its first public model, Jev, is designed around exactly that question.

What Is TypeSafe AI?

TypeSafe AI is building what it calls System One Models: AI models designed specifically for making decisions inside software.

Its first public model, Jev, was announced on September 14, 2026.

Instead of:

Prompt
   
Generated Text
   
Parse
   
Validate
   
Use

Jev works more like:

Application State
        
       Jev
        
Typed Decisions + Probabilities
        
Application Logic

TypeSafe describes the idea as essentially:

Unstructured state in
        
Typed probabilistic decisions out

That sounds like a small distinction.

Architecturally, I think it's a pretty significant one.

LLMs Were Designed to Generate Strings

Traditional language models generate output sequentially.

Given:

The customer says they were charged twice.

we might ask an LLM:

Classify this support ticket.

Return:
- department
- priority
- requires_refund

and receive:

{
  "department": "billing",
  "priority": "high",
  "requires_refund": true
}

Modern structured-output APIs make this much more reliable than it used to be.

But conceptually, we're still using a general-purpose generative model and constraining its output to a structure our application understands.

Jev approaches the problem differently.

The possible decisions and their types are defined before inference.

For example, using Vercel AI SDK's experimental evaluation API, a decision could look conceptually like this:

import { experimental_evaluate as evaluate } from 'ai';

const result = await evaluate({
    model: 'typesafe-ai/jev',

    state: {
        message: 'I was charged twice for my subscription.',
    },

    questions: {
        department: {
            type: 'choice',
            options: [
                'billing',
                'technical',
                'account',
            ],
        },

        urgent: {
            type: 'boolean',
        },
    },
});

Instead of asking:

Generate text or JSON that looks like this.

we're closer to asking:

Evaluate these predefined decisions against this state.

For certain backend workloads, that is a much more natural abstraction.

System One Models

The name is inspired by the System 1 / System 2 distinction associated with Daniel Kahneman's Thinking, Fast and Slow.

Very roughly:

System 1
Fast
Immediate
Pattern-based decisions

System 2
Slow
Deliberate
Reasoning-heavy

Modern reasoning models are increasingly optimized for difficult problems where spending additional computation before answering can improve the result.

TypeSafe is targeting a different category.

Jev is designed around operations such as:

classify
route
score
extract
verify
branch

rather than:

write
explain
generate prose
converse

This doesn't make Jev a replacement for LLMs.

It makes it a different primitive.

Decisions Instead of Strings

Consider a support system.

An LLM-based implementation might look conceptually like this:

$response = $llm->generate("
    Analyze this support ticket.

    Return JSON containing:

    department: billing|technical|account
    priority: low|medium|high
    refund_required: boolean
");

$data = json_decode($response);

validate($data);

routeTicket($data);

In practice, modern SDKs can handle much of the parsing and validation for us.

But the conceptual path is still:

Generative Model
      
Structured Output
      
Application

A decision-focused model gives us another abstraction:

Application State
      
Decision Model
      
Typed Decision
      
Application

That separation is what makes the TypeSafe idea interesting from a backend engineering perspective.

Confidence Is Part of the Interface

The part I find more interesting than type safety is uncertainty.

Jev returns probabilities and confidence information alongside its decisions.

That means software doesn't have to treat every AI answer equally.

Imagine a ticket-routing system:

if ($decision->confidence >= 0.98) {
    $ticket->routeAutomatically();
} elseif ($decision->confidence >= 0.80) {
    $ticket->routeAndFlagForReview();
} else {
    $ticket->sendToHumanReview();
}

Now the architecture becomes:

                     ┌── High confidence ──→ Automate
                     
Input ──→ Model ─────┼── Medium ──────────→ Automate + Review
                     
                     └── Low confidence ───→ Human

This is much closer to how I would want probabilistic software to behave in production.

The AI doesn't need to control the workflow.

The application does.

The model supplies a probabilistic signal, and deterministic application code decides what actions are allowed.

Of course, those thresholds shouldn't simply be guessed.

They need to be calibrated and tested against labeled examples from the actual application domain.

AI as a Smart If Statement

One useful way to think about this approach is as a fuzzy version of application logic.

Traditional software might contain:

if ($ticket->contains('refund')) {
    $department = 'billing';
}

That works until users write:

I paid yesterday but the amount appears twice on my statement.

Now our deterministic keyword rule starts falling apart.

A decision model can provide the semantic judgment:

P(billing)   = 0.97
P(technical) = 0.02
P(account)   = 0.01

while normal code remains responsible for what happens next:

if ($billingProbability > 0.95) {
    $ticket->assignTo('billing');
}

That's a very different architecture from handing an entire workflow to an autonomous agent.

The model handles ambiguity.

The application handles authority.

I think that's an important boundary.

Where Jev Could Be Useful

The obvious use cases are places where software needs semantic judgment but doesn't need generated language.

Support Routing

Ticket
   
Jev
   
Department
Priority
Escalation probability
Refund-review probability

Fraud and Risk Signals

Transaction
   
Jev
   
Risk score
Suspicious?
Requires manual review?

A model decision should generally be treated as one signal in sensitive workflows rather than automatically becoming the final action.

Agent Control

An AI agent constantly makes decisions like:

Should I call another tool?

Should I retry?

Did the previous step succeed?

Do I need more information?

Should I stop?

Those decisions don't necessarily require another generated paragraph.

Guardrails

A separate decision model could evaluate questions such as:

Is this output safe?

Did the model follow the requested format?

Does this answer contradict the provided context?

Should this response be reviewed?

Large-Scale Classification

If you're processing millions of records, generating explanatory text for every classification can be unnecessary computation.

Sometimes you only need:

yes / no

A / B / C

1–5

probability

This is exactly the kind of workload Jev is targeting.

Parallel Decisions Change the Cost Model

LLMs typically generate tokens autoregressively:

token₁
  
token₂
  
token₃
  
token₄
  
...

TypeSafe says Jev's sampler is designed to evaluate declared outputs in parallel.

Conceptually:

                  ┌─→ Department
                  
Application State ├─→ Priority
                  
                  ├─→ Risk
                  
                  └─→ Needs Review

For workflows containing many independent decisions, removing unnecessary text generation could significantly change latency and cost.

That's where TypeSafe's performance claims become interesting.

193.6× Faster and 444.6× Cheaper?

TypeSafe reports that Jev reached up to:

193. faster
444. cheaper

than LLM-based approaches in its System One workflow evaluations.

Those numbers are impressive.

But they need context.

These are TypeSafe's own evaluations, not independent industry benchmarks.

TypeSafe itself notes that the workflows were created by people on its model capabilities team, so some bias could exist. The company also says the reported improvements are likely toward the higher end of real-world gains.

So I wouldn't interpret the result as:

Jev is 444× better than LLMs.

A more useful takeaway is:

For decision-shaped workloads,
removing autoregressive text generation
can potentially make inference
dramatically faster and cheaper.

That architectural idea is more interesting to me than the headline benchmark.

What Does It Cost?

TypeSafe currently lists Jev at:

$42 / billion input tokens

which is equivalent to:

$0.042 / million input tokens

TypeSafe also says output decisions are too inexpensive to meter separately.

Vercel AI Gateway currently lists Jev at approximately:

$0.04 / million input tokens

That pricing becomes interesting when you think beyond chatbots.

A traditional chatbot might make one model call when a user sends a message.

A decision model could potentially sit much deeper inside ordinary application control flow:

request
   
classify
   
score
   
route
   
verify
   
continue / stop

If AI becomes part of those small, frequent decisions, cost and latency start to matter very differently.

"Zero Hallucinations" Needs Some Context

TypeSafe describes Jev as having zero hallucinations, but it's important to understand what that means in the context of its architecture.

Suppose the allowed result is:

billing
technical
account

Jev isn't supposed to suddenly return:

banana

The output space is defined in advance, and TypeSafe says schema matching is guaranteed.

That's valuable for software automation because application code doesn't have to defend against arbitrary output types.

But there's an important distinction:

Type correctness
        
Decision correctness

Jev could return:

billing

when the correct answer was actually:

account

The output is structurally valid.

The decision can still be wrong.

So when TypeSafe talks about "zero hallucinations," I think the most useful engineering interpretation is:

The model is constrained to produce values inside the decision space defined by the application.

That doesn't make AI infallible.

It makes the boundary between probabilistic AI and deterministic application code much stronger.

Jev vs Structured Outputs

This is probably the first question many developers will ask.

Modern LLM APIs already support JSON schemas and structured outputs.

So why do we need another model?

The difference is primarily architectural.

LLM + Structured Output

General-purpose generative model
        
Generate tokens
        
Constrain / validate generation
        
Structured result

Jev

Decision-focused model
        
Evaluate predefined questions
        
Typed probabilistic result

Structured outputs make general-purpose LLMs much easier to integrate into software.

Jev takes the idea further by designing the model and sampling process around decision-shaped workloads from the beginning.

Whether that architectural distinction produces meaningful improvements across real production systems is something developers will now get to test.

A Laravel Example

Imagine I'm building a helpdesk application in Laravel.

When a ticket arrives:

$ticket = Ticket::create([
    'subject' => $request->subject,
    'description' => $request->description,
]);

Instead of writing brittle keyword rules or asking an LLM to generate a large response, the application could evaluate several decisions:

State:

{
    subject,
    description,
    customer,
    previousTickets
}

Questions:

department
priority
needsEscalation
possibleDuplicate
refundRelated

The decision model evaluates what the ticket probably means.

Then application code decides what is allowed to happen:

if ($decision->department->confidence > 0.95) {
    $ticket->assignDepartment(
        $decision->department->value
    );
}

if ($decision->needsEscalation->probability > 0.90) {
    EscalateTicket::dispatch($ticket);
}

Those exact thresholds would need to be calibrated against real ticket data.

But the architectural boundary is the important part:

AI decides what something probably means.

Code decides what the system is allowed to do.

I like that separation.

It keeps business rules, authorization, side effects, and safety constraints inside normal application code instead of burying them inside prompts.

Jev Is Not an LLM Replacement

There are plenty of things I would still want a generative model to handle.

Write an email            LLM
Explain an error          LLM
Generate code             LLM
Summarize a document      LLM
Chat with a customer      LLM

Route a ticket            Decision model
Score urgency             Decision model
Select a tool             Decision model
Detect risky output       Decision model
Decide whether to retry   Decision model

The interesting future might not be:

Jev vs LLM

It might be:

                  Application
                       
             ┌─────────┴─────────┐
                                
                                
       Decision Model      Generative Model
                                
     classify / route       write / reason
     score / verify         explain / create
                                
             └─────────┬─────────┘
                       
                 Application

Different models for different jobs.

This Could Change Agent Architecture

Today's agents frequently use a large language model for many different responsibilities.

Understand request
      
Choose tool
      
Evaluate result
      
Choose next tool
      
Determine completion
      
Generate response

But not every one of those steps necessarily needs language generation.

A future agent architecture could look more like:

                    User
                     
                     
                LLM Planner
                     
                     
               Application
                     
              ┌──────┴──────┐
                           
                           
       Decision Model      Tools
                           
              └──────┬──────┘
                     
              Workflow State
                     
                     
              Decision Model
                     
             Continue / Retry /
              Escalate / Stop
                     
                     
                    LLM
                     
                     
                Final Response

Instead of asking a generative model to make every small control-flow decision, specialized decision models could handle parts of the control plane.

If the accuracy and calibration hold up in production, that could make certain agent architectures faster, cheaper, and easier to constrain.

Vercel Is Already Experimenting With This Abstraction

Jev became available through Vercel AI Gateway shortly after its release.

Vercel's AI SDK exposes Jev through an experimental evaluate API with decision primitives including:

Choice
Score
Boolean

Each evaluation contains:

model
state
questions

and multiple questions can be evaluated against the same state.

That is interesting because the abstraction isn't:

generateText()

or:

generateObject()

It's:

evaluate()

That API name captures the architectural difference surprisingly well.

The application isn't asking the model to write something.

It's asking the model to evaluate something.

The Bigger Idea

For the last few years, the default architecture for adding intelligence to software has often been:

Need intelligence?

Call an LLM.

I don't think that will remain the only abstraction.

We already use specialized models and systems for:

embeddings
image generation
speech recognition
reranking
vision

Decision models could become another primitive:

generation models
        +
reasoning models
        +
embedding models
        +
decision models

If that happens, backend developers may start thinking about AI less like a chatbot embedded inside an application and more like another computational primitive.

Something closer to:

$result = evaluate($state);

than:

$response = prompt($model);

That shift is what makes Jev interesting to me.

Not the fact that there's another AI model.

The interesting part is that it's proposing another interface between AI and software.

What I'm Watching Next

Jev is extremely new.

TypeSafe only publicly introduced it in September 2026, so real-world production evidence is still limited.

The questions I care about aren't really whether it can win a benchmark.

They're:

  1. How well calibrated are the confidence scores on real application data?
  2. How does accuracy change with large decision spaces?
  3. How does Jev compare with structured-output LLMs on the exact same production workflow?
  4. What happens when application state becomes very large?
  5. Can decision models reliably control long-running agent loops?
  6. How much latency disappears when many independent decisions are evaluated together?
  7. How should teams test probabilistic decisions in CI?
  8. What failure patterns appear after millions of production requests?
  9. How stable is calibration when production data changes over time?
  10. Which workloads still benefit enough from general-purpose LLM reasoning to justify the extra cost?

Those answers will matter more than launch benchmarks.

Final Thoughts

TypeSafe AI's most interesting idea isn't that Jev is faster than an LLM.

It's the question underneath the product:

Why are we generating language when the application only needs a decision?

LLMs are incredibly useful because strings are universal.

They can write, reason, explain, code, summarize, and converse.

But that flexibility has a cost.

If my application only needs:

billing
0.97 confidence

generating text just to arrive at that decision can feel unnecessary.

Jev proposes another abstraction:

State
  
Decision
  
Probability
  
Code

I don't think this replaces LLMs.

I think it points toward something more interesting: AI systems composed of specialized models, where generative models handle language and reasoning while decision models handle fast, constrained choices inside software.

For backend developers, that could be a much more useful way to think about AI.


References

I used the following sources while researching this article:

Jev is still very new, so its real-world production characteristics may change as TypeSafe updates the model and more developers test the approach outside TypeSafe's own evaluations.

Next noteTesting Stripe Billing Lifecycles Offline in Laravel with Cashier Dunning