Individuals and businesses with occupations, onboarding dates, risk ratings and expected turnover.
AML test data
with an answer key.
Generate a synthetic bank: customers, accounts, counterparties and months of ordinary transactions, with structuring, mule networks, fast in–fast out and other typologies planted inside. A separate answer key says which scenarios should alert, and which legitimate look-alikes should not.
Runs in your browser. Free plan, no account needed.
- typology
- fast_in_fast_out
- expected_alert
- true
- difficulty
- easy
Inputs and answers,
kept apart.
Source records go to the system you are testing. The answer key stays with you, so you can compare results afterwards.
Salaries, rent, card spending, supplier payments and payroll, with running balances, plus the planted scenarios.
One row per scenario: typology, difficulty, subject accounts, amounts and whether an alert is expected.
Which transactions belong to which scenario, and their role in it.
A sample, generated by ScenarioLoom.
Seed scenarioloom-sample, anchor date 2026-11-01. Open the setup to change the volume, scenarios or format; the same settings always reproduce these files.
expected_alerts · first rows
| scenario_id | typology | label | expected_alert | difficulty | txn_count |
|---|---|---|---|---|---|
| S0001 | fast_in_fast_out | Fast in, fast out | true | easy | 11 |
| S0002 | structuring | Structuring | true | easy | 13 |
| S0003 | funnel_account | Funnel account (fan-in) | true | easy | 30 |
| S0004 | fan_out | Rapid dispersal (fan-out) | true | easy | 25 |
| S0005 | layering_chain | Layering chain or round trip | true | easy | 7 |
| S0009 | benign_payroll | Payroll run | false | 49 | |
| S0010 | benign_marketplace_seller | Online seller | false | 6 | |
| S0011 | benign_student_remittance | Student supported from abroad | false | 2 | |
| S0012 | benign_property_purchase | Property purchase | false | 2 | |
| S0013 | benign_cash_business | Cash-heavy restaurant | false | 25 |
Sample files
Small enough for the Free plan. Answer-key files are marked; keep them away from the system under test.
- transactions.csvTransactions · 110.7 KB · Input for your monitoring system
- customers.csvCustomers · 7.0 KB
- accounts.csvAccounts · 2.8 KB
- expected_alerts.csvExpected alerts · 5.3 KB · Answer key: keep it away from the system under test
- txn_labels.csvTransaction labels · 5.8 KB · Answer key
Built for a repeatable test.
Tune detection rules
Run your rules against data where you know the right answer, then compare alerts with the answer key.
Measure false positives
Legitimate look-alikes such as payroll, marketplace sellers and property purchases show whether rules over-alert.
Score alerts locally
Import your system’s alerts in the workspace to get precision, recall and F1 per typology, without uploading anything.
Common questions.
Is this real bank data?
No. Every customer, account and transaction is generated from a seed. The same seed, settings and engine version reproduce the same data, so a failing test can be rerun exactly.
How large can a dataset be?
This sample is deliberately small. In the workspace you can set the number of customers, the period, the scenarios per typology and their difficulty. Free exports up to 1,000 records per file; Pro removes that limit within your device’s memory.
How do I score my monitoring system?
Generate the data, run it through your system, then import the resulting alerts as CSV or JSON in the workspace. ScenarioLoom matches them by transaction, account or scenario ID and reports metrics locally.
Which currency and threshold are used?
The bank country sets the currency. The default reporting threshold is about US$10,000 converted; only the US figure reflects a real rule, and you can set your own.
Other scenarios.
Generate your own.
Change the seed, volume and scenarios in the browser. Nothing is uploaded.