This website
The site you're reading, and the system that keeps its portfolio honest.

The situation
A one-person practice needs a site that proves the work, but the real tools are full of client data: names, addresses, and how people voted. Screenshots of the live tools were never an option.
It also had to stay current. Portfolio pages go stale the moment a tool improves, and nobody has time to retake screenshots by hand.
What I built
- Custom-coded pages with no template or page builder behind them, so they load fast on a phone and cost nothing to host.
- Every screenshot and video in the portfolio comes from a copy of the real tool running on made-up people, signs, and results. Each one has a rebuild recipe, so fresh screenshots are one command away, and the capture scripts refuse to pass anything that matches a private list of real names.
- The case-study pages are generated from one table of copy, so a wording change lands on every page at once.
- It gets reviewed like a client deliverable: independent reviews compare each page to the code of the tool it describes, and every page is checked by screenshot at phone and desktop size.
One of those checks caught a map screenshot with GPS coordinates in its corner that would have revealed the client's city. It was blanked before launch, and the recipe now hides that readout for good.
For your business
Your website can work the same way: built to show your real work, fast on a phone, and cheap to run.
Why custom
A template site builder would have been faster to start, but it can't produce screenshots from the actual tools or keep client data out of them. Building it this way is the same work I do for clients: a small system that keeps itself up to date, so the owner doesn't have to.


Built with
Custom HTML and CSS · Python page generator · Playwright demo capture · GitHub Pages · built with Claude Code
Have a workflow like this?
Most projects scope in a 30-minute call. Tell me where the time goes.