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.
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.
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.
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