> ## Documentation Index
> Fetch the complete documentation index at: https://docs.levanto.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Scale decisions

> Rubric scoring with expectation and confidence.

Use Scale to score content against a rubric **you define**. You provide five level descriptions — what `0` through `4` mean for your use case (severity, quality, risk, satisfaction, and so on). Sage always expects exactly five integer levels (`0`–`4`); the labels are not built in. Subsets, sparse scales, or any other level values are rejected with **HTTP 400**.

## Request

```json theme={null}
{
  "content": "Candidate explained our product roadmap clearly but struggled to answer questions about database scaling tradeoffs.",
  "question": {
    "id": "interview_score",
    "kind": "scale",
    "instructions": "How strong was this candidate in the technical interview?",
    "levels": [
      {"level": 0, "description": "Not qualified — fundamental gaps in required skills"},
      {"level": 1, "description": "Weak — significant concerns about core competencies"},
      {"level": 2, "description": "Mixed — some strengths but notable gaps remain"},
      {"level": 3, "description": "Solid — meets the bar with minor areas to probe"},
      {"level": 4, "description": "Strong hire — clearly exceeds expectations for the role"}
    ]
  }
}
```

## Response

```json theme={null}
{
  "id": "interview_score",
  "kind": "scale",
  "result": { "expectation": 2.4, "confidence": 0.71 },
  "meta": { "model": "levanto-sage-v0.5", "latency_ms": 79.8 }
}
```

## Fields

| Field         | Description                                                    |
| ------------- | -------------------------------------------------------------- |
| `expectation` | Expected level on the rubric                                   |
| `confidence`  | How peaked the level distribution is (independent of the mean) |

<Warning>
  **Always send all five levels, `0` through `4`.** No sparse rubrics, no alternate ranges, no fewer or more levels. Each `level` must be a distinct integer in that set. See [Limits](/decision-model/limits) for the full per-kind bounds and [Errors](/decision-model/errors) for the rejection message.
</Warning>
