How-to guides¶
Task-oriented recipes. Each one assumes you've completed Getting Started — pick the task you need and follow the steps.
Building detectors¶
-
:material-rule:{ .lg .middle } Add a new detection rule
Declare an
aggregation_window/list_match/custom_sqlrule with full audit evidence from day one. ~10 min. -
Escape-hatch logic type for ML scorers, multi-source heuristics, graph traversal. Comes with SR 11-7 / E-23 / SS1/23 model evidence baked in. ~30 min.
-
Discover candidate typologies from a run
The offline
aml discover-typologiesCLI clusters a run's unexplained anomalies (no rule caught them) intocandidate_typologies.yamlproposals (status: pending_promotion). Deterministic, human-gated, never auto-promoted. ~5 min. Detailed. -
Detect mule rings from the identity graph
The offline
aml detect-mule-ringsCLI runs deterministic union-find + density community detection over theresolved_entity_linkgraph into a governedmule_rings.json. Surfaced on Network Explorer. Advisory — an investigator confirms, never auto-escalated. ~5 min. Detailed. -
Wire point-in-time reference data (M4)
Declare a reference contract
effective_dated+ add anenrichblock to anaggregation_windowrule so each transaction joins the reference row in force at itsbooked_at— not the latest row. Closes the Pillar-3 SCD-2 gap. ~15 min. Detailed.
Migrating + operating¶
-
Migrate from SAS / Actimize / Mantas
The
aml inventory+aml import-legacywizard parses a legacy rule dump and produces a starterrules:block. Already a how-to. -
Promote a rule across environments
dev → test → uat → prod with sign-off events on the audit ledger. The
Program.environment+Rule.environmentsmachinery. ~5 min. Detailed. -
Stand up a GENIUS Act PPSI program
Walk the richer NPRM-grounded
genius_ppsi_stablecoinspec end to end — 31 CFR Part 502 OFAC sanctions program, ISO 20022 fields, SAR + proposed PPSI CTR, filing-latency SLA, six stablecoin typologies. ~10 min. Detailed.
Audit + evidence¶
-
Prove a
decisions.jsonlhasn't been tampered with. CLI:aml verify-decisions. ~30 sec for a single run, ~5 min to wire into CI. Detailed. -
Export per-case / per-batch evidence packs
Hand a regulator a single-case ZIP, not the whole run.
aml export-caseandaml export-batch. ~30 sec per export. Detailed. -
Use the Case Copilot for a case
Governed, in-page GenAI DRAFTS on the Case Investigation page (#499) — summarize / typology / draft STR-SAR narrative / counterparty network / risk. Human-reviewed, never auto-dispositions, audited as
ai_case_copilot_action. Backend viaAML_AI_BACKEND. ~2 min. Detailed. -
Walk the lineage chain for a case
Paste a case_id and trace it back to source rows. CLI:
aml lineage. Dashboard: Lineage Explorer page. ~30 sec per case. Detailed. -
Run a 5-year transaction-monitoring lookback
The copy-paste runbook companion to the 5-year lookback architectural overview. 60-month replay against the
community_bank_lookbackexample + a deterministic synthetic generator. ~30–60 min wall time on a laptop. Detailed. -
Run a FinCEN Whistleblower internal-channel audit
The offline
aml whistleblower-auditCLI (#531) rolls SAR-backlog exposure, escalation coverage (documented reviewer + rationale), triage time, board-documented decisions, and ledger integrity out of a run's audit ledger into a frozenwhistleblower_audit_report.json(+--markdownboard table +--format nprm-gap). Advisory readiness lens against FR 2026-06271. ~5 min. Detailed.
Monitoring + DQ¶
-
Program.slablock +sla_report.jsonper-run artifact. ~5 min. Detailed. -
Triage defects from
defect_log.jsonl
Round 28's 11-category classifier + data/rule/mapping decision tree. ~2 min per defect. Detailed.
-
Enable the alert prioritization scorer
Advisory, deterministic, explainable
priority_score(0–1) per alert viaprogram.prioritization. Stampspriority_explanation, emits a manifest-pinnedpriority_report.json, ranks the Triage Queue. Never changes a disposition. ~10 min. Detailed. -
Configure risk segmentation + governed suppression
Advisory de-prioritization of low-score alerts on low-risk customers via
program.risk_segmentation. Never auto-closes; emitssuppression_report.json. Requiresprogram.prioritization. ~10 min. Detailed. -
Run a champion-challenger validation
Compare two
prioritizationweight sets on a labelled alert set withaml run --labels --challenger-weights. Emits a frozen, manifest-pinnedpriority_outcome.json(precision@k / recall / winner) for the model-risk committee. SR 26-2; temporal-leakage guard enforced. ~5 min. Detailed. -
Monitor model risk + per-rule drift
Governed model-risk monitoring via
program.model_risk_monitoring. Emits a frozen, manifest-pinnedmodel_risk_report.json(model inventory + per-rule count drift vs prior run + validation cadence). Advisory only; SR 11-7 / OSFI E-23. ~10 min. Detailed. -
Produce an AMLA RTS effectiveness pack
The offline
aml amla-effectiveness-reportCLI rolls one run into the alert→case→STR funnel + per-rule precision + AMLA citation coverage (CDD AMLR Art. 28(1), ongoing monitoring AMLR Art. 26, targeted-financial-sanctions screening AMLR Art. 20(1)(d)) for EU-supervised obliged entities. Deterministic, manifest-pinned; STR acceptance honestly reported as not-tracked. ~5 min. Detailed.
Deploying¶
-
Deploy to Azure with federated identity
Terraform Container Apps + Postgres, Entra ID + Key Vault, workload identity. See the full Deployment guide.
How-to guide template¶
Every page in this section follows the same shape:
# How to <verb> <noun>
> When you need this: <1-sentence trigger>
> Prereqs: <bullet list>
> Time: ~N min
## Steps
1. ...
2. ...
## Verify it worked
<one paragraph + a check>
## Common problems
| Symptom | Cause | Fix |
## Next steps
<links to related how-tos>
If a placeholder doesn't have content yet, it follows this template with the steps marked TODO. Want one filled in? File an issue or PR — the structure is intentional, so contributions can drop straight into the template.