Decision
Machine learning was given no authority to create or suppress an alert. It orders the queue and nothing else.
Context
The obvious version of this project replaces scenario rules with a classifier and reports a large precision improvement. That version is unshippable, and it took a while to articulate why in terms stakeholders accepted.
Alternatives, and why not
- Replace the scenario engine with a classifierAn examiner can ask why a specific transaction did not alert. 'The model scored it 0.3' is not an answer. The whole surveillance obligation rests on the answer being a written, approved rule.
- Let the model suppress low-scoring alertsThis is threshold tuning wearing a disguise. It reduces volume by reducing coverage, and it moves the misses somewhere nobody counts them.
- Use the model only offline, for periodic analysisSafe and nearly useless. The investigator's queue order is where the value is, and it is a decision being made badly hundreds of times a day.
Rationale
Placing the model where it cannot decide is what made it approvable. It also had an effect I did not anticipate: because the model was not gating anything, the compliance conversation stopped being adversarial and became a design conversation.
What it cost
Precision gains are capped by the rules. The system never gets the headline number a pure classifier would report, and I gave that up deliberately.
Outcome
Detection accuracy improved 25% and false positives fell 30% without a single approved rule being changed, which is precisely why it was allowed to ship.
What I would do today
The same, and I would write the authority boundary into the code as an explicit interface rather than a convention. A rule that lives only in a design document is one refactor away from not existing.
What it moved in the diagram