The word bespoke gets used loosely. Some teams hear it and imagine custom CSS on a Bootstrap admin panel. Others hear it and start building a UI framework from first principles for a 50-user app.
Both miss the point.
The 80/20 Of Bespoke Software
Every product we have shipped follows the same rough split:
80% of the surface is commodity. Login. User settings. Empty states. Pagination. Dark mode. The notification bell.
20% of the surface is the product. The thing the user actually came for. The interaction that nobody else has solved well. The screen that, if you got it wrong, would invalidate the entire engagement.
Bespoke product work is the discipline of knowing which 20% deserves the attention, and refusing to spend it on the other 80%.
What The Commodity 80% Looks Like
We use:
Tailwind for styling — never a bespoke design system from scratch
shadcn-style component primitives for forms, dialogs, dropdowns
TanStack Query / Router for data and routing — proven, fast, opinionated
Lucide icons — and we resist hand-drawing icons unless the brand demands it
Inter / Space Grotesk / JetBrains Mono — public fonts, used well
This is not laziness. This is leverage. Every hour spent reimplementing a date picker is an hour not spent on the actual product.
What The Bespoke 20% Looks Like
The 20% earns the engagement. It is usually:
A novel primary interaction — the timeline, the canvas, the editor surface, the data viz that makes the product the product.
A performance budget that nobody else respects — sub-50ms keystroke response on a list that nobody else can scroll smoothly.
A workflow that mirrors how the user actually thinks, not how a generic CRUD form thinks.
For one client, the 20% was a graph editor that had to feel like Figma but reason like a database. We spent six weeks on the editor's internal data model before any pixel was drawn. That was the right call.
For another, the 20% was a dashboard that updated 200 cells per second without flicker. The entire engagement came down to a single React rendering decision and a websocket diff format.
How We Decide What Belongs In The 20%
A simple test: if you do this part the way everyone else does it, would the product still be worth buying?
If yes, it's commodity. Use the library.
If no, it's bespoke. Build it ourselves, slowly, and well.
Bespoke is a budget, not an aesthetic. Spend it on the things only you can build.
We design products this way for a small number of clients each year. If your 20% is unclear, we can help find it.

