{"slug": "what-is-jev-and-how-to-use-it", "title": "What is Jev and how to use it", "summary": "TypeSafe released Jev, a \"System One\" AI model that returns structured judgments in 70–500 milliseconds, and its launch post on X drew nearly 40 million views in less than a week. TypeSafe positions Jev as a focused alternative to LLMs such as OpenAI's GPT, Anthropic's Claude, and xAI's Grok, returning answers as data like a probability or category rather than generating prose. The model's name references William Stanley Jevons, whose observation that more efficient steam engines could increase coal consumption underpins TypeSafe's expectation that cheaper AI decisions will make more applications practical.", "body_md": "# What is Jev and how to use it\n\nJev's [launch post on X](https://x.com/CompleteSkeptic/status/2099925682726002904) received nearly 40 million views in less than a week.\n\nIf you've seen people talking about it, you might be wondering whether it's something you should be using too.\n\nIn this article, we'll work through the following questions, with examples and a TypeScript demo.\n\n## What is Jev?\n\nJev is an AI model from a company called TypeSafe. You give it information, ask questions about it, and get back structured answers your application can use.\n\nThe simplest way to think about Jev is as a **smart if statement**.\n\nLet's say you run an online store and want to offer free delivery when someone buys three or more items. That's straightforward to write in code.\n\nYou check the number of items, and if it's three or more, you offer free delivery.\n\nBut now let's say you want to flag messages from customers who sound frustrated. How would you write that condition?\n\nYou could search their messages for words like “angry” or “frustrated.” But a customer might send you this message.\n\nI've contacted you three times, and I'm still waiting.\n\nThey haven't used the word “frustrated,” but you can see what they mean.\n\nWith Jev, you can ask whether the message expresses frustration and get back a value your code can act on. You still decide what the application should do. Jev helps evaluate the meaning of the message.\n\n### A closer look at the definition\n\nTypeSafe describes Jev as a **System One model** built for fast, structured decisions that software can use directly. Let's break that down.\n\n**System One: a focused judgment**\n\nThe name is inspired by the two ways of thinking described in Daniel Kahneman's *Thinking, Fast and Slow*. **System One** is fast and intuitive. **System Two** is slower and more deliberate, where you work through a problem step by step.\n\nRecognizing frustration in our customer message is a quick judgment. Solving a difficult math problem takes more deliberate reasoning. TypeSafe takes inspiration from the first kind of thinking. System One is its model category for focused judgments, and Jev is its first public model.\n\n**Fast, structured decisions**\n\nTypeSafe reports end-to-end response times of 70–500 milliseconds. Structured means you define the kind of answer you need, such as a probability or a category, and Jev returns that answer as data. For our customer message, we could ask for the probability that the customer sounds frustrated.\n\n**Software can use directly**\n\nYour application can check that probability and decide whether to flag the message for review. Jev makes the judgment, and you write the rules for what happens next. We'll see how to do that in the TypeScript example.\n\n### Where does the name Jev come from?\n\nThe name *Jev* has a different origin. It comes from William Stanley Jevons, who observed that more efficient steam engines could lead to greater coal consumption. Cheaper operation encouraged people to use the engines more. TypeSafe expects cheaper AI decisions to make more applications practical in a similar way.\n\n## How does Jev compare to LLMs?\n\nNow, you might be wondering, couldn't models like OpenAI's GPT, Anthropic's Claude, or xAI's Grok evaluate the same customer message?\n\nYes. Those models can make judgments and return structured output too. The difference is what Jev is designed for.\n\nWith those models, you could ask whether the customer sounds frustrated and then ask them to write a reply. You could also use the same model to explain a concept or generate code.\n\nJev, however, focuses on just the judgment. You give it the customer message, and it tells you how likely it is that the customer sounds frustrated. It doesn't write a reply or explain its answer.\n\nJev is still an AI model, but TypeSafe calls it a System One model rather than an LLM. It's built around making judgments, and that also changes how it produces its answers.\n\n### Why can it be faster?\n\nAn LLM generates its response one token at a time. Jev computes answer probabilities in parallel. It can also evaluate several independent questions about the same information in one request.\n\nFor our customer message, we could ask whether the customer is frustrated, what they want, and how strongly they express frustration. Jev can evaluate those questions together in one request. Its approach to producing answers is one reason it can be faster and less expensive for decision tasks.\n\nHere's one example from TypeSafe's demo.\n\n| Model | Response time | Request cost | \n| Jev | 114 milliseconds | $0.000081 | \n| GPT-5.6 Terra | 8.566 seconds | $0.013880 | \n\nThat puts Jev at about 1/170 of the cost for this request. TypeSafe's demo uses GPT's default reasoning setting and a short input that favors Jev, so treat it as an example rather than a general speed or cost ratio.\n\n## How does Jev fit alongside Cursor, Claude Code, and Codex?\n\nCursor, Claude Code, and Codex help you build software. Jev is a model you can call from that software.\n\nFor example, you could ask a coding tool to add customer-message classification to your app using Jev. The tool writes the integration. When a message arrives, your app calls Jev to evaluate it. They serve different roles and can be used together.\n\n## How much does Jev cost?\n\nAs of September 20, 2026, TypeSafe lists Jev at **$0.042 per million input tokens**, equivalent to **$42 per billion input tokens**. Output tokens are free. Check the [model pricing page](https://docs.typesafe.ai/models) for the latest rate.\n\nWhat does that mean for our customer-message example? At an average of **500 input tokens per request**, including the message and question, **one dollar would cover roughly 47,000 messages**.\n\n500 input tokens × $0.042 / 1,000,000 = $0.000021 per request\n\n$1 / $0.000021 ≈ 47,619 requests\n\nWe're assuming 500 tokens here. We haven't measured that count for the one-sentence example. Longer messages, more questions, and detailed criteria increase the input. You can use the token usage returned with each response to calculate your actual cost.\n\nFor an application that checks every incoming message, a small judgment can run frequently without adding much to the bill.\n\n## How does Jev work?\n\nLet's look at what you send to Jev and what you get back. You give it some information and ask questions about it. Jev then returns an answer for each question.\n\n### Input: state and questions\n\nThe input has two parts. You send the information you want Jev to look at and the questions you want it to answer.\n\nTypeSafe calls this information the **state**, and the state can be plain text, a JSON object, or an array. Going back to our customer example, we can put the message in a JSON object.\n\nThat message is the state we're giving Jev. What do we want to know about it? In this case, whether the customer sounds frustrated.\n\nFor each question, you choose a **question type** based on the kind of answer you need. You choose this when you send the request, so Jev knows what kind of answer to return.\n\n### The three question types\n\n**Noul: a yes-or-no judgment**\n\nThe first question type is Noul. You use it for a yes-or-no question, like the one we've been asking about our customer.\n\nDoes this customer sound frustrated?\n\nWith Noul, you get a number between `0` and `1` that tells you the probability that the answer is yes.\n\nLet's say Jev returns `0.95`. That means it estimates a 95% probability that the customer sounds frustrated. A value close to `0` means it favors no, while `0.5` gives equal probability to yes and no.\n\nSo a low value doesn't mean Jev is unsure. It means Jev thinks the answer is likely no. We're using these numbers to understand the response, rather than showing an actual result for our message.\n\n**Choice: select from your options**\n\nThe second question type is Choice. You use it when you want Jev to pick from a set of options you provide.\n\nFor our customer message, we could ask what the customer wants and give Jev these options.\n\n- Asking for an update\n- Requesting a refund\n- Requesting a replacement\n- Something else\n\nJev picks an option and also returns the probabilities for the options. Since you're deciding which options are available, it's useful to include “something else” for messages that don't fit your categories.\n\n**Score: evaluate a defined scale**\n\nThe third question type is Score. You use it when you want to evaluate something on a scale.\n\nFor our example, we could ask **how much frustration the message expresses**. We can describe three levels for Jev to use.\n\n| Level | Description | \n| 0 | Makes a request without expressing frustration | \n| 1 | Expresses dissatisfaction without strong anger | \n| 2 | Expresses strong anger | \n\nThese descriptions tell Jev what each level means. That gives it more to work with than simply asking it to “rate the message.”\n\nThe levels start at zero. Jev assigns probabilities to them and returns a weighted average, so the score can fall between two levels. If it assigns equal probability to levels `1` and `2`, with none to level `0`, the score is `1.5`.\n\n### Asking several questions together\n\nAll three questions can go into one request because they evaluate the same message. Jev evaluates them independently, in parallel.\n\nWhat does independently mean here? One question doesn't get to read another question's answer. Each question has to work from the information you've provided in the state.\n\nIf a later decision needs an earlier answer, your code handles that sequence. For example, you could first classify a message, then fetch the customer's order details before asking another question. The second request would include the information needed for that next decision.\n\nThis lets you build a larger workflow from smaller judgments. Your code gathers the information and manages the steps, and Jev answers the questions along the way.\n\nThe [question-type documentation](https://docs.typesafe.ai/primitives) explains the request fields and how these types fit together.\n\n### Output: answers and usage\n\nNow let's look at the response. You get an answer for each question, matched to the name you gave that question in the request. What that answer contains depends on the question type you chose.\n\n| Question type | What the answer contains | \n| Noul | Probability that the answer is yes | \n| Choice | Selected option, option probabilities, and confidence | \n| Score | Weighted score, level probabilities, a legend, and confidence | \n\nChoice and Score also include a [confidence value](https://docs.typesafe.ai/confidence), which reflects how the probabilities are distributed across the options or levels. Noul doesn't have a separate confidence field. You look at how strongly its probability favors yes or no.\n\nYou can use these values to decide whether to act on an answer or leave it for someone to review. To choose a threshold, try messages like the ones your application will actually receive and check the results.\n\nYou also get the model version and token usage, so you can see which model handled the request and how many tokens it used.\n\n## How do you get started with Jev?\n\nGo to the [TypeSafe website](https://typesafe.ai/) and sign up. There's no longer a waitlist, and you get **$5 in credit** to start with. That's enough to try thousands of requests.\n\nOnce you're in the [console](https://console.typesafe.ai/), open the **Playground**. You can try Jev here without writing any code. Let's use our customer message and enter this JSON object as the state.\n\nFor the question type, choose **Noul** and enter the following question.\n\nRun the request and inspect the returned probability. The closer it is to one, the more strongly Jev judges that the message expresses frustration. You can change the message or add questions to explore the results.\n\nOnce you've tried it in the Playground, create an API key in the console's **API Keys** section. Next, we'll use that key to make requests from TypeScript with the TypeSafe SDK.\n\n## Using Jev with TypeScript\n\nThe [demo repository](https://github.com/gopinav/jev-demo) contains two examples. We use `demo.ts` for a Noul question and `all-questions.ts` for all three question types.\n\n### Set up the demo project\n\nWith Node.js 22 or later installed, clone the project and install its dependencies.\n\nCreate a `.env` file in the project root with your API key.\n\nThe run commands load this file, and the SDK reads `TYPESAFE_API_KEY` from the environment. The project ignores `.env` in Git, so your key stays out of the repository.\n\nThe dependencies include `@typesafe-ai/sdk`, TypeScript, Node.js types, and `tsx`. The project uses ES modules, and `tsx` runs the TypeScript files directly.\n\n### Make a Noul request\n\nOpen `demo.ts` and set the message to our frustrated-customer example. Here's the complete request, including a check for the API key.\n\n`client.systemOne()` sends the state and questions to Jev. We've named the question `isFrustrated`, which lets us find its answer in the response.\n\nThe text inside `noul()` is the question Jev evaluates. Notice the backticks around `message`. They highlight the field name in the question. Since the surrounding string uses double quotes, these backticks are just text. JavaScript doesn't use them to insert the message's value.\n\nRun the example with the following command.\n\nThe npm command loads `.env` and runs the file with `tsx`. The response contains an answer named `isFrustrated`, matching our question name. Its `noul` field holds the probability of yes.\n\nThe script also prints how long this request took from your machine.\n\nNow change the message to something more positive.\n\nRun the command again and compare the probabilities. The question stays the same, and only the state changes.\n\n### Add Choice and Score\n\nIn `all-questions.ts`, we use the original message and include all three helpers.\n\nThe request in that file looks like this.\n\nHere, `requestType` asks what the customer wants, and `frustrationLevel` asks how frustrated they sound. We're giving Jev the options for the first question and the descriptions of each level for the second.\n\nNotice that we're still making one call. All three questions use the same state, so we can send them together.\n\nRun the completed example with the following command.\n\nYou can access the main results using these fields.\n\nThe printed response also contains the probabilities and confidence values for Choice and Score.\n\n### Use an answer in your application\n\nAt the bottom of `all-questions.ts`, a simple condition uses the Noul result.\n\nHere, `0.8` is an illustrative threshold. You would tune it using your own messages and the kinds of mistakes you want to avoid. A result below the threshold simply leaves the message in the normal queue. It doesn't prove that the customer is happy.\n\nWe've used a console message to keep the example small. The same result could drive a support-queue update, an indicator beside the message, or another step in your application.\n\n## When should you use Jev, and when should you avoid it?\n\nJev is worth considering when your application needs a focused judgment about information. Here are a few examples.\n\n- Routing customer requests to the appropriate team.\n- Classifying documents into known categories.\n- Checking whether a passage supports a claim.\n- Selecting which model should handle a request.\n- Making quick judgments for a game or interactive interface.\n\nIt can also help decide the next step in an agent workflow. Your code determines which actions are allowed at the current step, and a Choice question asks Jev to select among them using the available state and goal. Your application then carries out the selected action. Jev supplies a judgment within the workflow, and the surrounding code still controls what it can do.\n\nTypeSafe's [use-case guide](https://docs.typesafe.ai/concepts/use-case-map) has more examples.\n\n### How we're using Jev in Agent-Native\n\nWe're using Jev in [Agent-Native](https://www.agent-native.com/), a framework for building agentic applications, to help choose the tools, skills, and resources an agent needs for a request.\n\nAs an application grows, its agent might have access to many tools and skills. Including all of them in every request adds more information for the LLM to process, even when most of it has nothing to do with what you're asking.\n\nWith Agent-Native, Jev evaluates each prompt and helps select the relevant tools, skills, and resources to include in the LLM's context. The LLM then works on the request with that information available. Jev handles the selection, while the LLM handles the reasoning and generation.\n\nThis is a useful way to combine the two. Jev makes a focused decision that keeps unnecessary information out of the context, which can reduce token usage and help the agent work more efficiently.\n\n### When should you use something else?\n\nIf you need to write a reply, summarize an article, or generate code, use a model that generates text. Jev can judge information involved in that task, but it won't write the result for you.\n\nFor tasks that need extended reasoning, such as solving a complex math problem or planning many steps ahead, TypeSafe recommends larger reasoning models. A quick judgment about the next action is different from working out an entire plan.\n\nAnd if you can calculate the answer exactly in code, do that. You don't need AI to check whether a basket contains three items. The same applies to arithmetic, counting, and comparing dates. TypeSafe documents these and other weaknesses on its [limitations page](https://docs.typesafe.ai/model-jaggedness/jev-1.13).\n\nWhen you're deciding whether to use Jev, ask yourself, **do I need a judgment about this information, can I define the possible answers, and does speed or repeated use matter?** If so, start with one small decision and test how Jev handles your examples.\n\n## Try it with your own data\n\nThe customer-message example gives you a small place to start. Replace the message with examples from your application, keep the question fixed, and compare the results. Include clear cases and ambiguous ones before deciding how your code should respond.\n\nFor support messages, try a polite complaint, a strongly worded complaint, a neutral request, and a message that doesn't give you enough context. Write down what you would expect for each one. Then check where Jev agrees, where it makes mistakes, and whether your review threshold catches the cases you care about.\n\nYou can also rephrase a message without changing its meaning and compare the judgments. This checks whether similar information gets a similar interpretation. You're looking for consistency in the judgment, rather than an identical numeric result every time you repeat a request.\n\nAs you add questions, choose Noul for a yes-or-no judgment, Choice for a category, or Score for a defined scale. Keep each question focused on a decision you actually need.\n\nYou can build on the [demo source code](https://github.com/gopinav/jev-demo) and use the [TypeSafe documentation](https://docs.typesafe.ai/introduction) as a reference.", "url": "https://wpnews.pro/news/what-is-jev-and-how-to-use-it", "canonical_source": "https://www.builder.io/blog/what-is-jev", "published_at": "2026-09-21 11:14:02+00:00", "updated_at": "2026-09-21 13:52:41.672780+00:00", "lang": "en", "topics": ["artificial-intelligence", "ai-products", "ai-tools", "large-language-models", "ai-startups"], "entities": ["TypeSafe", "Jev", "OpenAI", "GPT", "Anthropic", "Claude", "xAI", "Grok"], "alternates": {"html": "https://wpnews.pro/news/what-is-jev-and-how-to-use-it", "markdown": "https://wpnews.pro/news/what-is-jev-and-how-to-use-it.md", "text": "https://wpnews.pro/news/what-is-jev-and-how-to-use-it.txt", "jsonld": "https://wpnews.pro/news/what-is-jev-and-how-to-use-it.jsonld"}}