UX audit

ROAS target: 18 findings, 21 laws, five refined screens

An expert review of the first redesign (v1) against Nielsen’s ten heuristics and 21 UX laws, followed by a refinement (v2). The brief: keep the original design recognisable, so the screens can be rebuilt in Figma without starting over.

Limits. This is a heuristic review of static screens, not user research. “Pass” means the design follows the law on paper. It still needs testing with users, and the test plan is at the end.

18

Usability findings

6 serious · 10 moderate · 2 minor

18 of 18

Addressed in v2

0 verified with users

3 → 19

Laws passed, of 21

1 not testable statically

Before and after

1. Target type

Target type, before (v1)
Before (v1). First redesign.
Target type, after (v2)
After (v2). Radio list, one context line, stepper. The selected option reveals only its own fields. Source HTML

2. Tag inventory

Tag inventory, before (v1)
Before (v1). First redesign.
Tag inventory, after (v2)
After (v2). One alert with the consequence, a budget-split bar, one table, one primary action. Source HTML

3. Deal-ID recovery

Deal-ID recovery, before (v1)
Before (v1). First redesign.
Deal-ID recovery, after (v2)
After (v2). One amber alert. Matches rated strong or partial. The Hubspot gap becomes a quiet note. Source HTML

4. Hubspot deal

Hubspot deal, before (v1)
Before (v1). First redesign.
Hubspot deal, after (v2)
After (v2). Completed steps collapse. “Matched on” chips explain the list. Six columns, no pagination. Source HTML

5. Target list

Target list, before (v1)
Before (v1). First redesign.
Target list, after (v2)
After (v2). Grouped by brand, a progress bar for budget used, one status pill and one action per row. Source HTML

Usability findings

Severity uses Nielsen’s scale: 1 minor, 2 moderate, 3 serious.

IDScreenHeuristicFindingSeverityFix in v2
F011 Target typeAesthetic and minimalist designTwo stacked blue banners (context, then “Top Level Target, 1 of 1 defined”) carry equal weight and compete with the task.2One quiet context line. “1 of 1 defined” dropped; progress lives in the stepper.
F021 Target typeAesthetic and minimalist designOne decision is asked twice: a Target Type select and a fully open list of the same four options.3A single radio list. The select is gone.
F031 Target typeRecognition rather than recallEach option needs a two to three line paragraph read before choosing. Bold emphasis is scattered through the text.3One-line plain description plus “Asks for” chips. Full definition sits behind an info icon.
F041 Target typeVisibility of system status“Step 1 of 3” is small monospace text at the far right of the header.2A three-step stepper with current and completed states.
F051 Target typeMatch between system and real worldUppercase monospace tags (“SALES, CAPPED SPEND”) read as codes, not language.1Sentence-case descriptions.
F061 Target typeRecognition rather than recallSelection is shown only by a light-blue row. No radio, so the choice affordance is weak.3Radio plus blue border and tint. The chosen option reveals only its own fields.
F072 Tag inventoryAesthetic and minimalist designThree solid-blue buttons compete on one screen (Split Budget, Attach Tags, Save Split).3One solid primary (Save split). Split budget and Attach tags are outline.
F082 Tag inventoryConsistency and standardsHeader and nested table repeat the same column headings, and the dates disagree (01–10 Jan above, 01–30 Jan in the row).2One table. Dates made consistent.
F092 Tag inventoryVisibility of system statusFour counters have equal weight, so the one that matters (45 without a target) is read last.2One alert leads with the consequence. Available, running and allocated become quiet inline text.
F102 Tag inventoryConsistency and standardsThe sidebar logo is an empty blue square and the role labels are tiny monospace.1Labelled mark and sentence-case role switcher.
F113 Deal-IDAesthetic and minimalist designTwo amber alerts in one form (no Masterbrand, then Hubspot deal not mapped) cause alert fatigue.3One amber alert. The second becomes a neutral note with one action.
F123 Deal-IDMatch between system and real world“3 of 3 signals” is jargon, and amber on “2 of 3” implies an error when it is a partial match.2“Strong match” and “Partial match” with a three-dot meter. Partial is neutral.
F133 Deal-IDConsistency and standardsA brown “Notify Finance Ops” button is not part of the button set. Footer actions are centered, away from the form edge.2System outline button. Footer: Back left, actions right.
F144 Hubspot dealAesthetic and minimalist designEight columns and identical-looking rows (same name, amount and date) make the choice hard to discriminate.3Six columns, brand and stage under the name, “Matched on” chips explaining why these rows.
F154 Hubspot dealError preventionPagination (1…10, go to page) for five records. “Map & Proceed” is disabled even though a deal is selected.2“Showing 3 of 5”. The primary action is enabled once a deal is chosen.
F164 Hubspot dealAesthetic and minimalist designDuplicate headings (“Define Top Level Targets”, “Top Level Target”) and an empty table of dashes add noise.2Completed steps collapse to summary rows. The empty table becomes a “What happens next” note.
F175 Target listConsistency and standardsBrand repeats on every row. Actions use different verbs (Edit, Fix, Map deal). Data is dense monospace.2Rows grouped by brand. Budget gets a progress bar. Verbs name the job (Edit, Fix tags, Map deal).
F185 Target listVisibility of system status“Need attention 2” is micro text with no affordance.2An amber chip, “2 need attention”.

21 UX laws

Each law checked against the screens, before and after.

LawWhat it asksv1v2Evidence
Aesthetic-usability effectA calm screen reads as easier to usePartialPassConsistent hairlines, spacing and one hierarchy across all five screens
ChunkingGroup related informationPartialPassContext, fields and actions are separate groups; tables hold six columns, not eight
Cognitive loadRemove what the task does not needFailPassOption paragraphs and a second alert removed; details move behind info icons
Doherty thresholdResponses under about 400 msNot testableNot testableNeeds a working prototype to time
Fitts’s lawMake targets large and closePartialPartialButtons are 40px and grouped right. Table links remain small
Goal-gradient effectShow progress toward the goalPartialPassStepper with done state; budget-split bar
Hick’s lawFewer, clearer choices speed decisionsFailPassFour options, one expanded, one control instead of two
Jakob’s lawBehave like products people knowPassPassFamiliar modal, radio list and table patterns
Law of common regionShared background groups itemsPartialPassContext bar and note panels each own a region; equal-weight banners removed
Law of proximityClose items are read as relatedPartialPassLabels sit with values; actions sit with their rows
Law of PrägnanzPrefer the simplest readingPartialPassOne layout per screen; duplicate headings removed
Law of similarityLook-alikes behave alikePartialPassOne button set, one pill style, one verb pattern
Law of uniform connectednessLinked items look linkedPartialPassStepper joins the three steps
Mental modelMatch the user’s wordsPartialPass“Strong match” replaces “3 of 3 signals”; “Fix tags” names the job
Miller’s lawKeep working memory loads smallPartialPassAt most six columns; one headline number instead of four
Occam’s razorRemove what adds nothingFailPassSelect-plus-list and the second alert removed
Pareto principleServe the common path firstPartialPassThe common choice is one click; definitions are optional
Postel’s lawBe liberal in what you acceptPassPassManual Deal-ID entry and partial matches are both accepted
Serial position effectFirst and last items are rememberedPartialPassThe alert comes first; the primary action comes last
Tesler’s lawLet the system absorb complexityPassPassMatches are suggested and Hubspot is pre-filtered by the user’s own selections
Von Restorff effectThe odd one out is rememberedFailPassBefore: two amber banners and three blue buttons. After: one amber alert, one primary

v1: 3 pass, 13 partial, 4 fail, 1 not testable. v2: 19 pass, 1 partial, 0 fail, 1 not testable.

Spec for Figma

What stayed the same

What changed

ElementChange
StepperNew. Three steps with current and done states, replacing “Step 1 of 3” text.
Context barOne grey bar with chips replaces two blue banners. Chips are pill, 12.5px, white.
Option cardRadio list. Title 15px semibold, one-line description, “Asks for” chips. Selected: 1px blue border and #F0F5FC tint, with its fields revealed inside.
Match meterThree dots plus “Strong match” (green) or “Partial match” (neutral). Replaces “n of 3 signals”.
NoteAmber for one blocking-risk message per screen. Neutral grey for information. Outline button for actions inside.
ButtonsOne solid primary per screen. Outline secondary. Text for Cancel and Back. Footer: back and cancel left, primary right.
Status pillOne pill per row with a dot. Colour: green Live, amber for anything needing action, grey for neutral.
TablesAt most six columns. Header 12.5px semibold on #F7F8FA. Group rows by brand. Budget gets a 6px progress bar.

Tokens

TokenValueUse
Blue#1A56A8 · tint #F0F5FC · dark #1A3C82Primary, selection, sidebar
Ink · muted#1A2027 · #717182Text, helper text
Hairline#DDDDDD · #E4E7ECBorders, row dividers
Amber#8A5300 on #FFF9E8, line #F0DCA8Needs action
Green#1E7D50 on #E6F4ECLive, attached, strong match
TypeTitle 20/28 · body 14/20 · small 12.5/18 · micro 11.5/16IBM Plex Sans 400–700
Space · radius4 · 8 · 12 · 16 · 24 · 32 px · 4px, pillLayout

Every value above is a variable in roas-ui.css, and each screen is a plain HTML file in assets/roas-ui/screens/.

Test before you trust it

Five people who set up targets (two Brand, two Publisher, one Finance), five tasks, think-aloud:

Measure task success, time on task, and first-click correctness. A finding is “verified” only after at least four of five complete its task unaided.

← Back to the case study