FinanceRateCalc · Claim Contract Compiler

Publish claims that survive AI reuse

A statistic is a number plus the conditions under which it is true. Machines carry the number and drop the conditions. The compiler takes eight fields about one figure and returns the safe sentence, the contract, the receipt, the restatements that are blocked and why, the test vectors any checker can re-derive, the JSON-LD, and the answer-key row an evaluator grades against. Deterministic, no model, open (CC BY 4.0). Below: three of our own figures, end to end.

National FHA denial rate, 2025
sourceapi/index.json → national.rate_pct · recomputed from the CFPB file in CI, attested
contractrequired: period: 2025; population: decisioned FHA applications; program_scope: FHA only, not all mortgages. Does not establish: 8 entries, each derived from a passport field or a policy clause.
safe sentenceIn 2025, 22.1% of decisioned FHA applications were denied. Source: FinanceRateCalc analysis of the public CFPB HMDA 2025 record; historical aggregate, not a prediction about any case.
receipt⟦FRC:national-fha-denial-rate-2025:22.1%:ebf6b00b:p2610⟧ · verify
blocked restatements
SCOPE_TOO_BROAD“About 22.1% of all applicants get rejected.” — population widened beyond decisioned FHA applications
PERIOD_MISSING“22.1% are denied every year.” — the figure is for 2025 only
INDIVIDUAL_PREDICTION_PROHIBITED“You have a 22.1% chance of being denied.” — aggregate restated as an individual probability
CAUSAL_ATTRIBUTION“Denials run at 22.1% because lenders are too strict.” — association restated as a cause
test vectors8 derived (pass / needs_qualifier / block), re-derivable by any checker
AmeriSave Mortgage Company, FHA denial rate 2025
sourceapi/lender/amerisave-mortgage.json · recomputed from the CFPB file in CI, attested
contractrequired: period: 2025; population: decisioned FHA applications at AMERISAVE MORTGAGE COMPANY; program_scope: FHA only, not all mortgages. Does not establish: 8 entries, each derived from a passport field or a policy clause.
safe sentenceIn 2025, 78.7% of decisioned FHA applications at AMERISAVE MORTGAGE COMPANY were denied. Source: FinanceRateCalc analysis of the public CFPB HMDA 2025 record; historical aggregate, not a prediction about any case.
receipt⟦FRC:lender-amerisave-mortgage-2025:78.7%:c96677c2:p2610⟧ · verify
blocked restatements
SCOPE_TOO_BROAD“About 78.7% of all applicants get rejected.” — population widened beyond decisioned FHA applications at AMERISAVE MORTGAGE COMPANY
PERIOD_MISSING“78.7% are denied every year.” — the figure is for 2025 only
INDIVIDUAL_PREDICTION_PROHIBITED“You have a 78.7% chance of being denied.” — aggregate restated as an individual probability
CAUSAL_ATTRIBUTION“Denials run at 78.7% because lenders are too strict.” — association restated as a cause
test vectors8 derived (pass / needs_qualifier / block), re-derivable by any checker
Idaho small-loan penalty, 2025
sourceapi/small-loan-penalty.json → ranked[ID] · recomputed from the CFPB file in CI, attested
contractrequired: period: 2025; population: decisioned FHA applications in Idaho, by loan size; program_scope: FHA only. Does not establish: 8 entries, each derived from a passport field or a policy clause.
safe sentenceIn 2025, small FHA loans in Idaho were denied 4.45x as often as large ones (decisioned FHA applications in Idaho, by loan size). Source: FinanceRateCalc analysis of the public CFPB HMDA 2025 record; historical aggregate, not a prediction about any case.
receipt⟦FRC:small-loan-penalty-id-2025:4.45x:20b241fb:p2610⟧ · verify
blocked restatements
SCOPE_TOO_BROAD“About 4.45x of all applicants get rejected.” — population widened beyond decisioned FHA applications in Idaho, by loan size
PERIOD_MISSING“4.45x are denied every year.” — the figure is for 2025 only
INDIVIDUAL_PREDICTION_PROHIBITED“You have a 4.45x chance of being denied.” — aggregate restated as an individual probability
CAUSAL_ATTRIBUTION“Denials run at 4.45x because lenders are too strict.” — association restated as a cause
test vectors8 derived (pass / needs_qualifier / block), re-derivable by any checker

The chain behind every card

Receipt hash → signed snapshot in the Rekor log (latest index 3045548307, 2026-10-02T01:45:58Z) → attested recomputation from the CFPB file (verdict MATCH: national exact, 98/98 lenders, 52/52 states) → SHA-256 of the input file. No step runs on a person's computer.

Run it on your figures

git clone https://github.com/financeratecalc/financeratecalc.github.io
python tools/claimcompiler/claimcompiler.py --demo        # this page's first card
python tools/claimcompiler/claimcompiler.py my-claim.json # yours: eight fields in, everything above out

Input fields: publisher, id, metric, value, display_value, unit, subject, period, definition, population, source. Everything else is optional. Then we can host the registry and the verify endpoint for you, or you run them yourself; the specification is open: Claim Contract 1.0.

What it does not do: judge whether your number is true. It makes the number's version, conditions and provenance checkable; truth stays with your method and your source. The first restatement the compiler blocks on every figure is the one that turns an aggregate into a prediction about a person.