2025-26

Design system development

Ten public-facing tools, twenty thousand users a year, and not a single shared component between them.

Ten public-facing tools, twenty thousand users a year, and not a single shared component between them.

Sole designer for the Slush Platform design system, built from scratch across those ten tools. I owned the full surface: color system, typography, spacing, component architecture, documentation, and developer handoff.

In 2025 I built the foundational system while leading one designer in mirroring the platform foundations to the app side. In 2026 I am responsible for scaling both, as well as leading a designer alongside me.

why was the design system needed

Slush is a global startup and tech event that connects founders, investors, and operators. The event runs on a digital platform: a suite of over ten public-facing tools that serve the roughly twenty thousand people who attend each year. Team rotates quickly, and product runs on a yearly timeline.

Slush is a global startup and tech event that connects founders, investors, and operators. The event runs on a digital platform: a suite of over ten public-facing tools that serve the roughly twenty thousand people who attend each year. Team rotates quickly, and product runs on a yearly timeline.

The reliance was on a single Figma frame with a handful of styles, and several local components with no documentation. No connection between what existed in design files and what lived in code.

The reliance was on a single Figma frame with a handful of styles, and several local components with no documentation. No connection between what existed in design files and what lived in code.

The reliance was on a single Figma frame with a handful of styles, and several local components with no documentation. No connection between what existed in design files and what lived in code.

Building the system and the redesigns in parallel

Building the system and the redesigns in parallel

The conventional approach would have been to audit everything first, define tokens, build components, then roll the system out. That sequence assumes the product surface is stable. Slush's wasn't. The tools were being actively redesigned. Waiting for a clean audit would have meant building a system for products that no longer existed by the time it shipped.

Atomic design made this possible. Starting from the smallest primitives and composing upward meant the system could be useful from day one and grow alongside the products rather than requiring a finished library before any product work began.

Step 1: primitives first

Colors, spacing, and typography foundations built before any components. These were small enough to define quickly and immediately usable across every tool being redesigned.

Step 2: products drive components

Instead of speculating which components the system would need, I let the product redesigns surface them. If a pattern appeared across multiple tools, it entered the shared library. If it didn’t, it stayed local.

Step 3:

Step 3: scaling the team

Throughout the first year, I led and guided a designer to extend the design system to our app.

In 2026, I lead and guide a designer to grow both files alongside me.

DESIGN DECISIONS

Setting up colors

The existing palette had no structure: hex values from unrelated hues, green-derived grays too light for dark surfaces, no accessibility testing.

The existing palette had no structure: hex values from unrelated hues, green-derived grays too light for dark surfaces, no accessibility testing.

I rebuilt it with blue-derived neutrals that read clean on dark backgrounds. The single-hue derivation kept the entire scale consistent. Every value was contrast-checked and given a semantic role: surface, text, border, interactive state.

I rebuilt it with blue-derived neutrals that read clean on dark backgrounds. The single-hue derivation kept the entire scale consistent. Every value was contrast-checked and given a semantic role: surface, text, border, interactive state.

I rebuilt it with blue-derived neutrals that read clean on dark backgrounds. The single-hue derivation kept the entire scale consistent. Every value was contrast-checked and given a semantic role: surface, text, border, interactive state.

Setting up typography

The platform had been using Knockout at its boldest weight, 71; the same weight used in Slush's graphic material. At UI scale it was too heavy to read comfortably and poor for accessibility. 

The platform had been using Knockout at its boldest weight, 71; the same weight used in Slush's graphic material. At UI scale it was too heavy to read comfortably and poor for accessibility. 

I moved headers to Knockout 51, then shifted the primary hierarchy mechanism from weight to color: body text uses the secondary color token rather than primary, creating separation through contrast rather than mass.

I moved headers to Knockout 51, then shifted the primary hierarchy mechanism from weight to color: body text uses the secondary color token rather than primary, creating separation through contrast rather than mass.

I moved headers to Knockout 51, then shifted the primary hierarchy mechanism from weight to color: body text uses the secondary color token rather than primary, creating separation through contrast rather than mass.

Components built for real depth

Components built for real depth

Each new component that makes it to the design system comes from real product redesigns. The general rule of thumb is: if the component is/going to be used across multiple tools it’s brought to a design system. This helps to keep the design system factual, and allows to scale the system in a rapid product cycle.

Read more

What the system deliberately leaves out

What the system intentionally leaves out matters as much as what it includes. Tool-specific components stay local, even when the temptation is to centralize everything. The Meeting Tool’s company card is a tool-specific artifact that is not re-used anywhere, thus it lives only locally.

REFLECTION

End result? A more mature product structure with shared tokens and components between Figma and code.

End result? A more mature product structure with shared tokens and components between Figma and code.

End result? A more mature product structure with shared tokens and components between Figma and code.

The gap between design and code is closed. Developers reference the same tokens in production that drive the Figma library, so what a designer specifies is what ships.

Before the design system: 30-40% of the "fix" tickets during testing would be minimal UI changes VS 5% now. The communication layer has shifted from descritptive into a sharper token and component driven approach.

Personal thoughts

Personal thoughts

The system is still growing, which means the hardest judgment calls are ongoing: when to abstract, when to leave something local, and when a pattern has proven itself enough to graduate. My first instinct was to systematize more aggressively; I pulled back once I saw that premature components sat unused. The system works because it’s smaller than it could be.

50+

Components with variants built to support product needs.

10

Public-facing platform tools now sharing one design system.

  • NEXT UP → EVENT PLATFORM

  • NEXT UP → EVENT PLATFORM

  • NEXT UP → EVENT PLATFORM

Full case study

  • NEXT UP → EVENT PLATFORM

  • NEXT UP → EVENT PLATFORM

  • NEXT UP → EVENT PLATFORM

Full case study

GET IN TOUCH.

Always open to new collaborations

or just a chat about design systems.

GET IN TOUCH.

Always open to new collaborations

or just a chat about design systems.

GET IN TOUCH.

Always open to new collaborations

or just a chat about design systems.

GET IN TOUCH.

Always open to new collaborations

or just a chat about design systems.