A Rubric That Doesn't Drift
Heuristic evaluation is one of the cheapest ways to catch usability problems before they ship, but done by hand it drifts between reviewers. I encoded the evaluation I was already doing into a three-layer tool (Nielsen's 10 heuristics, WCAG 2.1 AA, and iOS HIG + Material platform accessibility) that severity-rates every finding on Nielsen's 0–4 scale and emits a per-screen markdown report.
- role
- Solo: method design, evaluation framework & tooling
- stack
- Accessibility · Heuristic evaluation · WCAG 2.1 AA · Mobile · Tooling · AI-assisted
- status
- shipped · in use
How I got here
I review a lot of mobile screens. Heuristic evaluation is one of the oldest, cheapest ways to find usability problems before they ship, but done by hand, it drifts. Two reviewers flag different things. "It's confusing" passes for a finding. Severity gets decided by whoever's most confident in the room. The method is sound; the discipline is what leaks out of it.
I wanted the discipline to be the tool, not my mood that afternoon. So I encoded the evaluation I was already doing into something repeatable: same layers, same rubric, same evidence bar, on every screen, every time. Domain-agnostic on purpose: consumer app, B2B tool, delivery, fintech, health. The screen is the screen.
How I thought about it
Two rules shaped it.
First, specificity beats volume. A finding has to name the exact element, the exact heuristic or criterion it breaks, and a fix someone can implement: "increase the tap target from ~32dp to a minimum 44dp," not "make buttons bigger." No vibes: every finding cites something observed: a measurement, a colour, a specific string, a layout proportion.
Second, preservation-first. The tool doesn't manufacture problems to look busy. If a layer is clean, it says so. Before flagging anything it runs an intent-check: is this a deliberate decision with a rationale? A wrong finding costs a re-review, and an honest "I can't assess this at this resolution" is worth more than a confident guess.
What I actually did: the three-layer method
The evaluator runs three layers on every screen, in order.
Layer 1, Nielsen's 10 usability heuristics, read through a mobile lens. Each heuristic (visibility of status, match to the real world, error prevention, recognition over recall, and the rest) carries its own mobile red flags: a submit button that doesn't disable after tap, error copy reading "Error 4012," icons without labels, competing primary CTAs on a six-inch screen.
Layer 2, WCAG 2.1 AA, the accessibility floor. Contrast (4.5:1 for body text, 3:1 for large text and non-text UI), colour never the only signal, text alternatives, logical focus order, and tap targets at a hard 44×44 minimum.
Layer 3, mobile platform accessibility, where WCAG stops. iOS HIG (44×44 pt) and Material Design (48×48 dp) hit areas, Dynamic Type and Font Scale up to the largest accessibility size, VoiceOver / TalkBack labels and state announcements, haptics, offline states, and platform conventions: edge-swipe back, snackbars, FAB placement.
Everything gets severity-rated on Nielsen's 0–4 scale, from 0 (noted, don't fix) through 4 (catastrophic: blocks the task, loses data, breaks accessibility). A rating isn't a number I like the sound of; it has to answer what specifically happens to the user, how often and for whom, whether they can recover, and what it costs in time, money, or trust.
The output is a per-screen markdown report: assumptions stated up front, then what's working, then findings grouped by layer, each with the element, what was observed, why it's a problem, a concrete fix, and an effort hint (S / M / L), closing with a prioritised recommendation list. Run a batch and it rolls up into a summary: findings by severity and by layer, the most-violated heuristics, recurring cross-screen patterns, and a fix-these-first list ranked by severity × frequency.
Where it landed
The evaluator is packaged as a reusable tool: a single method file plus three references (the heuristics, the accessibility checklist, the report templates), so the evaluation runs the same way for anyone, on any mobile product, whether the screen arrives as a Figma frame, an export, or a description.
I'd rather be honest than invent a launch metric: the method is real and runs today, but I don't have adoption numbers to claim. What I'll stand behind is the discipline it enforces: specific, evidence-based, severity-defensible findings, the same review, the same way, every screen.