Jev in production: guardrails, routing and classification
A decision model answers a fixed question about a piece of text and returns a probability instead of a paragraph. Inside an application that makes it useful in four places: routing a request to a handler, gating an action on how sure the model is, checking a value that code already extracted, and screening what goes into and comes out of a language model. This guide covers each of those with Jev, TypeSafe's System One model, pattern by pattern, with the vendor's own figures marked as the vendor's and the limits stated at the start.
Published September 22, 2026. Editorial.
Key takeaways
- Keep control flow, deterministic rules and side effects in code, and give the decision model one narrow question at a time; TypeSafe's own design guide says the same.
- Every product moment is either a decision or a generation. Routing, gating, scoring and verifying are decisions and suit Jev; writing a reply or a summary is generation and still needs a language model.
- Confidence is a second axis. Act automatically above one threshold, confirm or escalate in the middle band, and send the low band to a person or another system, with a different threshold for each consequence.
- Jev screens input and output for a language-model app in one request, and gates an agent's tool calls before they run, but adversarial text in the state can still move its answer, so it is one layer of defence and never the only one.
- Reveneau builds agents and product features with Jev at the decision points and grades its own eval suite with it, which runs ten times faster on our suite than it did with a language model as the grader.
A support inbox receives a message that says "cancel my order and tell me why the charge was double". A language model can write a reply to it in a few seconds. Before that reply is worth writing, the application has to make several small decisions: which team owns this, whether it involves money, whether the person is angry enough that a human should read it first, and whether the message is trying to make the assistant ignore its instructions. Each of those is a question with a fixed set of answers. A single word answers each one.
That is the gap a decision model fills. Jev, released by TypeSafe AI on 15 September 2026 as the first public System One model, takes a state (a string, a JSON object or an array of text) and a map of named questions, and returns a typed answer with a probability for each one [1]. It never writes text. TypeSafe reports 70 to 500 milliseconds end to end and prices it at $0.042 per million input tokens with output free [2][3]. Those are the vendor's figures, and this guide marks them as such throughout.
This page is the map. It explains where a decision model fits in an application, which product moments are decisions and which are generation, the four patterns TypeSafe names and how we use them, the three places a decision model is worth using in the safety layer, and what running one in production asks of your operations. Each section links to the page that goes deeper. If you want the definitions first, Jev and System One models covers the three question types and how confidence is computed, and this guide assumes you have read it or will.
What a decision model does inside an application
Three question types cover everything Jev can answer. A Choice question picks one option from a list of up to 255 and returns the choice, a probability per option and a confidence number [4]. A Score question places the state on an ordered scale of 2 to 10 levels described in words, and returns the expected level as a number that can be between levels. A Noul question is a yes or no statement and returns one probability from 0 to 1, with no separate confidence number [1]. Every question in a request is answered in parallel and in isolation, and TypeSafe's introduction says "Adding questions barely changes the response time" [5].
The practical consequence is that a decision model behaves like a function your code calls, with a number coming back that your code can compare against a threshold. There is no prompt to parse, no JSON to repair, no retry because the model wrote prose instead of a value. TypeSafe describes this as an answer that always matches the schema (the exact answer format you asked for), and calls it "can't hallucinate" in its own material. Read that carefully: it means zero structured-output errors, and the answer can still be wrong [6]. We treat it as a typed function that is sometimes mistaken, which is exactly how we treat every other classifier.
TypeSafe's own coding-agents page is clear about what Jev is not for. It "is not a drop-in replacement" for the language model that runs a coding agent, meaning you cannot swap it in where a model writes code or text; it is used inside the application for routing, rubric scoring and statement verification [7]. Our AI agents in production guide covers the agent itself. This guide covers the decision points inside it.
The one rule: code owns the flow
TypeSafe's design guide opens with the sentence we would give any team adopting a decision model: "Keep control flow, deterministic rules, and side effects in code" [8]. The model answers a narrow question. Code decides what to do with the answer, applies the rules that have a fixed right answer, and performs the action. The model never calls a tool, never loops, never decides what to ask next.
That rule puts Jev in a middle position between two designs teams already know. Hard-coded rules are fast, cheap and fully predictable, and they cannot read a sentence. An agent loop can read anything, and every extra turn of the loop, in TypeSafe's words, is another chance for the run to go wrong [8]. A decision model gives you the reading without the loop: one request, one set of answers, and code in charge of everything before and after. Where a decision model fits in an application lays this out with the three anti-patterns TypeSafe names (broad questions, hidden context and agent loops) and a worked example.
The same guide says to break a broad judgment into atomic questions asked in parallel, then combine them in code with weights you control [8]. "Is this spam?" becomes three questions: does it ask for credentials, does the sender name mismatch the address, does it promise a reward. Each answer can be inspected, tuned and logged on its own, and the combination rule is a line of arithmetic you can read in a code review.
Which product moments are decisions
The fastest way to find where a decision model belongs is to go through the product and label each moment as a decision or a generation. A decision has a fixed set of possible answers. A generation produces new text, code or an image. Jev only does the first.
Four kinds of decision come up in nearly every product. Route: which handler, team, model or workflow should take this. Gate: should this action happen now, wait for confirmation, or go to a person. Score: how urgent, how risky, how complete, how satisfied. Verify: is this statement true of this document, does this extracted value match the source, did this reply follow the instruction. Every one of those maps to a Choice, a Score or a Noul question, and every one of them used to be done with a language-model prompt that asked for JSON and hoped.
Generation stays with a language model: the reply to the customer, the summary of the ticket, the code change, the draft email. A common shape is a language model doing the generation and Jev making the decisions around it, before the generation (routing, screening the input) and after it (screening the output, checking it against the source). TypeSafe's guardrail cookbook is exactly that shape, and Guardrails for an LLM app with one Jev request explains it step by step.
The four patterns
TypeSafe's patterns page names four ways to use a decision model, and each is a page in this guide or a section of one [9].
Intent routing classifies a request and sends it to the right handler: deterministic code, a specialist model or a human. A Choice question over the handlers does the work, and confidence decides whether to trust the answer. TypeSafe's skill-suggestion cookbook is a large example: it picks one skill out of 182 in two stages, a wide ranking over all of them and a re-check over the top three, and in TypeSafe's own test on 488 requests wrong loads fell from 16.8 percent to 7.3 percent [10]. Intent routing with Jev covers the option limit, the two-stage approach for large lists, and the "none of these" case.
Confidence-gated routing uses confidence as a second decision axis. TypeSafe's confidence page gives the bands: at 0.9 and above "Act automatically", below 0.5 route to a human, ask for clarification, or use a different system instead, and in between proceed with caution [11]. The same page says different actions in one system should be gated at different levels depending on the consequences. Confidence-gated routing: act, confirm, or escalate turns that into a table of gates and shows the pattern of escalating to a reasoning model only in the uncertain band, which TypeSafe's extraction cascade cookbook does with a cheap model, a Jev verification step and an expensive model in that order [12].
Composite scoring breaks a complex judgment into atomic scores and combines them with weights in code. TypeSafe's example scores a candidate on four dimensions from 0 to 4, normalises each to 0 to 1, and applies a different weight set for a senior engineer and for an engineering manager [13]. The advantage is that the final number has a formula you can read.
Speculative fan-out sends every question you might need in one call, including questions that may turn out to be irrelevant, and lets code discard the answers it does not use [14]. Because questions run in parallel, the extra questions cost tokens and almost no time. TypeSafe's batching cookbook measured 13 questions against the 53,777-character Wikipedia GDPR article: one batched call cost $0.000497 and took 0.27 seconds, against $0.006090 and 2.71 seconds for thirteen single calls, which TypeSafe reports as 12.2 times cheaper and 10.0 times faster, with the answers unchanged by what else was in the request [15].
A fifth use, extraction, is where teams most often misunderstand what a decision model can do. Jev cannot write out a value it found in a document. It can pick one from a list your code built. TypeSafe's pre-parsed extraction cookbook finds every email, phone number and money amount with regular expressions (text patterns), then asks a Choice question to pick the right one or "none" [16]. Extraction and verification with Jev covers that, the date cookbook that reads date parts as choices and does the arithmetic in code, citation checking against a source, and entity matching over 450 catalogue pairs.
Where a decision model belongs in the safety layer
Three of the pages in this guide are about safety, because that is where a fast, cheap, typed answer changes what is affordable.
The first is screening a language-model application. TypeSafe's guardrail cookbook asks one request per message with named questions (jailbreak, harmful_request, medical_advice, self_harm) and a severity score from 0 to 3, then routes on thresholds: 0.35 for review and 0.70 or 0.85 for action depending on how strict the policy is, with precedence support, block, review, pass [17]. The point of the design is that the screen costs one Jev request rather than a second language-model call, so it can run on every message in both directions. Openlayer's jevals library packages the same idea as a security namespace with PromptInjection, Jailbreak, PII, PHI and SecretsExposure among its checks, and reports a p50 of 244 milliseconds and a p95 of 371 milliseconds per request on its own benchmark [18]. A p50 is the time half of requests beat; a p95 is the time 95 percent beat.
The second is gating an agent's tool calls before they run. LangChain's harness post describes a middleware, code that sits between the agent and the tool, which uses Jev to classify a tool call's risk and block it before execution [19]. jevals has ToolCallRisk and ExcessiveAgency checks with approve, escalate and block outcomes [18]. Our version is a Noul question per side effect (a delete, a payment, an external send), each with its own threshold and a human confirmation step in the uncertain band. Gating agent tool calls before they run has the thresholds, and it uses Browser-use's Jev Ultrafast as the example of a decision model choosing actions: in six alternating runs of one Google Flights task, median time fell from 9.45 to 7.09 seconds and browser protocol calls from 1,092 to 101, with Browser-use's own caveat that this is one task and no general benchmark [20]. Our permissions and guardrails for AI agents page covers the permission model itself.
The third is the limit. TypeSafe's page on the model's known weaknesses says adversarial content in the state "can move the answer" [21]. A decision model is a screen, and a screen can be fooled, so it is never the only defence. Prompt injection and adversarial input explains how to separate untrusted text from instructions inside the state, keep questions narrow, add code checks such as allowlists and schemas, test with known attack strings and keep an audit log.
What running it in production asks of you
A decision model on the request path is a dependency with a rate limit, a version and a failure mode, and each of those needs an answer before launch.
TypeSafe publishes the limits: 1,200 requests per minute and 250,000 tokens per second, 64k tokens of context per request with 32k for the state plus the longest question [3]. The API (the web service your code calls) returns 429 when you exceed the limit and 529 when TypeSafe is overloaded, and the docs say to retry with exponential backoff, meaning a wait that doubles after each failure [22]. The Python SDK, TypeSafe's client library, has a default policy of two retries after the first attempt, starting at 0.5 seconds and capped at 5 seconds with 25 percent jitter, inside a 30-second budget [23]. Rate limits, retries and latency in production covers timeouts, the safe default action when Jev is unreachable, and batching to cut the request count.
Versions move. The current model is jev-1.13.0, and both aliases, jev-latest and jev-preview, point to it today. TypeSafe's models page says "An alias moves when a new release ships, so the answers behind it can change without a change on your side", and the response carries a model field with the versioned ID that answered [3]. Pin a version in production, keep a labelled set, and re-run it on every version change. Versions, drift and monitoring a decision model explains what to watch and what to alert on, including the probability distribution over time and the fact that English is the primary training language.
What it costs, in the vendor's numbers
TypeSafe's public price is $0.042 per million input tokens, or $42 per billion, and output tokens are free [3]. A route over a 500-token message therefore costs $0.000021 at the list price, and a guardrail screen of a 2,000-token conversation costs $0.000084. Those are arithmetic on the public price, so they are exact for the price and say nothing about volume discounts or future changes.
TypeSafe's headline benchmark reports Jev finishing a workflow decision in 0.114 seconds for $0.000081 against GPT-5.6 Terra at 8.566 seconds for $0.013880, which TypeSafe calls "193.6x faster and 444.6x cheaper" [6]. TypeSafe's own capabilities team wrote the workflows, and TypeSafe says it cannot prove the price is unsubsidised. Read it as the vendor's claim about the vendor's tasks. LangChain's independent test of Jev as an agent evaluator, five weather-agent cases with 100 repetitions each, measured 0.44 seconds per call at $0.00035 against 2.16 to 2.83 seconds for the language models it compared, with a full run costing $0.34 on Jev and $28.17 on Claude Sonnet 4.6 [24]. The authors call their result "promising, but early", and five cases is a small set.
Where Reveneau fits
Reveneau builds AI agents and product features, and we write all of our code with AI. Every change has to pass a large eval suite, written from the specification, before it is released, and we take responsibility for the whole project through production and after release. Jev sits in two places in that work.
Inside the products and agents we build, it takes the decision points: which handler a request goes to, whether an action runs or waits for a person, whether an extracted value matches the source, and whether a message going into or out of a language model needs review. Everything with a deterministic answer stays in code, and everything that generates text stays with a language model. This guide is the set of patterns we use.
Inside our own delivery, Jev grades the eval suite. Checks with a deterministic answer (a test passes, a schema validates, a migration holds) never go to Jev. The checks that used to need a language model as judge, such as whether a change matches a written acceptance criterion or whether an agent's trace followed the plan, are now a Noul or a Score question with the rubric written into the criteria. On our own suite, measured against our previous grader, the suite runs ten times faster. Evals with Jev explains how the grader is set up, and eval-driven development is the practice it belongs to.
We publish no client claims here and no defect rates, because we have not run the controlled experiment that would justify one. If you are building an agent and want the decision points designed this way, our AI development work is where we do it, and decision models for product teams is the version of this guide written for the person approving the build. If you would rather talk it through, contact us.
Sources
The numbered references below are the pages every figure on this page was read from, on 2026-09-22. Vendor figures are TypeSafe's, third-party figures belong to Openlayer, LangChain and Browser-use, and the one Reveneau figure is our own statement about our own suite.
Explore the guide
Patterns
Intent routing with Jev
Intent routing sends each incoming request to the handler that should take it: a piece of deterministic code, a specialist model or a person. With Jev it is one Choice question whose options are the handlers, returning a choice, a probability per option and a confidence number. This page covers how to write the options, what to do when the list is longer than the 255-option limit, how TypeSafe's skill-suggestion cookbook picks one of 182 skills in two stages, how to handle the request that fits none of the options, and what a route costs at the public price.
Confidence-gated routing: act, confirm, or escalate
A decision model returns two things: the answer, and how concentrated the probability was behind it. Confidence-gated routing uses the second as its own axis. TypeSafe's bands are the starting point: act automatically at 0.9 and above, send anything below 0.5 to a person or another system, and proceed with caution in between. This page turns those bands into a gate per action, sized by what a wrong answer would cost, shows the pattern of escalating to an expensive reasoning model only in the uncertain band, and lists what to log so the gates can be tuned from real outcomes.
Extraction and verification with Jev
Jev answers a fixed question with a choice, a score or a probability, so to extract a date or an amount from a document you give it the candidates. It picks one from a list your code built, and it can say whether a statement is true of a document. That makes extraction a two-step job: code over-finds candidates with a parser or a regular expression (a text pattern), and a Choice question selects the right one or none. This page covers that pattern from TypeSafe's cookbooks, date extraction done as parts with the arithmetic in code, citation checking against a source, entity matching across 450 catalogue pairs, and the counting and date weaknesses that shape all of it.
Safety
Guardrails for an LLM app with one Jev request
A guardrail screens what goes into a language model and what comes out of it. With Jev, each screen is one request carrying a set of named questions (jailbreak, harmful_request, medical_advice, self_harm) and a 0 to 3 severity score, answered in parallel and returned as probabilities. TypeSafe's cookbook routes on two thresholds, 0.35 for review and 0.70 or 0.85 for action, with a precedence order of support, block, review, pass. This page explains the design, why it costs one decision-model request instead of a second language-model call, and how Openlayer's jevals packages the same idea as a security namespace.
Gating agent tool calls before they run
An agent that can delete a record, send a payment or email a customer needs a check between deciding to do it and doing it. With Jev that check is a Noul question per side effect, asked about the proposed call and its arguments before the tool runs, with a threshold set by what the action would cost if wrong and a human confirmation step in the uncertain band. This page lays out that design, what LangChain's middleware and Openlayer's ToolCallRisk check do, and what Browser-use's Jev Ultrafast shows about a decision model choosing an agent's actions, with Browser-use's own caveat attached.
Prompt injection and adversarial input: what Jev can and cannot catch
Prompt injection is text that a person or a document puts in front of a model to make it do something other than what the application asked. TypeSafe's page on Jev's known weaknesses says adversarial content in the state can move the answer and that the model does not treat content as hostile by default. So a Jev screen catches some injection and can be fooled by the rest, which makes it one layer of defence. This page covers how to build the state so untrusted text is marked as such, how to write questions that resist manipulation, which checks belong in code regardless, how to test with known attack strings, and what to log so a bypass can be found afterwards.
Operate
Rate limits, retries and latency in production
A decision model on the request path is a dependency with a rate limit, a latency and a failure mode, and each needs an answer before launch. TypeSafe publishes 1,200 requests per minute and 250,000 tokens per second, returns 429 when you exceed them and 529 when it is overloaded, and says to retry both with exponential backoff, which its client libraries do by default. TypeSafe reports 70 to 500 milliseconds end to end, and Openlayer measured a p50 of 244 and a p95 of 371 milliseconds on its own benchmark. This page turns those into a timeout, a safe default action, a retry budget and a batching plan.
Versions, drift and monitoring a decision model
A decision model's answers can change without any change in your code, because the alias your client points at moves when the vendor ships a new release. TypeSafe says so on its models page: jev-latest and jev-preview both point to jev-1.13.0 today, and an alias moves with each release. This page is the operating routine we use to keep a decision model reliable: pin a version, read the model field on every response, keep a labelled set and re-run it before any version change, watch the probability distribution over time so drift shows up before a user notices, and alert on the few numbers that mean something.
Common questions
What is a decision model used for inside an application?
Four things: routing a request to a handler, gating an action on how sure the model is, scoring something on a rubric, and verifying a statement against a document. Each has a fixed set of answers, so a Choice, Score or Noul question covers it. Anything that produces new text, such as a reply or a summary, is generation and stays with a language model. TypeSafe's own docs say Jev cannot replace the model running a coding agent.
Where should the control flow live when using Jev?
In code, always. TypeSafe's design guide says to keep control flow, deterministic rules and side effects in code and to give the model one narrow question at a time. The model returns a probability; your code compares it with a threshold, applies any rule with a fixed answer, and performs the action. The model never calls a tool or decides what to ask next, which is what removes the loop an agent would otherwise run.
How do I decide whether a product moment is a decision or a generation?
Ask whether the answer comes from a fixed list. Which team owns this, should this run, how urgent is it, and is this claim supported by the source all have fixed answers and are decisions. Write the reply, summarise the thread and draft the email produce new text and are generation. A typical shape is a language model doing the generation with Jev making the decisions before it (routing, input screening) and after it (output screening, source checks).
What confidence thresholds does TypeSafe recommend?
The confidence page gives three bands: at 0.9 and above act automatically, below 0.5 route to a human, ask for clarification or use a different system, and in between proceed with caution. It adds that different actions within the same system should be gated at different levels depending on the consequences, so a read-only lookup can run at a lower confidence than a payment. Start conservative and adjust from logged outcomes.
Can Jev extract a value such as a date or an amount from a document?
Only by selection. Jev never writes a value out, so code has to find the candidates first. TypeSafe's pre-parsed extraction cookbook uses regular expressions to find every email, phone number and money amount, then asks a Choice question to pick the right one or none. Its date cookbook reads month, day and year as separate Choice questions and does the calendar arithmetic in code, because the jaggedness page says the model reads dates as text.
How does a Jev guardrail differ from asking a second language model to check the message?
It is one typed request instead of a second generation. TypeSafe's guardrail cookbook asks named questions (jailbreak, harmful_request, medical_advice, self_harm) plus a 0 to 3 severity score in one call and routes on thresholds of 0.35 for review and 0.70 or 0.85 for action. Because the answers are probabilities rather than prose, there is nothing to parse, and because the request is cheap and fast the screen can run on every message in both directions.
Can a decision model stop prompt injection?
It can screen for it and it can be fooled. TypeSafe's jaggedness page says adversarial content in the state can move the answer, so treat a Jev screen as one layer. Put untrusted text in its own field of the state and keep the instructions separate, ask narrow questions, add code checks such as allowlists and schema validation on anything the model's answer permits, test with known attack strings before release, and log every decision so a bypass can be found afterwards.
How should an agent's tool calls be gated with Jev?
With a Noul question per side effect, asked before the tool runs, and a threshold set by the consequence. A read has a low threshold, a delete or a payment a high one, and the uncertain band goes to a person for confirmation. LangChain's harness post describes a middleware that classifies tool-call risk with Jev and blocks the call before execution, and Openlayer's jevals ships ToolCallRisk with approve, escalate and block outcomes. Code performs the action, never the model.
What are Jev's rate limits and what happens when they are exceeded?
TypeSafe publishes 1,200 requests per minute and 250,000 tokens per second. Exceeding them returns a 429, and an overloaded service returns a 529 with the message that TypeSafe is temporarily overloaded. The docs say to retry both with exponential backoff, a wait that doubles after each failure. The Python SDK's default policy is two retries starting at 0.5 seconds, capped at 5 seconds with 25 percent jitter, inside a 30-second total budget per call.
Should production code use the jev-latest alias or a pinned version?
A pinned version. TypeSafe's models page says an alias moves when a new release ships, so the answers behind it can change without a change on your side. Today jev-latest and jev-preview both point to jev-1.13.0. Pin the versioned ID, read the model field in every response to confirm what answered, keep a labelled set of past decisions, and re-run it before moving the pin so a shift in probabilities is caught before it reaches a user.
How much does a Jev request cost?
TypeSafe's list price is $0.042 per million input tokens with output free, so a route over a 500-token message costs $0.000021 and a screen of a 2,000-token conversation costs $0.000084. Those are arithmetic on the public price. Because questions run in parallel, batching cuts cost further: TypeSafe's cookbook measured one call with 13 questions at $0.000497 against $0.006090 for 13 separate calls, a 12.2 times difference on the same document.
How does Reveneau use Jev?
In two places. Inside the agents and products we build it takes the decision points: routing, gating, scoring and verification, with deterministic rules and side effects kept in code. Inside our delivery it grades our eval suite: checks that used to need a language model as judge are now Noul or Score questions with the rubric in the criteria, and on our own suite, measured against our previous grader, the suite runs ten times faster. We publish no client figures.
References
- [1] TypeSafe docs, System One concepts: input is a state (string, object or array of text) plus a map of named questions; output is a typed answer per question with probabilities; Jev does not generate text.
- [2] TypeSafe, Introducing System One models and Jev (15 September 2026): 70 to 500 ms end to end against 3 to 329 seconds for frontier LLMs in TypeSafe's comparison; trained with Reinforcement Learning for Calibrated Decisions.
- [3] TypeSafe docs, Models: jev-1.13.0, aliases jev-latest and jev-preview; $0.042 per million input tokens, output free; 64k context, 32k for state plus the longest question; 250,000 tokens per second and 1,200 requests per minute; English is the primary training language; the response model field reports the versioned ID that answered.
- [4] TypeSafe docs, Choice: accepts up to 255 options; returns choice, probabilities and confidence; recommends an other or none of the above option when the list might not cover every input.
- [5] TypeSafe docs, Introduction: every question is evaluated in parallel and in isolation; Adding questions barely changes the response time.
- [6] MarkTechPost, TypeSafe AI releases Jev (19 September 2026): 0.114 s for $0.000081 against GPT-5.6 Terra at 8.566 s for $0.013880, reported by TypeSafe as 193.6x faster and 444.6x cheaper; the workflows were written by TypeSafe's own capabilities team; architecture undisclosed.
- [7] TypeSafe docs, Coding agents: Jev is not a drop-in replacement for the LLM behind a coding agent; used inside the application to route, score on a rubric and check whether a statement is true of a document before taking an action.
- [8] TypeSafe docs, How to build with System One: Keep control flow, deterministic rules, and side effects in code; break broad judgments into narrow typed questions; anti-patterns broad questions, hidden context and agent loops.
- [9] TypeSafe docs, Patterns: speculative fan-out, confidence-gated routing, composite scoring and intent routing.
- [10] TypeSafe docs, Skill suggestion cookbook: 182 skills, a wide Choice ranking then a re-check of the top three; on 488 requests wrong loads fell from 16.8% to 7.3% and needless loads from 9.8% to 4.0%; 0.30 thresholds at both stages.
- [11] TypeSafe docs, Confidence: 0.9 and above Act automatically; below 0.5 route to a human, ask for clarification, or use a different system instead; different actions within the same system should be gated at different levels depending on the consequences.
- [12] TypeSafe docs, SDE cascade cookbook: gpt-5.4-mini extracts, jev-1.12 verifies each field with a Noul, gpt-5.5 re-extracts when any field flag exceeds 0.7; 100 prompts.
- [13] TypeSafe docs, Composite scoring pattern: four 0 to 4 dimensions normalised to 0 to 1 and weighted in code; senior IC weights 40/10/40/10 and engineering manager 15/40/20/25.
- [14] TypeSafe docs, Speculative fan-out pattern: send many questions in a single call, including speculative ones, and let your code decide what is relevant.
- [15] TypeSafe docs, Parallel questions cookbook: 13 questions against the 53,777-character GDPR article; one batched call $0.000497 and 0.27 s against $0.006090 and 2.71 s for 13 single calls; 12.2x cheaper, 10.0x faster; standard deviation 0.0 across five repeats for 11 of 13 questions.
- [16] TypeSafe docs, Pre-parsed value extraction cookbook: regex finds emails, phone numbers and money amounts; a Choice question picks one candidate or none; a Noul decides credit or charge at 0.5.
- [17] TypeSafe docs, LLM guardrails cookbook: questions jailbreak, harmful_request, medical_advice, self_harm and a 0 to 3 severity score; review threshold 0.35; action threshold 0.70 (strict) or 0.85 (permissive); severity block at 2.0; precedence support, block, review, pass.
- [18] Openlayer, jevals README (MIT, alpha, 20 September 2026): 37 evals; security namespace includes PromptInjection, Jailbreak, PII, PHI, SecretsExposure; ToolCallRisk gates tool execution with approve, escalate and block; Jev p50 244 ms and p95 371 ms per request on Openlayer's benchmark; $0.03 per 1,000 samples against $2.60 for Ragas on GPT-4.1-mini.
- [19] LangChain, Building a harness with Jev (17 September 2026): langchain-typesafe package, TypeSafeClassifier, ModelRouterMiddleware, and a middleware that classifies risky tool calls with Jev and blocks them before the tool executes.
- [20] Browser-use, Jev Ultrafast README (16 September 2026): operation and target chosen in one request from an indexed element table; six alternating runs of one Google Flights task, median 9.450 s to 7.092 s, browser protocol calls 1,092 to 101; Browser-use says this is not a general reliability benchmark.
- [21] TypeSafe docs, Model jaggedness jev-1.13: reads dates as text; does not count reliably; accuracy falls as the state grows with unrelated content; adversarial content in the state can move the answer.
- [22] TypeSafe docs, API reference: POST /v1/systemone; 401 invalid key, 422 validation, 429 rate limit, 529 TypeSafe is temporarily overloaded; retry 429 and 529 with exponential backoff.
- [23] TypeSafe docs, Python SDK RetryPolicy: max_retries=2, retryable statuses 408, 429 and 500 to 599, backoff_initial=0.5, backoff_max=5.0, backoff_jitter=0.25, timeout=30.0 total budget; respects Retry-After.
- [24] LangChain, Can Jev be a better agent evaluator? (20 September 2026): five cases, 100 repetitions per judge; Jev 0.44 s per call at $0.00035 against 2.16 to 2.83 s for the LLMs; full run $0.34 with Jev and $28.17 with Claude Sonnet 4.6; promising, but early.
Related reading
Can you trust an AI agent with real work yet?
An agent that answers a question and an agent that takes an action are not the same risk. Here is how we decide where an agent is ready to act, and where it is not.
How to audit an AI agent's tool permissions
An agent that can call more tools than its task needs is a permanent risk, and most teams find that out by reading an incident report instead of an audit.
AI evaluation and guardrails for production: how to know your AI actually works
"It seems to work" is not a production standard. Here is how we turn that feeling into a number, and how we stop the system from doing damage on the days the number is bad.
How to decide if a feature needs a human in the loop
Most teams answer this based on how they feel, then discover the rule in an incident review. Four questions decide it properly, and only one of them is about accuracy.
What a decision model changes about agent safety
A safety check that answers in under half a second and costs a fraction of a cent can run on every message and every tool call. Here is what that changes for an agent in front of real users, and the one thing it does not change.
How to tell a System One task from a System Two task
If the possible answers can be written down before you ask, the task repeats at volume, and nobody needs a written reason, a fast decision model can do it. Everything else needs a language model or a person. Here is the rule, with three features walked through it.