Methodology
How a number is produced here, in enough detail that you could reproduce it by hand. Factor sourcing and what we are licensed to redistribute, version pinning, the resolver’s recorded deliberation, the data-quality tiers, and what an audit entry contains field by field.
Version 1.0 · last updated 2026-09-04
What we are licensed to redistribute, and what we are not.
Almost nobody publishes this. We do, because a factor you cannot legally cite is a factor your auditor cannot accept. Every source below, with the licence recorded against it in the seed registry.
| Source | Dataset | Licence | Status |
|---|---|---|---|
| UK DEFRA / DESNZ | GHG Conversion Factors | Open Government Licence v3.0 | redistributed |
| US EPA | Emission Factors Hub | Public domain (US Government work) | redistributed |
| US EPA | eGRID | Public domain (US Government work) | redistributed |
| ADEME | Base Empreinte | Licence Ouverte / Open Licence v2.0 | redistributed |
| UBA | Emissionsfaktoren, THG-Bilanzierung | CC0 1.0 Universal (public domain dedication) | redistributed |
| India CEA | CO₂ Baseline Database | Government Open Data Licence, India (NDSAP) | redistributed |
| Ember | Yearly Electricity Data | CC BY 4.0 | redistributed |
| Australia DCCEEW | National Greenhouse Accounts Factors | CC BY 4.0 | redistributed |
| NZ MfE | Measuring emissions: a guide for organisations | CC BY 4.0 | redistributed |
| IPCC | Emission Factor Database, AR GWP values | Values used as facts, cited per factor | redistributed |
| USEEIO | v2.0 spend-based supply-chain factors | Public domain (US Government work) | redistributed |
| GHG Protocol | Calculation Tools | Free for public use, silent on redistribution | reference only |
| AIB | European Residual Mix | All rights reserved, express written permission required | not used |
| EXIOBASE | Multi-regional spend factors | CC BY-SA 4.0 | pending review |
Three entries above are not served, and the reasons matter more than the fact. The AIB European residual mix is not licensed to us, so market-based Scope 2 falls to a disclosed grid fallback rather than quietly using a figure we have no right to serve. EXIOBASE is under CC BY-SA, and until counsel has ruled on whether the ShareAlike terms permit serving derived factors, Category 1 for a European organisation stays on the disclosed United States proxy. The GHG Protocol calculation tools say “free for public use” and nothing about redistribution, which is exactly what serving a factor into your report is. The Protocol remains the method we follow; its default factors are already covered by DEFRA and EPA under licences that do say so.
The library also holds downloaded files from further publishers that have no parser and no registry entry. A dataset appears in this table only once a parser, a registry entry and a licence review all exist for it, because unloaded data on disk is not coverage.
What a factor carries here.
In most tools a factor is a number. Here it is a record with nine fields, and every figure calculated with it keeps a frozen copy, so a re-rendered report can never disagree with the filing it re-renders.
| value · unit | The number and the dimension it converts, checked against the activity’s unit before use. |
| publisher | The organisation that published it, linked to its own page. |
| dataset · version | The named dataset and its version string, with the publication date. |
| valid window | The period the factor applies to. An out-of-period factor is recorded as a runner-up, never used silently. |
| licence | The redistribution licence, printed on the report and in every export. |
| region path | A World.Europe.GB style path, so a subdivision code cannot resolve to the wrong country. |
| GWP basis | AR4, AR5 or AR6, with per-gas masses stored natively wherever the publisher provides them. |
| data-quality tier | Measured, calculated or estimated, carried through to the board and the report. |
| resolver record | Why this factor and not another: the decision, the region level used, the candidates considered, the runners-up, and the geographical penalty. |
Version pinning
A filed figure reads the snapshot it was filed with. Updating the factor library does not change a filed report, and re-rendering a prior period returns that period’s number. A correction is an explicit, dated restatement that cites the version it replaces and leaves the previous version readable.
Which countries can be calculated today
Six with a national publisher: Australia, France, Germany, New Zealand, United Kingdom, United States. Ember grid factors resolve for 193 countries. Where a country’s own factors are not yet loaded, the completeness register marks the requirement unavailable and names the gap as ours rather than yours, and it stays in the denominator so the percentage does not flatter us.
What an audit entry contains.
Field by field, because “we have an audit trail” is a claim and this is a specification. The chain is per tenant, and you can verify it yourself from inside the product.
| sequence | A per-tenant monotonic counter. A gap is detectable. |
| previous hash | The hash of the entry before it, which is what makes the chain tamper-evident. |
| actor | Who caused the change: a user, a scheduled job, or a consented support session. |
| action | What happened, in the product’s own vocabulary rather than a database verb. |
| subject | The record, report or grant the entry covers. |
| timestamp | UTC, written by the database rather than the application. |
Filed reports are immutable at the database: update permission on the report table is revoked, and that revocation survived a full restore drill along with 59 row-level security policies and 394 grants. The chain survives a deploy: with fifty mutations in flight and the process killed mid-burst, exactly fifty audit rows were written and the chain remained valid across sixty-three records with no gap and no break.
How we checked our own numbers.
Against the publisher, not against ourselves. Each of these has actually run, and each reading is the one it produced.
Also checked
- A full restore drill that brought back 43 forced tables, 59 policies, 394 grants and the deliberate REVOKE UPDATE on filed reports.
- One million rows and 100 MB imported in 19 minutes 15 seconds, with every cap holding and announcing itself.
- Zero open dependency advisories and zero suppressions: the allowlist is empty.
- A route guard that found 34 unreachable API paths on its first run.
The external methodology review by an independent practitioner is scheduled and budgeted but has not yet happened. Until it has, we describe the output as ready rather than audited, and we would rather lose a deal on that sentence than win one without it.