[ Case study ]
The portal failed its accessibility review: contrast failures across the brand palette, focus order broken on 30 screens, and forms whose error states were color-only. A rebuild was proposed; the council wanted its design fixed, not replaced.
CLIENT a city-council resident-services portal — FOCUS Fix the tokens, not the symptoms
Representative examplesEvery case study in this library is an illustrative composite of the kind of engagement we deliver — written to show our method and standards, not to name clients.
One developer and a communications officer run a city council's resident-services portal — waste collections, housing requests, permits, and payments for a population that includes a large retiree cohort. The portal was built by a vendor contract that ended two years ago. The council's brand palette and typography are set by corporate identity guidance the communications office applies everywhere, from bin stickers to letterheads, and residents' groups review major content changes.
The portal failed its accessibility review: contrast failures across the brand palette, focus order broken on 30 screens, and forms whose error states were color-only. A rebuild was proposed; the council wanted its design fixed, not replaced.
We proposed fixing the system instead of the screens: re-tune the brand palette at the token level so it passes contrast while remaining recognizably the council's identity, then design the states the portal never had — visible focus, text-based error messages, keyboard paths — and repair screen by screen against the auditor's checklist, with the external re-audit as the gate. The audit's failures clustered, so a token change could resolve whole families of findings at once. Content stayed in the communications officer's hands, rewritten in plain language rather than design vocabulary.
Just as important is what we ruled out, and why:
The palette was re-tuned at the token level to pass contrast while staying recognizably the council's brand — one change, propagated everywhere.
Focus rings, error messages with text (not color alone), and keyboard paths were designed for every form — the failures were mostly states that never existed.
Each repaired screen was re-audited against the checklist before moving on, with the final external audit as the gate.
Delivered by the experience pod — 2 designers over 8 weeks, with working increments reviewed with the client every week.
Obstacle
We audited screens one by one before running the token contrast math, and only then found the contrast findings clustered on a handful of palette variables — weeks of screen-level work had hidden the concentration from us.
Handled: We stopped, ran the contrast math first, re-tuned the four tokens, and re-baselined the checklist; whole families of findings closed in one pass and the remaining work was genuinely screen-specific.
Obstacle
The external auditor interpreted the focus-visible criterion more strictly than our checklist — three repaired screens passed our review and failed the auditor's spot-check on the same keyboard path.
Handled: We requested the auditor's test script in advance and reconciled our checklist to it, reworking the three screens and adding the stricter focus treatment to every form still in the queue.
The headline: wcag failures on the external audit, re-test after remediation — 41 → 2, read from External accessibility audit. A second check: brand-identity changes required to get there at 0.
The design survived, which mattered more to the council than the compliance number did — residents still recognize their portal, and the communications office stopped bracing for identity arguments. The developer now checks contrast at the token level before building new screens, because the math that found four root variables became a habit. Forms that used to swallow keyboard users now announce their errors in words, and the retiree-heavy cohort the residents' groups kept mentioning can finally complete a housing request unaided.
The result was read from External accessibility audit against the pre-engagement baseline over the stated window, with a guardrail check on brand-identity changes required to get there. Where platform-reported numbers and business outcomes differ, this record says which layer it is quoting.
What we would do differently
We would have run the token contrast math before auditing screens — two-thirds of the findings traced to four variables, which we found late.
[ Related service ]
[ Related builds ]
[ Next step ]
Next case study