An answer receipt, worked end to end
Every Kortex answer ships with its receipt: when it was computed, which sources it touched and under what licences, how it was computed, and what it does not claim. This page freezes one real answer so you can read a receipt before you ever call the API; then reproduce it yourself with one command, no account needed.
Specimen captured 2026-07-03T21:03Z · methodology v1.2 · the live answer will differ as the graph tracks the world
The question
The answer (top 5 of 50 rows)
| Legal entity (GLEIF) | Source label | LEI | Fossil % | Fossil revenue | Identity |
|---|---|---|---|---|---|
| 国家能源投资集团有限责任公司 | CHN Energy | 300300VT2BKANW0TKH13 | 98.0 | $19.6B | curated · 0.85 lapsed LEI reg. |
| 中国华能集团有限公司 | China Huaneng | 300300DOD33ZALKAOC86 | 95.0 | $19.5B | curated · 0.90 lapsed LEI reg. |
| 中国华电集团有限公司 | China Huadian | 300300ZOBEZHEZQTRS74 | 100.0 | $14.1B | curated · 0.90 lapsed LEI reg. |
| NTPC LIMITED | NTPC | 335800Q4TRGJXNLVMB81 | 97.0 | $12.9B | curated · 0.90 |
| 中国大唐集团有限公司 | China Datang | 300300VOINXQKJRAGV06 | 100.0 | $11.4B | curated · 0.85 lapsed LEI reg. |
Selected columns from the API's rows (the full rows carry more fields; identity method, warnings, revenue splits), ordered by fossil revenue as returned. Note the identity column: it does not just say "matched", it says how the match was made and with what confidence, and flags anything a careful reader should know; a lapsed GLEIF registration is a fact about the entity record, not about the stitch, and the receipt keeps those separate.
The receipt
- as_of
- 2026-07-03T21:03:50Z; the moment this answer was computed from the graph.
- sources touched (with licence and commercial status)
- OpenInfraMap, ODbL, cleared; refreshed weekly
- Global Energy Monitor, CC BY 4.0, cleared; refreshed quarterly
- WRI Global Power Plant Database, CC BY 4.0, cleared; refreshed annually
- GLEIF, CC0, cleared; refreshed daily
- SEC EDGAR, US Public Domain, cleared; refreshed daily
- methodology (verbatim from the response)
- Sums modelled generator revenue per resolved operator group, split fossil (coal/gas/oil) vs low-carbon. Legal identity per group is the GLEIF entity backed by the most generating capacity via curated OPERATED_BY edges (quarantined stitches excluded; capacity-weighted so many small records cannot outvote one large correct one), then joined to SEC identifiers; falling back to the ultimate parent’s listing when the operating entity itself is unlisted.
est_revenue_usdis a Kortex-modelled estimate (installed capacity × technology capacity factors × zone price signals). It is not reported financial revenue. - confidence model
- Identity is reported in two separate dimensions per row:
entity_record_validitysays whether the selected legal-entity record itself is live in GLEIF;operator_stitch_confidence+operator_stitch_methodsay how the operator was mapped to that entity (manual curation > automated verification > fuzzy source tag). A valid record does not imply a correct stitch, and the receipt never conflates the two. - stated limitations (verbatim)
- Coverage is the generator subset carrying both a resolved operator group and a revenue estimate; deliberately high-fidelity rather than complete; operators outside it do not appear.
resolution_status=lei_matchedmeans a legal-entity record was selected, NOT that the operator-to-entity stitch is verified; readentity_record_validityandoperator_stitch_*together.- The operator display label is the source-attested group string and may lag renames or divestitures; the stitched entity is the authoritative identity.
Reproduce it, or retrieve it
This exact query is on the anonymous public demo scope; no key, no signup. The numbers you get back will be the current graph’s, not this page’s: facts change, and the as_of stamp in your response is the honest date of yours.
curl 'https://kortex.orkora.com/v2/insights/fossil-revenue-exposure?min_revenue_m=1000'
Every computed answer is also archived at computation time. The receipt.retrieve path in your response (GET /v2/receipts/{receipt_id}) returns the frozen answer exactly as it was computed; the canonical rows whose SHA-256 is the receipt’s response_sha256, the request parameters, and the per-source register records as they stood; not a recomputation. Two snapshot identifiers pin the answer’s context: graph_snapshot_id commits to the schema/source register, and data_snapshot_id commits to the observed data state of every contributing source at computation time; each source record in the receipt carries its own dataset_version fingerprint (table row counts, last-update stamps and graph node counts as introspected, refreshed hourly). A changed data_snapshot_id under an unchanged graph_snapshot_id means the data moved, not the schema. This is a state observation at introspection grain, not a cryptographic commitment to row-level content, stated here so the guarantee is not overread.
Why this matters
Most data products give you a number. Kortex gives you a number you can defend in front of your own risk, procurement, or investment committee: where it came from, under what licence, how it was computed, and what it deliberately does not claim. How answers hold up against independent references is published, including the misses, at /validation; the per-source licence position is at /licensing.