Why Design Systems Fail Before You Even Start
Construction on the Leaning Tower of Pisa started in 1173 on ground so soft it's believed to be the reason Pisa got its name, meaning “marshy land.” When the foundation was completed, it had already sunk into the ground three meters. By the fourth floor, the tower’s lean was very visible. Builders chose to compensate rather than fix the underlying issue, making pillars on one side taller than the other. Six hundred years and one decade-long, 30-million-euro stabilization program later, the lesson was clear: the cheapest time to fix a lean is before anyone builds the first floor.
We treat design systems the same way. Most teams watch for failure at launch, but launch is never the cause, just the moment the debt comes due. The choices that decide whether a system holds up get made earlier, before a single component ships, and they're the ones we build our process around.
The Foundational Strategy
By the time a team starts producing components and tokens, the fate of the system is often already decided. We ask the five-and-ten-year questions before that point: how many brands will this support? What products will it need to flex across? Does it still work if the team maintaining it changes entirely? That legwork is what keeps a design system a complete system, instead of a shared file that happens to have some components in it.
Four failure points show up repeatedly across the systems we've inherited and rebuilt: inconsistent tokens, weak color systems, components without boundaries, and AI treated as a shortcut instead of an amplifier. We build against all four from day one.
Token Governance, Not Guesswork
Left to individual judgment, two designers solving the same naming problem land on two different answers, and neither is wrong on its own, until both have shipped, and someone must reconcile them across a live product. We remove that judgment call with a structured naming framework applied to every primitive and semantic token before it enters the system. Nothing ships unchecked, and outliers are documented rather than quietly tolerated.
This isn't a process for its own sake. zeroheight's Design Systems Report 2025 found that 57% of teams cite “defining architecture” as their biggest token challenge, ahead of managing or documenting them. Token adoption jumped from 56% to 84% in a year; the strategy underneath it didn't keep pace. That gap is exactly where we start.
Color Systems Built on Math, Not Mood
Most palette generators anchor everything to a single starting color, which is why two brand colors run through the two different tools rarely land on matching contrast at the same step. We solved that by creating a scalable color strategy that places every color, regardless of hue, on a shared luminance scale. A fixed move along that scale produces a reliable contrast jump; one distance clears WCAG's threshold for large text and UI components; a longer one clears body text. We call it the Accessible Offset.
Because the offset is anchored to luminance instead of a specific hue, it holds up to whatever brand comes through the door next. We solve the contrast math once, so our team never rederives it by hand for every new brand color, and every designer works from the same understanding of how color behaves across the system.
Components With Boundaries
A component that tries to do everything becomes a component nobody wants to use. Add enough toggles and slots, and you get components nested inside components, each one heavier than the last, until designers find it faster to rebuild from the atomic parts than fight the pattern. When bypassing the system is easier than using it, versatility has stopped adding value.
We hold every component to one test: does a new feature strengthen its core purpose, or does it belong somewhere else as its own pattern? That question, asked before a feature enters scope rather than after, is what keeps our components doing their job well, instead of every job someone might eventually ask of them.
AI That Works From a Real Foundation
Most teams treat AI in a design system as a prompting tool: describe a component, generate it, and refine it until everything looks right. This is an expensive, time-intensive, token-heavy process. We treat it as a test of the system underneath it. AI can only build from what it knows, and a fragmented or poorly documented system produces fragmented, poorly documented output, wrong variants, missed accessibility requirements, and patterns rebuilt that already existed.
That's why we invest in consistent token names, clear component rules, and documentation that explains not just what exists but why, before we point any agent at the system. Organized source material means fewer tokens spent resolving contradictions and fewer corrective prompts from the team steering it. Done right, AI becomes a faster way to apply decisions we've already made, consistently and at scale.
Before a Single Brick Is Laid
Every design system starts on solid ground, at least on paper. No team plans to build something that fails, which is exactly what makes a foundation problem easy to miss. It doesn't announce itself. It just determines that a few floors from now, how much time and budget get spent compensating for a decision nobody consciously made.
That's the gap we close. We catch the token that needs a rule, the color that needs a scale, the component that's taking on too much, or the AI workflow running on incomplete context, while those are still quick fixes instead of expensive renovations. Moving fast only works if the ground underneath is solid and building that ground is where we start. Solving problems before it’s too late and the whole system has already sunk into mud.