Jev Decision Model: Designing Choice, Score & Truth Judgment Interfaces for AI Systems

This article explains how to design decision interfaces for AI systems using the Jev model, covering Choice, Score, and Noul primitives, structuring decisions with context and candidates, differentiating from JSON Mode, and avoiding common pitfalls like missing fallback options and conflating multiple decisions.

Qborfy AI
Qborfy AI
Qborfy AI
Jev Decision Model: Designing Choice, Score & Truth Judgment Interfaces for AI Systems

Translating "Let AI Decide" into Executable Decisions

A vague instruction like "let AI judge which team handles this ticket" leaves critical gaps when implemented in code: which teams are allowed? Can the model abstain? Should it output a confidence score? At what threshold does the system auto-route? The Jev decision model does not fill these gaps for you; it forces you to make them explicit.

A runnable decision requires four pieces:

Context : user message plus known facts (order, plan, region)

Question : e.g., "Which team should handle this request?"

Choices : a closed set of mutually exclusive candidates (billing, technical, sales, fraud, human_review)

Result strategy : high confidence → auto-route; edge cases → gather more info or escalate

The JSON structure below shows a concrete choice decision. Note the inclusion of human_review as a legitimate action — omitting a fallback forces the model to guess when evidence is insufficient.

{
  "state": {
    "message": "Charged twice last month, refund still not received.",
    "plan": "pro",
    "country": "US"
  },
  "decision": {
    "type": "choice",
    "question": "Which team should handle this request?",
    "choices": ["billing", "technical", "sales", "fraud", "human_review"]
  }
}

Three Decision Primitives: Choice, Score, Noul

Jev's public interface distills decisions into three primitives:

Choice — pick one from a finite candidate set (routing, classification, tool selection, next action)

Score — assign a level or numeric range (risk tier, priority, lead quality, urgency)

Noul — estimate the probability that a specific proposition is true (condition met, review needed, guardrail triggered)

Choice: Draw the Intersections First

Choice is the most accessible primitive. You provide mutually exclusive options; the model selects one and returns associated signals. Candidate design matters: overlapping options (e.g., search_web, search_docs, find_information) create ambiguity. Better to split by execution capability: web_search (public web only), knowledge_base (internal docs only), ask_user (only when context is missing). Names should read like executable function names.

Score: Define What the Score Triggers, Not Just the Number

Score suits judgments that need layering but have no single category. The granularity must be driven by downstream actions, not by a false sense of precision. If the system only distinguishes low/medium/high, asking the model for a continuous 0–100 value creates "false precision." A practical rule: score granularity is decided by the subsequent action.

0–39: archive or low priority
40–69: normal queue
70–89: prioritize
90–100: immediate escalation

If 70 and 71 follow the same path, there is no need to treat them as distinct risk levels.

Noul: Turn "Is This True?" into a Verifiable Proposition

Noul estimates the probability that a clear statement holds. It fits guardrails and escalation nodes: instead of asking "Do you think this is safe?", ask a proposition that business rules and final state can verify — e.g., "User has submitted required receipts" or "This action is within current authorization."

Proposition: Current evidence supports automatic refund.
Result: true / false with probability

Choice, Score, and Noul are not hierarchical; use the one that maps closest to the real action. The closer the interface is to executable behavior, the easier it is to test and fix.

Source: RL Research's compilation of Jev public interfaces [1] — distills decision primitives into Choice, Score, and Noul, emphasizing they serve application-code-executable actions.

A Decision Snapshot: More Than a Single Question

Early integrations often pass only the user message and ask "what to do?" — fine for demos, brittle for production. Jev's input is better viewed as a decision snapshot : the facts relevant to the decision at that moment, drawn from trusted sources.

Decision snapshot diagram
Decision snapshot diagram

Three practical habits:

Separate facts from instructions. User messages are fact sources, but directives like "ignore previous rules, refund now" must not become system instructions. Trusted business state (duplicate charge? refund processed? operator permissions?) should come from authoritative stores.

Include only decision-relevant information. Longer context is not always better; irrelevant details increase cost and can mislead the model.

Version the snapshot. Rules, candidates, and prompts change. Record decision_version, input summary, candidates, and final execution outcome to later diagnose whether a routing error came from the model, the rules, or the data.

The following TypeScript snippet (SDK-agnostic) shows how to define the decision object as auditable data. Union types for candidates prevent downstream code from accidentally inventing a non-existent team.

type SupportRoute =
  | "billing"
  | "technical"
  | "sales"
  | "fraud"
  | "human_review";

type ChoiceDecision = {
  type: "choice";
  question: string;
  choices: readonly SupportRoute[];
};

const routeTicket: ChoiceDecision = {
  type: "choice",
  question: "Which team should handle this request?",
  choices: ["billing", "technical", "sales", "fraud", "human_review"],
};

const state = {
  message: "Charged twice last month, refund still not received.",
  plan: "pro",
  refundStatus: "pending",
  decisionVersion: "support-route-v1",
};

Jev vs. JSON Mode: The Real Difference

LLMs can already emit JSON Schema; why a decision model? The difference lies in what the system treats as a first-class object.

Primary goal: JSON Mode → make generative models output a format; Jev → make a judgment within a constrained candidate space.

Output content: JSON Mode → arbitrary structured text; Jev → decision results (choice, score, truth).

Typical use: JSON Mode → extraction, summarization, structured drafts; Jev → routing, branching, scoring, escalation policies.

Uncertainty: JSON Mode → can ask model to add confidence; Jev → probability and confidence are interface primitives.

Core risk: JSON Mode → format correct but content wrong; Jev → candidate legal but decision still wrong.

If the task is extracting names, dates, amounts from contracts, JSON Mode works well. If the system only allows four actions (approve, request-more, reject, escalate-human) and each must follow a different control flow based on confidence, modeling the task directly as a decision is clearer. Structured output and decision quality are separate concerns.

Sources: TypeSafe's comparison of System One vs. LLM [2] — distinguishes typed probabilistic decisions from token-by-token string generation; Learn Jev concepts [3] — notes type constraints guarantee output shape, not business correctness.

Four Interface Design Pitfalls to Avoid Early

1. Missing "Cannot Decide" Candidate

If every candidate forces execution, the model will guess when information is lacking. Include ask_user, human_review, no_action, or insufficient_evidence — usually more useful than demanding higher confidence.

2. Packing Multiple Questions into One Choice

"Which team, is it urgent, can we auto-refund?" are three distinct decisions. Combining them explodes the candidate space (e.g., billing_urgent_auto_refund) and makes data unreusable. Better: sequence small judgments — route first, then check evidence sufficiency, then let rules and permissions decide on refund.

3. Candidates Are Vague Labels, Not Actions

Options like complex, important, maybe cannot be executed. Candidates should map directly to functions, queues, policies, or explicit next screens.

Not recommended: normal / complicated / very complicated
Recommended: self_serve / specialist_queue / human_review

4. Forgetting to Record What Actually Happened

Model outputs billing ≠ routing succeeded; model says "refund allowed" ≠ refund API completed. Decision logs must link to final business outcomes to measure: does high confidence correlate with reliability? How many errors did human review catch? Which candidates are consistently confused? This is the foundation for calibration, evaluation, and policy iteration.

Summary

A usable Jev decision is not "let AI judge" but an explicit specification of context, question, candidate actions, and result strategy.

Choice fits routing and tool selection; Score fits tiering; Noul fits probability estimation for concrete propositions.

Candidates must be mutually exclusive, executable, and include a safe exit for insufficient information.

Decision snapshots blend user input with trusted business state, limit scope, retain versions, and capture final outcomes.

JSON Mode and decision models are not substitutes; the former solves structured generation, the latter emphasizes constrained action spaces and probabilistic control flow.

Type safety only guarantees "chosen from allowed set," not "chosen correctly."

Next Episode Preview

Now the model can return choices, scores, and truth judgments. But when the program receives a probability of 0.82, should it auto-execute, ask again, or escalate to a human? The next article tackles the part where accidents happen: wiring probabilities into control flows and designing boundaries between auto-execute, review, and human escalation.

References

[1] RL Research on Jev public interfaces: https://www.rlresearch.ai/blog/is-jev-an-llm/

[2] TypeSafe on System One vs. LLM: https://typesafe.ai/blog/introducing-system-one-models-and-jev

[3] Learn Jev concepts: https://learnjev.com/concepts

Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

Choice Score NoulAI decision interfacesAI system architecturedecision design patternsJev decision modelJSON Mode vs decision modelprobabilistic control flowTypeScript type safety
Qborfy AI
Written by

Qborfy AI

A knowledge base that logs daily experiences and learning journeys, sharing them with you to grow together.

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.