Developer tool

Decision request builder for Ollama /v1/systemone

Decision models such as Nimble and Tev1 answer typed questions through an HTTP endpoint, /v1/systemone. Most first attempts fail for one of a few reasons: too many questions or options, a body over 64 KiB, or JSON that PowerShell quietly flattened. This builder produces a request that is valid by construction. Pick a model, describe the text to judge (the state) and your questions, and it generates curl, PowerShell, Python and JavaScript versions of the same request. It checks Ollama’s documented limits as you type, so a 400 or a 413 never reaches your terminal. Everything runs in your browser: nothing you type is sent anywhere, and there is no account. Start from a preset such as ticket triage, or build your own. Not sure what to do with the answer? The section below explains every field of the response.

An example request

The ticket-triage preset, for Nimble on Ollama. The builder above generates this, and the same request as PowerShell, Python and JavaScript, from whatever you type.

bash
curl http://localhost:11434/v1/systemone \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "nimble",
    "state": {
      "ticket": "I was charged twice. Please refund the extra payment."
    },
    "questions": {
      "team": {
        "type": "choice",
        "instructions": "Which team should handle this ticket?",
        "criteria": {
          "billing": "Payments and refunds",
          "technical": "Bugs and integrations",
          "other": "None of the above"
        }
      },
      "refund": {
        "type": "noul",
        "instructions": "Does the customer explicitly ask for a refund?"
      },
      "urgency": {
        "type": "score",
        "instructions": "How urgent is this ticket?",
        "criteria": [
          "Routine",
          "Soon",
          "Urgent"
        ]
      }
    }
  }'

Reading the answer

Ollama’s published example response for the ticket-triage request, and what each field means:

json
{
  "model": "nimble",
  "answers": {
    "team": {
      "type": "choice",
      "choice": "billing",
      "probabilities": {"billing": 0.985, "technical": 0.012, "other": 0.003},
      "confidence": 0.922
    },
    "refund": {"type": "noul", "noul": 0.997},
    "urgency": {
      "type": "score",
      "score": 0.815,
      "legend": {"0": "Routine", "1": "Soon", "2": "Urgent"},
      "probabilities": {"0": 0.378, "1": 0.429, "2": 0.193},
      "confidence": 0.046
    }
  },
  "usage": {"input_tokens": 841, "output_tokens": 4}
}
FieldMeaningCommon mistake
choiceThe option key with the highest probabilityIgnoring probabilities — a 0.51 / 0.49 split is not a confident answer
noulProbability that the statement is true, from 0 to 1Treating it as a boolean. 0.997 is a number; you pick the threshold
scoreProbability-weighted average of the level indices — here 0 to 2Reading it as 0–1. 0.815 means "between Routine and Soon", not "81.5%"
confidenceHow concentrated the distribution is: 0 = all options equal, near 1 = one option dominatesReading it as "chance I'm right". Ollama's spec says it is not calibrated correctness
usage.input_tokensFull prompt length summed over every questionThinking the state was sent once. Each question is scored against the whole state

Confidence, thresholds and calibration →

Nothing on this page is sent anywhere: the request is built in your browser, and a share link keeps it in the URL fragment, which browsers never send to a server.