Design system

Prism Design System 

Four brands, recognizably related and never interchangeable from one token structure.

Role:
Solo systems design architecture, tokens, accessibility, documentation

Built with:
Figma + Claude

img_1

Overview

Prism runs four independent brands,Cobalt, Iris, Coral, Harbour from one token structure. Each brand keeps its own color, type, and geometry. None of it lives in the components. Adding a new brand costs 109 tokens and one setting. Nothing else moves.

The constraint

Recognizably related. Never interchangeable.These are products in one portfolio, so a family resemblance is correct the failure mode isn't looking similar, it's being swappable. Every brand differentiates on four axes at once:

Brand differentiation — four axes

Color alone would have made them variants. Type, geometry, density, and timing make them brands.

img_2
img_3
img_4
img_6

The architecture

Token flow — Primitives to Components

Components only ever bind to Semantic. Primitives are hidden from the picker entirely, so nobody can reach past the layer that gives a color meaning.

Before this, one color did two jobs — blue was both a brand color and the "info" status. Change one, break the other. The split made that impossible rather than just fixed.

img_8_a img_8_b
img_7

Measured, not guessed

Cobalt's accent was supposed to be a specific yellow. It failed contrast at 1.55:1 against a 4.5:1 minimum.

Instead of guessing a replacement, I measured how much saturation each hue can hold once it's dark enough to pass.

Warm hues can't be dark and saturated at once — which is why every warm accent in the system had looked dull. The accent became magenta. Passes at 4.55:1.

Measured, not guessed — accent hue

Using Prism Design System and Claude to build a full Roadmap & Tasks dashboard

The fix that wasn't

White text on dark-mode buttons was failing at 3.1:1. Two fixes

The first fix didn't fix anything it moved the failure from the text to the button. Shipped the second.

The fix that wasn’t — dark-mode ink

What AI did, and what it didn't

751 tokens × 4 brands × 2 themes is not a thing you re-check by hand every time something changes. Claude scripted the audits — contrast ratios, unbound colors, whether every token actually resolved.

It also got things wrong. One early script flagged 68 tokens as broken that were fine. The fix wasn't correcting the script — it was learning to test that a checker passes the known-good cases, not just flags the bad ones.

Claude checked the work. Every design decision was mine.

What AI did, and what it didn’t

Outcome

  1. 416 text + 192 non-text contrast pairs verified across every brand and theme.

  2. 751 tokens, 4 brands differentiated on color, type, geometry, density and motion.

  3. 58 components, zero broken instances, zero forked per brand.

  4. 696 brand/theme/token combinations, zero unresolved.

  5. Chart palettes validated against colorblind simulation, not eyeballed.
Outcome

Reflections

The interesting part wasn't designing the system. It was finding out how much it still got wrong, once I re-measured it, and again once I used it. A token I'd logged as a near-miss in one brand was failing in all four.

Systems don't drift because people are careless. They drift because nobody re-measures.

Lets Talk!

For collaboration or freelance opportunities, please contact me at alexis.blas@me.com. follow me on LinkedIn.