What Watchman is

Watchman downloads sanctions lists and scores customers and counterparties against them with an inspectable, multi-field matcher. It is the watchlist engine in a BSA/AML stack: onboarding, periodic refresh, and (where required) pre-transaction screening.

A production query of OFAC SDN 48603 with a passport scores 1.0 at minMatch=0.80. The same name without an ID scores 0.767 and stays off the alert queue. Send the IDs and dates CDD already collects.

Using Watchman · For compliance and risk · Similarity methodology

What you get

Lists. OFAC SDN and Non-SDN, US CSL, FinCEN 311, EU, UK, UN, OpenSanctions Senzing files, CSV ingest. Refresh on an interval or POST /v2/data/refresh. GET /v2/listinfo reports counts, hashes, and timestamps.

Search. GET /v2/search with type, name, aliases, government IDs (gov_passport=US:…), dates, addresses, crypto, contact. Ranked hits with a score in [0, 1]. Optional Senzing JSON. WASM UI at /. Go client. Experimental MCP. type is optional; send it so person/business fields are read and the search stays in one partition.

Matcher. Names are compared token by token (Jaro–Winkler by default), then combined with IDs, dates, and addresses. A matching passport, IMO number, or crypto address can score 1.0. A matching tax number or email raises the score without forcing a match. Two IDs of the same type that disagree lower the score. Optional extras: TF-IDF (down-weight common words) and embeddings (better matches across writing systems).

Tuning. minMatch is the policy cutoff. algorithm is per request. Embeddings, TF-IDF, ingest, address parsers, and geocoding are process-wide. See Configuration.

Lists

Source List
OpenSanctions Senzing-formatted datasets
European Union Consolidated financial sanctions
US Government CSL, FinCEN 311
US Treasury OFAC SDN and Non-SDN
United Kingdom UK sanctions list
United Nations UN consolidated list

INCLUDED_LISTS=us_ofac,eu_csl,uk_csl,un_csl to load a subset.

How names are prepared

Every list record and every query is lowercased, punctuation is stripped, accents are folded (Raúl → raul), and common words like of / the are dropped. OFAC people are also reordered at ingest (MADURO MOROS, Nicolas → Nicolas MADURO MOROS) so a query of nicolas maduro can match. Full steps: Pipeline.

Scoring in one paragraph

Watchman is not a web search engine. It splits names into tokens, compares those tokens, then combines that result with IDs, dates, addresses, and contact. A name-only query is scored lower than the same name plus a date of birth or passport. Add debug=true to see which fields produced the score. A public labeled dataset we used to measure this is described in OpenSanctions Pairs.

Next

Using Watchman · Search · Docker · Configuration