{
  "id": 13340776,
  "title": "I built 100 compliance screening pages with one command (OFAC, PEP, entity)",
  "url": "https://urgent.news/2026/10/10/i-built-100-compliance-screening-pages-with-one-command-ofac-pep",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-10-10T06:16:05.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/alexcodebytes/i-built-100-compliance-screening-pages-with-one-command-ofac-pep-entity-5ek1"
  },
  "original_language": "en",
  "account": "This article details the process of building 100 compliance screening pages using a single command, which includes screening against OFAC, EU, UK, UN sanctions lists, PEP screening, and entity verification. The system is built using a Cloudflare Worker, a JSON list, and a generator script to produce 100 SEO pages, a landing page, and a Suby product. The live version of this system can be accessed at https://jsonexlab.com/compliance.\n\nThe main functionality of this system is to screen any person or company against various sanctions lists and PEPs. It checks against OFAC SDN (US Treasury, 19,416 entries), OFAC Consolidated (non-SDN), UK OFSI (UK sanctions), EU Consolidated (EU sanctions), UN Security Council (UN sanctions), and PEP (Politically Exposed Persons). Entity verification is also included, using company registries from various countries.\n\nThe article highlights three significant challenges encountered during the development of this system:\n\n1. Cloudflare Workers cannot directly fetch OFAC data due to SSL handshake errors or missing User-Agent. The solution was to move the ingestion process to GitHub Actions, which has a larger RAM capacity (6 GB) and a normal TLS stack.\n2. The XML file (30 MB) cannot fit within the 128 MB Worker RAM. To address this issue, GitHub Actions downloads the XML file, parses it in Node.js, and inserts the data directly into Cloudflare D1 via the D1 HTTP API.\n3. The D1 free tier allows only 100,000 row writes per day. A single OFAC ingestion requires ~39,000 writes, which would exceed the quota if performed twice in a day. To resolve this, the ingestion process is scheduled to run once per day at 01:00 UTC, ensuring that the quota resets and is not hit.\n\nThe architecture of this system involves GitHub Actions for scheduling and automating tasks, Node.js for parsing and processing data, and Cloudflare D1 for storing the data. The system is composed of several components, including a GitHub Actions workflow, a Node.js script for OFAC ingestion, a Cloudflare Worker for handling requests, and a Cloudflare Pages site for displaying the 100 SEO pages.",
  "summary": "This is the 5th stream in a series. Previous ones: HS codes , document parsing , finance validators , watch/monitoring . This time — compliance screening against OFAC, EU, UK, UN sanctions lists, plus PEP screening and entity verification. Same playbook each time: one Cloudflare Worker + one JSON list + one generator script → 100 SEO pages + landing + Suby product. Live:…",
  "key_points": [
    "100 compliance screening pages built with one command",
    "System screens against OFAC, EU, UK, UN sanctions lists, PEPs",
    "Challenges included Cloudflare Worker limitations and D1 write quota"
  ],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}