# Use cases

> Six recipes for putting decisio in a product, each with the question, the code that routes on its certificate, and what it did when measured.

Source: https://opendecisio.com/docs/use-cases/

Each recipe is the same three steps: ask one [question](https://opendecisio.com/docs/glossary/#question) about the text, teach and certify it from your labelled examples, and act on the [certified answers](https://opendecisio.com/docs/glossary/#certified-answer) while a person takes the rest. The routing code is the same in every recipe; this is support routing’s:

 

```
import json
import urllib.request

QUESTION = {
    "type": "choice",
    "instructions": "Which support queue should handle this ticket?",
    "criteria": {
        "billing": "Invoices, charges, refunds",
        "access": "Login, passwords, permissions",
        "bug": "The product behaves wrongly",
        "shipping": "Orders and deliveries",
        "other": "Anything else"
    }
}

def route(text):
    request = urllib.request.Request(
        "http://127.0.0.1:8000/v1/systemone",
        data=json.dumps({"state": text, "questions": {"queue": QUESTION}}).encode(),
        headers={"Content-Type": "application/json"},
    )
    with urllib.request.urlopen(request) as response:
        answer = json.load(response)["answers"]["queue"]
    # A certified answer acts on its own; anything else goes to a person.
    if answer.get("certified"):
        return f"send to {answer['choice']}"
    return f"to a person, {answer['choice']} suggested"

print(route("My card was charged twice this month. Please refund one of the charges."))
```

 

Run against the CPU stand-in at v0.18.1 on 2026-10-19. It printed:

```
to a person, billing suggested
```

  

| Use case | What decisio decides | Proof |
| --- | --- | --- |
| [Support routing](https://opendecisio.com/docs/use-cases/support-routing/) | which queue a ticket goes to | measured |
| [Coding-agent gatekeeper](https://opendecisio.com/docs/use-cases/gatekeeper/) | allow, ask or block a shell command, by your rules | measured |
| [Issue triage](https://opendecisio.com/docs/use-cases/issue-triage/) | the kind of a new issue, and its owning team | measured |
| [Guardrails](https://opendecisio.com/docs/use-cases/guardrails/) | whether a message breaks a policy | measured for toxicity |
| [RAG: answer or abstain](https://opendecisio.com/docs/use-cases/rag-gate/) | whether a retrieved passage answers the question | measured as accuracy |
| [Document classification](https://opendecisio.com/docs/use-cases/document-classification/) | the type of an incoming document | recipe |

 

“Measured” means a published run of the same question; “recipe” means the steps and the code, with no published run yet.

 

Each answer is read from one forward pass and no generated text, so nothing is worked out step by step. A question that needs reasoning over several steps, or knowledge the text does not hold, is not a good fit.

 

## What next

 

- [Teach a task](https://opendecisio.com/docs/tasks/): the teaching step every recipe uses.
- [Certify answers](https://opendecisio.com/docs/tasks/certify/): the certificate every recipe routes on.
