Sanctions screening breaks in three compounding ways that no threshold adjustment can fix.
A single tunable threshold trades recall for precision blindly. Raise it and you miss matches transliterated differently on the list. Lower it and analysts drown in false positives. The score cannot tell you which candidates were disqualified by evidence and which were simply underdetermined.
A customer is cleared on Tuesday. The OFAC list updates on Wednesday. Was the clearance still defensible? Without session pinning, re-running the query against the current graph does not reproduce the original decision — and a regulator asking you to prove it will know.
An Arabic-script name returns zero candidates against a Latin-script index. Translation at index time introduces naming ambiguity — عمر maps to "Umar" or "Omar" depending on convention — and that choice propagates silently. Sanctions lists carry names in every script; matching must too.
Every candidate carries blocking_evidence (predicates that disqualify it) and resolving_attributes (predicates that would resolve it but aren't yet known) as separate fields. Your team can distinguish a disqualified non-match from a genuinely underdetermined one.
Every adjudication is pinned to the graph version current at decision time. Re-run it six months later and you get the same result against the same evidence basis — because the evidence record is append-only and the session is addressed deterministically, not by snapshot copy.
Names are queried against OFAC SDN, EU consolidated, UK sanctions, UN, and bespoke lists in the script they arrived in — no lossy transliteration at index time. Cross-script retrieval is a query-time operation, not an index-time normalisation.
Register a standing query at onboarding. When any subscribed list updates — new designations, amendments, removals — the query re-evaluates automatically against the updated graph and fires an alert only when the evidence warrants it. No batch re-run required.
Each candidate result carries per-component sub-scores — phonetic similarity, typographic tolerance, nickname conventions, initial handling, and cross-script translation — alongside the composite coherence and certainty values.
When a candidate is blocked, the blocking_evidence field names the disqualifying attribute — so a reviewer can override it, a regulator can audit it, and a false positive can be corrected without re-running the pipeline.
“A reviewer can defend a decision without re-running the model.”
Original-script name matching feeding the cohesion and coherence phases. Cross-script retrieval at query time, not index-time normalisation.
Every mention is appended, never overwritten. Blocking evidence and resolving attributes accompany every coherence, query, and alert response.
Deterministic session pinning. Reproducible clearance decisions without a snapshot copy.
Continuous reshaping as evidence arrives — no destructive merges, every split and merge recomposable.
A demo runs against your sanctions lists and returns resolved candidates with decomposed scores your analysts can audit end to end. Thirty minutes, with engineering in the room.