# Get started

> Run decisio and get your first answer in about five minutes. A text and questions go in; a probability for every option comes out, in one call.

Source: https://opendecisio.com/docs/

Four steps: pick your machine, start a server, ask a [question](https://opendecisio.com/docs/glossary/#question) and read the answer.

 

[Figure: The text is read once; every question is answered from that one read. A support ticket goes into Decisio, which reads it once in 79.1 milliseconds. Three questions fan out of that read: urgent (yes/no) answers yes at 0.16; queue (choice) answers billing at 0.96; impact (score) answers level 1 at 0.65.]

 

## 1 Pick your machine

  

| Your machine | Its guide |
| --- | --- |
| Linux with an NVIDIA card | [On a cloud GPU](https://opendecisio.com/docs/deploy/cloud-gpu/) |
| Linux with an NVIDIA card and Docker | [With Docker](https://opendecisio.com/docs/deploy/docker/) |
| Mac with Apple silicon | [On a Mac](https://opendecisio.com/docs/deploy/mac/) |
| Mac, Linux or Windows with Ollama 0.35.1 to 0.40.3 | [With Ollama](https://opendecisio.com/docs/deploy/mac/#on-a-laptop-with-ollama) |
| Any machine, for development | [For development](https://opendecisio.com/docs/deploy/development/) |

 

The memory and card each machine needs are on [Requirements and limits](https://opendecisio.com/docs/limits/). The steps below use the [CPU stand-in](https://opendecisio.com/docs/glossary/#cpu-stand-in), which runs on any machine. On any other machine, start the server as its guide says and go on from step 3.

 

## 2 Start a server

 

You need Python 3.12, [uv](https://docs.astral.sh/uv/) and `git`. The first start downloads a small model from Hugging Face.

 

```
git clone --branch v0.35.0 https://github.com/aminry/decisio
cd decisio
uv sync --extra dev --frozen
uv run python -m decisio.serve.vllm_engine --backend hf --model Qwen/Qwen3-0.6B-Base
```

 

Run against the CPU stand-in at v0.35.0 on 2026-10-26: the clone is the pinned release, as the check has it; the install and the server start.

 

The server listens on `http://127.0.0.1:8000`. It is ready when `/health` answers:

 

```
curl -s http://127.0.0.1:8000/health
```

 

Run against the CPU stand-in at v0.35.0 on 2026-10-26. It printed, trimmed to the fields this page uses:

```
{
 "ok": true,
 "base": "qwen3.6-35b-a3b"
}
```

 

This small model is for development, so its [probabilities](https://opendecisio.com/docs/glossary/#probability) are not the default model’s. The answer in step 4 is the default model’s, Gemma 4 31B.

 

## 3 Ask your first question

 

One `POST` to `/v1/systemone`: the text goes in `state`, and each question has a name you choose, a `type` and `instructions`.

 

```
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.

 

- `noul` is a yes or no question; its answer is the probability of yes.
- `choice` picks among named [options](https://opendecisio.com/docs/glossary/#option), up to 255; the options are its `criteria`.
- `score` picks a level on a scale, listed lowest first.

 

## 4 Read the answer

 

Each question comes back under its own name. A choice gives its likeliest option and the probability of every option, so you see how sure it is as well as what it picked.

 

[Figure: Every question gets its own answer, with a probability for every option. The request, one support ticket with 3 questions (urgent, queue, impact), beside the response. Hovering a question, an option or the text highlights its partner. &#x22;urgent&#x22;: a yes/no question. The answer is one number, the probability of yes: 0.159. &#x22;queue&#x22;: a choice among 6 named options. The answer names the likeliest, billing, and gives every option's probability; they add up to 1. &#x22;impact&#x22;: a score on an ordered scale of 4 levels, lowest first. The answer is a probability for each level; level 1 is the likeliest, at 0.648.]

 

Good to know:

 

- A request the server cannot read gets status 422, with a `detail` that names what is wrong.
- The `model` field does not choose a model: a server serves the one model it was started with.

 

## What next

 

- [Call it from your code](https://opendecisio.com/docs/use-from/): the same request from Python, JavaScript and TypeScript, and the frameworks.
- [On a cloud GPU](https://opendecisio.com/docs/deploy/cloud-gpu/): run the default model, Gemma 4 31B, on your own card.
- [Teach a task](https://opendecisio.com/docs/tasks/): teach a question you ask again and again, and certify its answers.
