The architecture
Sources in, evidence out. Every record carries a date and a source before it moves to the next stage.
The sources
Twenty independent sources, grouped by what they are. Sources are not blended: each answers one question, and the question determines where its output can appear.
| Source | What it is |
|---|---|
| Adjudicated — a named regulator’s own decision | |
| EPA (ECHO) | Environmental enforcement dockets, judicial and administrative. Pillar E. |
| MSHA | Mine-safety enforcement. Pillar S. |
| OSHA (ITA) | Workplace fatalities and injury records. Pillar S. |
| SEC | Litigation releases and administrative proceedings. Pillar G. |
| DOJ | Enforcement actions, including foreign-bribery matters. Pillar G. |
| DG COMP | EU competition infringement decisions. Pillar G. |
| FCA | UK conduct final notices. Pillar G. |
| CMA | UK competition decisions. Pillar G. |
| SFO | UK fraud and bribery outcomes. Pillar G. |
| GDPR authorities | Eight national data-protection regulators: AEPD (ES) · Garante (IT) · DPC (IE) · CNIL (FR) · BfDI and the Länder (DE) · UODO (PL) · ANSPDCP (RO) · ICO (UK). Pillar G. |
| Sector registers | FDA · Capital Markets Tribunal · FSC Bulgaria. Jurisdiction-specific determinations, pillar by remit. |
| Commitment and disclosure registries — a filing, not a finding | |
| SBTi | Externally validated emissions targets, with the validation date. |
| UN Global Compact | Participation, and the principle mapping PAI 10 is reported against. |
| Modern Slavery Registry | Statement filed or absent. Recorded as a filing, not scored as performance. |
| CSRD | Filed sustainability disclosure under the EU reporting regime. |
| Company-reported and independently measured | |
| WBA | Benchmark placement and reported emissions, as corroboration rather than a finding. |
| Climate TRACE | Emissions derived independently, from satellite and sensor observation of facilities. Nothing is self-reported to it. |
| Identifier and structural | |
| GLEIF | LEI reference data, and the parent relationships used in the ownership walk. |
| OpenFIGI | Instrument-to-issuer mapping where a record carries a security but no issuer identifier. |
| SEC Exhibit 21 | The significant subsidiaries every US registrant lists with its annual report — the subsidiary-to-parent map for regulators that name an operating entity rather than the listed company. |
| Discovery — none of it is evidence | |
| GDELT · NewsAPI | Event feeds. They can tell the agents which docket to fetch. Nothing a journalist wrote can fire a band. |
Sources being added
The sources below are fetched on their own schedules and matched through the same identifier ladder and parent walk as everything above, but nothing they produce reaches a report, a band or an exclusion yet. Each is held in staging until a hand-checked sample of 100 matched records resolves to the right listed company at 95% precision or better. Most of these regulators act against a national bank or an operating subsidiary rather than the listed parent, and a wrong attribution against a named holding is the most damaging error a report can make.
| Source | What it adds |
|---|---|
| Staged — adjudicated regulators, not yet adopted | |
| OCC | National-bank enforcement actions and civil money penalties. Pillar G. |
| Federal Reserve | Enforcement actions against bank holding companies. Pillar G. |
| FDIC | Enforcement decisions and orders. Pillar G. |
| CFPB | Consumer-finance enforcement actions. Pillar S. |
| FinCEN | Anti-money-laundering penalties under the Bank Secrecy Act. Pillar G. |
| DOL Wage and Hour | Wage-theft cases, from the same Department of Labor data service as the OSHA records. Pillar S. |
| DOJ press releases | Corporate criminal resolutions that sit outside the foreign-bribery pages, such as deferred prosecution agreements. Pillar G. |
| CPSC | Consumer-product safety civil penalties. Pillar S. |
| OFSI | UK penalties for breaching financial sanctions — enforcement of a breach, which is conduct, unlike the designations below. Pillar G. |
| ICO | UK data-protection monetary penalties, fetched through the ICO’s own search API. Reprimands are filtered out. Pillar G. |
| Staged — sanctions designations, a separate flag | |
| OFAC SDN | The US Treasury’s Specially Designated Nationals list. |
| UK Sanctions List | The FCDO’s list, which replaced the OFSI Consolidated List when that closed on 28 January 2026. |
| EU financial sanctions | The EU’s consolidated financial-sanctions file. |
| Pilot — monitored tier, never evidence | |
| GDELT | The project’s raw event files, as a second independent press feed for monitored controversies. Its company matching is measured on a sample before it appears anywhere. |
Sanctions are a flag, not a finding. A designation is a foreign-policy decision, not a determination of misconduct, so it will be shown as a separate “Sanctioned” flag beside the band and never on the band ladder. A company is flagged only on an identifier match; a match on name alone goes to a review queue and appears on no page, because transliterated names and aliases make this the highest false-positive risk of any source. Most designations name individuals, vessels and unlisted state entities, so few listed companies are expected to carry the flag.
Considered and not used
| Source | Why not |
|---|---|
| Violation Tracker | It repackages regulators already fetched here. Where it covers a regulator we do not, we go to that regulator directly. |
| BHRRC | No grant of reuse for its content. |
| OpenSanctions | Commercial use needs a paid licence, and the official sanctions lists it compiles are free at source. |
The GDPR route, stated honestly
Eight data-protection authorities are approached. They are not equivalent, and a source count that presented them as eight interchangeable feeds would be wrong:
| Authority | Status |
|---|---|
| ICO (UK) | The only true API. Machine-readable, respondent named. |
| AEPD · Garante · DPC · CNIL · ANSPDCP | Decisions retrievable with the respondent named, on their own publication cadence. |
| UODO (PL) | The respondent is redacted. A decision can be counted, but it can never be attached to a company — so it cannot fire a band against anyone. |
| BfDI (DE) | Nothing machine-readable at federal level; the sixteen Länder authorities each publish separately. The German route is manual. |
Eight approached, six that can name a respondent. That is the number that matters for attribution, and it is the number the coverage figures are built on. A GDPR decision that can be read but not attributed is counted as a decision seen, not as a finding against a company.
Climate TRACE
Climate TRACE derives emissions independently, from satellite and sensor observation of the facilities themselves. Nobody self-reports to it — which is what distinguishes it from the figures an issuer publishes in its own accounts, and why the two can never be merged into one number.
Climate TRACE names the facility operator; the issuer graph names the listed parent. The two are reconciled through the same parent walk the enforcement records go through, so an observed figure is attributed to the company an investor actually holds rather than to whichever entity happens to run the site.
Where it sits. Beside company-reported figures, as independently measured data with the basis labelled on the figure itself — derived from observation, next to the issuer’s own published figure, not merged with it. It does not enter the severity scale and it does not trigger an exclusion. An exclusion follows an adjudicated determination by a named regulator, and an inference from a satellite is not one.
How the agents collect
Collection runs continuously and per source, because registers publish on their own schedules and none of them announce it.
- Fetch. Each register is checked on its own schedule and the raw response is kept, along with the date it was retrieved. The stored artefact is what the report later links to.
- Parse. A docket becomes fields: regulator, case reference, stage, decision date, penalty where one is stated, and the respondents named in it. Where a term or an end date is quoted — a consent decree, a monitorship — it is parsed from the source’s own text, narrowly, and anything ambiguous stays unknown.
- Deduplicate. The same matter reaches us more than once, from more than one source. It is collapsed to one case, and a case naming ten defendants stays one case.
- Normalise. Stage sets the severity band, source sets the position inside it, and the regulator’s remit sets the pillar.
- Resolve. The parties named in the record become companies, or they go to the precision queue.
Identifier mapping
Resolution is deterministic at every step. A determination names a respondent — often a local operating entity, in the register’s own spelling, with no identifier attached. Turning that into a company a portfolio holds is a fixed sequence of checks, tried in order:
| Step | Basis |
|---|---|
| LEI | The legal entity identifier, where the record carries one. Exact. |
| ISIN | Security identifier, resolved to its issuer. |
| Ticker and exchange | Only together — a ticker alone is ambiguous across venues. |
| OpenFIGI | Instrument-to-issuer mapping for records that carry a security but no issuer identifier. |
| Registered name and domicile | Exact match on the registered name within a jurisdiction. Not similarity, not fuzzy distance. |
Behind the ladder sits a reconciled record of names, tickers, ISINs and LEIs, with duplicates collapsed, and a precision queue holding everything it cannot settle deterministically.
Nothing is matched on name similarity. If no check resolves it, the record goes to the precision queue and is held. It is not attached to the nearest plausible company, and until it resolves it is counted as unseen rather than dropped — which is why coverage is reported as its own figure.
Parent and subsidiary
Regulators act against the entity in front of them, which is usually not the listed company. A fine against a national operating subsidiary is invisible to any dataset that stops at the named respondent — and that invisibility is exactly what makes a holding look clean.
So resolution does not stop at the entity. Once the respondent is identified, ownership is walked upward to the listed parent, and the determination is attributed to the company an investor can actually hold. Every hop is recorded, so the chain from docket to holding can be read back: this determination, against this subsidiary, owned by this parent, on this date.
Attribution is point-in-time throughout. Ownership as at the determination date is what governs, not ownership today, and where holdings are involved presence is recorded at stated observation dates with no continuity claimed between them.
What comes out
A run produces three dated outputs — the companies scored, the findings behind them, and the exclusions — each stamped with the register revision and scoring version that produced it. The six reports are views onto those artefacts rather than separate pipelines, which is why the answers cannot contradict each other.
What is deliberately not collected
No modelled or inferred figure is ever scored. Nothing estimated stands in where a company has not reported, no sentiment or controversy score is derived from media, no self-reported questionnaire is accepted from the assessed company, and no third-party ESG dataset is overlaid on top — the pipeline resolves, normalises and validates its own inputs rather than inheriting someone else’s conclusions.
Where a commitment depends on revenue by activity — tobacco, thermal coal, oil and gas — it is reported as untested rather than assumed passed. Where a company sits outside US, UK and EU jurisdiction, no adverse finding can arise here, so the absence of a finding says nothing about it.
Coverage is reported as its own figure beside every result, kept separate from it. A low adverse figure where coverage is thin can mean the record is hard to see rather than clean.
See this on your own holdings.
Clients receive the reports on current data across the complete universe, with the source record behind every determination. Higher-frequency updates and bespoke reporting are available on request.
Unlock the full report
703 companies, every determination and every source link, on data as at 30 June 2026. We will email you a link to open it.
Check your inbox
We have sent a link to . Click it to open the full report. The link is valid for 24 hours.
Nothing arrived? Check spam, or email hello@sustainesg.io.