The sanctions lists, by name
Short answer
OFAC’s SDN list and its alternate-names file, the EU consolidated financial sanctions list, the UK sanctions list, and Australia’s consolidated list — each downloaded from the issuing authority, not from an aggregator.
The index is built from four primary sources. The US Treasury’s OFAC Specially Designated Nationals list, ingested twice: the primary names file and the alternate-names file, because OFAC’s own guidance warns that screening on primary names alone misses a large share of the list — an alias is exactly what a subject uses. In the current build 38,981 indexed names carry an OFAC source.
The EU consolidated financial sanctions list, published under an open licence and reformatted — 30,231 indexed names. The UK sanctions list — 13,603. And Australia’s consolidated list published by the Department of Foreign Affairs and Trade, the DFAT list — 10,778. The same person is often designated on several lists, so those memberships overlap: after normalisation and de-duplication the index holds 78,293 unique entries.
Taking the lists from the issuers rather than through an aggregator is not a purity preference. The best-known aggregator’s data is licensed for non-commercial use, and that restriction follows the data whether it is served from an API or downloaded in bulk. The issuer lists carry their own terms — public domain in the US, open licences elsewhere — and consuming them at the source is what makes the result usable inside a commercial product without a licence question hanging over every record. This is the configuration deployed on stipple.sh; the code also carries an optional path to a licensed aggregator, which is not enabled.
| List | Issuer | Indexed names carrying this source | Date carried |
|---|---|---|---|
| OFAC SDN — primary and alternate names | US Treasury | 38,981 | fetch date |
| EU consolidated financial sanctions | European Union | 30,231 | issuer publication date |
| UK sanctions list | UK government | 13,603 | issuer publication date |
| Australian consolidated list | DFAT | 10,778 | fetch date |
| Unique entries after de-duplication | 78,293 | built 27 Aug 2026 |
What is deliberately not in the index
Short answer
The UN consolidated list, and any PEP data. Both absences are decisions with reasons, and both are stated in the reply rather than left to be inferred.
The UN Security Council consolidated list is not ingested. Its general terms of use permit personal, non-commercial copying and restrict redistribution of derived compilations, which does not sit comfortably with shipping a compiled index inside a commercial product. The coverage cost was measured before deciding: of the names indexed, 52 — one in a thousand — came from the UN list alone, because UN measures are implemented into EU, UK and Australian law and the same designations arrive through those lists. The parser is kept so the decision is one line to reverse if permission is obtained.
There is no PEP data, and this is the absence that matters more. Politically-exposed-person screening is a regulatory obligation in many regimes, and no government publishes a consolidated PEP list; assembling one is precisely the value the commercial aggregators add, and their data carries the licence terms above. So the reply’s sanctions note reports that PEP screening was not performed, and its PEP flag stays false. It never reports “no PEP hits”, because it did not look, and a tool that let “no sanctions hit” read as “no PEP exposure” would be lying by omission.
Two other boundaries are worth naming. The index is a sanctions index — designations — not a law-enforcement wanted list, a court register or a disqualified-directors register. And the lists are the issuers’ lists as published; a designation the issuer has not yet published is, by definition, not in anyone’s index.
Dates: what fresh means per list
Short answer
Every list reports its own date in every reply, and the dates mean different things: OFAC and Australia carry the day they were fetched; the EU and UK lists carry the day the issuer last published.
A screening record has to say how fresh its data was, and a single “last updated” date would be a lie in both directions. So each list carries its own date, and the reply states which kind of date it is.
For OFAC and the Australian list the date is the fetch date — the day the build pulled the file. For the EU and UK lists the issuer stamps a publication date on the file, and that is the date carried. At the build of 27 August 2026 the EU date read 5 August and the UK date read 3 June: not stale downloads, but lists that had not changed since those days.
That distinction is easy to get wrong in the alarming direction — a reviewer sees “June” in August and assumes a broken feed — and getting it wrong in the alarming direction is how a compliance tool loses trust. The dates travel with the result so the reviewer can judge for themselves.
How a name is matched
Short answer
Names are normalised, scored for similarity, floored at 0.70, and never promoted to strong on the name alone. A common name raises a flag instead of a verdict.
Every name in the index is normalised the same way as the query — case, accents, punctuation, transliteration noise — and the subject is scored against it. Below 0.70 a candidate is not surfaced at all, because near-misses on common names generate noise that buries the real hits. At most eight candidates come back, best first.
At 0.90 or above a candidate is a strong candidate — but only if a date of birth or a country corroborates it. If the only thing that agrees is the name, or the date of birth or country you gave does not agree, it comes back `possible` with the corroboration recorded, whatever the score. A perfect match on a string is still a match on a string.
When several uncorroborated candidates score above the strong threshold at once, the result raises a common-name flag rather than presenting the top one. The matching is deterministic — the same query against the same index returns the same candidates with the same scores — which is what makes a result reproducible six months later.
The news layer, step by step
Short answer
One query, up to three usable articles, one batched judgement. The provider and any failover are recorded in the reply, and the caps are the design, not an accident.
The query is the subject’s name together with a fixed set of adverse terms — fraud, convicted, charged, arrested, indicted, bribery, corruption, money laundering, sanctions, embezzlement, terrorism, trafficking, investigation. It runs against a commercial web-search index; if that provider is unavailable, it fails over to the GDELT global news index, which is keyless, news-focused and roughly fifteen minutes fresh. The reply names which provider answered and lists the attempts when a failover happened, because “three articles read” means nothing to a reviewer who cannot tell where they came from.
Up to three results are read — fewer when a page is dead or blocked, and the reply’s `articles_read` says how many. Where the provider supplies an excerpt of at least 200 characters, that excerpt is used; otherwise the page is fetched, in parallel, with dead and blocked pages dropped. That excerpt path exists for a reason: a paywalled or bot-walled article used to vanish from the screen entirely — a silent recall loss on exactly the outlets that break financial-crime stories.
Then one batched judgement runs over all the articles at once: for each, is it about this subject or a different person who shares the name — using role, employer, country and age to tell them apart — and if it is the subject, which category of adverse content, at what severity (convicted, charged, alleged, mention), on what date, with a quoted evidence line of at most 160 characters. Articles judged to be about someone else are returned under `excluded` with the reason. Articles judged not adverse are dropped.
The caps are deliberate. At most three usable articles per subject, and on the news-index path English-language and recency-weighted. A wider net would find more and cost more and, above all, would be no less a statement about coverage. The reply says what it searched and how much; that is the honest unit of screening.
What a weekly rebuild promises
Short answer
That a scheduled job rebuilds the index from the issuers each week — and that each list’s date is in every reply, so the actual freshness is checkable rather than trusted.
A scheduled weekly job downloads each list from its issuer, normalises and de-duplicates it, stamps each source with its date, and publishes the result. OFAC in particular changes most days, and a designation invisible for a fortnight is the failure that matters, which is why the cadence is weekly rather than monthly. If a refreshed index cannot be fetched, the copy shipped with the service keeps serving — and the dates in the reply are what show it.
Weekly is also a stated compromise rather than a boast. A designation published on a Tuesday can be absent until the following build, and the reply’s dates let a reviewer see exactly that window. Where the obligation demands same-day coverage, the honest answer is that this index is one input and the issuer’s own search is another.
Each build records its own timestamp in the index status, and the reply carries each list’s date and a one-line coverage statement — primary sanctions designations only, no PEP data — so the boundary is in the record, not only on this page.
What to record on your side
Short answer
Coverage, not a verdict: which lists, on what dates, at what threshold, with what corroboration, which provider, and what was excluded.
A stored “clear” ages into a claim nobody can support. A stored coverage record stays true: on this date, these four lists at these dates, this query against this provider, these candidates at these strengths, these articles read and these excluded. All of it is in the reply, and none of it needs to be reconstructed later.
Two habits follow. Keep the exclusions — they are the evidence that the question was actually considered. And relay the `limitations` paragraph as written: it says that this is coverage and not a determination, that a name-only hit is possible and never confirmed, and that nothing found is not a clean record. Those are the three sentences a compliance file most needs and most often lacks.
Frequently asked questions
Which sanctions lists does the screening use?
Four primary lists downloaded from the issuers: OFAC’s SDN list with its alternate-names file, the EU consolidated financial sanctions list, the UK sanctions list and Australia’s DFAT consolidated list — 78,293 names at the current build. No aggregator sits in between.
Is the UN sanctions list included?
No. Its terms of use restrict redistribution of derived compilations, and the measured cost of leaving it out was 52 names in 78,000 — UN designations are implemented into EU, UK and Australian law and arrive through those lists. The parser is kept so the decision is reversible.
Is there PEP data?
No. No government publishes a consolidated politically-exposed-persons list, and the commercial aggregations are licence-restricted. The reply’s sanctions note says PEP screening was not performed and its PEP flag stays false — never “no PEP hits”.
How fresh is the data?
A weekly job rebuilds the index from the issuers. Each list carries its own date in every reply — the fetch date for OFAC and Australia, the issuer’s publication date for the EU and UK — so an older issuer date usually means an unchanged list. If the refresh fails, the copy shipped with the service keeps serving and its dates stay old, so the fetch dates on OFAC and Australia are the check.
Where do the adverse-media articles come from?
One search of the subject’s name with financial-crime terms over a commercial web-search index, with the GDELT news index as failover. Up to three usable articles are read and judged in one batched pass for entity match, category, severity and a quoted evidence line. The provider that answered is recorded in the reply.
How does it avoid matching the wrong person with the same name?
Two ways. Sanctions candidates are never promoted to strong on the name alone — a date of birth or a country has to agree. Media articles are judged for entity match using role, employer, country and age, and those about a different person are returned as exclusions with the reason rather than dropped.
Sources and further reading
- 01OFAC — Specially Designated Nationals list (primary and alternate names)
- 02EU — consolidated financial sanctions list
- 03UK — the UK sanctions list
- 04DFAT — consolidated list (Australia)
- 05GDELT — the global news index used as failover
- 06The screening guide for developers — corroboration gating and the response shape
Educational guidance, not a forensic certification. Detection technologies and standards change; review material decisions against current evidence.