๐Ÿšง Under construction โ€” I'm migrating this site from Framer to Next.js and publishing it early for testing, so a lot of the content is still in flux.๐Ÿšง Under construction โ€” I'm migrating this site from Framer to Next.js and publishing it early for testing, so a lot of the content is still in flux.๐Ÿšง Under construction โ€” I'm migrating this site from Framer to Next.js and publishing it early for testing, so a lot of the content is still in flux.๐Ÿšง Under construction โ€” I'm migrating this site from Framer to Next.js and publishing it early for testing, so a lot of the content is still in flux.๐Ÿšง Under construction โ€” I'm migrating this site from Framer to Next.js and publishing it early for testing, so a lot of the content is still in flux.๐Ÿšง Under construction โ€” I'm migrating this site from Framer to Next.js and publishing it early for testing, so a lot of the content is still in flux.
Open menu
Switch to Darkhello@product.inc
Writing

What scales across fifty products isn't the design

ยท Alex Zapadenko

There are 139 names in the design system I work in. Sixty-one of them are colours. That number is the most important fact about the system, and the number people expect to matter โ€” the fifty-odd products on the other end of it โ€” turns out to be nearly irrelevant.

I direct AI-driven design at Banyan Software across a portfolio of more than fifty vertical SaaS products. The question I get about that is always some version of "how do you keep up." The honest answer is that keeping up stopped being the constraint a while ago. Production capacity is not what's scarce now. What replaced it is narrower and much harder: deciding what is allowed to exist.

Here's the shape of it, using the version I can show you rather than the one under NDA. The design system behind this site carries fourteen brands โ€” one per case study โ€” and every one of them is those same 139 names with different values behind them. Fourteen brands, 98 shared components, and not one of them branches on which brand is active. A component that asks "which brand am I?" is a component someone has to re-decide fifty times. You can see the whole vocabulary rendered out here.

The rule doing the actual work is a refusal. If the token you need doesn't exist, you stop and ask โ€” you don't invent one, don't inline a value, don't quietly compose around the gap. Nearly every request to add the 140th name is a request to avoid making a decision, and granting it trades one uncomfortable conversation now for fifty small inconsistencies later. A lot of my week is saying no to that, and from the outside it does not look like design work at all.

This is also the part that makes AI-assisted production actually pay. A model can hold 139 names. It cannot hold "use your judgment about the grey." So the generation touches tokens and components, and the individual screens compose deterministically out of what's already been agreed. That ordering isn't an implementation detail โ€” it's the entire reason quality survives the volume, and it's why I keep arguing that the leverage in AI design is in specification rather than drawing.

What it costs, since a systems post with no downside is marketing: this is worse at one-offs than any designer working freehand. When a product genuinely needs something the vocabulary doesn't have, the correct move is to change the contract for everyone โ€” which is slow, and occasionally the wrong trade. I have shipped things that were ninety per cent right because the last ten per cent would have cost a new name. That's a real loss. Pretending otherwise is how design systems get oversold, and why the people living inside them end up resenting them.

Fifty products didn't make me faster. It made me much more careful about what I let in.