Every Jev request is built from typed questions. On Jev 1.13 there are exactly three types — Choice, Score and Noul — and Jev 1.14 adds an early fourth type, Box, for images. Picking the right one is most of the design work.
Choice: one option from a set
Use a Choice when the answer is one of several unordered options: a team, a category, a tool, a language.
"team": {
"type": "choice",
"instructions": "Which team should own this ticket?",
"criteria": {
"billing": "Charges, invoices, refunds and plan changes",
"technical": "Bugs, outages and broken features",
"account": "Sign-in, passwords and profile settings"
}
}
criteriais a map of option name → description. Both are sent to the model; the question id is not.- TypeSafe says Jev supports up to 255 options (launch post).
- The answer contains
choice(the most likely option),probabilitiesfor every option, andconfidence.
Confidence measures how concentrated the distribution is around the top option: 1.0 when all weight is on one option, falling toward 0 as it spreads (Wikipedia). It is not a correctness guarantee.
Score: a position on an ordered scale
Use a Score when the answer is a degree: severity, urgency, quality, relevance.
"severity": {
"type": "score",
"instructions": "How severe is this bug report?",
"criteria": [
"Cosmetic: nothing is functionally broken",
"Degraded: broken, but a workaround exists",
"Blocking: work is stopped, no workaround"
]
}
criteriais an ordered list, low to high. TypeSafe's docs say it should have at least two levels and the API accepts up to 10 (Score docs).- The answer's
scoreis the probability-weighted average of the level indexes, so 0.8 × level 1 + 0.2 × level 2 = 1.2. Alegendmaps indexes back to your descriptions. - Describe every level in words. Bare numbers ("1–5") give the model nothing to anchor on.
Noul: yes or no
Use a Noul for a single true/false proposition.
"wants_refund": {
"type": "noul",
"instructions": "Is the customer asking for money back?"
}
- Only
instructionsis required. - The answer is one number,
noul, between 0 and 1: the probability the answer is yes. There is no separate confidence — a value near 0.5 is the uncertainty signal (OpenRouter). - Phrase it as a proposition about the state, not as an open question.
Box (Jev 1.14, early)
Box locates something in an image and returns four edges as fractions of the image size plus a confidence. It has no "not found" answer, so pair it with a Noul. Jev 1.13 rejects Box with a 400 (OpenRouter).
Choosing a type
| If the answer is… | Use |
|---|---|
| One of several unrelated options | Choice |
| A degree on a scale | Score |
| True or false | Noul |
| Several independent facts | Several questions in one request |
Two design rules carry most of the accuracy:
- Decompose. Several small, atomic questions beat one broad one, and they cost one request because Jev answers them in parallel.
- Write criteria like a brief. Concrete, mutually exclusive descriptions with boundary cases ("refunds go to billing even if the user mentions a bug").
Questions in one request cannot see each other's answers. If one depends on another, make two calls.
See them in practice
The confidence lamp use case combines a Choice with confidence-based routing; support-ticket routing uses all three types. Both have copyable curl, Node.js and Python.
FAQ
What question types does Jev support?
Jev 1.13 supports exactly three: Choice (one option from a set), Score (a position on an ordered scale) and Noul (a yes/no probability). Jev 1.14 adds an early fourth type, Box, for locating things in images.
How many options can a Choice question have?
TypeSafe says Jev supports up to 255 Choice options. Criteria are a map of option name to description, and the answer returns the top choice, probabilities for every option and a confidence value.
How many levels can a Score have?
At least two, and the API accepts up to 10. Criteria are an ordered list from low to high, each level described in words; the returned score is the probability-weighted average of the level indexes.
Does a Noul answer include a confidence value?
No. A Noul returns a single probability between 0 and 1 that the answer is yes; a value near 0.5 is itself the uncertainty signal.
Run it on a real workflow
Each use case has a live demo, the exact question schema and copy-paste curl, Node.js and Python code for Flatkey.