Joshua Grams Work Process Hire Email
Case study · Product design · UX audit · 2026

KING50 Copilot: auditing a decision panel that was lying with a number.

A Chrome side panel that turns live market data into one explainable read for a manual trader. The first version worked, but it showed a 100/100 confidence score on evidence that added up to 61. This is the audit that found it, the hierarchy redesign that followed, and how the panel was rebuilt around the question the user actually asks.

Role
Product designer and engineer
Problem
Panel surfaced a confidence figure that didn't match its own evidence, and buried the decision under data
Method
Heuristic audit, data-to-display trace, hierarchy redesign, test harness
Outcome
Honest score, decision-first layout, invalidation conditions and exit math made visible
KING50 Copilot side panel after the redesign
The panel after the redesign. Decision first, then the plan, then the evidence.
01 · The user and the moment

One question, under time pressure: should I act on this?

The user is a manual trader looking at a token with a few seconds of attention to spare. They open the panel to get one read: watch, enter, or walk away, and why. The panel is explicitly a co-pilot. It cannot place orders. Its whole value is that the user trusts the read enough to act on it, so anything that erodes trust is a product failure even if the code is correct.

02 · Audit findings

Three findings, one of them serious.

Finding 1 · The score was inflated

The panel showed 100/100 confidence while the visible factors summed to 61. Tracing the data path: a hidden +50 baseline was added before a clamp to 100. Any moderately positive setup pinned at the ceiling. The number was not a lie in code, but it was a lie on screen.

Finding 2 · Good news in the risk column

A "LOW bundler risk" classification was being emitted through the risk channel, so a positive signal rendered as a warning. The user read reassurance as a red flag.

Finding 3 · Duplicate verdict chip

The verdict appeared twice in the header. Traced to deliberate backward compatibility for an older client. Documented and left in place rather than "fixed" into a regression.

Fix for 1 and 2

Score normalized against the real maximum instead of clamped after a hidden baseline, with baseline, factor sum, raw, and max exposed in the payload so the number can always be audited. The LOW classification moved to the positives channel.

A confidence score the user can't reconcile with the evidence is worse than no score. It teaches them to ignore the panel.
03 · Hierarchy redesign

Reorder the panel around the decision, not the data.

The original layout led with market stats and made the user assemble a verdict from pieces. The redesign inverts it. The sequence now matches how a person actually decides:

Price and momentum at a glance

Current price plus 5m / 1h / 6h / 24h change chips replace the duplicate verdict chip in the header.

The live decision

WATCH / ENTER / AVOID in large type with a one-sentence reason, the honest confidence number, and structure, risk-reward, and risk percentage on one line.

The trade map

Primary entry, confirmation, and invalidation as three numbered zones with the price levels and the reason for each. "What kills the idea" is a first-class element, not a footnote.

Exit check

Round-trip cost and maximum exit size shown before the user commits, because a setup you can't exit is not a setup.

Report card, then evidence

A–D grades across safety, wallets, momentum, entry, execution, and social, followed by the tailwinds and risks that produced them. The Essential view shows real factors; a Pro view adds the ledger reconciliation.

04 · Method notes

How the audit was run.

Chrome extension (MV3)JavaScriptLive APIsHeuristic auditInformation hierarchyExplainable scoring