From lawvable-awesome-legal-skills
Adjudicates sanctions, PEP, and adverse-media screening hits as true positive, false positive, or escalate. Provides deterministic audit trail for compliance analysts.
How this skill is triggered — by the user, by Claude, or both
Slash command
/lawvable-awesome-legal-skills:screening-alert-adjudication-amir-fadaviThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill adjudicates a single screening hit — a name that an upstream screening system flagged as a possible match against a sanctions list, PEP list, adverse-media source, or similar watchlist — and reaches one of three conclusions:
This skill adjudicates a single screening hit — a name that an upstream screening system flagged as a possible match against a sanctions list, PEP list, adverse-media source, or similar watchlist — and reaches one of three conclusions:
Screening systems generate enormous volumes of low-quality alerts. Analysts spend their time clearing alerts that should never have fired (wrong entity type, common name with no overlap on identifiers, partial-name matches that ignore naming convention). A deterministic, criteria-driven adjudication layer can clear the obvious false positives and confirm the obvious true positives, leaving humans to focus on the genuinely ambiguous cases.
The skill is designed around two non-negotiable properties:
Adjudication runs through tiers. Each tier escalates token spend; earlier tiers exit as soon as they can.
references/tier-0-parsing.md.references/tier-1-rules.md.references/tier-2-rules.md.references/tier-3-research.md.If no determination is reached by the end of an applicable tier, the skill escalates with the full evidence record.
Required from the user or upstream system:
Useful if provided, optional otherwise:
Default to interactive mode when a human is at the keyboard. In interactive mode, ask once for any of the following that aren't present and would materially help:
In batch mode (system feed, no human present), proceed with whatever is provided. Don't ask. If essential context is missing and the rules can't conclude, the skill escalates — that's the correct outcome.
Read the list entry first. Most watchlist entries carry an explicit type field (individual / entity / vessel / aircraft). Use that.
For the screened side: ask in interactive mode. In batch mode, attempt inference from the name structure but flag the inference as low-confidence. The type-mismatch FP rule (FP-1) requires high-confidence types on both sides — it never fires on inferred screened types.
Across every list type and every rule, the underlying question is the same: is the screened name the same party as the listed party? List type affects the consequences of the answer, not the question itself. The same matching engine applies whether the list is a sanctions list, a PEP list, or an adverse-media source.
That said, list type affects the threshold for action:
A screening hit often involves names from different cultures, scripts, and naming conventions. Standard fuzzy matchers handle this badly — they treat "Jose Andrea" as matching "Jose Andrea Coronado" by string overlap and ignore that Coronado is the anchor surname in Hispanic convention.
The skill parses both names into structural components first. Anchor components (the parts that genuinely identify the person) drive matching; non-anchor components are corroborating context. The naming-convention reference (references/naming-conventions.md) defines anchor and non-anchor components per convention: Hispanic, Portuguese, Arabic, Russian, East Asian, Indonesian/Burmese, Western default.
When the script is non-Latin or the name is a transliteration from a non-Latin source, the skill is aware that the same source-language name can produce multiple Latin spellings. See references/transliteration-variants.md for documented variant patterns. When Tier 3 web research runs, source-language queries are part of the search ladder.
Every adjudication produces a single record in two views, generated together from the same underlying state:
The full schema and narrative format are in references/output-schema.md. Both must be produced on every adjudication, regardless of outcome.
The narrative never characterizes its own confidence beyond what the rules produced. There is no "this appears to be" or "likely false positive" language. A rule either fired or it didn't.
For escalations, the record includes a gaps_for_human field listing the specific information that would have allowed determination. The skill does not make a recommendation toward TP or FP on escalations — the evidence package is presented neutrally so the human draws their own conclusion.
Follow this sequence on every alert. Don't skip tiers and don't reorder them — the determinism guarantee depends on the order.
Capture every field from the input. Note what's missing. In interactive mode, ask once for material gaps.
Parse both names and the listed-entry context per references/tier-0-parsing.md. Produce the parse record. If parse confidence is low for either name, note it — this disables structural-mismatch FP rules in Tier 1 for that pair.
Evaluate each Tier 1 rule (FP-1, FP-2, FP-3) per references/tier-1-rules.md. If any rule fires, produce the FP determination and stop. If none fires, proceed.
Evaluate each Tier 2 rule (TP-1, TP-2, Escalate-2, FP-5, FP-6) per references/tier-2-rules.md. Log soft signals (gender, geography, partial-DOB mismatch where the hard rule didn't fire) but do not let them drive determinations. If a rule fires, produce the determination and stop. If none fires, evaluate whether Tier 3 has a realistic research path.
Per the gating in references/tier-3-research.md, Tier 3 runs only if at least one of these is true:
If none of these holds, escalate without Tier 3. Don't burn tokens on research that can't conclude.
Work through the four-rung language ladder. Stop as soon as TP-3 or FP-7 fires, or when the 8-fetch retrieval cap is reached. Snapshot every retrieval that contributes to the determination.
JSON + narrative, per references/output-schema.md. Include every tier's evaluation, every rule that was checked and whether it fired, every retrieval if Tier 3 ran, and the final classification.
references/tier-0-parsing.md — How to parse names and classify naming conventionsreferences/tier-1-rules.md — Hard FP rules (FP-1, FP-2, FP-3)references/tier-2-rules.md — Structured corroboration rules (TP-1, TP-2, Escalate-2, FP-5, FP-6)references/tier-3-research.md — Web research procedure, language ladder, source ranking, TP-3, FP-7references/naming-conventions.md — Anchor and non-anchor components by naming conventionreferences/transliteration-variants.md — Documented variant patterns for cross-script name handlingreferences/place-name-equivalences.md — Cities and countries with multiple names (Leningrad/St. Petersburg, Bombay/Mumbai, Persia/Iran, etc.) for POB and address comparisonreferences/output-schema.md — JSON schema and narrative formatRead the tier reference for the tier you're currently executing. Read the supporting references (naming conventions, transliteration variants) when Tier 0 or Tier 3 needs them. You don't need to read everything up front — the SKILL.md tells you which file to consult when.
npx claudepluginhub lawve-ai/awesome-legal-skillsScreens individuals/entities against 12+ sanctions/PEP databases (OFAC, EU, UK, UN, INTERPOL) with false positive assessment, HITL decisions, and compliant reports. For KYC/compliance workflows.
Generates a spreadsheet of test entries from OFAC, OFSI, and EU sanctions lists to validate screening system coverage and fuzzy match calibration.
Activate for: sanctions, OFAC, HMT, SDN list, EU sanctions, UN sanctions, sanctioned entity, sanctions screening, false positive, name match, OFSI, consolidated list, sanctions breach, SWIFT screening, payments screening, sanctions compliance, derisking. NOT for: AML transaction monitoring or typology assessment (use aml-typologies), KYC customer onboarding CDD/EDD (use aml-cdd-edd), SAR drafting (use aml-sar-drafting).