Adverse media
Transparency

Adverse media — exactly how it works, and what it does not do.

Adverse-media screening looks for negative news about your subject: financial crime, regulatory action, cyber offences, organised crime. This page documents the whole pipeline — where the articles come from, how a subject is bound to an article, what evidence you get back, what the Unavailable status means, and the limits we have measured and not hidden.

The short version. The source is GDELT, an open global news-monitoring project. Evidence is prefetched by a background sweep, so a screening request never calls the news source over the network. A hit comes back with a headline, a publisher, a date, a category and the person entity that matched. If we have no prefetched evidence for a subject, we say Unavailablewe did not check — instead of returning a clean pass.

1 · Where the data comes from

We use GDELT — the Global Database of Events, Language and Tone — a free, open news monitoring project that indexes worldwide news coverage. We use two of its surfaces:

SurfaceWhat it gives usHow we use it
DOC 2.0
api.gdeltproject.org
Article metadata only: URL, headline, publisher domain, index date, language. It full-text-searches the archive, but it never returns the article body. Retrieval. Finds candidate articles for a subject name combined with financial-crime terms.
GKG 2.0
(Global Knowledge Graph)
data.gdeltproject.org
The entities GDELT itself extracted from each article — including the person entities named in it — plus themes and a document tone score. Evidence. Tells us whether GDELT's own extractor identified your subject as a person named in that article.

GKG is what makes the feature work at all. DOC matches an article's full text but only hands back the headline — and real adverse coverage very often does not name the subject in the headline. A genuine hit like “Goldman Sachs settles shareholder lawsuit over 1MDB scandal” names no person at all. Reading GDELT's extracted person entities recovers exactly those articles.

Attribution. Adverse-media results are derived from The GDELT Project (gdeltproject.org). Headlines, publishers and links are the property of their respective publishers. This citation is rendered alongside adverse-media results in the API response, the PDF report and the regulator pack — it is a condition of GDELT's terms, and it travels with the data.

2 · The prefetch model — a screen never calls the network

Adverse media is not fetched live during your request. A background sweep populates a cache; the screening request reads that cache and nothing else. The screening-time provider has no HTTP client at all — it is structurally incapable of making a network call.

  1. The sweep runs in the background

    For monitored, previously-screened and newly-enqueued subjects, the sweep queries GDELT DOC for candidate articles, then downloads the GKG slice each article was indexed in and joins them by URL to recover the extracted person entities.

  2. Evidence is scored and stored

    Each article is bound to the subject and scored (see below). What survives is stored as evidence — headline, publisher, date, category, matched person.

  3. Your screen reads the cache

    POST /v1/screenings/check performs one indexed read. No third-party call sits in your latency budget, and a news-source outage or rate limit cannot slow down or break a screen.

  4. An unknown subject is enqueued

    A subject nobody has ever screened has no prefetched evidence. That screen returns Unavailable instantly and enqueues the name. The sweep polls every 15 minutes, so evidence is normally available within minutes — and the next screen is real.

This is a deliberate inversion. The previous design made a synchronous call to GDELT inside every screen; GDELT rate-limits a shared cluster egress IP, so we were paying seconds of latency to obtain nothing. Taking the call off the hot path is what makes the feature both fast and honest.

3 · Unavailable is not a pass — read this before you integrate

“We did not check” and “we checked and found nothing” are different answers. Every screening response carries an adverseMediaStatus. An empty media result with status Unavailable means the check did not happen. Your integration MUST NOT treat it as a clean pass. A control that silently reports “no adverse media” when it never looked is 100% false negatives while still looking like coverage — that is the single worst failure mode this feature can have, so we surface it explicitly instead of hiding it.
adverseMediaStatusMeaningIs an empty result a clean pass?
Skipped You opted out for this screen ("adverseMedia": false), or the feature is disabled. No — we did not look.
Ok Evidence was read successfully. Yes — an empty result is trustworthy.
Stale Evidence was served from an older cached lookup. It may be out of date. Qualified — treat with the age in mind.
Unavailable No evidence exists yet for this subject. The subject has been enqueued for the next sweep. No. Adverse media was not checked.

The status is persisted with the screening and rendered in the PDF report and the regulator pack, so an auditor can see, months later, whether a given screen actually checked the news.

4 · How a subject is bound to an article

Naive name matching on news text is how an adverse-media feature earns an analyst's contempt and gets switched off. Two controls stand between a name and a hit.

Ordered, adjacent name binding

A name must appear as an ordered, adjacent span — not a bag of tokens. A token-set match would let “Adam Smith and John Maynard Keynes” resolve to the subject “John Smith”. It cannot, here.

The rarity gate

A common name can never clear the bar on the name alone. For a high-collision surname, an extracted person entity is not accepted as identification, and we fall back to stronger headline evidence. The surname list is generated from our own corpus of 490,072 names — every surname shared by 25 or more distinct individuals.

The reason the second control exists is worth stating plainly: a better entity signal tells you an article is about a person of that name. It never tells you which one. Name ambiguity sets the bar; evidence has to clear it.

The rarity gate is also a fairness control, not only a precision lever. Common names concentrate in particular ethnic and national groups, so a matcher that floods on common names effectively discriminates by surname.

5 · What you get back with a hit

An adverse-media match is not a bare hyperlink. Every hit carries the evidence an analyst needs to triage it without clicking out, and an auditor needs to resolve it after the link has rotted.

FieldWhat it is
headlineThe article headline.
publisherThe publishing outlet's domain, for source credibility.
publishedAtWhen the article was published/indexed. A 2009 allegation and a 2026 conviction are not the same signal.
externalIdThe article URL.
adverseMediaCategoryThe FATF-style category (see below).
matchedPersonThe person entity that bound the subject to the article. This is the “why” behind a hit whose headline names nobody. Null when the subject was identified from the headline alone.
exculpatoryOutcomeAn outcome term in the headline suggesting the subject was cleared rather than accused (“acquitted”, “charges dropped”). See below.
articleToneGDELT's own published tone score. Display-only. See §7.

We never store article bodies. Adverse media on a natural person is criminal-conviction and offence data, so retention is kept to the metadata above. GDELT hands us every person it extracted from an article — typically several — and we store only the one that binds your data subject. The other names belong to people who never asked to be screened.

Exculpatory headlines are down-ranked, never suppressed

An article saying “Smith cleared of money laundering” puts the subject and a crime word in the same headline — which naive scoring reads as maximum adverse, for an article that exonerates him. Such a match is now down-ranked and flagged with the outcome term. It is not hidden: auto-suppressing it would trade a visible false positive for an invisible false negative, and an acquittal is still information an analyst wants to see.

6 · Categories

A hit is categorised from the financial-crime term that matched, so a tenant can set a different decision per category. The categories are:

CategoryCovers
FinancialCrimeMoney laundering, fraud, bribery, embezzlement, ponzi / financial scams.
CybercrimeHacking, data breach, ransomware and other cyber-enabled offences.
RegulatoryRegulatory / supervisory action: fines, censure, enforcement, licence revocation.
HighRiskTerrorism, trafficking, organised crime, smuggling.
UnknownAdverse media that could not be slotted into a specific category.

The mapping is a keyword table, on purpose. It is auditable, and it can be shown to a regulator and contested by a data subject. A black-box classifier can be neither.

7 · Why we do not use sentiment analysis

The obvious idea is to score how negative an article is and flag the negative ones. We measured it, and it does not work — so tone is captured for display and is barred from every decision path (a build-time architecture test fails if tone ever reaches the scoring engine).

Negative ≠ relevant

An article can be scathing about a politician's dress sense — very negative, zero AML relevance. On a live sample of 1,440 articles, the most negative items were a prison riot, a depression story and a celebrity death. Zero predicate offences.

Relevant ≠ negative

A money-laundering indictment is often reported in clinical, neutral prose. A tone gate at −5 was measured to discard 44% of genuinely AML-relevant articles — an embezzlement suspension scores only −3.21.

Adversity is established by what the article is about — it matched a financial-crime term in its full text and the subject is named in it — not by how cross the journalist sounds. “The headline contains 'acquitted'” survives a regulator. “Tone: −1.8” does not.

8 · What it actually catches — measured

Against our adverse-media golden benchmark, replayed through the real filter, binder and emitter, at the shipped relevance threshold (0.7):

59.1% recall

13 of 22 benchmark positives — subjects with known, dated adverse media — are caught. Reading the PERSON entities GDELT already extracted, instead of the headline alone, lifted this from 22.7% (5 of 22) — nearly triple, with no change to the threshold.

100% precision on common names

15 of 15 clean common-name subjects (the false-positive stress set) produce no hit. This is the number that decides whether an analyst keeps the feature switched on — and it is unchanged by the recall work above: the recall was bought with better evidence, not a lower bar.

Read these numbers with their caveats. The benchmark is 22 positives and 15 common-name negatives. That is a small corpus: the percentages are indicative, not a measurement anyone should tune a compliance control on. Recall is measured only over positives GDELT actually returned articles for — a subject with an empty source response is a coverage gap, not a filter miss. At the same threshold, the rare-name negatives came out at 1 of 2 cleann = 2, far too small to express as a percentage, and a real false positive we are not waving away. The full curve, with its own caveats, is regenerated by the test suite rather than hand-written.

9 · The limits — what this does not do

An honest limit is worth more to you than an inflated claim.

LimitDetail
Source-coverage gaps are real Some subjects are missed because the source never names them. Roger Ng (a convicted 1MDB banker) is missed by our benchmark: GDELT returns on-topic articles for him, but they are about Jho Low and Tim Leissner — GDELT's extractor never identifies him as a person entity in any of them. No amount of tuning on our side fixes that. It needs a different source.
We surface, we do not resolve We can tell you an article is about a person with your subject's name. We do not confirm it is your subject. Adverse media is a discovery layer that produces a Review, not a verdict — a human dispositions the hit.
No article bodies, no licensed prose We hold headline, publisher, date and link. We cannot reproduce article text — we have not licensed it, and we will not pretend otherwise.
No syndication dedup yet One story carried by many outlets currently produces several matches, not one clustered event.
English financial-crime terms GDELT indexes many languages, but our retrieval terms are English, so non-English coverage is under-represented today.
Not a human-curated dossier A commercial vendor sells entity-resolved profiles with a researcher behind each record. This is not that. It is a source-linked, auditable discovery layer built on open data — which is why it is self-hostable and why it does not carry a per-lookup licence fee.

10 · Using it from the API

Adverse media runs by default. Send "adverseMedia": false to opt out of it for a screen (the status then comes back as Skipped).

# Screen with adverse media (the default)
curl -X POST https://aml-screening.dloizides.com/v1/screenings/check \
  -H "X-Api-Key: $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "fullName": "Jho Low", "adverseMedia": true }'

The response carries adverseMediaStatus alongside the matched entities. Check it before you treat an empty media result as clean:

{
  "decision": "Review",
  "adverseMediaStatus": "Ok",
  "matchedEntities": [
    {
      "sourceList": "ADVERSE_MEDIA",
      "rejectionTag": "adverse_media",
      "adverseMediaCategory": "FinancialCrime",
      "headline": "...",
      "publisher": "...",
      "publishedAt": "...",
      "matchedPerson": "..."
    }
  ]
}

An adverse-media hit tags the screening adverse_media and drives a Review decision by default. Per-category decisions are configurable per tenant. Bringing your own adverse-media endpoint is also supported — see Data providers.

Attribution

Adverse-media results are derived from The GDELT Project (https://www.gdeltproject.org). Headlines, publishers and links are the property of their respective publishers. Screening assists your compliance programme; it is not legal advice, and an adverse-media hit is an indication to review, not a finding of wrongdoing.