The starting point was too many opinions
The first version of this site had more ideas in it than pages. Every section had its own treatment, because each was designed on the day it was needed and each felt reasonable in isolation. Put together, it read as a collection rather than a site.
The fix wasn't a redesign. It was writing down the decisions — how many text colours exist, which spacing values are allowed, what a section's vertical rhythm is — and then deleting everything that didn't obey them. Most of the improvement came from subtraction, which is not a satisfying thing to report but is what happened.
A constraint we didn't expect to like
We added a lint rule that fails the build on arbitrary one-off values in the styling — a hard-coded pixel gap, a colour typed inline. The intention was tidiness. What it actually did was force a decision each time: either this value belongs in the system, or it shouldn't exist.
It's mildly irritating in the moment and it has kept the site coherent through several rounds of changes since. It's the clearest example we have of a rule doing work that discipline was previously doing badly.
The writing was harder than the build
The rule we set was to describe what changes for the person using a product, never how it's implemented. It sounds obvious. In practice it meant rewriting nearly every sentence on the site, because the implementation description is always the easier one to write — you know it, and it sounds impressive without requiring you to know who it's for.
One consequence we didn't anticipate: several claims got cut entirely, because once rewritten as a specific statement about a user, they weren't things we could actually support. That was uncomfortable and correct.
What took longer than expected
- Deciding the type scale — a day of small adjustments, and worth it, because every page after that was faster
- Dark mode, because it exposed every colour that had been named by appearance rather than by role
- Structured data, which is quick to write and slow to get right, since it has to keep matching what's visible as pages change
- Copy. Consistently the longest part of every page, and consistently underestimated at the start of it
