Questions
The five question types, their criteria, and the answer each returns.
questions is a map from an id to a question. Ids are letters, digits, underscores and spaces, starting with
a letter or underscore. Each question has a type, instructions, and type-specific criteria.
Choose the type of answer your application needs: a decision, an ordered rating, a calculated quantity or a date.
| Type | Asks for | criteria |
Answer |
|---|---|---|---|
noul |
Is this true? | optional { "true": …, "false": … } |
noul, a probability 0 to 1 |
choice |
One of a set | option name → description, 2 to 255 options | choice, confidence, probabilities |
score |
A level on an ordered scale | ordered array of 2 to 10 levels | score, level, confidence, probabilities |
number |
A computed quantity | optional { "unit": …, "range": … } |
number, confidence |
date |
A computed date | none | date, confidence |
options is accepted as an alias for choice criteria and levels for score criteria, as in Jev.
Instructions and criteria
instructions describes the decision, including the policy conditions the generated rules must implement. It can be a string, an object or a list; structured content is
kept as canonical JSON text. Criteria describe each answer value in the words of your policy.
{
"is_urgent": {
"type": "noul",
"instructions": "Does this ticket need priority review?",
"criteria": {
"true": "An ongoing issue is blocking normal business operations.",
"false": "A general question or a non-blocking request."
}
},
"owner": {
"type": "choice",
"instructions": "Which team should own it?",
"criteria": { "payments": "money movement", "platform": "outages and errors", "other": "anything else" }
},
"severity": {
"type": "score",
"instructions": "How severe is it?",
"criteria": ["low", "medium", "high"]
},
"credit_days": {
"type": "number",
"instructions": "For how many days should service credit apply?",
"criteria": { "unit": "days", "range": "[0..365]" }
},
"respond_by": {
"type": "date",
"instructions": "By when must the customer receive an answer?"
}
}
The range of a number question is a condition, such as [0..1000] or > 0.
How a question becomes a decision
For every question there is exactly one decision in the model with the same name, typed by the question kind:
a noul is a boolean decision, a choice is a decision typed by its options, a score by its ordered levels,
a number and a date by their type. The generator may add intermediate decisions; it may not add outputs you
did not ask for.
Answers
This illustrative response shows the fields for each type; it is not a recorded execution of the questions above. Number and date outcomes require explicit policy rules, such as a credit period and response window.
{
"answers": {
"is_urgent": { "type": "noul", "noul": 0.98 },
"owner": { "type": "choice", "choice": "platform", "confidence": 1.0, "probabilities": { "platform": 1.0 } },
"severity": { "type": "score", "score": 2.0, "level": "high", "confidence": 1.0, "probabilities": { "2": 1.0 } },
"credit_days": { "type": "number", "number": 14, "confidence": 1.0 },
"respond_by": { "type": "date", "date": "2026-10-18", "confidence": 1.0 }
}
}
When every input is given as matching structured data, every answer is certain and the probabilities collapse to one value. When the reader had to extract an input, the reader’s uncertainty propagates through execution; answers may carry probability mass on more than one outcome. An input probability does not necessarily equal an answer’s confidence. See Determinism and confidence.