See llms.txt for all machine-readable content.
This workflow exposes a header-authenticated webhook that screens submitted names against the OFAC SDN sanctions list and its alias list, logs each screening to n8n Data Tables, and posts Discord alerts for possible matches plus a weekly audit summary.
There is no sanctions screening template in this library. Measured on 11 September 2026: "sanctions screening" returns 20 results and every one is the substring "actions", "Functions" or "approvals", and "OFAC" returns 3 results that are all the word "Oracle". So this is the first, which also means nobody has checked it but me.
POST a name, get a verdict back in the same request. There is no model. The name is uppercased, accents stripped, dotted abbreviations collapsed and company suffixes dropped, then compared against every entry in the OFAC SDN file and every alternate spelling in the alias file: 39,594 names on each call. An exact match scores 100, and everything else is scored in both directions so a short query cannot rank highly just by being contained in a long one.
The part worth reading twice is what happens when a list cannot be read. The answer is HTTP 503 with the verdict UNAVAILABLE and the words "this name was NOT screened. This is not a clear result." It is never a clear, because the workflow did not look. That was tested by pointing each URL at a 404 in turn, and it also happened by accident: the first call after activation failed to fetch, answered UNAVAILABLE, and the same endpoint screened 39,594 entries seven seconds later. Both fetches now retry three times. A screening that could not happen is recorded as such, and the Monday summary counts those separately and says they must be run again.
An earlier version checked only the primary file. With the alias file missing, PDVSA came back NO MATCH with screened true, because its only listed spelling is an alias: a confident clear for a sanctioned party. Both files now gate the verdict and the refusal names which one failed. If you change the URLs, keep that property.
Real names found two misses. PETROLEOS DE VENEZUELA returned NO MATCH because the listing is PETROLEOS DE VENEZUELA, S.A. and stripping punctuation turned S.A. into the letters S and A, diluting the score to 75. GAZPROM NEFT returned NO MATCH against PUBLIC JOINT STOCK COMPANY GAZPROM NEFT, because a two word query scores 80 against a five word listing. Both are false negatives, and reading the code would never have shown either. Both are fixed, and a count of matches counts parties rather than spellings, because three spellings of one party reads as three targets.
The cost of catching GAZPROM NEFT is noise, measured rather than guessed: 9 parties for that query, 36 for AL HASSAN, 27 for MOHAMMAD ALI, 0 for a name that is not listed. An ambiguous personal name returns a lot of candidates. That is the right trade for screening, where a miss is a breach and a false positive is review time, and the wrong trade for an automated gate.
A clearance recorded by a person suppresses the alert for that exact pair of names, which is the point and also the sharpest edge in this template. The two demo rows are prefixed DEMO ONLY for that reason: an earlier draft used JOHN SMITH, which is inert against today's list and would stop being inert the day one is added. Delete the demo rows.
Known limits, stated plainly. This is the OFAC list only, so a counterparty sanctioned in the EU or the UK and nowhere else comes back NO MATCH. It compares names and nothing else, no date of birth, no address, no identifier, so every answer is a candidate list rather than a finding and says so. A name transliterated differently from the listing, or written in a non-Latin script, will be missed. The name being screened is stored in the log in plain text with no redaction. A response takes seven to nine seconds because 6.7 MB is fetched fresh every time, which is deliberate: a cache that went stale without saying so would bring back the exact silent failure this is built to avoid. And the parser reads the name from a fixed column, so if the Treasury ever reorders the CSV the wrong column would be compared. That is the most likely way this breaks in future.