CRUSETRA

See what each scenario catches, and what it costs, live.

A scenario's threshold is the score above which it raises an alert. The figures here come from our public test set: cases we wrote ourselves, including benign ones an analyst would close without acting. Nothing here comes from a real bank, and the page recomputes the figures as it loads.

crusetra monitoring · our public test set, live

$ crusetra monitor --live

each point is one scenario at one threshold, from our public test set. Pull the floor line or the slider, and the scenarios that stay above it, confidence interval included, turn green

Pick a cell: each shows what that scenario catches on confirmed suspicious cases, over its false alerts on benign cases, at that threshold
scenario \ threshold0.500.600.700.800.850.900.951.00
amount
velocity
structuring
round
zscore
passthrough
peer

pick a cell: what it catches over what it flags incorrectly, with the number of cases and the interval

$ crusetra optimise --recall

$ crusetra verify --sealed

checking…

What this rests on, for your IT auditor
  • Our public test set. releve-public.json in the repository, with a content hash (a checksum) of 5e2a96e22fa0b59c, measured at commit 85f8a11 on 2026-09-07. Before the page is built, that script checks that hash and recomputes every figure. If one of them disagrees, nothing is published.
  • The cases we wrote. The labeled half is written by hand: typologies of suspicion (structuring, rapid movement, a dormant account that wakes, round-tripping) and benign cases (payroll, seasonal trade, loan repayments) that resemble them. Each case arrives with its label, and where a label is debatable the reason is written beside it.
  • The generated half. Generated from the written cases, one kind of change at a time, and counted on their own, because a generated one is not as hard: the toggle above switches the whole grid.
  • How the tool picks. The slider sets the share of true cases you want caught. A setting counts only if the low end of its confidence interval clears that share, because a rate measured on few cases can flatter. The tool then takes the setting with the fewest false alerts.
What this page cannot do
  • Your data. This page cannot read it: no network request leaves it (the browser’s own security rules forbid them), nothing is loaded from elsewhere, and there is no input field to paste an alert into.
  • It cannot show a rate without the number of cases behind it. Each cell shows both, with its 95% confidence interval. Each scenario the tool ships with appears in our test set, and if one were ever missing it would show as a labeled blank.