A six-step wizard
The whole rule, in one view
One sentence of fraud policy
The wizard allowed two conditions with no grouping, so this rule couldn't be written at all. The builder expresses it as one rule, and the group reads like the parentheses an analyst already has in mind.
01 · The problem
The wizard capped rules at two conditions and hid the big picture.
Analysts couldn't express real fraud scenarios.
Enterprise customers needed deterministic rules on top of machine-learning scores to enforce their own fraud policies. A misconfigured rule could approve a fraudulent transaction and lead to chargebacks and financial loss. Analysts needed power, clarity, and safety in equal measure.
02 · Role and constraints
New logic on a live decision engine. Mistakes in rule logic cost real money.
What I owned
Problem framing with the PM through implementation: interviews, competitive analysis, the interaction model, validation, UI, and usability testing.
New logic, real stakes
Net-new functionality on top of the ML decision engine, coordinated across UI, back end, and internal APIs.
Accessible by default
Keyboard-only use, predictable focus order, and feedback that never relies on color alone.
What interviews showed
Real-world fraud rules are rarely linear. Analysts reason about the whole rule set at once and keep revising it as fraud patterns change.
03 · Key decisions
Three questions shaped the builder.
Keep the step-by-step wizard, or show the whole rule at once?
I replaced the wizard with a visual logic model that displays the entire rule. Fraud logic is interdependent, and the wizard forced people to back up through steps to fix mistakes, a common point where they gave up.
Every live rule stays in view. Analysts spot duplicates before they save, not after.

How do we support complex rules without overwhelming simple ones?
Nested AND / OR groups with clear visual boundaries. Most rules stay simple (roughly an 80/20 split), but the critical minority needed real structure, so complexity only appears when someone asks for it.
Groups read like parentheses. Each operator sits on the connector it governs.

When should the builder tell you something is wrong?
Confirm valid conditions immediately, and hold error messages until save. Instant confirmation lowers cognitive load, while early errors punish exploratory, unfinished work.
A checkmark, not just a color. Valid states read without relying on green.

04 · The solution
Rules analysts can audit without opening an editor.
Every saved rule reads back as plain language
Saved rules collapse to a single line in the list, then expand into a sentence with their groups intact. Analysts can audit a long rule set without reopening a single editor.
Late-night iPad orders
05 · Outcome
What changed
Conditions per rule
4
up from 2
At launch, built to scale further.
Logic structure
Nested
was flat
AND / OR groups that read like parentheses.
To see the whole rule
1 view
down from 6 steps
The full rule stays on screen while you build, with every live rule below.
Feedback
As you go
was at the end
A checkmark confirms each condition as it's entered. Errors wait for save.
This work enabled MaxMind to offer complex, customizable fraud automation across its customer base, including enterprise platforms serving millions of downstream merchants. Publicly available indicators show minFraud operating at massive scale, screening hundreds of millions of transactions per month, with documented customer chargeback reductions after adoption.
By letting customers define rules on top of machine-learning decisions, the product evolved from passive detection into programmable fraud policy enforcement.
