the short answer
Jev has three typed question primitives. Choice selects one option from a defined set and returns every option’s probability plus confidence. Score rates state against ordered descriptive levels and returns an expected score, level probabilities and confidence. Noul evaluates one yes/no condition and returns the probability of yes. Choose by the meaning of the answer, not the desired UI.
- Choice
- One option relative to other listed options
- Score
- Degree across ordered descriptive levels
- Noul
- Probability of one yes/true condition
- Batching
- Independent questions can share one state in one request
Start with the Shape of the Answer
The output shape is a modeling decision, not formatting. “Which team owns this ticket?” compares candidates, so it is a Choice. “How urgent is it?” uses ordered descriptions, so it can be a Score. “Does it request a refund?” tests one condition, so it is a Noul. Start with that plain-language question before writing criteria.
Which Primitive Should You Use?
| Need | Primitive | Example |
|---|---|---|
| Pick exactly one known route | Choice | Billing, technical, account or other |
| Measure an ordered semantic degree | Score | Can wait, this week or today |
| Test one condition independently | Noul | Does this request ask for a refund? |
| Return an arbitrary name or paragraph | None | Use extraction code or a generative model |
Start with the Output Contract, Not the Model Category
Several alternatives can return JSON, but JSON is transport rather than semantics. LangChain’s structured-output documentation describes constraining a generative model to a schema. Jev instead exposes bounded decision primitives and distributions. A trained classifier learns its answer boundary from examples; a rule executes a boundary written in code.
| Required output | Strong baseline | What must be validated |
|---|---|---|
| Exact Boolean from known fields | Code or rules | Input parsing, invariants and edge cases |
| One label from a stable taxonomy | Classifier, structured LLM or Jev Choice | No-match behavior, class errors and drift |
| Several labels that may coexist | Independent classifiers or Jev Nouls | Per-label calibration and label dependencies |
| Ordered qualitative level | Ordinal classifier, structured judge or Jev Score | Rubric order and ordinal error |
| Unknown extracted value | Parser, retrieval or generative structured output | Source support and schema validity |
| Explanation or proposed remediation | Generative LLM or human | Evidence faithfulness and usefulness |
The Same Ticket Can Require All Three Primitives
These questions share evidence but do not mean the same thing. A billing ticket can be routine or critical, and it may or may not request a refund. Combining them into one label such as critical_billing_refund creates a brittle taxonomy with many rare combinations. Separate results preserve meaning and let application code apply a different threshold or review rule to each decision.
If the route labels are unrelated categories, do not use Score merely because a database stores them as 1, 2 and 3. Billing is not “less than” technical support. Conversely, urgency is ordered, so a Score rubric can describe a meaningful progression. The Score-versus-Choice guide works through this distinction.
| Decision about the ticket | Correct primitive | Why |
|---|---|---|
| Billing, technical, account or other? | Choice | The approved routes compete and one route should win |
| Routine, time-sensitive or critical? | Score | The levels move from lower to higher urgency |
| Does the customer explicitly request a refund? | Noul | The condition can be assessed independently of route and urgency |
Choice Is a Relative Decision
Choice selects among criteria keys supplied in the request. Its probabilities compare those options and approximately sum to one. Include an explicit no-match option when none may fit. Do not force unrelated labels into one Choice merely because the UI displays one result.
Choice confidence summarizes how concentrated the distribution is. It does not prove that the candidate set is complete, the state is sufficient or the selected label is true. A confident choice among bad options is still a bad workflow.
Score Uses an Ordered Semantic Rubric
Score criteria are ordered descriptions whose positions define their levels. The returned score is the probability-weighted expected position and may be fractional. Each level must describe a meaningful situation on its own. Jev 1.13 documentation warns against using Score to reconstruct exact numbers or perform arithmetic.
Noul Is a Yes Probability
A Noul asks whether one condition is true and returns a value from zero to one. A value near 0.5 means the yes and no outcomes have similar probability; it does not mean medium intensity. When labels are independently applicable, one Noul per label is more faithful than a Choice.
Noul has no separate confidence field. Calling the Noul value “confidence” obscures whether the value means probability of yes or certainty in a selected answer.
Common Primitive Mistakes
- Using Choice when several labels may apply independently.
- Using Score for exact numeric extraction, counting or arithmetic.
- Treating a Noul near 0.5 as medium severity.
- Assuming a Choice probability and equivalent Noul must match.
- Omitting no-match when the candidate set may not contain the answer.
- Packing several independently useful judgments into one vague instruction.
Questions in One Request Cannot Depend on Each Other
TypeSafe says multiple questions over shared state are evaluated independently and in parallel. The urgency question cannot read the route selected by the Choice beside it. Batch questions only when each can be answered from the original state. If a second decision needs the first result—for example, choosing a billing specialist only after selecting billing—make the first request, validate its response, construct the permitted specialist list in code and then make a second request.
Parallel evaluation is an interface property, not a guarantee of constant end-to-end latency. Payload size, question count, provider queues, rate limits and retries still affect the complete path. See multiple questions in one call for the dependency pattern and error handling for system behavior outside the model.
Changing a Primitive Creates a New Evaluator
Moving from one Choice to several Nouls changes the statistical question. Choice probabilities are relative to the listed candidates; each Noul tests its label independently. Their values need not match, and an old threshold must not be copied across. The same applies when replacing a vague Score with a Choice or rewriting criteria. Treat primitive, question, criteria, state projection and resolved model as one versioned instrument.
Before migration, freeze representative labeled cases and preserve the old raw distributions. Run old and new designs side by side, compare class errors, calibration, automation coverage and review volume, and inspect disagreements by slice. Promote only when the new design improves the operational target without hiding a costly error. The Choice-versus-Noul guide, evaluator scorecard and regression-testing guide provide the detailed protocol.
FAQ
What is Noul in Jev?
Noul is a yes/no primitive that returns the probability that its yes or true condition holds. It is a number from zero to one and has no separate confidence field.
Can Choice select multiple labels?
Choice selects one option. If labels can apply independently, ask one Noul per label or redesign the answer space.
Why can a Jev Score be fractional?
Score is the probability-weighted expected position across ordered levels, so uncertainty spread over adjacent levels can produce a value between their integer positions.
Can Jev answer multiple primitives in one request?
Yes. Choice, Score and Noul questions can share one state in one request. TypeSafe says they are evaluated independently, so one answer cannot depend on another answer from that same call.
Sources
Checked against the sources below on September 22, 2026. Model versions, prices and limits change.
- TypeSafe AI docs: Primitives
- TypeSafe AI docs: Introduction
- TypeSafe AI docs: Confidence
- TypeSafe AI docs: Jev 1.13 jaggedness