Download the Methodology PDF (print edition, September 29, 2026) About the PDF. The PDF is a print edition of this Methodology page as it stood on September 29, 2026; this page remains the current reference. It replaces the July 14, 2026 v1.1 PDF, which listed five Transparency Score components weighted 30/15/20/15/20. The live system uses six, weighted 27/13/18/14/18/10 — a value-chain component was added in v0.2 and the others were rescaled — so anyone holding the earlier PDF should cite the live weights, not the PDF weights. The live parameter table is the file at /config/tablo_v1.json — its _version field is authoritative and the version in force is declared in every record's API response. If this page and the PDF ever differ, cite this page (with the date you accessed it) and the version shown in the record's API response.
Blockchain does not make data true; it freezes verified data. The accuracy claim is carried by source citation and the verification pipeline; the integrity claim by cryptography (Principle I3). The protocol does not prove that a record is true — it proves that the record went through a specific verification process and has not changed since.
One number at the top of every profile, a weighted mean of the four published scores: Accuracy Estimate 40 · Transparency Score 30 · Target Quality 20 · Strategy/Risk Maturity Score 10 (weights in config/scoring.json → overall). A component that cannot be measured for a record — an Accuracy Estimate that is "not assessable", an SRMS reading that does not exist yet — is left out of the denominator and the mean is taken over the remaining weights; a Target Quality of 0 (no target disclosed) is a measurement and stays in. An Overall Score is published only when the record has an Accuracy Estimate — the platform is an accuracy layer, and a headline number without its anchor component would overstate what was measured. When less than half of the weights can be measured, no Overall Score is published either. A data line that has never extracted the target field (none of its records carry a target) contributes no Target component: an unread field is excluded, a read-but-empty field is a genuine zero. Why the Overall may exclude a component while the scores themselves never rescale: a missing SRMS reading or a registry record's unread target field is our coverage gap, not the company's disclosure failure — so it leaves the mean entirely; inside a score, an unmeasured component keeps its weight so that missing evidence can never raise the number. The components and their inclusion are printed next to the number, so the reader always sees which four, three or two scores it rests on.
| Component | Weight | Criterion |
|---|---|---|
| EF transparency | 27 | Whether EF values are numerically disclosed in the report (full/partial/none) |
| GWP recency | 13 | AR6 full, AR5 partial, AR4/unclear low |
| Methodology | 18 | Whether EF sources (DEFRA/IPCC/national) are referenced |
| Internal consistency | 14 | Automated check results |
| Scope 3 disclosure | 18 | Category count + total disclosure (cross-sourced in v2) |
| Value chain disclosure | 10 | Supplier/value chain program and breakdown disclosure level (added in v0.2) |
Two views of the same score (since 2026-10). The six components are also published in two groups, each on its own 100-point scale: Scope 1+2 Transparency (EF transparency, GWP recency, methodology, internal consistency — 72 of the combined points) and Scope 3 Transparency (Scope 3 disclosure, value chain disclosure — 28 points). The combined score does not change; the split (scores.transparency_scope, grouping in config/scoring.json → transparency_scope_split) exists because Scope 3 factor error margins are wider by nature and publishing Scope 3 should never read as a penalty on the Scope 1+2 reading. A component that could not be measured earns nothing but keeps its weight in the group's denominator; a group with fewer than half of its points measurable publishes no group score.
The formula lives in config/scoring.json, not hardcoded in the code; every change is versioned (Methodology Board principle, spec 7.1), the live version is declared in every record's API response, and the breakdown appears component by component (scores.transparency_breakdown). Next to every score there is a "why" panel — there is no black box. The full formula of the Accuracy Estimate (σ_T spread, evidence classes, the q̂/b̂/λ_t substitution table, cap rules) is in config/tablo_v1.json — and you can check it yourself against a live record in Reproduce a score yourself below.
Every scored record's API response (/api/record/<record_id>.json) publishes its intermediate quantities in the accuracy block records.dogruluk: .sigma_T (σ_T, combined spread), .delta2 (Δ², reducible uncertainty), .qhat (q̂, flag rate), .bhat (b̂, corrected systematic bias), .skor (the score), .bant_alt / .bant_ust (band low / high), .beyan_toplam (disclosed total) and .tablo (the frozen parameter-table version it was scored with). The constants are in config/tablo_v1.json under the key sabitler (constants): k₁=33.3, k₂=2.0 · q_kaba.gamma (gross-error weight γ)=2.0 · λ_t=1.0. Two formulas close the loop:
Accuracy Estimate S = max(0, 100·e^(−k₁·Δ² − k₂·|b̂|) − 100·γ·q̂) (CB-P 9.4.1)
Plausibility band E·e^(±1.96·λ_t·σ_T) (CB-P 9.5.1)
Worked example — Ford Otosan 2025 (record ford_otomotiv_sanayi_a_s_2025_v1). The record publishes Δ² = 0.00369, q̂ = 0.0407, b̂ = 0, σ_T = 0.0646, E = 364,378 tCO₂e:
100·e^(−33.3 × 0.00369) = 88.44
88.44 − 100 × 2.0 × 0.0407 = 88.44 − 8.14 = 80.30 → the published score.
Band: 364,378 · e^(∓1.96 × 0.0646) ≈ 321,043 – 413,562 tCO₂e → matches the published 321,050 – 413,553 to within ±0.01% (the record publishes σ_T rounded to four digits).
curl -s https://carbonbench.org/api/record/ford_otomotiv_sanayi_a_s_2025_v1.json | jq '.records.dogruluk'
What this does and does not prove: given the published intermediates, the final score reproduces to ±0.1 with a calculator — no access to our code required. Deriving Δ², q̂ and σ_T themselves from the raw report takes the evidence-ladder and σ dictionaries in the same config file — keys kanit_merdiveni_U (evidence ladder), ef_sigma_sozlugu (emission-factor uncertainty dictionary) and korelasyon (correlation) — plus the Fenton–Wilkinson combination in CB-P 9.2.1: fully specified, but a spreadsheet job rather than a two-line one. If your recomputation of a record does not match, that is a finding, not a nuisance: report it via Support and it enters the public error matrix.
The combined Target Quality (v2: has target 25 · base and target year 20 · scope coverage 20 · SBTi 20 · pace 15; simplified ITR = 3.0 − (r / 4.2) · 1.5) is unchanged. Since 2026-10 each profile also publishes three separate 100-point target scores for Scope 1, Scope 2 and Scope 3 (scores.target_quality_scope, weights in config/scoring.json → target_quality_scope). A scope with no stated target shows "no target stated" — never a zero. The scope of each target is read from its wording by a published rule set (scores.target_scopes), and by the structured reading pass where it exists.
| Component | Scope 1 | Scope 2 | Scope 3 |
|---|---|---|---|
| Target disclosure | 25 | 25 | 25 |
| Base + target year | 20 | 20 | 20 |
| Replaces "scope coverage" | Target clarity 20: absolute/intensity stated (10) · Scope 1 base-year emissions disclosed (10) | Target clarity 20: absolute/intensity and the location/market method stated (10) · Scope 2 base-year emissions disclosed (10) | Category coverage 20: covered categories ≥ 67 % of Scope 3 → 20; less, pro rata; categories named but share not computable → 10 |
| SBTi | 20 if the validated target covers Scope 1 | 20 if it covers Scope 2 | 20 only if the Scope 3 target itself carries a science-based claim |
| Pace | 15 — 4.2 %/yr pathway | 15 — 4.2 %/yr | 15 — 2.5 %/yr (SBTi Scope 3 minimum ambition) |
Why Scope 1 and Scope 2 are scored apart: a Scope 2 target is easier to deliver (procurement, certificates) than a Scope 1 target (process and fuel). A combined "Scope 1+2" target is written to both scopes, but unless the report discloses separate base-year emissions per scope the clarity component is capped — so a company that sets separate targets stays ahead. Clarity and category coverage can only be measured from the structured reading pass; until a report has been read that way the component earns nothing but keeps its weight in the denominator — the profile reports it as "scored over 80 of 100 points" — rather than being silently rescaled (the platform's no-rescaling rule: missing evidence must never raise a score). Protocol text: Change Package No. 2, section E (Panel 4).
IFRS S2 and TSRS 2 describe one flow: identify the climate-related risk, define a metric for it, measure it, set a target on the metric, report progress. SRMS measures how completely and verifiably a report builds that chain — it measures disclosure maturity; it does not measure the size of the risk or how well the company manages it (the sentence appears under every SRMS score). It replaces the Strategy Score v0.1 pilot. Formula and constants: config/strateji_v1.json; protocol: Change Package No. 2 (seven-member AI panel, 23 recorded votes).
| Per risk | Points (cumulative chain) | Evidence required (verbatim quote + page) |
|---|---|---|
| L1 · Named | 10 | The risk and its channel (physical / transition) are stated as a climate risk |
| L2 · Metric defined | 25 | A measurable quantity with a unit, linked to the risk (published compatibility matrix of risk sub-type × metric family) |
| L3 · Measured | 45 | ≥ 1 numeric value for a year ≤ the reporting year; a future-year number is a target, never a measurement ("target leakage" flag) |
| L4 · Target-linked | 60 | Numeric target with a target year and a base year or base value on the same metric |
| L5 · Progress reported | 70 | Progress against the target reported or computable |
| Side dimensions | +30 | Assessment per risk — time horizon, likelihood, impact (5 each; halved when every risk carries the identical wording) · time series (10) · governance of the target (5) |
SRMS = C × (0.85 · D + 0.15 · Sen)
D = Z · mean(s) + (1 − Z) · min(mean(s), 20), Z = min(1, n / 4)
C = 1.00 when both the physical and the transition channel are covered (a risk, or a reasoned exclusion); 0.85 when one is silent
Sen = scenario level: S0 none/one scenario · S1 25 low and high warming families · S2 50 horizon year + a numeric parameter · S3 75 linked to a risk · S4 100 quantified financial outcome
Credibility (Z) pulls the mean down only: a company that names one risk and measures it perfectly scores 41.7, not 92; naming four risks and building the full chain on each can reach 100. The weakest risk is shown on the profile but does not enter the score. Independent evaluation protocol: every point-earning quote must be found word for word in the report text (otherwise the item earns nothing and is queued for a second reading); the number of risks is reconciled against the main reading; the pilot of 50 reports is read twice by two different models and an item is published only when inter-reader agreement reaches κ ≥ 0.75 (κ ≥ 0.80 on the maturity step); a company's appeal may bring a page and a quote, nothing else.
Pilot status (October 2026). The 50-report pilot was read by Claude Opus 5.5 (primary) and Claude Haiku (second reader). Quote verification is against the report text, whichever reader produced the quote (a Founder amendment of 2026-10-08); agreement is measured with Cohen's κ and, because several items are rare, with the prevalence-adjusted PABAK. Eight of ten items pass the κ-or-PABAK ≥ 0.75 gate (the per-risk time-horizon and impact items do not and are not scored); the whole-step agreement is κ 0.63 against a 0.80 target and the median risk-count difference between readers is 2 against a target of 1. SRMS is therefore published with a visible pilot label on every profile, together with these numbers, while the reading prompt and the scenario dictionary are improved; the full agreement study is in the Change Package record.
| Item | κ | PABAK | Published |
|---|---|---|---|
| Named (A) | 1.00 | 1.00 | yes |
| Time horizon | 0.62 | 0.63 | no |
| Likelihood | 0.69 | 0.77 | yes |
| Impact | 0.63 | 0.68 | no |
| Metric defined (M) | 0.50 | 0.78 | yes |
| Measured (O) | 0.70 | 0.91 | yes |
| Time series (S) | 0.67 | 0.99 | yes |
| Target (H) | 0.21 | 0.96 | yes |
| Progress (I) | 0.33 | 0.97 | yes |
| Governance (Y) | 0.28 | 0.97 | yes |
Revenue is held in million USD. Financials in Turkish lira (TRY) taken from KAP are converted with annual average TCMB/ECB rates (config/fx.json). Records without revenue data fall back to the absolute S1+2 percentile and are marked with * — no fake score is produced.
About two thirds of the universe are sealed extracts of regulator data (EPA GHGRP, Canada ECCC GHGRP, EU MRV, UK ETS, Australia NGER, Japan EEGS, Korea GIR), not company reports. Each program covers only part of a company: facilities above a threshold, in one jurisdiction, for the scopes the program defines (for example UK ETS: Scope 1 within the scheme boundary; NGER: Scope 1 + Scope 2; Korea GIR: one combined direct + indirect total). The registry value is therefore a lower bound of the company's total, and each profile states the program's boundary. Registry records carry no emission-factor disclosure; their evidence is the regulatory filing itself.