Case Study - A 36-Ticket Reskin Sequenced So It Never Blocked on Itself

A full-platform design overhaul, sequenced foundation-first across six phases, that shipped the highest-visibility screens fast without rushing the two where a rendering bug actually costs a patient something.

Client
Metabolic Health Platform
Year
Service
Design Systems & Product Craft

A 36-ticket, six-phase reskin, sequenced so a full-platform design overhaul shipped without ever blocking on itself — and produced a component library a second product could consume from day one.

Overview

A new design needed to land across every screen in the patient app at the same time a second, sibling product was about to need the same visual language and component set. Reskinning one app's screens one at a time, with no shared foundation, would have meant redoing the same work again within the year.

The problem

A design-system rebuild has an unforgiving dependency order: tokens and theming before any component, primitives before any page reskin, the app shell before individual pages — but the business needed checkout and the dashboard done fast, not last. Getting the sequencing wrong either means starting over halfway through, or shipping a foundation so rushed that the second consuming product inherits its shortcuts. Layered on top: accessibility and dark mode weren't cosmetic add-ons scheduled at the end — in a health product, a patient reading their own lab results needs contrast, focus states, and screen-reader semantics to actually work, not just look plausible in a demo.

Why it took a physician-engineer

The sequencing decisions on which screens got reskinned earliest were product and clinical judgment, not just backlog triage. The assessment viewer and the lab-scheduling flow — the two screens where a patient is reading their own health data or making a decision about their own blood draw — were treated as their own dedicated tickets with explicit acceptance criteria for data correctness, while lower-stakes screens could tolerate a looser bar. The same judgment shows up in what was explicitly scoped out: no backend changes, no CMS schema changes, no new features — the reskin stayed a reskin, so a purely visual initiative didn't quietly become a scope-creeping rewrite of systems that were already working correctly.

Approach

The sequencing was foundation-first, deliberately: shared component library and design tokens landed before any component work, since every later ticket depended on it; primitives — buttons, inputs, form controls, overlays, navigation — were built and parallelized across developers once the foundation existed; the app shell was reskinned before individual pages, so page-level work happened inside the correct chrome instead of needing a second pass later.

Dark mode, accessibility, and motion were each their own dedicated, gating tickets in the final phase — rather than acceptance-criteria line items scattered across 30 separate page tickets where they'd be easy to skip under deadline pressure.

The library was structured from the start as a package a second, sibling product could consume — not something to extract later. That decision shaped implementation discipline throughout: components built generic enough to serve two products, not just tuned to this one app's exact needs.

Under the hood

React, TypeScript, and Vite, with Tailwind for the design-token and theming layer and Storybook as the component-development and documentation environment for the shared library. Every one of the 36 tickets specified type, phase, size estimate, and explicit dependencies, with a documented in-scope/out-of-scope split and checkable acceptance criteria — sized deliberately to transpose directly into a single sprint story. Dark mode, accessibility, and motion were each their own dedicated, gating tickets in the final phase rather than scattered line items.

  • 0→1 execution
  • Design systems engineering
  • Accessibility (WCAG-aligned)
  • Cross-product component architecture
  • Scope discipline on a regulated health product
Tickets, fully scoped with dependencies
36
Sequenced phases, foundation first
6
Products sharing one component library
2

Outcome

The reskin delivered full platform coverage — every screen from checkout through lab scheduling to the assessment viewer — against the new design, with a shared component library structured for immediate reuse by a second product rather than a one-off visual pass that would need to be redone. The highest-visibility, most time-pressured screens didn't have to wait for the full backlog to clear, while the highest-stakes screens still got dedicated correctness scrutiny rather than being rushed through on the same timeline as lower-risk pages.

More case studies

A Billing Engine That Refuses to Guess

A pure, auditable, replayable determination engine for CMS Remote Therapeutic Monitoring billing — one that blocks a claim rather than emit an uncertain one.

Read more

Making an LLM Prove Every Claim Before It Reaches a Surgeon

An operative-note generation pipeline where a language model may propose a clinical fact, but a deterministic downstream check — independent of the model — decides whether it ever reaches "populated" status.

Read more

Tell us about your project

Our offices

  • Portland
    220 NW 8th Ave
    97209, Portland, Oregon