DocsHow it works
How it works
Send a text and your questions; decisio reads the text once and gives a probability for every option, in one call, with no text generated.
A support ticket and three questions about it:
curl http://127.0.0.1:8000/v1/systemone \ -H 'Content-Type: application/json' \ -d '{ "state": "I was charged twice for October. Both charges are 49.00 EUR, same day. Please refund one.", "questions": { "urgent": { "type": "noul", "instructions": "Does this ticket need a response within the hour?" }, "queue": { "type": "choice", "instructions": "Which team should handle this ticket?", "criteria": { "billing": "Invoices, payments, refunds, prices, VAT", "access": "Login, passwords, two-factor, SSO, permissions, invitations, account security", "bug": "The product behaves wrongly: errors, crashes, wrong numbers, lost data", "feature": "A request for something the product does not do yet", "cancellation": "Cancelling, pausing or closing an account, deleting data", "other": "Press, partners, jobs, sales pitches, wrong address, thanks, general questions" } }, "impact": { "type": "score", "instructions": "Rate the business impact using only the reported facts.", "criteria": [ "No function impaired", "One user impaired, with a workaround", "Many users blocked from a core function", "Data loss or legal exposure" ] } }}'Run against the CPU stand-in at v0.35.0 on 2026-10-26: the answers are the stand-in's, not the default model's.
{ "answers": { "urgent": { "type": "noul", "noul": 0.159 }, "queue": { "type": "choice", "choice": "billing", "probabilities": { "billing": 0.962, "access": 0.011, "bug": 0.016, "feature": 0.004, "cancellation": 0.005, "other": 0.003 } }, "impact": { "type": "score", "probabilities": { "0": 0.256, "1": 0.648, "2": 0.053, "3": 0.042 } } }}Recorded output.
Recorded decision: Gemma 4 31B, decisio 0.17.0, RTX PRO 6000 at 600 W, 2026-10-19, on the plain layout; record 1 of 60 of decisio-examples' support-routing run, sent again on that release; the response is abridged and its probabilities are rounded to three places.
1. The request flow
Section titled “1. The request flow”- The text is read once per request, and every question is answered from that read.
- On the default model the questions are answered together; on the other two, one after another. Either way they pick the same options on every item measured.
- A later request about the same text starts from what was read, so it is quick, when it asks the same questions; under the plain layout, any question does.
2. One decision and its probabilities
Section titled “2. One decision and its probabilities”Figure · One pass
A question is one prompt; its answer is read at one position, with no text generated.
The text is read once per request, and every question starts from that read. The letters are the options, in order.
Recorded decision: Gemma 4 31B, decisio 0.17.0, RTX PRO 6000 at 600 W, 2026-10-19, on the plain layout; record 1 of 60 of decisio-examples' support-routing run, sent again on that release; the probabilities are rounded to two places. The mechanism is the README's "How it works".
Each question becomes one prompt that ends where the answer goes, and decisio reads the model’s probability for each option at that point. On the Gemma models the prompt first lists every question of the request, then the text, then the question; the figure shows the plain layout, the text then the question, that it was recorded on (Choose the prompt layout). The probabilities add up to 1, and three things shape them:
| What | Where it comes from |
|---|---|
| The model’s own setting | fitted once per model; it never changes which option is likeliest |
| Your task’s correction | learned from your labelled examples, and kept only when it helps |
| The certified threshold | set when you certify a task: answers at or above it are certified |
A task’s correction makes the probabilities more honest: on six held-out tasks, 20 labelled examples each lowered the calibration error from 0.058 to 0.037 (the Qwen model, 900 test items, 2026-09-29).
3. Teach, then certify, then route
Section titled “3. Teach, then certify, then route”Figure · Teach and trust
Teach the question, certify its answers, route on the certificate, and let the server watch.
Teach a task, Certify answers and Watch for drift each take one of these.
On the support inbox, 43.3% of the messages were answered on their own at a 5% error target (BANKING77, Gemma 4 31B; Certify answers).
Measured on decisio 0.14.0, Gemma 4 31B on one RTX PRO 6000 Blackwell, 2026-10-16 to 2026-10-18.
- After upgrading decisio, certify your tasks again.
- A certificate covers one task on one serving setup. Certify again when you change either.
4. Where it runs
Section titled “4. Where it runs”Figure · Where it runs
The same server and the same routes everywhere; only the engine under it changes.
Each panel links to its guide.
What repeats
Section titled “What repeats”| Model | Asked again, on the same server | Many questions in one request | After a restart |
|---|---|---|---|
| Gemma 4 31B | exactly, on a freshly started server; on one that has already answered, 5 of 200 moved, by at most 0.031, with no top answer changed | the same choice on every item measured; probabilities within 0.0073 | not promised |
| Gemma 4 12B | a first read and a cached read can differ, by up to 0.113 | the same choice; probabilities within 0.035 | not promised |
| Qwen3.6-35B-A3B | the same probabilities every time | the same probabilities as each question on its own | an earlier record matched in most starts measured |
The top answer rarely moves: on the 12B, one choice of 60 changed between a first and a cached read. Exact numbers repeat only on one running server.
Under the hood
Section titled “Under the hood”- decisio runs on stock vLLM 0.31.0: a plugin registers its model classes, and no patch is needed.
- Every model is an official checkpoint, frozen: no training, no fine-tuning, no adapter unless you serve one with
--adapter. - A taught task’s intent head reads the model’s internal representation of the text at the answer position.
- On a Mac, the MLX engine answers each question on its own from one shared read of the text.
What next
Section titled “What next”- Teach a task: teach decisio your question from labelled examples.
- Certify answers: the promise behind a certified answer.
- Choosing a model: which of the three models to serve.