BRAG Principle 02 of 06
Principle 02
02

Numbers come through a separate channel.

The LLM never writes a number it didn’t receive as a typed value.

Why it matters

Every time an LLM reads a number out of prose, you have to trust that it didn’t paraphrase, round, or invent it. There’s no good way to verify after the fact. The model can launder a guess as a citation because the citation points to a passage that contains the number, not to the number itself.

The cost of not doing it

Scenario

Your AI assistant tells your sales team “Q3 revenue was $8.5 billion.” That number came from a passage that said “Approximately $8.5 billion in adjusted revenue, excluding one‑time items.” The “approximately” disappeared. The “adjusted” disappeared. The “excluding one‑time items” disappeared. The citation links back correctly. Nobody catches it until an investor calls.

How BRAG does it

Financial numbers come from XBRL — the structured data the SEC requires every public company to file. The ingestion pipeline parses XBRL deterministically, stores each value as a typed FactRecord with its source ID, period, and exact display string. The LLM never reads numbers out of prose; it cites them by ID and the renderer displays them verbatim.

Apply it in your own system

The pattern generalises to any structured data your domain has.

  1. Have structured data? (Databases, APIs, CSVs.) Use it directly. Never paraphrase it through an LLM.
  2. Have unstructured data with numbers in it? Pre‑extract those numbers with a deterministic parser (regex, OCR + validation, structured extraction) and store them as typed values with provenance.
  3. When the LLM cites a number, cite it by reference, not by retyping it.

The rule: the LLM never writes a number it didn’t receive as a typed value.

This is one of six principles abstracted from BRAG — a retrieval‑augmented generation system with two LLM skeptics gating every confident answer. Tested on ten years of Netflix’s public financial reporting.