backdraft

Provenance for factual claims

Every number, one click from its source.

Your agent writes the memo. Backdraft makes it show its work — one self-contained file where each claim carries the actual page or spreadsheet cell behind it.

$ uv tool install "backdraft[vlm] @ git+https://github.com/spencerbraun/backdraft"

Bridgeview Commons — Screening Memo

Trailing performance supports the request: net operating income for the trailing twelve months was $1,429,6001, and the underwriting model carries a purchase price of $24.85 million2 against a 65% loan.

Click a claim — or press 1 / 2. This is the artifact experience, live on this page.

The evidence rail. When a reader clicks a claim, the source appears here — the quote, and the page or cells it came from. No installs, no network, no vocabulary.

Reference 1

T-12 Summary

Page 1

Total operating expenses were $1,254,800, or $9,803 per unit per year. Net operating income for the trailing twelve months was $1,429,600.

token bd:t12-summary:p1.c3:f10b

Reference 2

Underwriting Model

Assumptions · B10

AB
8Vacancy and credit loss0.0700
9Replacement reserve250
10Purchase price24,850,000
11Loan amount16,152,500
12Interest rate0.0615

token bd:underwriting-model:assumptions!B10:964a

Why

Trust is the expensive part now.

AI made the writing cheap. An analyst who cannot show where a number came from still either re-reads the source or discards the output — and both destroy the value of having the memo written at all. Backdraft moves the receipts into the document itself, so the question "where did that come from?" is answered by clicking, not by asking the author.

How it works

A gate, a bind, one file.

  1. The agent reads through a gate

    Source documents are only readable through backdraft read and search, which stamp a citation token on everything they show — and record that they showed it. The set of citable things is exactly the set of things shown.

    [bd:t12-summary:p1.c3:f10b]
    Total operating expenses were $1,254,800, or $9,803 per unit per year.
    Net operating income for the trailing twelve months was $1,429,600.
  2. It writes claims as links

    Every factual span carries the token of the evidence it rests on. A citation cannot be invented — a token the writer was never shown is a distinguishable failure, not an invisible one.

    [net operating income of $1,429,600](bd:t12-summary:p1.c3:f10b)
  3. Bind resolves everything, render ships one file

    Every token resolves or is reported — nothing drops silently. The artifact embeds the receipts and the evidence: cited pages as images, cited cells highlighted in their sheets. It opens from an email attachment with the network off.

    $ backdraft bind memo.md --check value-trace,overlap
    bound 15 claim(s), 16 citation(s) [frontwalk]
      resolved: 15
      unresolved: 1
      ! unresolved: bd:t12-summary:p4.c1:1a2b

Field-tested

Caught by value-trace

The memo said 7.7%. The model said otherwise.

On a real financing memorandum, the marketing page advertised a 7.7% Year-1 debt yield. The underwriting model's cell held 0.0765 — which rounds to 7.6%. Backdraft's deterministic number check reads through commas, currency, percent-vs-decimal and rounding, and it names exactly what it could not find. Off by default; verification is evidence, never a gate.

# claim cites the marketing page and the model cell
Figures pass — the figure appears in this source.
Figures fail — Not found in this source: 7.7%.
# the cell holds 0.0765 → 7.6%, not 7.7%

Built like an instrument

Quiet by design.

Success is silent, failure speaks

A fully-resolved document says nothing about citations on its face. A claim citing something never read, a source that changed after writing (shown as a word-diff), a token naming nothing — announced plainly, kept in the record.

No network, enforced

The artifact makes zero requests — no fonts, no scripts, no analytics — and a Content-Security-Policy makes the browser refuse any it might try. Your documents never leave your machine; ambient API keys are never read.

Excel-native

Cells are first-class citations. A cited cell renders selected in its own sheet — row labels, headers, neighbors — and opens into the full sheet, scrolled to the highlight.

A format, not a platform

Every artifact embeds a machine-readable record with a legend that teaches a cold reader to decode and check it. The format outlives the implementation; the spec is three markdown files.

For agents

The CLI is the system. A skill is one page.

Drop the skill into your agent's skills directory and it writes cited documents by default. The token-efficient reference is a plain-text file.

cp -r skills/backdraft ~/.claude/skills/     # Claude Code
curl -O https://backdraft.dev/llms.txt       # ~800-token reference