Equilibrium Labs Docs
v0.1
Changelog GitHub
Menu

Validation

Validating a claim

claimcheck takes a quantitative economic claim and returns a structured result: the sources it rests on, the assumptions it requires, and the uncertainty band around it. Every field is traceable; nothing is asserted without provenance.

Throughout this documentation, NOTE blocks flag details worth knowing but that don’t change how you’d use the result — read them, but skipping one won’t cause you to misuse the API.

Note

Hairline border, no fill tint, no left accent bar. The label carries the semantics.

CITE blocks are different: they mark language that must be reproduced verbatim when you cite a validated claim elsewhere, since the wording inside is the wording claimcheck stands behind, not a paraphrase you’re free to tighten.

Cite

Cobalt variant marks a block that must be reproduced verbatim in citations.

Reading the result object

claimcheck.validate returns an object with four fields worth knowing up front: .claim, the normalized text of what was checked; .evidence, an ordered list of the sources the estimate draws on; .assumptions, the list of assumptions required to connect those sources to the number; and .confidence_band, a (low, high) tuple around the estimate.

PYTHON
from equilibrium import claimcheck

r = claimcheck.validate("AI raised task exposure 14% in 2025")
r.confidence_band  # (0.09, 0.19)

r.evidence is ordered by contribution weight, not by recency or alphabetically — the source doing the most work to pin down the estimate comes first. Each entry carries a citation string, a retrieval date, and a link into the source registry.

Assumptions

Every assumption claimcheck relies on to move from source data to a stated number is surfaced individually in r.assumptions, rather than folded silently into the estimate. This is deliberate: a reviewer should be able to look at each assumption on its own terms and decide whether they buy it, without having to accept the whole result as a package.

For the claim above, two of the surfaced assumptions are:

  • Task-level exposure scores from the underlying classification study map onto the O*NET task taxonomy without material loss — i.e., tasks that don’t cleanly map are excluded rather than force-fit.
  • The 2025 task mix within each occupation is close enough to the 2023 baseline used by the source study that applying its exposure scores to 2025 employment shares doesn’t require a mix adjustment.

Either assumption can be challenged independently; see the assumption graph for how a challenge propagates through the rest of the result.

Uncertainty bands

r.confidence_band is a (low, high) interval, not a single number, because the underlying sources don’t agree exactly — they cluster around 14% but individually range wider. The band is built by resampling across the evidence set rather than trusting any one source’s stated interval; see uncertainty bands for how the resampling works and how to report a wide band responsibly.

A narrow band means the sources converge; a wide one means they don’t, and the point estimate alone would overstate how settled the number is.

View source on GitHub