
Showing image 1 of 1.
builders behind exp.club
core problem they tried solving
We were about to tell people that one person with AI can ship a real product — from a site built the old way. That's an argument you can't win with a sentence. So the site became the first thing we shipped under the new claim, and the claim had to survive being tested on it.
the build story
One person, spec first — and "spec first" isn't a figure of speech here. The first decision in this project's log is dated 11 July 2026. The first line of code is dated the 16th. Five days in between with nothing to show but written arguments — 39 dated, reasoned decisions before a line of code existed. Then agents did the implementation. Nine days after that first commit there were 364 of them, 130 on a single day. Nobody reads 364 commits — so the control has to be a system rather than a person: a spec it has to match, a reviewer whose job is to attack the result, and a check that fails the build. None of that is airtight. It's just better than pretending you read everything.
What separates this from a prototype is the gate. Every push that can change a pixel runs the same sequence: lint, typecheck the app, typecheck the tests, build, three checks that hold the source to rules written down before the code, then the browser suite — every route checked for accessibility, for actually rendering, and for not breaking at phone width. A failing check fails the build. The suite has a mechanism for narrowly scoped exceptions, each requiring a written reason, and as of this writing nobody has used it. I don't ship past a red check, because waving it through is just a slower way of shipping the thing you already knew was broken.
Two things went wrong that are worth writing down. The checkout priced the wrong seat phase — caught in review before the checkout ever went live, which is the whole argument for having someone hostile read your money code. And for one afternoon the automated checks were worthless: the dev server wasn't hydrating the pages it was testing, so every check passed against a page whose JavaScript had never run. A green check that can't see what it's checking is worse than a red one. Both are fixed, and both are in the commit history under their own names.

