zain_
ai lab · intervention
← all of the ai labTooling2026industry

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.

photo drops here
The three-layer method diagram: Nielsen's 10 heuristics → WCAG 2.1 AA → iOS HIG + Material platform accessibility, run in order, each feeding the 0–4 severity scale

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.

photo drops here
A sample per-screen report: one finding shown in full: severity tag, the heuristic it breaks, the exact element, observation, why-it's-a-problem, the concrete fix, and its S/M/L effort hint
photo drops here
The batch-summary rollup: findings-by-severity and most-violated-heuristics tables across a set of screens, with the severity × frequency fix-these-first ranking

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.