<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Renish B</title>
    <description>The latest articles on DEV Community by Renish B (@renishb10).</description>
    <link>https://dev.to/renishb10</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F383668%2F3d92a84c-439e-40dd-8b8c-5ab2c662205c.png</url>
      <title>DEV Community: Renish B</title>
      <link>https://dev.to/renishb10</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/renishb10"/>
    <language>en</language>
    <item>
      <title>The Next Big AI Model Can't Write a Single Sentence</title>
      <dc:creator>Renish B</dc:creator>
      <pubDate>Fri, 25 Sep 2026 13:17:00 +0000</pubDate>
      <link>https://dev.to/renishb10/the-next-big-ai-model-cant-write-a-single-sentence-551p</link>
      <guid>https://dev.to/renishb10/the-next-big-ai-model-cant-write-a-single-sentence-551p</guid>
      <description>&lt;p&gt;Look at the AI calls in most production apps and you'll notice something: a lot of them aren't writing anything.&lt;/p&gt;

&lt;p&gt;They're deciding. Is this ticket urgent? Which team owns it? Is this input spam? Is this draft ready to ship?&lt;/p&gt;

&lt;p&gt;For each of those, we send the input to a full chat model, ask it nicely to reply in JSON, parse the answer, and hope it stuck to the format. It works, but it's slow, expensive, and a bit silly when all you needed was one word.&lt;/p&gt;

&lt;p&gt;That's the gap Jev is built for.&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Jev is the first model from &lt;a href="https://typesafe.ai" rel="noopener noreferrer"&gt;TypeSafe AI&lt;/a&gt;. It doesn't generate text. It returns typed decisions with probabilities.&lt;/li&gt;
&lt;li&gt;Think of it as an &lt;code&gt;if&lt;/code&gt; statement that understands meaning.&lt;/li&gt;
&lt;li&gt;Every question in a request runs in parallel, in roughly 70 to 500 ms, for $0.042 per million input tokens. Output is free.&lt;/li&gt;
&lt;li&gt;"Can't hallucinate" means it can't answer outside your options. It can still be wrong.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What Jev is
&lt;/h2&gt;

&lt;p&gt;TypeSafe AI was founded by Diogo Almeida, a former OpenAI researcher and co-author of the InstructGPT paper behind ChatGPT. They call Jev a &lt;strong&gt;System One model&lt;/strong&gt;, after Kahneman's &lt;em&gt;Thinking, Fast and Slow&lt;/em&gt;: fast, intuitive judgment instead of long reasoning chains.&lt;/p&gt;

&lt;p&gt;You send it a &lt;strong&gt;state&lt;/strong&gt; (the input to judge) and a set of &lt;strong&gt;questions&lt;/strong&gt;, each with the answers you'll accept. It returns one typed answer per question:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;What you're asking&lt;/th&gt;
&lt;th&gt;What you get back&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Noul&lt;/td&gt;
&lt;td&gt;Is this true?&lt;/td&gt;
&lt;td&gt;A "yes" probability from 0 to 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Choice&lt;/td&gt;
&lt;td&gt;Which of these options?&lt;/td&gt;
&lt;td&gt;Top option, full distribution, confidence&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Score&lt;/td&gt;
&lt;td&gt;Where on this scale?&lt;/td&gt;
&lt;td&gt;Position on a scale you describe, plus confidence&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;No prose. No "Certainly! Here's your classification."&lt;/p&gt;

&lt;h2&gt;
  
  
  The if statement that understands meaning
&lt;/h2&gt;

&lt;p&gt;Normal code branches on things it can compute. It breaks the moment the condition is a judgment call:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;toLowerCase&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;includes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;refund&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;routeTo&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;billing&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This catches "I want a refund" and misses "I got billed again after cancelling." You keep adding keywords until nobody wants to touch the rule.&lt;/p&gt;

&lt;p&gt;Jev reads the whole message and tells you how sure it is. Your code still makes the final call.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a call looks like
&lt;/h2&gt;

&lt;p&gt;Using the JavaScript SDK (&lt;code&gt;npm install @typesafe-ai/sdk&lt;/code&gt;, Node 20+, server-side only):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;choice&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;noul&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;score&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;TypeSafeClient&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@typesafe-ai/sdk&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;TypeSafeClient&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="c1"&gt;// reads TYPESAFE_API_KEY&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;message&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Got billed again even though I cancelled last week. Kinda annoyed, can someone sort this out?&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;answers&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;systemOne&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;state&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;message&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="na"&gt;questions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;team&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;choice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Which team should handle `message`?&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;billing&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Charges, invoices, refunds, cancellations&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;technical&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Bugs, errors, login or integration problems&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;sales&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Pricing questions, upgrades, new accounts&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;other&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;}),&lt;/span&gt;
    &lt;span class="na"&gt;unwanted_charge&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;noul&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Does `message` complain about a charge the customer did not expect?&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="na"&gt;frustration&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;score&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;How frustrated is the author of `message`?&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
      &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Calm, just reporting something&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Annoyed but polite&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Angry or threatening to cancel&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;]),&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;team&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;unwanted_charge&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;frustration&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;answers&lt;/span&gt;

&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;team&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;confidence&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mf"&gt;0.6&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;sendToHuman&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;team&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;choice&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;billing&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;unwanted_charge&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;noul&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mf"&gt;0.8&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;openBillingCase&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;priority&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;frustration&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;score&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mf"&gt;1.5&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;high&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;normal&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;routeTo&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;team&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;choice&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;team.choice&lt;/code&gt; can only ever be one of the four labels you defined, and in TypeScript it's typed that way. All three questions run in one call. And notice I asked about an "unexpected charge," not "a refund," because Jev reads questions literally and the customer never asked for one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Two habits worth building
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Use confidence as a dial.&lt;/strong&gt; TypeSafe trained Jev to be calibrated: when it says 90%, it should be right about 90% of the time. So act automatically on high confidence, ask for confirmation in the middle, and send low confidence to a human. Set the thresholds based on what a wrong answer costs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ask everything at once.&lt;/strong&gt; Questions run in parallel against the same input, and each extra one only costs its own tokens. Ask every question you might need up front and let your code pick which answers to use. TypeSafe calls this "speculative fan-out."&lt;/p&gt;

&lt;h2&gt;
  
  
  Where it fits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Devs:&lt;/strong&gt; request routing, picking the cheap vs. expensive model, guardrails before an agent runs a shell command, "is this task done?" checks, log triage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SaaS founders:&lt;/strong&gt; ticket triage, lead scoring, churn signals in feedback, spam and abuse moderation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Content teams:&lt;/strong&gt; does this draft follow our style rules, does the headline match the post, which topic cluster does this belong to.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The pattern: an LLM writes, Jev checks and sorts, your code decides.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where it breaks
&lt;/h2&gt;

&lt;p&gt;TypeSafe publishes its own list of failure modes, which I appreciate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A Choice always returns a valid option. It can still be the wrong one.&lt;/li&gt;
&lt;li&gt;It answers the question you wrote, not the one you meant.&lt;/li&gt;
&lt;li&gt;No math, counting or dates. Do those in code.&lt;/li&gt;
&lt;li&gt;Noisy input hurts accuracy, and adversarial text can nudge it.&lt;/li&gt;
&lt;li&gt;Text only, and it can't write.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  About the numbers
&lt;/h2&gt;

&lt;p&gt;The headline is up to 194x faster and 445x cheaper than frontier models. That comes from TypeSafe's own evaluations, and they say it's the high end, so treat it as a ceiling. The pricing is easy to sanity-check though: 100,000 tickets at about 500 tokens each is 50M tokens, or roughly $2.10.&lt;/p&gt;

&lt;p&gt;What really matters is cost per correctly handled task. Retries and extra human review eat into the savings.&lt;/p&gt;

&lt;p&gt;Fun detail: the name comes from William Stanley Jevons, whose paradox says that when something gets cheaper, we use far more of it. TypeSafe's bet is that once a decision costs a fraction of a cent, you'll start putting one everywhere.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to start
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Pick one decision you currently handle with a keyword rule or regex that keeps breaking.&lt;/li&gt;
&lt;li&gt;Try it in the TypeSafe Playground with your own data.&lt;/li&gt;
&lt;li&gt;Run Jev in shadow mode next to your current logic for a week or two.&lt;/li&gt;
&lt;li&gt;Tune questions and thresholds, then automate only the low-risk path.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;At the time of writing, TypeSafe has paused new signups due to demand, but Jev is also available through Vercel's AI Gateway as &lt;code&gt;typesafe-ai/jev&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The bigger picture
&lt;/h2&gt;

&lt;p&gt;I don't think Jev replaces the models we already use. I think it takes over the dozens of tiny decisions we've been awkwardly handing to them.&lt;/p&gt;

&lt;p&gt;What's one decision in your app that you're still solving with a keyword rule, or a full LLM call, that really just needs a yes or no?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>saas</category>
    </item>
  </channel>
</rss>
