πŸ”’ Re-screen a customer sheet against the OFAC sanctions list with Google Sheets and Slack

⚑ 0 views Β· πŸ”’ SecOps & Security Automation

Description

Quick overview

Every night this workflow re-screens each customer in a Google Sheet against the public OFAC sanctions list and its alias file, writes the result back into the sheet, remembers matches a reviewer already cleared, and alerts Slack when a hit stays unreviewed too long.

How it works

  1. Runs every night at 02:00 and reads the editable values from the Screening Settings node.
  2. Downloads both public OFAC files, the primary SDN list and the alias list, because many parties are listed only under an alias. If either file comes back shorter than its minimum row count, nobody is cleared on that run: every row is marked NOT SCREENED instead of a false all clear.
  3. Reads your customer sheet, drops duplicate rows and skips anyone screened inside the recheck window, so each nightly run only does new work.
  4. Screens every remaining name deterministically, with no AI model. Names are uppercased, accents, punctuation and company suffixes are removed, and each pair is scored in both directions so one common surname does not flag everyone who shares it.
  5. Checks each match against your reviewed-matches sheet. A pair a reviewer already cleared is marked CLEARED BY REVIEW with their name and reason, and is not raised again.
  6. Writes new possible matches back into the customer sheet as open hits and stamps every other row with its result. A hit left open longer than the escalation window is posted to Slack straight away, with the number of days it has waited.
  7. Summarises the run and posts it to your Slack channel when there is something to report, and stays quiet when there is not.

Setup

  1. Create a Google Sheet with the columns Customer Name, Customer ID, Screening Status, Screening Detail, Best Score, Matched Name, Screened At, First Flagged At and Cleared By, and fill in your customers.
  2. Add a second sheet for reviewed matches with the columns Customer Name, Matched Name, Cleared By and Reason. A row there tells the workflow a person checked that pair and found it to be a different party.
  3. Connect your Google Sheets and Slack credentials, then select your spreadsheet and sheets on the four Google Sheets nodes and your channel on the two Slack nodes.
  4. Open Screening Settings to set the match threshold, the recheck window and the escalation window. Run it once by hand, check the results in your sheet, then activate it.

Requirements

Customization

Additional info

A score is a candidate for a human to check, never a decision. The default threshold of 85 will raise false positives on common names, which is why a reviewer’s clearance is remembered and not raised again.

Names are normalised, not transliterated. A name written in Cyrillic or Arabic will not match a Latin listing, so keep customer names in Latin script if you rely on this check.

If either OFAC file comes back shorter than its minimum row count, the run refuses to clear anybody and marks the rows NOT SCREENED rather than reporting a comforting all clear.

This template screens against the US OFAC lists only. It is not a substitute for screening against the EU, UK or UN lists your business may also be subject to.

πŸ”— Nodes Used

Google Sheets, HTTP Request, Slack, Schedule Trigger, Filter

πŸ“₯ Import

Download workflow.json and import into n8n: Workflow menu β†’ Import from File

πŸ“– Importing guide Β· πŸ”‘ Credential setup