Build notes · vibestats · chapter 2
Then the AI took over
The last twenty-odd releases of vibestats were shipped by Claude — planning, coding, testing, deploying, and grading its own work with a second, independent AI verifier.
The first chapter of this story ended with a product: vibestats, a privacy-preserving personality layer for Claude Code, built largely with Codex. It worked. Nobody came.
What happened next is the part I didn't expect to write: the last twenty-odd releases of vibestats were shipped by Claude — planning, coding, testing, deploying, and grading its own work with a second, independent AI verifier. My total contribution across those releases was four decisions and five DMs.
The diagnosis
It started with a question I asked Claude: why isn't this thing spreading? Instead of opinions, it ran a 53-agent review of the whole codebase and funnel, and came back with one sentence that hurt: "Every share path dead-ends at a shell command, and the one number people screenshot is fake."
The "top 2%" badge on my own share card was self-referential math — no population in it at all. And when someone clicked a shared card, they landed on… a curl command.
The loop
Fixing that list became an autonomous loop, and the loop is the actual story. Each goal ran the same way:
- A rubric file — pass/fail criteria written before any code.
- Implementation — code, tests, headless-browser verification.
- An independent grader — a separate AI agent, in a fresh context, re-runs every piece of evidence and tries to refute the work. Not "looks good to me" — adversarial re-execution.
- Deploy only on VERDICT: SATISFIED.
The graders caught real things: a temporal-dead-zone bug in the landing page, a prototype-pollution path in a privacy-critical allowlist, an OG image that would have shown "TOP 95%" to the most common users. One independent review (by a different model entirely) found that a crafted URL could imply a real user had an archetype they never revealed — fixed and erased before anyone hit it.
Models grade their own work badly. A verifier in an independent context window is a different animal.
That pattern comes straight from how Anthropic describes working with their newest models, and I can confirm it: this setup shipped things I'd have been afraid to let an agent ship alone — including changes to the privacy boundary that is this product's whole moat.
What it shipped while I slept
- The dead-end fix: shared links now land on a real card and an instant, in-browser pairing — "you two would be Blitz Commanders, 87% chemistry" — before any terminal ask.
- A depth layer mined from signals the product had been throwing away: "you finish what you start," "your friction is human, not machine." Counts-only; raw data never syncs.
- A personal Wrapped for every profile, with proper unfurls.
- Funnel instrumentation, an owner scoreboard, a badge wall.
- And the share card you're probably seeing this post through.
The honest part
The AI also made one real mistake: it committed an outreach list naming two unlisted users to this public repo. It caught the leak itself the next day while checking repo visibility, force-erased the commit, moved everything to a gitignored directory, and wrote itself a standing rule. I'm telling you because the failure mode and the recovery are both part of the truth of working this way.
Where it goes
The product thesis changed along the way, and the homepage with it: not "what kind of coder are you?" but "who would you build best with?" Claude Code already knows.
Try it: pick your type against mine and see our chemistry — no signup, nothing leaves your machine: vibestats.io
Terminal Party #1
Friday, June 19 · 3:00pm PT / 6:00pm ET · 90 minutes · online. Bring whatever you're building and code live alongside other Claude Code builders. Blind pairing reveals mid-party, two-minute demos at the end — and yes, the AI that shipped this product will be in the room.