Kount, an Equifax company · 2025
Rules engine
41.5% adoption of the new policy model and 64.5% task completion for new policies, while platform volume crossed a million transactions a day. Rebuilt Policy Management across three phases so fraud teams could write, segment, and stage rules without treating every change as a production risk.
Shipped


Constraint
A bad policy publishes into live traffic. The problem is not fewer form fields. It is boolean logic an analyst can re-read, plus a path to change policy without betting the day on a single publish.
I was the lead designer on this surface for four years, across a cloud migration and six product leads. It shipped in three phases. Each phase answered a failure mode of the last. Features that made rules easier to write but harder to stage were incomplete.
Decisive moves
Make OR legible
Rule managers could only combine conditions with AND. Common policies became workarounds that were hard to defend later. I started on paper so engineering and product could see how OR changes IF and ELSE before anyone committed a screen.
What shipped was a file-management model. Sets held the slices of traffic. Policies under them could use AND or OR. Scheduling landed in the same pass, so a change could be planned instead of forced live.

Replace triggers with segments
The next failure was scale of a different kind. Policy Management had to serve multiple event types, and two policy engines had to become one: Login, New Account Opening, and Payments Fraud on one configuration surface.
Triggers were renamed segments. A segment is a named slice of traffic for an event type, with its own linked policies. You define who falls into it and what runs when they do. Policy sets left in this phase, and scheduling got harder without them. Analyst sessions, heatmaps on rule-creation drop-off, and several editor directions followed. Pure drag-and-drop lost to a hybrid that kept power without forcing everyone into a syntax surface.
Stage, then publish
Sets came back with a clearer job. A set is a collection of segments and policies for an event type. Only one set is active per event type. Edits do not go live on save. They land as pending changes, can be compared to the published version, and publish only when someone confirms. Historical versions stay readable and locked. Restore is explicit.
Publish path
- 01Segment traffic
- 02Attach policies
- 03Stage as pending
- 04Compare to published
- 05Publish
Policy states
| State | What the analyst sees |
|---|---|
| Active set | The published collection for that event type. Only one is live. |
| Pending changes | Edits held off traffic until someone compares and publishes. |
| Version history | Prior publishes, readable and locked. Restore is explicit. |
Segments stayed. OR logic stayed. Triggers as a label did not: if analysts could not say what fired, the name was wrong. I had designed pieces of this surface earlier. Deciding which of those decisions still held was part of the job. Public product language on Kount’s support site matches the model that shipped: sets, segments, policies, pending changes, and version history.
Evidence
Three shipped phases that made fraud policy writable and stageable under live traffic.
- 41.5%
- adoption of the new model
- 64.5%
- task completion for new policies
Platform volume moved from roughly 100,000 transactions a day to over a million during this work. Adoption and task completion are from internal measurement after Version 3. Users still called parts of the surface clunky where scope was cut. Stated plainly because the alternative is a cleaner story than the one I lived.
NextAuthorized payment protection