# How to read a number on any surface

Every figure travels with chips saying what it came from and what it excludes. Learn them once and every screen becomes readable.

Source: https://tokentriage.com/docs/build/dashboard-reading-a-number

---
import Callout from '../../../components/Callout.astro';
import Details from '../../../components/Details.astro';
import NextSteps from '../../../components/NextSteps.astro';
import CropShot from '../../../components/CropShot.astro';

A dashboard figure is only useful if you know what it is a figure *of*. `$61.25` over how many
rows, priced from which table, excluding what? On these screens that context travels with the
number rather than living in a footnote, and it uses the same six devices everywhere.

Learn them once and every surface in the product becomes readable, including ones you have
never opened. This page is the vocabulary; the sections that own each concept are linked from
each part.

## The row-count chip

Beside almost every panel sits a small chip reporting the population the figure was computed
over. On the demo ledger it reads:

```text
46 rows   2 est   2 unpriced
```

Three separate facts. **46 rows** were evaluated. **2** of them carried token counts the
provider did not report, so their cost is an estimate. **2** carried a model with no entry in
the price table, so they contribute nothing to any dollar total and are counted here instead.

An empty panel shows the same chip reading `0 rows`, which is why an empty dashboard is
readable at all. A chip that reports `truncated` is telling you the read did not finish, and
the figure beside it is over less than it should be.

## `EST` on a dollar

A dollar rendered with an `EST` flag was computed from token counts that were estimated rather
than reported by the provider. The flag travels with the value through every aggregation, so a
total containing one estimated row is itself flagged.

That is a different statement from an approximation in the arithmetic. The price table and the
multiplication are exact; what is uncertain is the input. [Where a cost number comes
from](/docs/build/cost-figures) covers when tokens are estimated and how to reduce it.

## `UNPRICED` instead of a dollar

When no price covers a row, the surface renders `UNPRICED` where a figure would go. It does
not render `$0.00`, and the row does not silently join a total.

<CropShot
  stem="cost-attribution"
  alt="A cost attribution panel with a per-model spend breakdown. One row shows UNPRICED in place of a dollar figure, and a disclosure line beneath the table states how many unpriced rows are excluded from the total."
  caption="Unpriced spend is a labelled exclusion with a count, not a zero folded into the total."
/>

This is the rule that shows up most often in practice, because a model the price catalogue has
not caught up with is normal rather than exceptional. The Pricing surface exists to triage
those rows, and [override a price](/docs/build/dashboard-pricing-overrides) is how you resolve
one. The reasoning behind refusing the zero is [unpriced is not
zero](/docs/concepts/honesty-model).

<Callout type="key">
A dollar total on any surface is a total of the rows that could be priced, and the count of
rows that could not is printed beside it. Quote the exclusion whenever you quote the total.
</Callout>

## The pricing snapshot, and mixed ones

The header carries the pricing snapshot the instance is costing against:

```text
litellm@2026-07-14#179affb
```

Source, fetch date, and a short hash of the upstream table. Every priced row is stamped with
the snapshot that priced it, which is what makes an old row explainable after the table moves
on.

When a panel's rows span more than one snapshot it says so, with a **Mixed snapshot** chip
reading `totals span 2 pricing snapshots`. That is not an error. It is the disclosure that a
total was assembled under two price tables, which matters when you are comparing periods.
[Pricing keys and snapshots](/docs/build/providers-pricing-keys) owns the mechanism.

## Verdict chips

Anywhere the product reaches a conclusion about routing quality, it renders a chip carrying
the server's own verdict string. The vocabulary is closed and the chip does not translate it:
the text is the exact value the API sent, and the component only picks a colour.

| Verdict | What it says |
|---|---|
| `BEAT` | the router beat the comparison on this evidence |
| `NOT_BEAT` | it did not |
| `ON_FRONTIER` | it sits on the cost-quality frontier rather than above or below it |
| `CANNOT_MEASURE` | there is not enough labelled evidence to judge |

`CANNOT_MEASURE` is the one people misread, so it is worth stating plainly: it is an answer,
not a failure. It arrives with the reason and the shortfall, as in `insufficient labels (0 of
8) to judge routing`, and with what to do about it. A dashboard that turned that into a zero
or a blank would be claiming something it cannot support.

Because the chip renders verbatim, do not paraphrase one in a ticket or a caption. Quote it.
The two verdict vocabularies in this product are [not the same
thing](/docs/concepts/honesty-model#two-verdict-vocabularies--dont-conflate-them), and
paraphrasing is how they get conflated.

## Approximation, stated with its bound

Where a figure is approximate, the surface says so and publishes what makes it approximate
rather than hedging. A limit's burn panel carries:

```text
Enforcement is approximate by construction.
burn excludes in-flight reservations and any teed rows dropped under load
tee-lagged rows: 3
dropped rows: 0
in-flight reserved: 1,024
estimate skew p95: 0.03
```

Four counters you can act on, rather than an adverb. The same treatment appears on budget
overruns, where the disclosed bound is computed from real lag and drop counters. [Enforcement
and its bounds](/docs/build/governance-limits) owns the mechanism.

## Every chart has its rows

Beside each chart is a **View as table** control that shows the exact rows behind the picture,
and most marks are one click from becoming a filter on the Requests explorer with the window
already applied. That is the affordance that makes a chart checkable: you are never more than
one step from the rows that produced a shape.

<Details summary="Two more markings you will meet">

**The demo watermark.** An instance running in demo mode carries a `DEMO` label in its header
and a diagonal `DEMO DATA` watermark across spend tiles. It is a property of the instance, not
of a panel, so a watermark on a panel of a non-demo instance means that panel is showing a
fixed example. Four currently do; [what a new dashboard
shows](/docs/build/dashboard-first-run#panels-that-are-not-yours) lists them.

**The promote-gate badge.** An instance in `route` mode that lacks fresh shadow evidence wears
a `route without shadow evidence` badge in the header, and every audit row of the move carries
it too. It is computed from the live mode against the evidence, so it cannot be dismissed by
clicking. [Routing](/docs/build/routing) owns the gate; the badge is what it looks like when
somebody has gone around it.

</Details>

## What this page does not cover

It teaches the markings, not the subjects. What a cost figure is computed from is [Cost &
attribution](/docs/build/cost-figures); what licenses a savings claim is [the honesty
model](/docs/concepts/honesty-model); what a quality verdict measures is [Calibration &
Evals](/docs/calibration/overview). If a marking on your screen is not in the list above,
the [surface index](/docs/build/dashboard-surfaces) will point you at the section that owns it.

<NextSteps items={[
  {title: "The honesty model", href: "/docs/concepts/honesty-model", description: "The rules behind these markings, including the two verdict vocabularies that must not be conflated."},
  {title: "Where a cost figure comes from", href: "/docs/build/cost-figures", description: "What produces the dollar the chips are qualifying, and when it is an estimate."},
  {title: "Surface index", href: "/docs/build/dashboard-surfaces", description: "Every screen these markings appear on, and where each subject is documented."},
  {title: "Override a price", href: "/docs/build/dashboard-pricing-overrides", description: "What to do about the rows that render UNPRICED."}
]} />
