The token system was the part of Palette I kept closest, because it's where a design system either scales or quietly falls apart.
We built a layered architecture with three tiers we called Styles, Components, and Recipes. Styles held the foundations: primitive values and the semantic tokens carrying intent (what a color means, not what it is). Components consumed Styles instead of raw values, so a change at the Styles layer moved through the system safely. Recipes sat on top, capturing how Components compose into repeatable patterns, so teams assembled proven combinations instead of reinventing them.
The layering was a deliberate tradeoff. A flat token set is simpler to start and faster to break: every rebrand, theme, or platform difference becomes a find-and-replace across the whole system. Semantic layering costs more up front, in naming debates and education, and pays it back every time the system has to change without breaking its consumers. With four platforms consuming Palette (web, native iOS and Android, and in-store tools), change without breakage was the whole job.
Theming proved the architecture every year. Each holiday season, Ulta Beauty's brand colors swapped to holiday colors across the entire experience. Because intent lived in the semantic layer, the shift shipped by remapping values, not redesigning screens: same components, same layouts, new theme underneath, then back again when the season ended. A full seasonal rebrand during retail's highest-stakes stretch, handled at the token layer.
The pipeline mattered as much as the structure. When Figma shipped variables, I built the generation layer that produced the JSON behind them, making our token source machine-readable and keeping design and code synchronized from one origin instead of two hand-maintained copies. That decision, tokens as structured data rather than documentation, set up everything Palette did later with AI.