Kount, an Equifax company · 2024
Trust score explainability
Rebuilt the score as an argument a reviewer can defend, not a number they have to take on faith. Analysts were approving and declining more than a million transactions a day on a score they could not explain.
In codeReview consoleGitHub
Shipped


Constraint
Kount scores over a million transactions a day. An analyst sees a number between 0 and 99.9 and decides: approve, hold, or decline. The score was accurate. It was also opaque. When a merchant challenged a decline, the answer was the number. Disputes escalated to engineering. Manual review felt safer than a decision they could not defend.
Fraud analyst, internal interview“I trust the model. I just can’t tell a merchant why we blocked their best customer.”
Two limits were fixed from the start. The model is proprietary, so contributing factors could surface and weights could not. Reason codes were pre-scripted by the risk team, not generated per transaction. The design problem was how to make that limited set feel sufficient for a decision an analyst has to defend.
What one screen has to answer
| Question | Surface |
|---|---|
| What is the score? | The number and its band, on the same screen as the decision. |
| How was it built? | A waterfall that starts from a stable visual baseline. |
| What drove it? | Active and inactive reason codes, side by side. |

Decisive moves
Separate composition from drivers
Queue observation kept returning two questions: how the score was built, and what specifically drove it. Composition became the waterfall. Drivers became a two-column list, increased and decreased. Data Science controlled which reason codes could surface and how many.
Pin the visual baseline
The mathematical start often sat in the 70s and shifted with every transaction. A waterfall only reads as an argument if it begins from a stable number. We pinned the visual baseline at 80.0 so the movements stayed legible. The underlying math stayed more fluid. That decision made the rest of the interface coherent.

Keep absence visible
Inactive reason codes stay on the screen, dimmed rather than hidden, so analysts learn the full vocabulary and can see what did not fire. A feedback control in the footer flags explanations that do not hold up. That routes to the risk team as reason-code tuning, not a dead end.

In code
The original Figma file is Equifax IP. The public kit is the same slice rebuilt: a ten-row review queue that opens the Payments Fraud case. The explainer lives on that case. Weights stay hidden. Reasons stay pre-scripted. The visual baseline stays pinned at 80.0. Approve, hold, and decline write back to the queue. The score itself does not change.

Open Northwind or Harbor in the live console. Source is on GitHub. The component kit is still in Storybook.
Evidence
The decision did not change. The defensibility of it did.
The feature shipped as Explainable AI for Omniscore. Equifax describes it as giving users factor-by-factor risk assessments that let them identify key risk drivers quickly, improve accuracy, and reduce time spent on manual investigation — and as reducing the need for overly complex rules, because analysts who trust the score stop compensating for it in policy.
Those are Equifax's published descriptions of the shipped product, not outcomes I measured. I designed the interface; I did not run the study that would let me claim a number, and I would rather say so than round one up.
NextRules engine