Skip to main content
A question is an observation. The model returns evidence. Your thresholds decide accept or review. Put the decision in review. Leave it out of instructions. “Only pick billing if you are sure” changes the answer. minSelectedProbability changes the result. Ask for something a person could see in the ticket. Ticket age, plan entitlements, counts, and date math belong in your code. Question ids are stable keys: lowercase, starting with a letter, then letters, digits, or _, at most 64 characters. Ids in one document are unique.

Choice

Mutually exclusive options. Include other when the set is not closed.
The answer is { "type": "choice", "choice": "billing", "probabilities": { ... } }. Option descriptions are what the model matches against. Option keys are what you store.

Score

Two to ten ordered levels. Each level describes a situation. “Low”, “medium”, and “high” are not situations.
The answer is { "type": "score", "score": 1.4, "probabilities": { ... } }. The score is a number. The review range is inclusive on that number. Level index 0 is the first string in criteria.

Boolean

Whether a statement is true. The answer is a probability, not a hard boolean. 0.5 is the middle of that probability. It is not a third category.
criteria is optional. When you set it, include both true and false.

Starter triage pack

A new pack is created with these five questions. Defaults: choice floor 0.7, score review range [1, 2], boolean review band (0.35, 0.65). When those ids are present, the result may include derived: derived is omitted when none of those ids are answered. It is not a second policy language.

Document

A pack document is { "questions": [ ... ] } with at least one question. review is stored with the question and is not sent to the model.