Web / 2026 / Live
SwansonX
The business site. Small businesses bring a problem and I work out what fixes it: a web app, a tool, AI, or a better website. Every price is on the page, and the build refuses to deploy a claim it cannot check.

The audience decides the stack
The person this site is for opens it on a phone, in a truck, on a bad connection, between two jobs. Everything else follows from that.
So the pages are static. Astro renders them to plain HTML at build time and ships JavaScript only where something is genuinely interactive, which keeps a page under a few hundred kilobytes while still letting ninety of them share one layout, one price file and one set of components.
Fixed prices, on the page
The pricing is written down where anyone can read it, next to a form that goes to a real inbox. Every price lives in one file, and the build fails if a number is typed anywhere else, so the pricing page, the contact form and the AI assistant cannot disagree with each other.
It has a companion site, getswansonx.com, that compares the four ways to get a website and says plainly when the answer is not me. Three of its four answers send the reader somewhere else on purpose, which is the most persuasive thing on either site.
A build that checks its own claims
Thirty-one checks run inside the deploy. No price outside the price file, no testimonial but the one real one, every concept build labeled as a concept, no result figure outside a labeled example, a unique title on every page. A failed check fails the deploy, so the rules are enforced by the build rather than remembered by me.
The work grid is generated from markdown files rather than maintained by hand, and the business schema carries the real town rather than the nearest city anyone has heard of.
The tools on it are the pitch
The assistant in the corner answers from the rendered pages, which are rebuilt into its knowledge on every deploy, so it cannot go stale and it says when it does not know. Two free tools, a software cost calculator and a website planner for new businesses, run entirely in the browser and never ask for an email.
Behind it is an owner admin: traffic, blog posts and a private journal. The traffic counter is my own and stores no cookie, no IP address and no identifier, which is why the site has no cookie banner. Blog posts are commits to the repository, so git is the history and the undo.