OFACScreening — Sanctions-List Match Triage
32 sanctions-screening hits across OFAC SDN, EU Consolidated, UK HMT, UN-SC, Non-SDN SSI, BIS Entity List. Per-hit: name-distance score, secondary identifier comparison (DoB, country, address), 50%-rule beneficial-owner cascade, decision (auto-block / hold-and-review / false-positive / released), SAR filing trigger.
What it is
The shape behind every sanctions-screening tool — ComplyAdvantage, Sayari, LexisNexis Bridger, World-Check. Day-to-day work isn’t running the screen — it’s triaging the 100 hits a day, separating true positives from common-name false positives, and documenting the decision.
What’s in it
- 32 hits across 6 sanctions regimes:
- OFAC SDN — full blocking, including crypto wallet, Tornado Cash, Lazarus Group
- OFAC SSI — Sectoral Sanctions (e.g., Gazprom Neft Directive 4)
- OFAC Non-SDN PLC — sectoral restrictions
- EU Consolidated — Reg 269/2014 (Russia/Ukraine), broader
- UK HMT — SAMLA 2018
- UN-SC — Security Council resolutions
- BIS Entity List — export-controlled
- Per-hit triage shape:
- Name-distance score (Jaro-Winkler-like) 0-100
- Secondary-identifier comparison — DoB, country, address shown side-by-side, matching fields highlighted
- 50%-rule cascade for beneficial-owner blocks (OFAC Aug 2014 guidance)
- Decision (block / hold / false-positive / released)
- SAR filing trigger
- Documented rationale per 31 CFR §501.603 recordkeeping
- Edge cases seeded:
- Ivan Petrov (×2) — same name, one is a 95% true match (DoB exact, city match), one is a false positive (DoB different, city different)
- Cyprus shell co — UBO cascade applies; KYC docs requested to verify the 51% ownership chain
- Tornado Cash output — funds traced through sanctioned smart contract addresses
- Cuban Dr. Maria Lopez webinar registration — released under OFAC General License 31 CFR §515.565 (educational)
- Rusal — removed from SDN Jan 2019 with conditions; historical hit triggered, released
- Common-name false positives — John Smith, Maria Garcia, Ahmed Ali, John Smit — all distance 95%+ but zero secondary matches, all released with documented decision.
Why this shape
OFAC penalties for screening failures are strict-liability. 31 CFR §501.601 requires reporting of blocked transactions. 31 CFR §501.603 mandates 5-year recordkeeping of every decision. The work isn’t running the screen — it’s the triage workflow that turns 100 hits/day into the 2 that actually need action. OFACScreening prototypes that triage.
How it ships
Single HTML file, ~24KB. Zero dependencies. 32 hits × 6 lists × side-by-side identifier compare in 220 lines of vanilla JavaScript.