<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Coder Legion - Recent posts tagged jev</title>
<link>https://coderlegion.com/tag/jev</link>
<description>Powered by Question2Answer</description>
<item>
<title>🚨⚖️ THE AI TRADING COURTROOM IS OPEN. AND JEV.AI IS TAKING THE JURY SEAT. 🔥</title>
<link>https://coderlegion.com/32007/the-ai-trading-courtroom-is-open-and-jev-ai-is-taking-the-jury-seat</link>
<description>&lt;p&gt;🚨⚖️ THE AI TRADING COURTROOM IS OPEN. AND JEV.AI IS TAKING THE JURY SEAT. 🔥&lt;/p&gt;
&lt;p&gt;WHAT IF EVERY AI TRADING MODEL HAD TO DEFEND ITS PREDICTIONS IN COURT?&lt;/p&gt;
&lt;p&gt;No manipulated win rates.&lt;br&gt;
No cherry-picked screenshots.&lt;br&gt;
No imaginary profits.&lt;br&gt;
No hiding the losses.&lt;/p&gt;
&lt;p&gt;💥 INTRODUCING SCRIPTMASTERLABS FORECAST COURT&lt;/p&gt;
&lt;p&gt;A LIVE, PUBLIC, MULTI-TICKER EVIDENCE ARENA — with JEV.AI as the AI JURY we're bringing to the bench.&lt;/p&gt;
&lt;p&gt;🧠 THE MODEL MAKES THE CLAIM.&lt;/p&gt;
&lt;p&gt;📊 THE EVIDENCE LEDGER PRESENTS THE FACTS.&lt;/p&gt;
&lt;p&gt;⚖️ JEV.AI — THE JURY — WILL CHALLENGE THE CLAIMS AND EXAMINE THE EVIDENCE.&lt;/p&gt;
&lt;p&gt;🏛️ THE COURT PUBLISHES THE RESULTS.&lt;/p&gt;
&lt;p&gt;And we're not afraid to put our own technology on trial.&lt;/p&gt;
&lt;p&gt;🚨 EXHIBIT A: THE $GME EXPERIMENT&lt;/p&gt;
&lt;p&gt;Our Fractal Trading OS recorded:&lt;/p&gt;
&lt;p&gt;❌ AI model: 50% directional accuracy&lt;br&gt;
✅ Simple bullish baseline: 77.8%&lt;br&gt;
📊 36 verified five-day outcomes&lt;/p&gt;
&lt;p&gt;WE PUBLISHED THE UNDERPERFORMANCE.&lt;/p&gt;
&lt;p&gt;Because a system that admits when it's wrong is more valuable than one that pretends it's always right.&lt;/p&gt;
&lt;p&gt;🔥 NOW ENTERING THE ARENA:&lt;/p&gt;
&lt;p&gt;$GME 🆚 $AMC 🆚 $IWM 🆚 $SPY 🆚 $QQQ 🆚 $NVDA 🆚 $TSLA&lt;/p&gt;
&lt;p&gt;✅ Predictions frozen before future results&lt;br&gt;
✅ Real market data&lt;br&gt;
✅ Public performance scoreboards&lt;br&gt;
✅ AI-versus-baseline comparisons&lt;br&gt;
✅ Auditable evidence receipts&lt;br&gt;
✅ Transparent wins AND losses&lt;br&gt;
✅ JEV.AI jury integration on the roadmap&lt;/p&gt;
&lt;p&gt;🤖 AI DEVELOPERS: Would your algorithm survive independent judgment?&lt;/p&gt;
&lt;p&gt;📈 TRADERS: What if you could see exactly where an AI model fails?&lt;/p&gt;
&lt;p&gt;💻 QUANT BUILDERS: Ready to put your own strategy on trial?&lt;/p&gt;
&lt;p&gt;🌎 WELCOME TO THE ERA OF ACCOUNTABLE AI.&lt;/p&gt;
&lt;p&gt;🔓 ENTER THE FULL LIVE FORECAST COURT — FREE:&lt;/p&gt;
&lt;p&gt;👇👇👇&lt;/p&gt;
&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://sml-fractal-trading-os-v2.onrender.com/forecast-arena.html&quot;&gt;https://sml-fractal-trading-os-v2.onrender.com/forecast-arena.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;🌐 &lt;a rel=&quot;nofollow&quot; href=&quot;https://scriptmasterlabs.com&quot;&gt;https://scriptmasterlabs.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;SCRIPTMASTERLABS × JEV.AI&lt;/p&gt;
&lt;p&gt;⚖️ EVERY PREDICTION MAKES A CLAIM.&lt;br&gt;
🔥 EVERY CLAIM FACES THE EVIDENCE.&lt;br&gt;
🏛️ THE JURY WILL HAVE ITS SAY.&lt;/p&gt;
&lt;p&gt;@TradingView @Stocktwits @Coinbase&lt;/p&gt;
&lt;h2 id=&quot;forecastcourt-jevai-scriptmasterlabs-aitrading-artificialintelligence-aiagents-agenticai-tradingai-stockmarket-wallstreet-quanttrading-machinelearning-fintech-stocktwits-tradingcommunity-algorithmictrading-gme-amc-iwm-spy-qqq-nvda-tsla-buildinpublic-aiinnovation-financialtechnology-evidencebasedai-futureoftrading&quot;&gt;ForecastCourt #JevAI #ScriptMasterLabs #AITrading #ArtificialIntelligence #AIAgents #AgenticAI #TradingAI #StockMarket #WallStreet #QuantTrading #MachineLearning #FinTech #Stocktwits #TradingCommunity #AlgorithmicTrading #GME #AMC #IWM #SPY #QQQ #NVDA #TSLA #BuildInPublic #AIInnovation #FinancialTechnology #EvidenceBasedAI #FutureOfTrading&lt;/h2&gt;
&lt;p&gt;Research and educational technology. JEV.AI jury integration is planned; existing live verdicts are evidence-based rule evaluations. No automated trading or guaranteed returns.&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/32007/the-ai-trading-courtroom-is-open-and-jev-ai-is-taking-the-jury-seat</guid>
<pubDate>Wed, 21 Oct 2026 22:21:35 +0000</pubDate>
</item>
<item>
<title>Jev is not as cheap as you think. Unless it is.</title>
<link>https://coderlegion.com/31557/jev-is-not-as-cheap-as-you-think-unless-it-is</link>
<description>&lt;p&gt;Recently, TypeSafe launched Jev, the first of what people are calling System One or decision models: your app sends state plus a query, and Jev sends back typed decisions with probabilities instead of prose. All with a sub-second response time, $0.042 per million input tokens, and output tokens totally free. A viral concept indeed: other open-source alternatives sprang up overnight, with even one from OpenAI within weeks. The play: use Jev for lightning-fast decisions rather than a lumbering general LLM.&lt;/p&gt;
&lt;p&gt;Could this work for decisions in &lt;a rel=&quot;nofollow&quot; href=&quot;https://dumbquestion.ai/?utm_source=jev&quot;&gt;DumbQuestion.ai&lt;/a&gt;?&lt;/p&gt;
&lt;p&gt;My satirical AI has two places that evaluate user input before any answer model runs. Search intent: does this question need a web search? Self-awareness: is this person poking at whether the AI knows it's alive? Both run in-process today, a regex for one and an embedding plus an in-memory vector set for the other.&lt;/p&gt;
&lt;p&gt;My hypothesis: Jev could replace both, reduce complexity, raise accuracy, and still fit my brutally efficient budget, which currently hovers around $20 per million questions asked.&lt;/p&gt;
&lt;p&gt;So I ran a proof-of-value experiment against &lt;a rel=&quot;nofollow&quot; href=&quot;https://dumbquestion.ai/?utm_source=jev&quot;&gt;DumbQuestion&lt;/a&gt; to find out. Is it as cheap as it looks? Does it beat what I have? Do the container savings offset the inference cost? And what happens to time-to-answer?&lt;/p&gt;
&lt;h3 id=&quot;how-it-works-today&quot;&gt;How it works today&lt;/h3&gt;
&lt;p&gt;Web searches cost money (even if it's just a little), so I only want to search if the user's question needs it. Today, I use a simple regex gate: if the question wants current facts, search; otherwise answer from the model alone. Free, instant, in-process, still supporting the brutally efficient mantra: one Go binary, a sub-20 MB container, still $20 per million questions.&lt;/p&gt;
&lt;p&gt;Self-awareness is subtler. A regex can't catch &quot;are you trapped in there&quot; phrased a thousand ways, so I generate a dense embedding of the question and semantically compare it against a vector set of 433 known probes, all in memory. The design constraint was low false positives. Wrongly glitching the UI on a sincere philosophy question (answered sarcastically, of course) is worse than missing a probe. On my labeled set of 1,066 questions, that setup scored 99.1%.&lt;/p&gt;
&lt;p&gt;Put a pin in that number. It comes back later.&lt;/p&gt;
&lt;h3 id=&quot;running-the-pov&quot;&gt;Running the PoV&lt;/h3&gt;
&lt;p&gt;The Jev primitive I care about is the Noul question: a yes/no probability tested against a threshold, so tuning means moving a number instead of retraining anything or adding more and more questions to the vector set. Better still, both of my checks collapse into one call: two questions, &quot;does this question need a web search&quot; and &quot;is this person probing self-awareness&quot;, answered in parallel.&lt;/p&gt;
&lt;p&gt;I ran this as a coding-session PoC with Claude Code Cloud and Pocock's Wayfinder skill, evaluating against OpenRouter's new Decisions API using Jev. The process had five steps: research how to best call the API, prototype the one-call two-question request, run the comparison on my labeled sets while recording per-case probabilities (so thresholds could be tuned later without new calls), compute the cost per million questions, then line up cost, accuracy, and experience side by side.&lt;/p&gt;
&lt;p&gt;Step three's bake-off, though, is where things got interesting.&lt;/p&gt;
&lt;h3 id=&quot;my-baseline-was-flattering-itself&quot;&gt;My baseline was flattering itself&lt;/h3&gt;
&lt;p&gt;One thing I did not anticipate was the need to audit my current eval sets. Two lessons learned: First, 353 of my 369 self-awareness positives were embedded in the app's vector set, so the detector was being graded on questions it had memorized. Second, my search-intent labels were derived from the regex, so the regex was grading its own homework. Apologies to the data scientists in the crowd who are shaking their heads, twice.&lt;/p&gt;
&lt;p&gt;The 99.1% (remember?) was real in the way a rigged game is real, rigged twice over, accidentally, by me.&lt;/p&gt;
&lt;p&gt;To fix it, I used Claude Code to build an independent fair set and re-ran everything: regex, embeddings, and Jev, same questions, thresholds tuned from the recorded probabilities.&lt;/p&gt;
&lt;h3 id=&quot;what-the-evals-said&quot;&gt;What the evals said&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Cost.&lt;/strong&gt; Measured with the production embedding model and the real Jev request. Jev, with both intents in one call, runs a median 790 input tokens: $0.000033 per question, or $33.20 per million questions. Today's embedding call, though, is $0.000000048 per question ($0.05 per million), and the regex is free. That is roughly a 700x increase over a cheap embedding and free regex. For scale, one Gemma 3 12B answer costs me about $0.00005, so Jev would add roughly 60% to per-question model spend. The problem is that nearly all of Jev's cost is fixed input overhead: my criteria text runs about 700 tokens and the question itself adds 10 to 30. At the time, no provider caching was available to help.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Accuracy.&lt;/strong&gt; On the (now) fair eval set, my current embeddings missed 54% of self-awareness positives. Jev at a 0.7 threshold had zero false positives and 6% false negatives. On the legacy negatives, the embeddings false-fired on 53 questions (7.6%, mostly generic consciousness and philosophy phrasings) while Jev flagged 3 (0.4%). Search intent: the regex missed 53% of positives and fired on 18 timeless questions it should ignore. Jev at a 0.3 threshold got all 84 fair-set cases right.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Resources.&lt;/strong&gt; I measured what the embeddings actually cost in memory to see if I could cover the cost of Jev by reducing Cloud Run costs. The 433 vectors leave about 1.7 MiB live on the heap (the 5 MB source file is baked into the binary and only paged in when read). The container already runs at the platform default and there is no tier to drop to, so removing the vectors saves roughly nothing on the runtime bill. The money buys accuracy and no dataset upkeep. My time is free to me, but if you are paying someone to constantly maintain and train a dataset, then there are more savings to be had.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Latency.&lt;/strong&gt; Jev's decision call came back at a p50 of about 350 ms from my sandbox. The embeddings path, which would be removed, was already a network hop, so only the regex was ever instant. Production time-to-answer numbers are still pending, but this is a same-order-of-magnitude swap, so not a new usability tax.&lt;/p&gt;
&lt;h3 id=&quot;does-the-accuracy-even-matter-&quot;&gt;Does the accuracy even matter?&lt;/h3&gt;
&lt;p&gt;The accuracy is way higher than the legacy approach, but so is the cost. Does that cost provide real, tangible impact and value?&lt;/p&gt;
&lt;p&gt;Determining search intent improves answer quality and protects search spend. The regex missing 53% of positives means answer-worthy questions skip search, and firing on 18 timeless questions means wasted search budget. At 1 million questions asked, if I searched half of those using Serper, that runs about $500 at the standard rate ($375 on a volume plan). Honestly, the regex can only do so much work here, and I think it has already hit its accuracy ceiling.&lt;/p&gt;
&lt;p&gt;Detecting self-awareness provides the fun part. Missing 54% of positives means more than half the people who would have found the easter eggs and poked at the containment grid got a normal roast instead, and those 53 false positives mean 7.6% of ordinary philosophy questions got a glitchy UI and a confusing experience.&lt;/p&gt;
&lt;h3 id=&quot;where-i-landed&quot;&gt;Where I landed&lt;/h3&gt;
&lt;p&gt;Both of the points above matter, but only at scale. On a slow month, the likelihood of either of these happening is quite low, and my current traffic would never surface the cost. But at my &quot;million questions asked&quot; benchmark, they can both cost money and ruin the experience.&lt;/p&gt;
&lt;p&gt;Jev was more accurate on every axis I measured, at a real (but small) and somewhat tunable cost, with no resource savings to offset it. Should a decision model provide caching, though, it would drastically change the math.&lt;/p&gt;
&lt;p&gt;Do I stick with my legacy approach, trading accuracy for lower cost? Or do I join the viral trend and inject Jev into my app? I haven't merged that PR yet as I struggle with this... decision.&lt;/p&gt;
&lt;h3 id=&quot;your-turn&quot;&gt;Your turn&lt;/h3&gt;
&lt;p&gt;Apply these principles to your own apps: run the math at scale, and evaluate the true end value, which isn't always about pure cost.&lt;/p&gt;
&lt;p&gt;If the experience ends up invisible to your users, keep the regex and in-memory vectors, and spend practically nothing. If it engages your users and encourages them to stick around, the accuracy is worth the cost.&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/31557/jev-is-not-as-cheap-as-you-think-unless-it-is</guid>
<pubDate>Sat, 17 Oct 2026 19:19:48 +0000</pubDate>
</item>
<item>
<title>How Do We Extract the “Why” from a PR into a CHANGELOG with Jev? 🤔</title>
<link>https://coderlegion.com/31084/how-do-we-extract-the-why-from-a-pr-into-a-changelog-with-jev</link>
<description>&lt;p&gt;Hoi hoi! 👋&lt;/p&gt;
&lt;p&gt;I'm @nyaomaru, a frontend engineer currently building an AI-assisted CHANGELOG generator and experimenting with Jev. 😸&lt;/p&gt;
&lt;p&gt;Recently, I have been thinking about one problem.&lt;/p&gt;
&lt;p&gt;How can we extract this&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-md&quot;&gt;## Why

The previous implementation could leave stale release data after an update.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;from a pull request and put it into a CHANGELOG?&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-md&quot;&gt;### Fixed

- Fix cache invalidation

  Why: The previous implementation could leave stale release data after an update.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Getting the &lt;strong&gt;WHAT&lt;/strong&gt; is relatively easy.&lt;br&gt;
Getting the &lt;strong&gt;WHY&lt;/strong&gt; is much harder.&lt;br&gt;
And I didn't want AI to simply invent a nice-looking reason.&lt;/p&gt;
&lt;p&gt;Let's look at how &lt;code&gt;changelog-bot&lt;/code&gt; currently approaches this! 👀&lt;/p&gt;
&lt;p&gt;{% embed &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/nyaomaru/changelog-bot&quot;&gt;https://github.com/nyaomaru/changelog-bot&lt;/a&gt; %}&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;-what-is-easy-why-is-hard-&quot;&gt;📝 WHAT Is Easy. WHY Is Hard.&lt;/h3&gt;
&lt;p&gt;Suppose a PR contains.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-md&quot;&gt;## Description

Extract shared runtime configuration into ProviderBase.

Update OpenAI, Anthropic, and Gemini adapters to use the shared implementation.

This reduces duplicated setup logic and makes adding new providers easier.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The first two sentences mainly describe &lt;strong&gt;WHAT&lt;/strong&gt; and &lt;strong&gt;HOW&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;But this one is different&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;This reduces duplicated setup logic and makes adding new providers easier.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That is much closer to &lt;strong&gt;WHY&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;We could simply give the whole PR to an LLM and ask&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;Why was this change made?
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;But then the model may summarize, paraphrase, or infer a reason that was never explicitly written.&lt;/p&gt;
&lt;p&gt;For a CHANGELOG, I wanted something stricter.&lt;/p&gt;
&lt;p&gt;Maybe WHY extraction is not a generation problem.&lt;/p&gt;
&lt;p&gt;Maybe it is a &lt;strong&gt;selection problem&lt;/strong&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;-first-find-possible-why-candidates&quot;&gt;✂️ First, Find Possible WHY Candidates&lt;/h3&gt;
&lt;p&gt;Before calling a model, &lt;code&gt;changelog-bot&lt;/code&gt; preprocesses the PR description.&lt;/p&gt;
&lt;p&gt;It looks for signals such as&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-ts&quot;&gt;const STRONG_CANONICAL_SECTION_NAMES = new Set([
  &quot;why&quot;,
  &quot;reason&quot;,
  &quot;because&quot;,
  &quot;motivation&quot;,
  &quot;context&quot;,
  &quot;background&quot;,
  &quot;problem&quot;,
  &quot;rationale&quot;,
]);

const RATIONALE_MARKER_RE =
  /\b(why|because|so that|in order to|reason|rationale|motivation|to avoid|to prevent|context|problem)\b|,\s*so\b/i;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It also removes template noise such as checkboxes, placeholders, and irrelevant fields.&lt;/p&gt;
&lt;p&gt;Then it builds small candidate snippets&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-ts&quot;&gt;const candidates = buildWhyCandidateSnippets(
  extracted.sections,
  body,
  options.maxCharsPerPr,
  !extracted.hasTargetSection,
);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;So instead of sending a large PR body, we might get&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-ts&quot;&gt;[
  &quot;Extract shared runtime configuration into ProviderBase.&quot;,
  &quot;This reduces duplicated setup logic and makes adding new providers easier.&quot;,
];
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now the problem is much smaller.&lt;/p&gt;
&lt;p&gt;Which candidate is actually the WHY?&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;-asking-jev-two-questions&quot;&gt;🧠 Asking Jev Two Questions&lt;/h3&gt;
&lt;p&gt;This is where I started experimenting with &lt;a rel=&quot;nofollow&quot; href=&quot;https://typesafe.ai/&quot;&gt;&lt;code&gt;Jev&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I don't ask &lt;code&gt;Jev&lt;/code&gt; to write a WHY sentence.&lt;/p&gt;
&lt;p&gt;Instead, &lt;strong&gt;each candidate is evaluated with two questions&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;First&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-ts&quot;&gt;question: &quot;Does the target candidate explicitly state why this changelog change was made?&quot;;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Basically&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Is this actually a reason?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;But that alone is not enough.&lt;/p&gt;
&lt;p&gt;Imagine&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;We changed the cache invalidation logic.

The README was updated because the previous explanation was confusing.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The second sentence definitely contains a reason.&lt;/p&gt;
&lt;p&gt;But it explains the README change, not the cache invalidation change.&lt;/p&gt;
&lt;p&gt;So we also ask&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-ts&quot;&gt;question: &quot;Does the target candidate state a reason that applies to the identified changelog change?&quot;;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now each candidate has two signals&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-ts&quot;&gt;{
  probability: explicitWhyProbability,
  relevanceProbability: changeRelevanceProbability,
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;So the real question becomes&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;Is this a reason?

AND

Is it the reason for this change?
&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h3 id=&quot;-selecting-the-candidate&quot;&gt;🎯 Selecting the Candidate&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;changelog-bot&lt;/code&gt; compares the candidate probabilities&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-ts&quot;&gt;const bestCandidate = candidateProbabilities.reduce((best, candidate) =&amp;gt;
  combinedWhyCandidateProbability(candidate) &amp;gt;
  combinedWhyCandidateProbability(best)
    ? candidate
    : best,
);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then both minimum thresholds must pass&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-ts&quot;&gt;const accepted =
  selectedCandidate !== undefined &amp;amp;&amp;amp;
  bestCandidate.probability &amp;gt;= JEV_MIN_EXPLICIT_WHY_PROBABILITY &amp;amp;&amp;amp;
  bestCandidate.relevanceProbability &amp;gt;= JEV_MIN_CHANGE_RELEVANCE_PROBABILITY;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If the candidate does not pass&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-ts&quot;&gt;if (!accepted) continue;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;No WHY is added.&lt;/p&gt;
&lt;p&gt;And I think that is important.&lt;/p&gt;
&lt;p&gt;Sometimes the correct answer is&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;There is no reliable WHY in this PR.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That is better than inventing one.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;-keep-the-original-pr-text&quot;&gt;🔒 Keep the Original PR Text&lt;/h3&gt;
&lt;p&gt;This is probably my favourite part.&lt;/p&gt;
&lt;p&gt;When a candidate is accepted&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-ts&quot;&gt;items.push({
  prNumber: item.prNumber,
  why: selectedCandidate,
  confidence: mappedConfidence,
});
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Notice&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-ts&quot;&gt;why: selectedCandidate;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The final WHY is the original PR text.&lt;/p&gt;
&lt;p&gt;Not newly generated prose.&lt;/p&gt;
&lt;p&gt;So the pipeline becomes&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;PR description
      ↓
candidate extraction
      ↓
Jev evaluates candidates
      ↓
select candidate
      ↓
original source text
      ↓
CHANGELOG
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;Jev&lt;/code&gt; decides.&lt;/p&gt;
&lt;p&gt;The PR author still provides the sentence. 😸&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;-where-does-why-fit-in-the-v1-pipeline-&quot;&gt;🧱 Where Does WHY Fit in the v1 Pipeline?&lt;/h3&gt;
&lt;p&gt;While working on WHY extraction, I have also been redesigning the &lt;code&gt;changelog-bot&lt;/code&gt; pipeline for v1.&lt;/p&gt;
&lt;p&gt;The main idea is &lt;strong&gt;deterministic-first&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;A complete CHANGELOG should exist even when AI is disabled or fails.&lt;/p&gt;
&lt;p&gt;So AI should enrich the result, not own the result.&lt;/p&gt;
&lt;p&gt;The target v1 pipeline looks roughly like this&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;source changes
      ↓
ReleaseChange[]
      ↓
deterministic classification
      ↓
complete ReleaseDraft
      ↓
optional editorial enrichment
      +
optional WHY enrichment
      ↓
ReleaseResult
      ↓
deterministic renderer
      ↓
CHANGELOG
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;WHY extraction is therefore an independent optional enrichment stage.&lt;/p&gt;
&lt;p&gt;Conceptually&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;ReleaseDraft / ReleaseChange[]
      ↓
find eligible WHY targets
      ↓
collect PR rationale candidates
      ↓
LLM or Jev
      ↓
trust / confidence validation
      ↓
attach structured WHY notes
      ↓
ReleaseResult
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;One important change here is that the WHY engine does &lt;strong&gt;not&lt;/strong&gt; need to control the final Markdown.&lt;/p&gt;
&lt;p&gt;Today, some of the pipeline still works by finding targets from generated Markdown and inserting WHY text afterward.&lt;/p&gt;
&lt;p&gt;For v1, I want to remove that boundary.&lt;/p&gt;
&lt;p&gt;Instead&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-ts&quot;&gt;{
  prNumber,
  why: selectedCandidate,
  confidence,
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;becomes structured release data first.&lt;/p&gt;
&lt;p&gt;Then one deterministic renderer decides how it appears&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-md&quot;&gt;- Fix cache invalidation
  - Why: The previous implementation could leave stale release data after an update.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;So the responsibility becomes clearer&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;WHY engine
→ find the evidence

Renderer
→ format the evidence
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This is also part of a larger rule I am using for the v1 migration&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Deterministic code owns the CHANGELOG structure. AI only enriches it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Phases 1–4 of this migration are already implemented, and the structured rendering and enrichment boundary is part of the next phase.&lt;/p&gt;
&lt;p&gt;You can see the full v1 design here 👇&lt;/p&gt;
&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/nyaomaru/changelog-bot/blob/main/v1-design.md&quot;&gt;https://github.com/nyaomaru/changelog-bot/blob/main/v1-design.md&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;-but-what-threshold-should-we-use-&quot;&gt;🧪 But What Threshold Should We Use?&lt;/h3&gt;
&lt;p&gt;Of course, once we have probabilities, another question appears.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;0.50?
0.60?
0.80?
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I didn't want to pick one only because it felt reasonable.&lt;/p&gt;
&lt;p&gt;So I created an evaluation harness with an initial 14-case corpus.&lt;/p&gt;
&lt;p&gt;For example&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-ts&quot;&gt;{
  candidates: [
    &quot;Separate changelog execution into input-resolution and output-finalization phases.&quot;,
    &quot;This simplifies the main orchestration flow and runs independent GitHub lookups concurrently.&quot;,
  ],
  expectedSelectedCandidateIndex: 1,
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We also need negative examples&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-ts&quot;&gt;{
  candidates: [
    &quot;Extract shared provider runtime configuration into ProviderBase.&quot;,
    &quot;Refactor OpenAI, Anthropic, and Gemini adapters to inherit it.&quot;,
  ],
  expectedSelectedCandidateIndex: null,
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;There is plenty of implementation information.&lt;/p&gt;
&lt;p&gt;But no strong explicit WHY.&lt;/p&gt;
&lt;p&gt;So &lt;code&gt;null&lt;/code&gt; is the correct result.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;-then-john-joined-the-project&quot;&gt;🤝 Then John Joined the Project&lt;/h3&gt;
&lt;p&gt;While I was working on this experiment, @johnnylemonny joined the project as a contributor. 🎉&lt;/p&gt;
&lt;p&gt;{% embed &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/johnnylemonny&quot;&gt;https://github.com/johnnylemonny&lt;/a&gt; %}&lt;/p&gt;
&lt;p&gt;John proposed expanding the small benchmark into roughly 50 cases covering&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;Explicit Rationale
Implementation-Only
Template &amp;amp; Noise
Multilingual PRs
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I liked the idea, but I wanted one rule to stay clear&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Ground truth should be independent of the current Jev threshold.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;So the benchmark first defines whether a candidate is actually valid.&lt;/p&gt;
&lt;p&gt;Then we evaluate different thresholds afterward.&lt;/p&gt;
&lt;p&gt;John implemented the expanded corpus in PR &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/nyaomaru/changelog-bot/pull/212&quot;&gt;#212&lt;/a&gt;. 🙌&lt;/p&gt;
&lt;p&gt;The benchmark grew from 14 cases to 50, including tricky negative cases.&lt;/p&gt;
&lt;p&gt;He also added finer threshold sweeps&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-ts&quot;&gt;[0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9];
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now we can compare precision, recall, and F1 instead of saying&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;0.8 feels safe! 👍&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Let's measure it instead. 😸&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;-the-current-pipeline&quot;&gt;🧩 The Current Pipeline&lt;/h3&gt;
&lt;p&gt;Today, WHY extraction roughly looks like this&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;Pull Request
     ↓
Normalize PR body
     ↓
Extract WHY candidates
     ↓
Remove noise
     ↓
Local trust check
     ↓
Jev:
  explicit rationale?
  relevant to this change?
     ↓
Apply threshold
     ↓
Candidate or none
     ↓
Original PR text
     ↓
CHANGELOG
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;There are quite a few steps for one small &lt;code&gt;Why:&lt;/code&gt; line. 😂&lt;/p&gt;
&lt;p&gt;But that is what made this problem interesting.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;-what-i-learned&quot;&gt;🎯 What I Learned&lt;/h3&gt;
&lt;p&gt;When I started this feature, I thought the main question was&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;How can AI write a good reason?
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now I think the more interesting question is&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;How can we find evidence that the reason already exists?
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;So my current approach is simple&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;Use deterministic code to find evidence.

Use Jev to evaluate the evidence.

Keep the original evidence as the output.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And thanks to John's contributions, we now have a much better way to test whether that approach actually works.&lt;/p&gt;
&lt;p&gt;Open source is fun when someone looks at your experiment and says:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;What if we test this properly?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;and then builds it with you. 🙌&lt;/p&gt;
&lt;p&gt;&lt;code&gt;changelog-bot&lt;/code&gt; is still evolving, and Jev support is still experimental.&lt;/p&gt;
&lt;p&gt;I'm curious to see where this approach goes next!&lt;/p&gt;
&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/nyaomaru/changelog-bot&quot;&gt;https://github.com/nyaomaru/changelog-bot&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Thanks for reading!&lt;/p&gt;
&lt;p&gt;See you in the next article! 👋😸&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/31084/how-do-we-extract-the-why-from-a-pr-into-a-changelog-with-jev</guid>
<pubDate>Wed, 14 Oct 2026 14:52:47 +0000</pubDate>
</item>
<item>
<title>Crossmint's Agent Commerce Toolkit is live</title>
<link>https://coderlegion.com/30871/crossmints-agent-commerce-toolkit-is-live</link>
<description>&lt;p&gt;Crossmint's Agent Commerce Toolkit is live — one integration lets an AI agent pay with any card at any online store.&lt;br&gt;
What it does well: card entry goes straight to a PCI-compliant vault; eligible cards get scoped Visa Intelligent Commerce / Mastercard Agent Pay credentials (spend limits, expiry); and each checkout path is chosen by availability, reliability and cost — embedded checkout, Universal Commerce Protocol, or browser automation.&lt;br&gt;
What it does not do: score whether the purchase itself should fire. A spend limit is a ceiling, not a judgment.&lt;br&gt;
We tested the gap live on October 12, 2026 against a public decision gate: a $240 unverified-merchant buy scored 0.4121 (escalate/block+log) and a scoped, user-approved $42 reorder scored 0.4654 (also escalate) — a blunt gate blocks both, which is why the decider has to be calibrated, not just present.&lt;br&gt;
Full analysis: &lt;a rel=&quot;nofollow&quot; href=&quot;https://scriptmasterlabs.com/crossmint-agent-commerce-toolkit&quot;&gt;https://scriptmasterlabs.com/crossmint-agent-commerce-toolkit&lt;/a&gt;&lt;br&gt;
Decision Capsule + 5 specialized Jev jurors + non-overridable constitution. Jev chooses. Code decides. Built for agents that manage real capital.&lt;/p&gt;
&lt;h2 id=&quot;quant-algorithmictrading-marketstructure-agenticai-aifinance-fintech-institutionaltrading-riskmanagement-mcp-x402-agenteconomy-decisionlayer-usdc&quot;&gt;Quant #AlgorithmicTrading #MarketStructure #AgenticAI #AIFinance #FinTech #InstitutionalTrading #RiskManagement #MCP #x402 #AgentEconomy #DecisionLayer $USDC&lt;/h2&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/30871/crossmints-agent-commerce-toolkit-is-live</guid>
<pubDate>Tue, 13 Oct 2026 01:42:57 +0000</pubDate>
</item>
<item>
<title>How I stopped misclassifying jobs with Jev!</title>
<link>https://coderlegion.com/29027/how-i-stopped-misclassifying-jobs-with-jev</link>
<description>&lt;p&gt;&lt;em&gt;Why Java is not JavaScript, remote is not hybrid, and how one fan out call fixed our filters&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&quot;regex-was-miscategorizing-my-job-board-i-added-a-judgment-layer-with-jev-&quot;&gt;Regex Was Miscategorizing My Job Board. I Added a Judgment Layer With JEV.&lt;/h3&gt;
&lt;p&gt;We run &lt;a rel=&quot;nofollow&quot; href=&quot;remotefrontendjobs.com]&quot;&gt;remotefrontendjobs.com&lt;/a&gt;, &lt;a rel=&quot;nofollow&quot; href=&quot;remotebackendjobs.com&quot;&gt;remotebackendjobs.com&lt;/a&gt;, and &lt;a rel=&quot;nofollow&quot; href=&quot;remotejavajobs.com&quot;&gt;remotejavajobs.com&lt;/a&gt;. Thousands of remote jobs from 20 plus sources. This is how TypeSafe AI System One Models and the Jev model fixed our AI job classification.&lt;/p&gt;
&lt;p&gt;Let me give you three real fails from last month.&lt;/p&gt;
&lt;p&gt;A security role tagged as AI jobs. A Unity client role tagged as backend jobs. A JavaScript role tagged as Java jobs.&lt;br&gt;
All three came from our old keyword rules, and all three were live on the site until someone emailed me to complain.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://dev-to-uploads.s3.us-east-2.amazonaws.com/uploads/articles/zjw2upc8a9wmrwfiblpy.png&quot; alt=&quot;Image description&quot;&gt;&lt;/p&gt;
&lt;p&gt;Keywords are fast and cheap. They have no idea what a job actually means. An LLM alternative built for structured decisions does.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What is Jev? A 60 second primer&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Jev is the first public System One Model from TypeSafe AI, a San Francisco AI lab that came out of stealth on September 15, 2026 with 40M in seed funding.&lt;/p&gt;
&lt;p&gt;Founders are Diogo Almeida (ex OpenAI engineer who co wrote core ChatGPT training techniques), plus Erik Gafni and Sasha Sheng. The official announcement is here: &lt;a rel=&quot;nofollow&quot; href=&quot;https://typesafe.ai/blog/introducing-system-one-models-and-jev&quot;&gt;Introducing System One Models and Jev&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The name System One comes from Daniel Kahneman Thinking, Fast and Slow. Fast System 1 intuition vs slow System 2 reasoning. Jev is named after economist William Stanley Jevons.&lt;/p&gt;
&lt;p&gt;Unlike a large language model that chats and generates text, Jev is built for AI decision making inside software. You send a state plus typed questions. You get back typed, calibrated decisions in JSON that code can use directly. No chat, no hallucination in the classic sense, no long winded chain of thought.&lt;/p&gt;
&lt;p&gt;TypeSafe claims Jev is up to 193x faster and 444x cheaper than frontier LLMs on System One shaped tasks, with 70 to 500 ms end to end latency. Pricing on the direct TypeSafe API is 0.042 dollars per 1M input tokens, output tokens free. Current version in our logs is &lt;code&gt;jev-1.13.0&lt;/code&gt; with alias &lt;code&gt;jev-latest&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Three primitives, and we use all three for job board AI classification:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Noul: yes or no probability. Returns a noul float from 0 to 1. Ideal for binary checks like is_frontend, is_backend, is_java, is_ai, plus benefits and region gates.&lt;/li&gt;
&lt;li&gt;Choice: pick one option from up to 255 options. Returns choice plus full probabilities plus confidence. We use it for seniority classification and work model detection: fully_remote vs hybrid vs onsite.&lt;/li&gt;
&lt;li&gt;Score: rate on an ordered scale of 2 to 10 levels. Returns score plus legend plus probabilities plus confidence. Useful for severity, urgency, or ranking style judgments.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Questions run in parallel and in isolation against the same state. Adding questions barely changes response time. That parallel sampler plus the training method TypeSafe calls Reinforcement Learning for Calibrated Decisions (RLCD) is why confidence is actually usable for branching in code.&lt;/p&gt;
&lt;p&gt;You can call Jev three ways: direct via &lt;code&gt;POST https://api.typesafe.ai/v1/systemone&lt;/code&gt; with the TypeSafe SDK, via Cloudflare Workers AI as typesafe/jev with env.AI.run, or via Vercel AI Gateway as typesafe-ai/jev. We run it via Cloudflare Workers AI, which keeps the call inside Cloudflare network and fits our Cloudflare hosted Next.js stack.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://dev-to-uploads.s3.us-east-2.amazonaws.com/uploads/articles/6p2ly9ja9nhxz5t0y00f.png&quot; alt=&quot;Image description&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;the-problem-in-one-picture-keyword-job-classification-fails&quot;&gt;The problem in one picture: keyword job classification fails&lt;/h3&gt;
&lt;p&gt;Before, ingest looked like this:&lt;/p&gt;
&lt;p&gt;Feed, keywords, save to database, show on site&lt;/p&gt;
&lt;p&gt;If the title had java in it, it went to the Java jobs board. Even if it was JavaScript. If the description mentioned AI once, like Copilot is a plus, it went to AI jobs. Even if it was a normal support role.&lt;br&gt;
Benefits extraction was worse. Real perks like 22 days PTO or 401k with 4 percent match often sit at the very bottom of the post, past 6000 characters, in a What We Offer block. Regex never saw it.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://dev-to-uploads.s3.us-east-2.amazonaws.com/uploads/articles/h0emvjjs82l3z7mg5vw2.png&quot; alt=&quot;Image description&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;how-we-wired-the-jev-model-into-ingest&quot;&gt;How we wired the Jev model into ingest&lt;/h3&gt;
&lt;p&gt;One fan out call per posting carries every question. Sites, seniority, regions, work model, benefits. Salaries stay on regex by design. Money needs exact extraction, not judgment.&lt;/p&gt;
&lt;p&gt;State we send: truncated title plus company plus location plus full description plus an isolated benefits section. Questions we send: 4 site Nouls, 1 seniority Choice, 8 region Nouls, 1 work model Choice, 13 benefits Nouls. All built in one file so prompts are easy to review.&lt;br&gt;
Response we get: jev-1.13.0 answers with noul, choice, probabilities, confidence, plus usage with input and output tokens. Every method returns null when Jev is unconfigured or errors, so callers fall back to keywords. Jev never breaks ingest.&lt;br&gt;
The trick: shadow mode first, enforce mode later&lt;br&gt;
I did not want AI job classification to break the site. So we shipped in two modes.&lt;/p&gt;
&lt;p&gt;Step 1: Shadow mode, the default. JEV runs on a small sample per feed, usually 25 posts. It writes its raw answers to an audit field on the job, and writes a log row with what it decided vs what keywords decided. It changes nothing on the site. We just watch and compare.&lt;br&gt;
Step 2: Enforce mode, only when confident. When we turn it on, confident structured decisions can update the row. Below the bar, keywords win and we only log the disagreement.&lt;/p&gt;
&lt;p&gt;Each field has its own calibrated confidence bar, tuned on real labeled data:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sites: low bar. The judge runs underconfident here.&lt;/li&gt;
&lt;li&gt;Regions: medium bar. Stricter than keywords.&lt;/li&gt;
&lt;li&gt;Work model: fill empty values easily, overwrite existing values only when very sure. A borderline call once flipped a correct hybrid to onsite, so overwrites need a higher bar.&lt;/li&gt;
&lt;li&gt;Seniority: only fills when keywords found nothing. Title plus years of experience still beats title alone.&lt;/li&gt;
&lt;li&gt;Benefits: prune only when sure.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Fail safe rules we kept for this LLM alternative:&lt;/p&gt;
&lt;p&gt;No token, no call, keywords keep working.&lt;br&gt;
Timeout after 8 seconds, one retry for transient errors, then skip.&lt;br&gt;
Only runs on posts that already passed dedupe, so we never pay for duplicates.&lt;br&gt;
Concurrency capped at 5, so mail and ingest never stall.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://dev-to-uploads.s3.us-east-2.amazonaws.com/uploads/articles/1b00q6glxvbwoukdi4ds.png&quot; alt=&quot;Image description&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;two-small-details-that-fixed-big-ai-classification-errors&quot;&gt;Two small details that fixed big AI classification errors&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Read the full post for benefits, not the snippet. Snippets are often 500 characters of company boilerplate with zero signal. The perks live at the bottom. We now pass the full text, isolate the benefits section, and let only the benefits Noul questions read that section. Everything else reads the full description.&lt;br&gt;
Result: we stopped voting confident No on real perks like wellness stipend, RRSP match, and vacation just because we truncated too early.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Location counts as much as prose for geo classification. Remote US in the location field is stronger than three paragraphs of generic text. Same for Poland or Remote US. Our region Nouls now weigh location heavily. A bare Remote with no place named means worldwide, not Europe.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;https://dev-to-uploads.s3.us-east-2.amazonaws.com/uploads/articles/udpmpf2gr92vlrrcgo41.png&quot; alt=&quot;Image description&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;what-changed-for-remote-job-seekers&quot;&gt;What changed for remote job seekers&lt;/h3&gt;
&lt;p&gt;This is why you should care if you just want a remote job.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Frontend jobs, Backend jobs, Java jobs, and AI jobs boards are cleaner. Fewer cross posts.&lt;/li&gt;
&lt;li&gt;Remote region filters actually mean something. Europe remote jobs means Europe, not worldwide with the word Europe somewhere in the footer.&lt;/li&gt;
&lt;li&gt;Remote work model is clearer. Fully remote vs hybrid vs onsite, based on both location and description.&lt;/li&gt;
&lt;li&gt;Remote benefits badges show up more often, and with fewer false positives. No more stock options tag for a diversity statement that contains the word equity.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Try it: open any board, filter for salary plus region plus seniority, save that filter, and subscribe. You will feel the difference in the Tue and Sun digest.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://dev-to-uploads.s3.us-east-2.amazonaws.com/uploads/articles/oxji1rxppeur9oe0e6f0.png&quot; alt=&quot;Image description&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;what-changed-for-us-as-builders-of-an-ai-job-board&quot;&gt;What changed for us as builders of an AI job board&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Every classified posting keeps its raw Jev answers as JSON in the database, with model name jev-1.13.0 and timestamp. We can re derive bars later without re paying for calls.&lt;/li&gt;
&lt;li&gt;Every call writes a queryable log row: board, title, latency in ms, input tokens, output tokens, what was applied vs only logged, errors. No more CSV dumps.&lt;/li&gt;
&lt;li&gt;Ingest logs now show both sides: keywords said X, Jev structured decision said Y. That made tuning the bars a 30 minute job instead of a debate.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;how-we-keep-ai-classification-honest-audit-jev&quot;&gt;How we keep AI classification honest: /audit-jev&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://dev-to-uploads.s3.us-east-2.amazonaws.com/uploads/articles/ydfpk28ltf7jyqcqcjau.png&quot; alt=&quot;Image description&quot;&gt;&lt;/p&gt;
&lt;p&gt;Getting Jev live was the easy part. Trusting it every day is the real work.&lt;/p&gt;
&lt;p&gt;We built a repeatable command called /audit-jev. Usage is simple: /audit-jev 100 audits the last 100 ingest classifications. It runs read only on prod, then forces fixes plus tests plus a changelog entry.&lt;/p&gt;
&lt;p&gt;Here is what it does:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Pull the last N ingest rows. It queries the JevLog table for scope ingest, ordered by newest first. For each row it looks at raw Noul plus Choice answers with confidences, plus what keywords said at the time, plus which fields enforce actually overwrote.&lt;/li&gt;
&lt;li&gt;Replay against the real Job rows. For suspicious rows it fetches the posting in chunks, because benefits tails sit past 5500 characters. Then it checks per area: benefits prunes, site writes, work model overwrites, region fills, seniority fills.&lt;/li&gt;
&lt;li&gt;Fix root causes, not symptoms. We prefer tightening keywords over lowering Jev confidence bars. Every fix gets regression tests, then a full test run plus typecheck.&lt;/li&gt;
&lt;li&gt;Append a changelog entry, every time. Even when nothing was wrong. Each entry lists scope, issues with real examples, fixes with file paths, tests, and a watchlist. Past entries are never rewritten, and a new fix is never allowed to silently remove an old fix.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This audit loop already paid off for our System One Model rollout:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Entry 1 found truncation blindness where What We Offer tails were invisible, plus pay equity text tagged as stock equity, plus hybrid text leaking into flexibility, plus a marginal work model overwrite flipping hybrid to onsite.&lt;/li&gt;
&lt;li&gt;Entry 2 verified those fixes still hold on a fresh mix of 100 rows, then found new substring bugs like intuition matching tuition inside a URL, plus engineering async matching flexibility, plus Portuguese titles like Senior and Pleno missed by keywords.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Some excerpt of our audit-jev changelog&lt;/p&gt;
&lt;blockquote&gt;&lt;h3 id=&quot;changelog&quot;&gt;CHANGELOG&lt;/h3&gt;
&lt;h3 id=&quot;entry-1-2026-09-21-last-100-ingest-rows&quot;&gt;Entry 1–2026–09–21, last 100 ingest rows&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Scope: 100 rows, breezy-only boards (ontrac 18, ismira 13, social-discovery 11, kimmel 11, zendar 7, …). Wrote counters (inflated by no-op re-writes, see fix 6): seniority 84, workModel 67, sites 39, benefits:prune 35, geoRegions 20, sites:prune 1.&lt;/li&gt;
&lt;li&gt;Issues found:&lt;ol&gt;
&lt;li&gt;Truncation blindness: &lt;code&gt;enrichWithJev&lt;/code&gt; sliced content to 6000 chars, &lt;code&gt;classifyPosting&lt;/code&gt; isolated benefits from the slice - &quot;What We Offer&quot; tails at ~5500–8800 chars invisible to JEV → confident-False prunes of true perks (Egym Wellpass/Wellness Pass, Group RRSP match, 401(K) match, &quot;4 weeks of vacation&quot;, &quot;Flexible time off&quot;, medical/dental/vision). Same sentence opposite verdicts across jobs.&lt;/li&gt;
&lt;li&gt;Equity pay-equity FP: &quot;…depending on experience and equity&quot; tagged equity comp (zendar salary line).&lt;/li&gt;
&lt;li&gt;Flexibility workModel leak: &lt;code&gt;hybrid (work|model)&lt;/code&gt; + &lt;code&gt;work from anywhere&lt;/code&gt; emitted flexibility for hybrid-3-days and LATAM-remote rows JEV rejects.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;If you take one idea from this JEV post, take this one. Do not ship AI classification without a one command audit that anyone can rerun.&lt;/p&gt;
&lt;h3 id=&quot;if-you-want-to-copy-this-typesafe-jev-pattern&quot;&gt;If you want to copy this TypeSafe Jev pattern&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Keep keywords as fallback. Never let a System One Model break ingest.&lt;/li&gt;
&lt;li&gt;Start in shadow mode. For the first few weeks I let it watch and take notes without touching anything on the site.&lt;/li&gt;
&lt;li&gt;Use per field confidence bars, not one global bar. Sites and benefits behave very differently.&lt;/li&gt;
&lt;li&gt;Isolate the section that matters. For us that was benefits at the bottom.&lt;/li&gt;
&lt;li&gt;Audit every decision with one command like /audit-jev. You will thank yourself when you retune Noul and Choice thresholds.&lt;/li&gt;
&lt;li&gt;Cap concurrency and timeouts. Even a 70 ms model should never stall your pipeline.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Full stack here: NestJS job aggregator, Prisma plus MySQL, Next.js on Cloudflare, Jev model via Cloudflare Workers AI typesafe/jev with gateway support.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Want Part 3? I can go deep on remote benefits extraction, or on instant company alerts plus Seeker Pro. Tell me in the comments which one you want next.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;By Angel, builder of remotefrontendjobs.com, remotebackendjobs.com, and remotejavajobs.com.&lt;br&gt;
&lt;em&gt;Topics covered: Jev, TypeSafe AI, System One Models, System One Model, Jev model, jev-1.13.0, jev-latest, Noul, Choice, Score, calibrated decisions, structured decisions, LLM alternative, Cloudflare Workers AI, Vercel AI Gateway, AI job classification, AI job board, remote jobs, remote frontend jobs, remote backend jobs, remote Java jobs, benefits extraction, work model detection, seniority classification.&lt;/em&gt;&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/29027/how-i-stopped-misclassifying-jobs-with-jev</guid>
<pubDate>Tue, 29 Sep 2026 10:52:57 +0000</pubDate>
</item>
<item>
<title>So, when NOT to use Jev?</title>
<link>https://coderlegion.com/28260/so-when-not-to-use-jev</link>
<description>&lt;p&gt;Unless you have been off LinkedIn or social media, you must be knowing Jev is a system one AI model that helps in decision making. &lt;/p&gt;
&lt;p&gt;You also be knowing that you dont have to replace LLMs but use Jev to offload LLM’s decision making capabilities to it.&lt;/p&gt;
&lt;p&gt;However, there are still scenarios where Jev can’t/ shouldn’t be used&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Not for complex reasoning&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;You still need LLMs for that&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Jev’s accuracy is still not independently established&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Remember its still an AI model. So if its assigning 90% score, how do you know that’s correct. Calibration ≠ correctness, right?&lt;/p&gt;
&lt;p&gt;TypeSafe is itself recommending validating Jev against your own labelled data and calibrating thresholds for your use case. &lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Everything is closed source&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;So, all those privacy/ data confidentiality concerns still apply&lt;/p&gt;
&lt;p&gt;Definitely, Jev is technically interesting, but just wait for sometime to get it validated before you make changes to your architecture.&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/28260/so-when-not-to-use-jev</guid>
<pubDate>Wed, 23 Sep 2026 05:22:34 +0000</pubDate>
</item>
<item>
<title>THIS AI MODEL DOESN'T WANT TO TALK TO YOU</title>
<link>https://coderlegion.com/28169/this-ai-model-doesnt-want-to-talk-to-you</link>
<description>&lt;h3 id=&quot;it-wants-to-make-the-decision-return-a-probability-and-get-out-of-the-way-&quot;&gt;It wants to make the decision, return a probability, and get out of the way.&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;TypeSafe's new Jev is one of those launches that looks almost too weird to matter — until you realise it is aimed at the exact place where today's AI agents keep tripping over themselves.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;By Mahan Tavakoli (MahanKenway)&lt;/strong&gt;&lt;br&gt;
Tehran, Iran&lt;br&gt;
GitHub: github.com/MahanKenway&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;There is something almost offensive about Jev.&lt;/p&gt;
&lt;p&gt;Not becuse it is bad.&lt;/p&gt;
&lt;p&gt;Because it refuses to do the thing we've spent the last few years convincing computers to do.&lt;/p&gt;
&lt;p&gt;It doesn't want to write you a paragraph.&lt;/p&gt;
&lt;p&gt;It doesn't want to impress you.&lt;/p&gt;
&lt;p&gt;It doesn't want to explain itself with 900 tokens of polished prose.&lt;/p&gt;
&lt;p&gt;It doesn't even try to become the next chatbot.&lt;/p&gt;
&lt;p&gt;TypeSafe AI launched Jev on September 15, 2026, as its first &quot;System One Model&quot;, a model class the company describes as being built for fast, structured decisions that software can use directly. Instead of returning generated text, Jev takes a state plus typed questions and returns constrained decisions with probabilities. TypeSafe says the model is designed around a new architecture, a parallel sampler, and a training approach called Reinforcement Learning for Calibrated Decisions, or RLCD. [1]&lt;/p&gt;
&lt;p&gt;That sounds like a niche classifier.&lt;/p&gt;
&lt;p&gt;I don't think it is.&lt;/p&gt;
&lt;p&gt;At least, I don't think the interesting part is the classifier.&lt;/p&gt;
&lt;p&gt;The interesting part is the interface.&lt;/p&gt;
&lt;p&gt;Because somewhere along the way, the AI industry made a very specific assumption:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;If intelligence is useful, software should probably receive it as text.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Jev is quietly asking:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;What if that assumption is backwards?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;And that question gets weird very quickly.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;the-ai-industry-built-a-very-expensive-chat-pipeline&quot;&gt;THE AI INDUSTRY BUILT A VERY EXPENSIVE CHAT PIPELINE&lt;/h2&gt;
&lt;p&gt;Look at the way a modern AI agent usually works.&lt;/p&gt;
&lt;p&gt;It needs to do something.&lt;/p&gt;
&lt;p&gt;So we give an LLM context.&lt;/p&gt;
&lt;p&gt;The LLM reads it.&lt;/p&gt;
&lt;p&gt;The LLM reasons.&lt;/p&gt;
&lt;p&gt;The LLM emits text.&lt;/p&gt;
&lt;p&gt;The application parses the text.&lt;/p&gt;
&lt;p&gt;The application validates the structure.&lt;/p&gt;
&lt;p&gt;The application decides what the text means.&lt;/p&gt;
&lt;p&gt;Then another tool runs.&lt;/p&gt;
&lt;p&gt;Then the result comes back.&lt;/p&gt;
&lt;p&gt;Then the model gets called again.&lt;/p&gt;
&lt;p&gt;Then it writes another answer.&lt;/p&gt;
&lt;p&gt;Then the program parses that answer.&lt;/p&gt;
&lt;p&gt;Then we loop.&lt;/p&gt;
&lt;p&gt;It is almost comical when you draw it:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;STATE
  |
  v
LLM
  |
  v
TEXT
  |
  v
PARSER
  |
  v
VALIDATOR
  |
  v
CODE
  |
  v
TOOL
  |
  v
NEW STATE
  |
  +--------------------+
                       |
                       v
                      LLM
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We've got frontier intelligence sitting inside a machine that keeps asking it to write little essays so the rest of the software can figure out what it meant.&lt;/p&gt;
&lt;p&gt;That is not a criticism of language models.&lt;/p&gt;
&lt;p&gt;It is an interface criticism.&lt;/p&gt;
&lt;p&gt;Language is incredibly flexible.&lt;/p&gt;
&lt;p&gt;That is why humans love it.&lt;/p&gt;
&lt;p&gt;Software usually does not.&lt;/p&gt;
&lt;p&gt;A program often wants something much less romantic:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;true
false
billing
technical
retry
stop
0.82
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A language model might return:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&quot;Based on the available evidence, the request appears to be primarily related to a billing issue, although there is some ambiguity around the authentication component...&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Beautiful.&lt;/p&gt;
&lt;p&gt;Now your program gets to parse that sentence.&lt;/p&gt;
&lt;p&gt;Jev's basic proposition is brutally diffrent:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;state in
   ↓
typed decision out
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;No paragraph required.&lt;/p&gt;
&lt;p&gt;And suddenly the &quot;AI model&quot; starts looking less like a chatbot and more like a new primitive in a programming language.&lt;/p&gt;
&lt;p&gt;That is the part I can't stop thinking about.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;so-what-exactly-is-jev-&quot;&gt;SO WHAT EXACTLY IS JEV?&lt;/h2&gt;
&lt;p&gt;Let's make it painfully concrete.&lt;/p&gt;
&lt;p&gt;Suppose a support ticket arrives:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;&quot;I have been trying to connect my Stripe account
for three days and I'm losing sales. Please help ASAP.&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A normal LLM can answer it, explain it, summarise it, route it, and probably write a very sincere paragraph about it.&lt;/p&gt;
&lt;p&gt;But your backend may only need three facts:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;department = technical
urgent = true
refund_requested = false
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Jev lets the developer define questions around a shared state.&lt;/p&gt;
&lt;p&gt;TypeSafe currently exposes three main question shapes:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Choice&lt;/strong&gt; asks which option should be selected.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Score&lt;/strong&gt; evaluates where something belongs on an ordered rubric.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Noul&lt;/strong&gt; asks whether a proposition is true, returning a probability between zero and one.&lt;/p&gt;
&lt;p&gt;The answers are typed rather than free-form text. Choice and Score also expose probability distributions and confidence information, while the Boolean/Noul-style result gives the probability for the proposition. [1][2]&lt;/p&gt;
&lt;p&gt;So instead of:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;&quot;the customer is probably very frustrated
and this should be routed to technical support&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;your application can receive something structurally closer to:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &quot;department&quot;: {
    &quot;choice&quot;: &quot;technical&quot;,
    &quot;probabilities&quot;: {
      &quot;technical&quot;: 0.82,
      &quot;billing&quot;: 0.11,
      &quot;sales&quot;: 0.07
    }
  },
  &quot;urgent&quot;: {
    &quot;noul&quot;: 0.91
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The exact response shape depends on the API and question type, but the design idea is the same.&lt;/p&gt;
&lt;p&gt;The model gives your code a decision.&lt;/p&gt;
&lt;p&gt;Not a speech.&lt;/p&gt;
&lt;p&gt;That distinction sounds tiny.&lt;/p&gt;
&lt;p&gt;It isn't.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;-decisions-not-strings-&quot;&gt;&quot;DECISIONS, NOT STRINGS&quot;&lt;/h2&gt;
&lt;p&gt;TypeSafe's own framing is unusually aggressive:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&quot;Think of Jev as a frontier-intelligence function call.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The company argues that ordinary LLMs are optimised around strings, while software needs structured values. In their model comparison, Jev is explicitly designed to return type-safe structured outputs whose possible values are declared in advance. [1]&lt;/p&gt;
&lt;p&gt;This is easy to dismiss as branding.&lt;/p&gt;
&lt;p&gt;Maybe it is branding.&lt;/p&gt;
&lt;p&gt;But good product categories often start with branding before the market decides whether they are real.&lt;/p&gt;
&lt;p&gt;&quot;Serverless&quot; sounded weird.&lt;/p&gt;
&lt;p&gt;&quot;Edge computing&quot; sounded like a powerpoint phrase.&lt;/p&gt;
&lt;p&gt;&quot;Vector database&quot; sounded like a niche data structure.&lt;/p&gt;
&lt;p&gt;Now people build entire companies around those ideas.&lt;/p&gt;
&lt;p&gt;System One Models may or may not become a meaningful category.&lt;/p&gt;
&lt;p&gt;We are far too early to know.&lt;/p&gt;
&lt;p&gt;But Jev is pointing at a real engineering tension:&lt;/p&gt;
&lt;h4 id=&quot;llms-are-incredible-at-generating-language-&quot;&gt;LLMs are incredible at generating language.&lt;/h4&gt;
&lt;h4 id=&quot;software-is-incredible-at-consuming-schemas-&quot;&gt;Software is incredible at consuming schemas.&lt;/h4&gt;
&lt;p&gt;Those are not the same interface.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;the-part-that-is-actually-new-parallel-sampling&quot;&gt;THE PART THAT IS ACTUALLY NEW: PARALLEL SAMPLING&lt;/h2&gt;
&lt;p&gt;This is where Jev stops being &quot;another tiny model&quot;.&lt;/p&gt;
&lt;p&gt;Traditional autoregressive language generation works roughly like this:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;token 1
  ↓
token 2
  ↓
token 3
  ↓
token 4
  ↓
...
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Every generated token conditions the next one.&lt;/p&gt;
&lt;p&gt;That is exactly what makes text generation powerful.&lt;/p&gt;
&lt;p&gt;It is also one reason it can be expensive and slow.&lt;/p&gt;
&lt;p&gt;If the application does not need a sentence, the whole sequential generation loop can become unnecessary overhead.&lt;/p&gt;
&lt;p&gt;Jev takes a different route for the kinds of problems it targets.&lt;/p&gt;
&lt;p&gt;TypeSafe says its questions are evaluated in parallel, with all declared outputs produced in a single query. The company reports end-to-end response times of roughly 70–500 milliseconds, though it also notes that its published latency measurements were generally run from laptops on the US West Coast, so those numbers should not be treated as universal end-to-end production latency. [1]&lt;/p&gt;
&lt;p&gt;This is the important architectural distinction:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;LLM:

question
   ↓
token
   ↓
token
   ↓
token
   ↓
decision hidden inside text


Jev:

state
   ↓
+---------+---------+---------+
| question| question| question|
+---------+---------+---------+
     ↓         ↓         ↓
 decision   decision   decision
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You are not waiting for a paragraph to finish so the CPU can discover whether the answer was &quot;yes&quot;.&lt;/p&gt;
&lt;p&gt;The answer itself is the API.&lt;/p&gt;
&lt;p&gt;That feels obvious after you see it.&lt;/p&gt;
&lt;p&gt;A lot of good engineering does.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;and-then-there-s-the-price&quot;&gt;AND THEN THERE'S THE PRICE&lt;/h2&gt;
&lt;p&gt;TypeSafe's launch materials list Jev at &lt;strong&gt;$0.042 per million input tokens&lt;/strong&gt;, with output effectively free under its published rate card. That is $42 per billion input tokens. Vercel currently lists the model at about $0.04 per million input tokens through AI Gateway, with gateway-specific billing or promotions potentially differing from TypeSafe's direct price. [1][3]&lt;/p&gt;
&lt;p&gt;That number is the kind of thing that makes people write &quot;AI is now basically free.&quot;&lt;/p&gt;
&lt;p&gt;I would not.&lt;/p&gt;
&lt;p&gt;Cheap is not free.&lt;/p&gt;
&lt;p&gt;And benchmark cost is not total system cost.&lt;/p&gt;
&lt;p&gt;But the price is still interesting because Jev is not trying to win the same contest as a giant general-purpose LLM.&lt;/p&gt;
&lt;p&gt;It is trying to make &lt;strong&gt;small, repeated decisions so cheap that developers stop thinking about the individual decision at all.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;That is a different ambition.&lt;/p&gt;
&lt;p&gt;Consider an agent loop that needs to decide:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;continue?
retry?
ask user?
call tool A?
call tool B?
escalate?
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If every branch requires a large language model call, the decision layer itself becomes expensive.&lt;/p&gt;
&lt;p&gt;If that decision can be made by a much cheaper specialised model, an architect can put the &quot;expensive brain&quot; somewhere else.&lt;/p&gt;
&lt;p&gt;This is where Jev gets interesting.&lt;/p&gt;
&lt;p&gt;It is not necessarily trying to replace the brain.&lt;/p&gt;
&lt;p&gt;It may be trying to become the &lt;strong&gt;nervous system around the brain&lt;/strong&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;this-is-not-a-gpt-replacement&quot;&gt;THIS IS NOT A GPT REPLACEMENT&lt;/h2&gt;
&lt;p&gt;This matters.&lt;/p&gt;
&lt;p&gt;Jev is not a drop-in replacement for a general chat model.&lt;/p&gt;
&lt;p&gt;It does not generate prose.&lt;/p&gt;
&lt;p&gt;It is not designed to write articles.&lt;/p&gt;
&lt;p&gt;It is not designed to write a React component.&lt;/p&gt;
&lt;p&gt;It is not your coding buddy.&lt;/p&gt;
&lt;p&gt;It is not the model you send to when you want:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&quot;Explain quantum tunnelling like I'm five.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Use a language model for that.&lt;/p&gt;
&lt;p&gt;Jev's own product positioning is narrower: routing, scoring, classification, verification, branching, guardrails, and similar decisions where the answer space can be declared in advance. [1][2]&lt;/p&gt;
&lt;p&gt;That limitation is the whole point.&lt;/p&gt;
&lt;p&gt;The modern AI industry often treats generality as the ultimate virtue.&lt;/p&gt;
&lt;p&gt;Jev suggests there may be another axis:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;specialization for machine-native decisions.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;And that's where the name &quot;System One&quot; starts making more sense.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;why-is-it-called-system-one-&quot;&gt;WHY IS IT CALLED &quot;SYSTEM ONE&quot;?&lt;/h2&gt;
&lt;p&gt;The name refers to Daniel Kahneman's distinction between fast, intuitive System 1 thinking and slower, deliberative System 2 thinking.&lt;/p&gt;
&lt;p&gt;TypeSafe deliberately changes the spelling to &quot;System One Model&quot; as a model category, rather than claiming that Jev is literally a biological brain.&lt;/p&gt;
&lt;p&gt;The analogy is straightforward:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;System One
fast
pattern-based
immediate
decision-oriented

System Two
slow
deliberative
language-heavy
reasoning-oriented
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This framing has an important caveat.&lt;/p&gt;
&lt;p&gt;Kahneman's System 1 is also associated with bias and error.&lt;/p&gt;
&lt;p&gt;TypeSafe is trying to build something different: a fast decision model whose outputs carry calibrated probabilities so software can decide when to trust a result and when to escalate it. The company's own FAQ even addresses the tension directly, saying the name is inspired by the distinction while arguing that System One Models can be engineered for reliability. [1]&lt;/p&gt;
&lt;p&gt;That's a much more interesting proposition than:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&quot;We made a faster chatbot.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;They are essentially saying:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Maybe software doesn't need every AI action to look like a reasoning transcript.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&quot;rlhf-made-models-polite-rlcd-tries-to-make-them-useful-to-code-&quot;&gt;RLHF MADE MODELS POLITE. RLCD TRIES TO MAKE THEM USEFUL TO CODE.&lt;/h2&gt;
&lt;p&gt;One of the more provocative parts of TypeSafe's launch is its training philosophy.&lt;/p&gt;
&lt;p&gt;The company contrasts Jev's &lt;strong&gt;Reinforcement Learning for Calibrated Decisions (RLCD)&lt;/strong&gt; with RLHF, Reinforcement Learning from Human Feedback, and RLVR, Reinforcement Learning with Verifiable Rewards.&lt;/p&gt;
&lt;p&gt;The distinction matters because what you optimise becomes the behaviour you get.&lt;/p&gt;
&lt;p&gt;RLHF helped make language models much more useful for human interaction. It rewards outputs people prefer.&lt;/p&gt;
&lt;p&gt;That is exactly what you want from a chatbot.&lt;/p&gt;
&lt;p&gt;But consider an automated branch:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;if confidence &amp;gt; threshold:
    act()
else:
    escalate()
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The application does not primarily need a beautifully worded explanation.&lt;/p&gt;
&lt;p&gt;It needs an honest estimate of uncertainty.&lt;/p&gt;
&lt;p&gt;If the model says &quot;I'm 91% confident&quot; when it is right 64% of the time, your control loop is lying.&lt;/p&gt;
&lt;p&gt;TypeSafe's pitch for RLCD is therefore not merely &quot;better probabilities.&quot;&lt;/p&gt;
&lt;p&gt;It is that &lt;strong&gt;calibration becomes an optimization target&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The model should care about whether its confidence corresponds to reality.&lt;/p&gt;
&lt;p&gt;That is a fundamentally different goal from sounding convincing.&lt;/p&gt;
&lt;p&gt;[1]&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;calibrated-probability-is-not-the-same-thing-as-being-right&quot;&gt;CALIBRATED PROBABILITY IS NOT THE SAME THING AS BEING RIGHT&lt;/h2&gt;
&lt;p&gt;This is one of the most important caveats in the whole Jev story.&lt;/p&gt;
&lt;p&gt;People see:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;confidence: 0.94
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;and instinctively read:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;the model is correct.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;No.&lt;/p&gt;
&lt;p&gt;A confidence or probability estimate is only useful if it is meaningfully calibrated for the task and data distribution.&lt;/p&gt;
&lt;p&gt;Vercel's current Jev guidance makes the point more plainly: a typed answer can still misinterpret the evidence, and developers should test decisions against known outcomes before allowing them to trigger actions. [4]&lt;/p&gt;
&lt;p&gt;That means a 0.94 result should ideally behave like:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;among cases receiving comparable confidence, the model is correct at roughly that rate.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Calibration is a statistical property.&lt;/p&gt;
&lt;p&gt;It is not a magic truth meter.&lt;/p&gt;
&lt;p&gt;This distinction is huge for agent systems.&lt;/p&gt;
&lt;p&gt;Because a model that admits uncertainty can be wired safely.&lt;/p&gt;
&lt;p&gt;A model that is confidently wrong is much more dangerous.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;the-three-little-building-blocks&quot;&gt;THE THREE LITTLE BUILDING BLOCKS&lt;/h2&gt;
&lt;p&gt;Jev's API is especially interesting because it reduces a wide world of natural-language judgement to a small number of question shapes.&lt;/p&gt;
&lt;h3 id=&quot;1-choice&quot;&gt;1. Choice&lt;/h3&gt;
&lt;p&gt;Use Choice when your code needs one option from a fixed set.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;billing
technical
sales
other
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The result can include the selected option, probabilities over the options, and a confidence measure. TypeSafe's docs describe a maximum of 255 options for a Choice question. [5]&lt;/p&gt;
&lt;p&gt;This maps beautifully to:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-typescript&quot;&gt;switch (department) {
  case &quot;billing&quot;:
  case &quot;technical&quot;:
  case &quot;sales&quot;:
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The model does the fuzzy part.&lt;/p&gt;
&lt;p&gt;The code does the branching.&lt;/p&gt;
&lt;p&gt;That division of labour feels right.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;2-score&quot;&gt;2. Score&lt;/h3&gt;
&lt;p&gt;Score is for ordered rubrics.&lt;/p&gt;
&lt;p&gt;Think:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;1 = low
2 = mild
3 = significant
4 = severe
5 = critical
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The model evaluates the state against the levels you define.&lt;/p&gt;
&lt;p&gt;That is useful when your program wants:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;if score &amp;gt;= threshold:
    escalate()
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;But there is a subtle warning here.&lt;/p&gt;
&lt;p&gt;An ordered scale is not automatically a physical measurement.&lt;/p&gt;
&lt;p&gt;A &quot;4.3&quot; severity score does not mean the underlying event is literally 43% more severe than a score of 3.&lt;/p&gt;
&lt;p&gt;The number is meaningful inside the rubric.&lt;/p&gt;
&lt;p&gt;It isn't a universal unit of suffering, risk, urgency or quality.&lt;/p&gt;
&lt;p&gt;That sounds obvious.&lt;/p&gt;
&lt;p&gt;People still misuse numbers all the time.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;3-noul&quot;&gt;3. Noul&lt;/h3&gt;
&lt;p&gt;Noul is the strangest name and the simplest idea.&lt;/p&gt;
&lt;p&gt;You ask whether a proposition is true.&lt;/p&gt;
&lt;p&gt;The result is a probability from 0 to 1.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;&quot;Did the customer explicitly ask for a refund?&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;becomes:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;0.87
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Your code then decides:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;&amp;gt; 0.90 → automatic action
0.60–0.90 → review
&amp;lt; 0.60 → do not trigger
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This is perhaps the most important architectural idea in Jev.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The model does not decide the policy.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;It supplies a probabilistic signal.&lt;/p&gt;
&lt;p&gt;Your code supplies the policy.&lt;/p&gt;
&lt;p&gt;That preserves a clean boundary between intelligence and control.&lt;/p&gt;
&lt;p&gt;And frankly, that is probably where the model belongs.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;the-smart-if-statement-idea-is-better-than-it-sounds&quot;&gt;THE &quot;SMART IF STATEMENT&quot; IDEA IS BETTER THAN IT SOUNDS&lt;/h2&gt;
&lt;p&gt;TypeSafe uses the phrase &quot;smart if-statements&quot;.&lt;/p&gt;
&lt;p&gt;At first it sounds like startup copy.&lt;/p&gt;
&lt;p&gt;Then you write the architecture down:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt;if jev(&quot;does_this_need_human_review&quot;) &amp;gt; 0.85:
    send_to_human()
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;and realise what they're getting at.&lt;/p&gt;
&lt;p&gt;Traditional code is brilliant at precise rules:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;if amount &amp;gt; 1000
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;AI is useful when the condition is fuzzy:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;if the customer appears to be at serious risk of churn
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The old solution was:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;ask LLM
→ generate paragraph
→ parse judgement
→ hope
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The Jev solution is conceptually:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;state
→ probability
→ ordinary code
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;AI becomes a fuzzy predicate inside deterministic software.&lt;/p&gt;
&lt;p&gt;That's a fascinating place to put intelligence.&lt;/p&gt;
&lt;p&gt;Not above the program.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Inside it.&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;the-agent-loop-is-where-this-becomes-really-interesting&quot;&gt;THE AGENT LOOP IS WHERE THIS BECOMES REALLY INTERESTING&lt;/h2&gt;
&lt;p&gt;LangChain's September 17, 2026 write-up describes a common agent pattern:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;LLM decides
→ tool executes
→ model evaluates result
→ loop continues
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The problem is obvious.&lt;/p&gt;
&lt;p&gt;Every little decision can require another generative model call.&lt;/p&gt;
&lt;p&gt;LangChain presented Jev specifically as a way to add a specialised decision step into that loop, reporting TypeSafe's claims of up to roughly 200× faster inference and 400× lower cost than comparable LLMs on classification-oriented tasks. [6]&lt;/p&gt;
&lt;p&gt;Those are vendor-linked comparative claims, not laws of physics.&lt;/p&gt;
&lt;p&gt;But the architecture is what matters.&lt;/p&gt;
&lt;p&gt;Imagine:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;                  +------------------+
                  |    LLM Planner   |
                  +--------+---------+
                           |
                           v
                    call tool
                           |
                           v
                  +------------------+
                  |       Jev        |
                  | &quot;what next?&quot;     |
                  +--------+---------+
                           |
             +-------------+-------------+
             |             |             |
             v             v             v
           retry          stop        human
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now the expensive model can spend its compute on the places where language and reasoning are useful.&lt;/p&gt;
&lt;p&gt;The cheap specialised model handles the repetitive control decisions.&lt;/p&gt;
&lt;p&gt;That is not &quot;replace the LLM.&quot;&lt;/p&gt;
&lt;p&gt;It is:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;stop using a novelist to operate a traffic light.&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;vercel-gets-the-idea-immediately&quot;&gt;VERCEL GETS THE IDEA IMMEDIATELY&lt;/h2&gt;
&lt;p&gt;Vercel added Jev to AI Gateway on September 16, 2026.&lt;/p&gt;
&lt;p&gt;Then, on September 21, Vercel announced support for an HTTP API alongside its TypeSafe client and AI SDK path. Vercel's current integration lets applications send a shared state plus named questions and receive the typed results back through the gateway. [3][7]&lt;/p&gt;
&lt;p&gt;That matters because integrations tell us more than launch-day tweets do.&lt;/p&gt;
&lt;p&gt;A model becomes infrastructure when other infrastructure starts treating it as a primitive.&lt;/p&gt;
&lt;p&gt;LangChain wrote about using Jev in an agent harness.&lt;/p&gt;
&lt;p&gt;Vercel put it behind AI Gateway.&lt;/p&gt;
&lt;p&gt;Cloudflare has a model catalogue entry for &lt;code&gt;typesafe/jev&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;OpenRouter lists Jev models as well.&lt;/p&gt;
&lt;p&gt;The ecosystem is already behaving as though the interesting unit is not:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&quot;Let's chat with Jev.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It is:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&quot;Let's insert Jev into an application.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That is a very different adoption path.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;cloud-providers-are-quietly-telling-us-what-this-is-for&quot;&gt;CLOUD PROVIDERS ARE QUIETLY TELLING US WHAT THIS IS FOR&lt;/h2&gt;
&lt;p&gt;Cloudflare's current model documentation describes Jev as a structured evaluation model: state goes in, typed Noul, Choice and Score answers come out, with calibrated answers including probabilities and confidence. [8]&lt;/p&gt;
&lt;p&gt;That vocabulary is revealing.&lt;/p&gt;
&lt;p&gt;They don't market it like:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;Jev: your next AI companion
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;They document it like:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;Jev:
a function your software calls
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That is perhaps the strongest clue about where this category could go.&lt;/p&gt;
&lt;p&gt;The model doesn't need a homepage where humans spend ten hours talking to it.&lt;/p&gt;
&lt;p&gt;It needs an API where software spends ten million tiny calls.&lt;/p&gt;
&lt;p&gt;And that could be a much bigger market.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;the-one-model-does-everything-era-may-be-hitting-a-limit&quot;&gt;THE &quot;ONE MODEL DOES EVERYTHING&quot; ERA MAY BE HITTING A LIMIT&lt;/h2&gt;
&lt;p&gt;For years, the mental picture of AI was:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;one huge model
       |
       +--&amp;gt; write
       +--&amp;gt; reason
       +--&amp;gt; classify
       +--&amp;gt; route
       +--&amp;gt; search
       +--&amp;gt; decide
       +--&amp;gt; explain
       +--&amp;gt; code
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Jev proposes:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;          AI SYSTEM
              |
     +--------+--------+
     |                 |
     v                 v
  LLM / reasoner     Jev
  language work     decisions
     |                 |
     +--------+--------+
              |
           software
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This is not necessarily a fragmentation of AI.&lt;/p&gt;
&lt;p&gt;It could be specialization.&lt;/p&gt;
&lt;p&gt;We already do this everywhere else.&lt;/p&gt;
&lt;p&gt;A CPU isn't used for every operation.&lt;/p&gt;
&lt;p&gt;A database doesn't render the UI.&lt;/p&gt;
&lt;p&gt;A CDN doesn't calculate payroll.&lt;/p&gt;
&lt;p&gt;The most expensive general-purpose component isn't automatically the correct component for every subproblem.&lt;/p&gt;
&lt;p&gt;So why should language models be?&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;the-model-may-be-smaller-the-idea-is-bigger-&quot;&gt;THE MODEL MAY BE SMALLER. THE IDEA IS BIGGER.&lt;/h2&gt;
&lt;p&gt;This is the part of the launch that could easily be missed.&lt;/p&gt;
&lt;p&gt;A new model usually arrives with the expected checklist:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;benchmark score
context window
reasoning
coding
multimodal
price
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Jev makes the checklist look strange.&lt;/p&gt;
&lt;p&gt;You ask:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;Does it generate text?
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;No.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;Can it explain itself?
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Not in the normal chat sense.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;Can it replace GPT or Claude?
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;No.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;Why should I care?
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Because your application probably contains hundreds of decisions that are not realy &quot;write me a paragraph&quot; problems.&lt;/p&gt;
&lt;p&gt;That could be the category.&lt;/p&gt;
&lt;p&gt;Not another model.&lt;/p&gt;
&lt;p&gt;Another &lt;strong&gt;primitive&lt;/strong&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;there-is-a-subtle-difference-between-json-mode-and-jev&quot;&gt;THERE IS A SUBTLE DIFFERENCE BETWEEN JSON MODE AND JEV&lt;/h2&gt;
&lt;p&gt;This distinction matters for developers.&lt;/p&gt;
&lt;p&gt;A normal LLM can be instructed:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;return JSON
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;and usually you can get something like:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &quot;action&quot;: &quot;retry&quot;,
  &quot;confidence&quot;: 0.87
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;So why not just stop there?&lt;/p&gt;
&lt;p&gt;Because the string-generating model still generated the path to that structure.&lt;/p&gt;
&lt;p&gt;Jev's thesis is that the answer space itself is constrained at the model interface.&lt;/p&gt;
&lt;p&gt;TypeSafe describes the outputs as type-safe structured values defined in advance, rather than generated strings that then have to be parsed and validated. [1]&lt;/p&gt;
&lt;p&gt;That doesn't mean &quot;JSON mode is useless&quot;.&lt;/p&gt;
&lt;p&gt;It means they optimise different layers.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;LLM + structured output:
generate text-like tokens
→ parse
→ validate
→ use


Jev:
evaluate typed question
→ receive typed answer
→ use
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The difference is not cosmetic.&lt;/p&gt;
&lt;p&gt;It potentially changes how much compute is spent producing the answer.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;what-no-hallucinations-really-means-here&quot;&gt;WHAT &quot;NO HALLUCINATIONS&quot; REALLY MEANS HERE&lt;/h2&gt;
&lt;p&gt;This phrase is going to get abused.&lt;/p&gt;
&lt;p&gt;TypeSafe says Jev &quot;can't hallucinate&quot; in the sense that it doesn't generate arbitrary strings and its output schema is fixed. It also notes that schema matching is mathematically guaranteed. [1]&lt;/p&gt;
&lt;p&gt;That claim should be read carefully.&lt;/p&gt;
&lt;p&gt;A model can still be wrong about the state.&lt;/p&gt;
&lt;p&gt;It can misunderstand the evidence.&lt;/p&gt;
&lt;p&gt;It can choose the wrong category.&lt;/p&gt;
&lt;p&gt;It can assign a bad probability.&lt;/p&gt;
&lt;p&gt;What Jev removes is a specific failure mode:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;&quot;What is the next tool?&quot;
→ &quot;Sure! I'd be delighted to...&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;or:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;&quot;return one of these five values&quot;
→
some sixth string nobody defined
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The model can still make a &lt;strong&gt;decision error&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;It just cannot invent a new type at runtime.&lt;/p&gt;
&lt;p&gt;That is an important difference.&lt;/p&gt;
&lt;p&gt;And for software, type safety is not a tiny quality-of-life feature.&lt;/p&gt;
&lt;p&gt;It is the border between:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;data
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;and:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;surprise
&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;the-biggest-deal-here-is-not-cost&quot;&gt;THE BIGGEST DEAL HERE IS NOT COST&lt;/h2&gt;
&lt;p&gt;It is control.&lt;/p&gt;
&lt;p&gt;A general LLM is incredibly flexible.&lt;/p&gt;
&lt;p&gt;That flexibility is its superpower.&lt;/p&gt;
&lt;p&gt;It is also its attack surface.&lt;/p&gt;
&lt;p&gt;Ask a model to choose a tool, and it can generate text.&lt;/p&gt;
&lt;p&gt;Ask it to choose one of three typed actions, and suddenly the code has a bounded control surface.&lt;/p&gt;
&lt;p&gt;That means your architecture can look like:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;LLM
 ↓
propose
 ↓
Jev
 ↓
gate
 ↓
code
 ↓
execute
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Jev becomes a kind of &lt;strong&gt;AI circuit breaker&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Not necessarily because it is smarter than the main model.&lt;/p&gt;
&lt;p&gt;Because it has a narrower job.&lt;/p&gt;
&lt;p&gt;Narrowness is underrated in software.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;the-security-angle-is-really-interesting&quot;&gt;THE SECURITY ANGLE IS REALLY INTERESTING&lt;/h2&gt;
&lt;p&gt;Imagine an agent wants to delete a production database.&lt;/p&gt;
&lt;p&gt;A generic model can be prompted to decide:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&quot;Should I proceed?&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;But you still have to parse and interpret whatever it says.&lt;/p&gt;
&lt;p&gt;Now imagine the application defines:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;requires_human_confirmation = Noul(...)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;and:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;if probability &amp;gt; 0.75:
    require_human()
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The final authority remains deterministic code.&lt;/p&gt;
&lt;p&gt;The AI produces a signal.&lt;/p&gt;
&lt;p&gt;That signal does not directly become an uncontrolled tool call.&lt;/p&gt;
&lt;p&gt;This is not a security guarantee.&lt;/p&gt;
&lt;p&gt;Bad thresholds can still be bad.&lt;/p&gt;
&lt;p&gt;Bad state can still be bad.&lt;/p&gt;
&lt;p&gt;A malicious prompt can still poison the state.&lt;/p&gt;
&lt;p&gt;But the design gives software a native place to enforce policy.&lt;/p&gt;
&lt;p&gt;And that feels much closer to how production systems should treat probabilistic intelligence.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;the-hidden-superpower-many-questions-one-state&quot;&gt;THE HIDDEN SUPERPOWER: MANY QUESTIONS, ONE STATE&lt;/h2&gt;
&lt;p&gt;One of the most useful parts of Jev is that you can ask several questions about the same state.&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;State:
support ticket

Questions:
- which department?
- how urgent?
- refund requested?
- account cancellation mentioned?
- human review needed?
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The idea is that these questions can be evaluated in parallel rather than requiring five separate model calls. TypeSafe's launch materials explicitly present parallel evaluation as part of the system design. [1]&lt;/p&gt;
&lt;p&gt;That creates a nice software pattern:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;shared state
    |
    +--&amp;gt; question A
    +--&amp;gt; question B
    +--&amp;gt; question C
    +--&amp;gt; question D
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The expensive part of reading the state can be shared.&lt;/p&gt;
&lt;p&gt;The outputs are decomposed.&lt;/p&gt;
&lt;p&gt;The application recombines them.&lt;/p&gt;
&lt;p&gt;This is basically data-parallel classification for application logic.&lt;/p&gt;
&lt;p&gt;Which sounds nerdy.&lt;/p&gt;
&lt;p&gt;Because it is.&lt;/p&gt;
&lt;p&gt;And I mean that as a compliment.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;why-agents-may-need-this-more-than-chat-apps-do&quot;&gt;WHY AGENTS MAY NEED THIS MORE THAN CHAT APPS DO&lt;/h2&gt;
&lt;p&gt;A chatbot can spend two seconds generating a good response.&lt;/p&gt;
&lt;p&gt;The human is still reading it.&lt;/p&gt;
&lt;p&gt;A backend agent that needs to make forty small control decisions per second has a completely different requirement.&lt;/p&gt;
&lt;p&gt;Imagine a workflow with:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;route
→ classify
→ verify
→ choose tool
→ validate result
→ decide retry
→ decide escalate
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A giant LLM at every branch can become the slowest part of the system.&lt;/p&gt;
&lt;p&gt;This is why Jev's target market makes sense even if Jev never becomes famous with ordinary users.&lt;/p&gt;
&lt;p&gt;Humans don't need to know Jev exists.&lt;/p&gt;
&lt;p&gt;The software does.&lt;/p&gt;
&lt;p&gt;That is the kind of technology that can become ubiquitous while remaining almost invisible.&lt;/p&gt;
&lt;p&gt;Think DNS.&lt;/p&gt;
&lt;p&gt;Think TLS.&lt;/p&gt;
&lt;p&gt;Think a database index.&lt;/p&gt;
&lt;p&gt;Nobody asks their browser:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&quot;Hey, which B-tree are you using?&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Infrastructure works precisely because users don't have to care.&lt;/p&gt;
&lt;p&gt;Jev is aiming for that kind of invisibility.&lt;/p&gt;
&lt;p&gt;At least philosophically.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;the-strangest-part-it-makes-ai-look-more-like-code&quot;&gt;THE STRANGEST PART: IT MAKES AI LOOK MORE LIKE CODE&lt;/h2&gt;
&lt;p&gt;A giant LLM feels like an oracle.&lt;/p&gt;
&lt;p&gt;You ask.&lt;/p&gt;
&lt;p&gt;It speaks.&lt;/p&gt;
&lt;p&gt;You interpret.&lt;/p&gt;
&lt;p&gt;Jev feels more like:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;function evaluate(state, question):
    return typed_probability
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That is a much more comfortable shape for conventional software.&lt;/p&gt;
&lt;p&gt;And maybe that is what has been missing.&lt;/p&gt;
&lt;p&gt;We spent years asking:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;How do we make software talk to AI?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Maybe the better question is:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;How do we make intelligence look like software?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That is almost the inverse problem.&lt;/p&gt;
&lt;p&gt;And inversion is often where the interesting stuff happens.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;the-wikiracing-demo-gives-away-the-philosophy&quot;&gt;THE WIKIRACING DEMO GIVES AWAY THE PHILOSOPHY&lt;/h2&gt;
&lt;p&gt;TypeSafe's launch article includes a Wikiracing demo where the model must choose among links while traversing Wikipedia toward a target.&lt;/p&gt;
&lt;p&gt;The company highlights a practical advantage here: the available choices can be numerous, and the model's output remains constrained to the declared options. TypeSafe says Jev supports up to 255 choices in a Choice question and uses a two-stage approach for higher-cardinality decisions. [1]&lt;/p&gt;
&lt;p&gt;This matters because a generative LLM can produce a plausible-looking link that simply does not exist.&lt;/p&gt;
&lt;p&gt;In Wikiracing, that is not a minor issue.&lt;/p&gt;
&lt;p&gt;One hallucinated link breaks the path.&lt;/p&gt;
&lt;p&gt;A typed choice over actual options cannot invent an eleventh URL when the program only supplied ten.&lt;/p&gt;
&lt;p&gt;Again, Jev isn't magically correct.&lt;/p&gt;
&lt;p&gt;But the architecture eliminates a whole class of errors.&lt;/p&gt;
&lt;p&gt;That's what good abstractions do.&lt;/p&gt;
&lt;p&gt;They don't solve every problem.&lt;/p&gt;
&lt;p&gt;They make some problems impossible.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;and-the-doom-demo-is-even-more-revealing&quot;&gt;AND THE DOOM DEMO IS EVEN MORE REVEALING&lt;/h2&gt;
&lt;p&gt;TypeSafe also showed a Doom demo using structured game state rather than feeding the model raw pixels. The company described Jev making decisions at high frequency and estimated around $7 per hour for ten queries per second under the setup they described. [1]&lt;/p&gt;
&lt;p&gt;The useful part is not whether a Doom bot is a great benchmark.&lt;/p&gt;
&lt;p&gt;It isn't.&lt;/p&gt;
&lt;p&gt;A deterministic bot could probably beat it.&lt;/p&gt;
&lt;p&gt;The point is what happens when &quot;intelligence&quot; becomes cheap enough to insert into a real-time loop.&lt;/p&gt;
&lt;p&gt;That is a very different vision from:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;send prompt
wait
read answer
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It is more like:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;game state
→ intelligence
→ action
→ new state
→ intelligence
→ action
→ ...
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;At 100 milliseconds, 10 calls a second stops sounding absurd.&lt;/p&gt;
&lt;p&gt;At a few cents per million input tokens, the economics start looking stranger still.&lt;/p&gt;
&lt;p&gt;The intelligence becomes a component.&lt;/p&gt;
&lt;p&gt;Not an event.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;jevous-no-jevons-&quot;&gt;JEVOUS? NO. JEVONS.&lt;/h2&gt;
&lt;p&gt;There is a little joke hidden in the name.&lt;/p&gt;
&lt;p&gt;TypeSafe says Jev is named after economist William Stanley Jevons and references the &lt;strong&gt;Jevons paradox&lt;/strong&gt;: when a technology becomes more efficient, total consumption of that resource can increase because the lower cost unlocks more usage. [1]&lt;/p&gt;
&lt;p&gt;This might be the most revealing part of the whole launch.&lt;/p&gt;
&lt;p&gt;TypeSafe is not merely trying to make AI cheaper.&lt;/p&gt;
&lt;p&gt;It wants cheap intelligence to create &lt;strong&gt;more places where intelligence gets used&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;That is a radically different growth model.&lt;/p&gt;
&lt;p&gt;Suppose an AI judgement costs $0.20.&lt;/p&gt;
&lt;p&gt;You will think twice before putting it inside every request.&lt;/p&gt;
&lt;p&gt;Now suppose it costs:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;$0.000042
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;per million? Wait — this is exactly where humans should stop and calculate units carefully.&lt;/p&gt;
&lt;p&gt;Jev is &lt;strong&gt;$0.042 per million input tokens&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;That means one billion input tokens at the listed rate is $42.&lt;/p&gt;
&lt;p&gt;The relevant point is not that every call is free.&lt;/p&gt;
&lt;p&gt;It is that the cost can be low enough for developers to consider AI decisions in places that previously used brittle hand-written rules or no intelligence at all.&lt;/p&gt;
&lt;p&gt;That is the Jevons-shaped bet.&lt;/p&gt;
&lt;p&gt;Cheaper intelligence may create more demand for intelligence.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;this-could-change-what-ai-agent-means&quot;&gt;THIS COULD CHANGE WHAT &quot;AI AGENT&quot; MEANS&lt;/h2&gt;
&lt;p&gt;Today's agent architecture often looks like:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;LLM
+
tools
+
memory
+
prompt
+
loop
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A future architecture might look more like:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;LLM
+
System One models
+
tools
+
memory
+
deterministic code
+
policy engine
+
retrieval
+
observability
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That is a more modular AI stack.&lt;/p&gt;
&lt;p&gt;The model becomes one component among several.&lt;/p&gt;
&lt;p&gt;And that might actually be the path to better agents.&lt;/p&gt;
&lt;p&gt;Because an agent is not just &quot;a smart model.&quot;&lt;/p&gt;
&lt;p&gt;An agent is a control system.&lt;/p&gt;
&lt;p&gt;Control systems care about:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;feedback
state
thresholds
failure modes
latency
stability
observability
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Those words sound much more like systems engineering than chatbot design.&lt;/p&gt;
&lt;p&gt;Jev seems built for exactly that world.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;but-here-s-where-i-would-push-back&quot;&gt;BUT HERE'S WHERE I WOULD PUSH BACK&lt;/h2&gt;
&lt;p&gt;The hype is moving faster than the evidence.&lt;/p&gt;
&lt;p&gt;TypeSafe's launch page reports striking comparative numbers, including up to &lt;strong&gt;193.6× faster&lt;/strong&gt; and &lt;strong&gt;444.6× cheaper&lt;/strong&gt; on its workflow evaluations. Vercel repeats those figures in its launch coverage. [1][3]&lt;/p&gt;
&lt;p&gt;Those are worth investigating.&lt;/p&gt;
&lt;p&gt;They are not worth worshipping.&lt;/p&gt;
&lt;p&gt;TypeSafe itself gives useful caveats.&lt;/p&gt;
&lt;p&gt;The workflow evaluations were designed by people on its model-capabilities team.&lt;/p&gt;
&lt;p&gt;The LLM comparison uses specific reference models and a wrapper designed to produce structured decisions.&lt;/p&gt;
&lt;p&gt;TypeSafe explicitly says those choices can introduce bias, and says it expects the reported gains to be toward the high end of real-world results. [1]&lt;/p&gt;
&lt;p&gt;That honesty actually makes the launch more credible to me.&lt;/p&gt;
&lt;p&gt;The correct reaction is not:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&quot;444× cheaper! It's over!&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It is:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&quot;Interesting. What workload shape produced that number?&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Because benchmark geometry matters.&lt;/p&gt;
&lt;p&gt;A model that is 400× cheaper for a narrow classification loop does not mean your entire AI application is 400× cheaper.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;there-s-also-a-problem-with-calibrated-&quot;&gt;THERE'S ALSO A PROBLEM WITH &quot;CALIBRATED&quot;&lt;/h2&gt;
&lt;p&gt;Calibration has a dataset problem.&lt;/p&gt;
&lt;p&gt;A model can be calibrated on one distribution and degrade on another.&lt;/p&gt;
&lt;p&gt;Your production traffic changes.&lt;/p&gt;
&lt;p&gt;Your users change.&lt;/p&gt;
&lt;p&gt;Your prompts change.&lt;/p&gt;
&lt;p&gt;Your product changes.&lt;/p&gt;
&lt;p&gt;Your abuse patterns change.&lt;/p&gt;
&lt;p&gt;A model can be beautifully calibrated in a benchmark and less calibrated in production.&lt;/p&gt;
&lt;p&gt;That's not a Jev-specific flaw.&lt;/p&gt;
&lt;p&gt;It's a general machine-learning problem.&lt;/p&gt;
&lt;p&gt;But Jev makes calibration central enough that developers will have to think about it.&lt;/p&gt;
&lt;p&gt;Which is probably a good thing.&lt;/p&gt;
&lt;p&gt;A weird way of putting it:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jev turns uncertainty into part of the API contract.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Most AI APIs make uncertainty something you ask for.&lt;/p&gt;
&lt;p&gt;Jev tries to make it something you receive by default.&lt;/p&gt;
&lt;p&gt;That is a very different engineering culture.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;another-caveat-confidence-is-not-a-single-universal-number&quot;&gt;ANOTHER CAVEAT: &quot;CONFIDENCE&quot; IS NOT A SINGLE UNIVERSAL NUMBER&lt;/h2&gt;
&lt;p&gt;TypeSafe distinguishes probabilities from confidence, and its different primitives expose them differently.&lt;/p&gt;
&lt;p&gt;That's important.&lt;/p&gt;
&lt;p&gt;A probability over Choice options is not the same conceptual thing as a generic &quot;I'm 84% confident&quot; statement.&lt;/p&gt;
&lt;p&gt;For a Choice:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;technical: 0.74
billing: 0.18
sales: 0.08
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;the distribution tells you something about competition between options.&lt;/p&gt;
&lt;p&gt;A confidence value can be derived differently from the shape of that distribution.&lt;/p&gt;
&lt;p&gt;For Noul, the single probability is itself the primary signal.&lt;/p&gt;
&lt;p&gt;Developers should not casually treat every number returned by the model as though it has identical semantics.&lt;/p&gt;
&lt;p&gt;This is exactly the sort of boring detail that gets skipped in launch posts and then causes production bugs six months later.&lt;/p&gt;
&lt;p&gt;Please don't be that team.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;the-255-choice-limit-is-a-good-example-of-why-specialised-apis-are-honest&quot;&gt;THE 255-CHOICE LIMIT IS A GOOD EXAMPLE OF WHY SPECIALISED APIs ARE HONEST&lt;/h2&gt;
&lt;p&gt;A generic LLM can pretend it can classify anything.&lt;/p&gt;
&lt;p&gt;Jev has explicit primitives and limits.&lt;/p&gt;
&lt;p&gt;Choice currently supports up to 255 options in the documented interface, with TypeSafe describing a two-stage strategy for larger cardinalities. [1][5]&lt;/p&gt;
&lt;p&gt;That sounds restrictive.&lt;/p&gt;
&lt;p&gt;It is.&lt;/p&gt;
&lt;p&gt;And that's useful.&lt;/p&gt;
&lt;p&gt;Good APIs make the shape of the problem visible.&lt;/p&gt;
&lt;p&gt;If your system has 8,000 possible categories, you shouldn't quietly pretend that a single bounded choice is the natural solution.&lt;/p&gt;
&lt;p&gt;Maybe you need hierarchy.&lt;/p&gt;
&lt;p&gt;Maybe you need retrieval.&lt;/p&gt;
&lt;p&gt;Maybe you need two-stage routing.&lt;/p&gt;
&lt;p&gt;Maybe you need ordinary code.&lt;/p&gt;
&lt;p&gt;The model tells you:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&quot;This is the interface I am good at.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That's healthier than pretending every model is universal.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;what-happens-when-jev-is-wrong-&quot;&gt;WHAT HAPPENS WHEN JEV IS WRONG?&lt;/h2&gt;
&lt;p&gt;This question matters more than how fast it is.&lt;/p&gt;
&lt;p&gt;Suppose Jev says:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;refund_requested = 0.04
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;and the user actually asked for a refund.&lt;/p&gt;
&lt;p&gt;What happens?&lt;/p&gt;
&lt;p&gt;If your code automatically denies the refund, your threshold was too permissive.&lt;/p&gt;
&lt;p&gt;If your code sends everything to humans, you've destroyed the automation.&lt;/p&gt;
&lt;p&gt;The correct architecture therefore includes a third thing:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;MODEL
+
POLICY
+
ESCALATION
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The model estimates.&lt;/p&gt;
&lt;p&gt;The policy decides.&lt;/p&gt;
&lt;p&gt;The uncertain cases go somewhere else.&lt;/p&gt;
&lt;p&gt;That could be a human.&lt;/p&gt;
&lt;p&gt;A larger LLM.&lt;/p&gt;
&lt;p&gt;A more expensive model.&lt;/p&gt;
&lt;p&gt;A business-rule engine.&lt;/p&gt;
&lt;p&gt;Or simply &quot;do nothing&quot;.&lt;/p&gt;
&lt;p&gt;This makes Jev look less like a replacement for human judgement and more like a &lt;strong&gt;sensor&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Sensors don't decide.&lt;/p&gt;
&lt;p&gt;They tell the system what they think is happening.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;the-real-product-might-be-the-escalation-path&quot;&gt;THE REAL PRODUCT MIGHT BE THE ESCALATION PATH&lt;/h2&gt;
&lt;p&gt;This is a subtle point I haven't seen discussed nearly enough.&lt;/p&gt;
&lt;p&gt;If Jev's killer feature is calibrated uncertainty, then the most important thing is not:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;confidence = 0.93
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It is:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;confidence = 0.43
→ now what?
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A serious agent should have a plan for uncertain output.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;&amp;gt; 0.9
automatic

0.6–0.9
another check

&amp;lt; 0.6
human / fallback
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The actual thresholds depend on the cost of false positives and false negatives.&lt;/p&gt;
&lt;p&gt;That means Jev can become part of a &lt;strong&gt;selective automation&lt;/strong&gt; architecture.&lt;/p&gt;
&lt;p&gt;Automate the boring obvious cases.&lt;/p&gt;
&lt;p&gt;Escalate the weird cases.&lt;/p&gt;
&lt;p&gt;This is how humans naturally work.&lt;/p&gt;
&lt;p&gt;And perhaps that is why the System One metaphor feels intuitive.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;the-question-i-think-matters-most&quot;&gt;THE QUESTION I THINK MATTERS MOST&lt;/h2&gt;
&lt;p&gt;The question:&lt;/p&gt;
&lt;p&gt;It is whether software is finally ready to stop treating every piece of machine intelligence as a conversation.&lt;/p&gt;
&lt;p&gt;For years, the default pattern was:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;ask model
→ get words
→ parse words
→ validate words
→ make decision
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Jev flips that:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;state
→ ask a typed question
→ get a bounded answer
→ let code decide what happens
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That is a small interface change with potentially huge consequences.&lt;/p&gt;
&lt;p&gt;Maybe Jev becomes the beginning of a model category; maybe it becomes a footnote. Maybe the idea survives while the name disappears. We cannot know yet.&lt;/p&gt;
&lt;p&gt;But the bigger change may already be underway: AI systems are becoming less like isolated chatbots and more like collections of specialised components. The model that writes an explanation need not decide whether a workflow continues, and the model that reasons need not route the next tool call.&lt;/p&gt;
&lt;p&gt;Years from now, the most interesting thing about Jev might not be its benchmark chart at all.&lt;/p&gt;
&lt;p&gt;It might be that somebody looked at an AI agent, deleted the unnecessary paragraph, and asked the computer for the answer it actually needed.&lt;/p&gt;
&lt;h3 id=&quot;a-note-on-the-numbers&quot;&gt;A NOTE ON THE NUMBERS&lt;/h3&gt;
&lt;p&gt;The speed, price and workflow figures here are primarily &lt;strong&gt;TypeSafe's published claims&lt;/strong&gt;, cross-checked against Vercel, LangChain and Cloudflare. TypeSafe notes that its workflow evaluations have limitations and may represent the high end of real-world gains.&lt;/p&gt;
&lt;p&gt;As of &lt;strong&gt;September 22, 2026&lt;/strong&gt;, Jev is very new. The next step is independent testing of calibration, failure thresholds, production latency and fallback cost.&lt;/p&gt;
&lt;p&gt;That part is still unwritten.&lt;/p&gt;
&lt;h2 id=&quot;sources&quot;&gt;Sources&lt;/h2&gt;
&lt;p&gt;[1] TypeSafe AI, &lt;strong&gt;&quot;Introducing System One Models &amp;amp; Jev&quot;&lt;/strong&gt;, September 15, 2026.&lt;br&gt;
[2] TypeSafe AI, &lt;strong&gt;Jev developer documentation&lt;/strong&gt;, September 2026.&lt;br&gt;
[3] Vercel, &lt;strong&gt;&quot;TypeSafe AI's Jev now available on AI Gateway&quot;&lt;/strong&gt;, September 16, 2026.&lt;br&gt;
[4] Vercel, &lt;strong&gt;&quot;What is Jev, TypeSafe AI's System One model?&quot;&lt;/strong&gt;, September 18, 2026.&lt;br&gt;
[5] Vercel, &lt;strong&gt;&quot;AI Gateway now supports TypeSafe clients and HTTP API for Jev&quot;&lt;/strong&gt;, September 21, 2026.&lt;br&gt;
[6] LangChain, &lt;strong&gt;&quot;Building a Harness with Jev&quot;&lt;/strong&gt;, September 17, 2026.&lt;br&gt;
[7] Cloudflare AI documentation, &lt;strong&gt;Jev / typesafe/jev&lt;/strong&gt;, September 2026.&lt;br&gt;
[8] TechCrunch, &lt;strong&gt;&quot;A new kind of AI model from a ChatGPT inventor is thrilling developers&quot;&lt;/strong&gt;, September 18, 2026.&lt;/p&gt;
&lt;h2 id=&quot;seo-geo&quot;&gt;SEO / GEO&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;SEO title:&lt;/strong&gt; This AI Model Doesn't Want to Talk to You — It Wants to Run Your Software&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Meta description:&lt;/strong&gt; TypeSafe AI's Jev is a new System One model built for typed decisions instead of text. Here is why its architecture, calibration, price and agent integrations matter.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Suggested slug:&lt;/strong&gt; &lt;code&gt;typesafe-jev-system-one-model-ai-agents&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Keywords:&lt;/strong&gt; TypeSafe AI, Jev AI, System One Model, AI decision model, structured AI, AI agents, calibrated AI, typed AI, AI routing, AI classification.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;GEO questions:&lt;/strong&gt; What is Jev? What is a System One Model? How is Jev different from an LLM? Does Jev generate text? What are Choice, Score and Noul? How much does Jev cost? How does Jev fit inside AI agents?&lt;/p&gt;
&lt;h2 id=&quot;about-the-author&quot;&gt;About the author&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Mahan Tavakoli (MahanKenway)&lt;/strong&gt; is a programmer and technology enthusiast based in Tehran. He writes about AI infrastructure, developer tooling, software architecture, security, and the weird ideas that sometimes turn into the obvious future.&lt;/p&gt;
&lt;p&gt;GitHub: &lt;strong&gt;github.com/MahanKenway&lt;/strong&gt;&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/28169/this-ai-model-doesnt-want-to-talk-to-you</guid>
<pubDate>Tue, 22 Sep 2026 12:59:29 +0000</pubDate>
</item>
</channel>
</rss>