Underhype has a design system — Linnea. It helps me vibe-code new features in a consistent style. Here's how it's built, and how I actually add to it.
Where it lives
Linnea lives in three places: the app's own code, the tool called Paper, and Claude Design. It seems overcomplicated at first glance, but each place has a different purpose.
Linnea in the code — aka CSS files and React components — is the one version actually wired to production.
Linnea in Claude Design lets me sketch ideas without drowning in AI slop.
Linnea in Paper is made for me. Paper is a design tool whose canvas is just HTML and CSS under the hood, so I can see every component at a glance, play with parameters, and swap shapes and colors.
Paper also holds the templates for email letters — receipts, confirmations, that kind of thing.
How I got here
It didn't start out like this. The first iterations used only Claude Design and shadcn components.
One summer later, the system was stable enough to become a standalone design system living in three separate places.
Keeping it in sync
Three copies of a system only works if they don't quietly disagree.
Code is always the source of truth — if Paper or Claude Design ever drifts from what's live, code wins, and I update the other two to match.
In practice this means I don't let a Paper experiment become "real" until it's actually landed in the codebase.
Why Paper and not Figma
I love Figma. It's a great design tool for collaboration between humans. But since I was working solo, I needed something that played nice with AI.
While Figma does support MCP to work with AI, the technology it uses for building designs has nothing in common with HTML/CSS.
So even with Dev Mode and Code Connect features, AI has to work a lot harder to turn it into working code.
That's why I chose Paper as a better alternative to Figma. Its canvas is real HTML and CSS under the hood.
It's code that's ready, with minor changes, to be transferred into Underhype's actual codebase.
The bigger point
This setup is specific to being a solo founder, but the problem it solves isn't specific.
Any team building with AI is going to hit the same question: where does the "real" design system live when the AI writing your code doesn't read Figma files the way a human does?
For me, the answer was to stop treating the design tool and the codebase as two separate worlds, and pick one that's already speaking the same language as the code.