Maker and retail
Selling a four-month wait
The brief I set myself
A one-person frame builder who makes twelve bicycles a year. Every frame is drawn around a two-hour fitting and takes about sixteen weeks. The site has one job, which is to make a four-month wait sound like the point rather than the problem.
The decision that shaped it
Craft businesses attract a particular kind of website: warm cream background, brass accent, a serif that implies heritage, and photographs of hands. It is the default any time a brief mentions the word artisan, and because it is the default it says nothing about this builder specifically.
So the palette is cobalt on cream, and the type is a system sans rather than a display serif. The craft reads through specificity instead: the tubing is named, the brazing method is named, the price basis is named. A customer spending four months waiting wants facts, and facts are more persuasive than atmosphere.
What I left out
- No testimonials. Not an oversight. Fabricated reviews are illegal under the FTC's 2024 rule, and a testimonial slot in a new build is an invitation to fill it with something invented.
- No prices on the page. The frame is quoted after a fitting, and publishing a number that always turns out wrong is worse than publishing none.
- No stock counter. "Three slots left" is a pressure tactic, and on a business that genuinely has a waiting list it is also redundant.
What the checks caught
Three real faults in my own work, none of which I would have found by looking at the page:
- One colour token was doing two jobs, hairline dividers and input borders. Dividers have no contrast floor; a border that identifies a control needs 3:1 under WCAG 1.4.11. It was sitting at 1.62:1. The fix was to split the token in two.
- The same token failed again at 1.88:1 in dark mode, which I would have missed entirely because I was working in light.
- The footer headings were marked up as level four directly after a level two, which breaks the document outline for anyone navigating by headings.
This is the argument for the linter.
None of those three are things a designer catches by eye, and all three are things a demand letter cites. Running the checks is cheaper than noticing.
What I would do differently
The photography is placeholder, loaded from a third-party service, which means a visitor's IP address goes somewhere it does not need to. On a real build the images are self-hosted and that request disappears. I left it in and disclosed it in the privacy notice rather than quietly ignoring it.