Skip to content
TheThinkLoop

Decision Playground

Ask a question. Get a decision you can inspect and govern.

Give it an input and an operational question. TheThinkLoop evaluates the outcome, calculates supporting factor checks, and applies review thresholds to determine whether to automate, review, or abstain.

Start from an example

Support
Operations
Image
Decision type

Is this true? Returns: a probability from 0 to 1 that the condition holds.

125 / 6,000

The evidence to decide on: a ticket, an email, account notes. Don’t paste anything confidential.

Ask one thing, and name your policy or criteria. Specific questions get more consistent answers.

Evidence checks (optional)

Yes/no statements checked against the same input. They become the card’s key factors. The API returns estimates rather than explanations, so you choose what to check.

PNG, JPEG, or WebP up to 1.5 MB. Images are sent for this request only and are not stored.

Review policy

Thresholds turn an estimate into an action. Move them and the card updates without re-running. These are starting points, not recommendations.

Decision

Your decision will appear here

Pick an example or write your own input and question, then run it. You’ll get the outcome, the provider’s estimate, the evidence checks, and whether a person should review it.

Demo mode

This deployment uses a deterministic, rule-based demo provider. Results show the shape of a decision; they are not model output and not a measure of what the Decisions API would return.
The equivalent Decisions API call

The main question and each evidence check go out as one request against the same input. Read the tutorial.

import OpenAI from "openai"; // openai >= 7.30.0

const client = new OpenAI(); // reads OPENAI_API_KEY on the server

const decision = await client.decisions.create({
  model: "gpt-6-luna",
  input: "I was charged twice for my annual plan (order #48213). I only signed up once, 5 days ago. Please refund the duplicate charge.",
  questions: [
    {
      type: "predicate",
      name: "decision",
      instructions: "Should this refund request be approved under our 30-day refund policy?"
    },
    {
      type: "predicate",
      name: "factor_1",
      instructions: "The customer reports being charged more than once."
    },
    {
      type: "predicate",
      name: "factor_2",
      instructions: "The purchase was made within the 30-day refund window."
    },
    {
      type: "predicate",
      name: "factor_3",
      instructions: "The customer has received a previous refund."
    }
  ],
});

// Answers come back in question order. A question can also be refused.
const [main, ...checks] = decision.answers;
if (main.type === "refusal") throw new Error("The model declined to answer.");
if (main.type === "predicate") {
  console.log(main.probability); // 0–1 estimate that the condition is true
}

How to read a result

Probability and confidence are estimates
A predicate returns the estimated probability that your condition is true. Choice and score return a confidence value for the selected answer. Neither tells you how often the system is right. That is accuracy, and you can only measure it against labeled examples.
Key factors are checks you define
The Decisions API returns typed answers, not written reasoning. Each factor on the card is a separate yes/no question asked against the same input, in the same request.
Human review comes from your thresholds
The card compares the estimate with the review policy you set. Where those thresholds should sit depends on what each kind of mistake costs you. Calibrate them with your own examples.

Where to go next