The brief
I was paying $26 a month for a Squarespace portfolio that got about 35 visits a month. The goal: own the site outright, make it fast, and make it something I could keep building on — with AI doing the heavy lifting and me producing.
The result is a static Astro site served by a Cloudflare Worker, videos on Cloudflare R2, and a contact form on Formspree. Running cost: the domain.
How the work actually runs
I work the way I’d run any production: one source of truth, clear handoffs, and nothing ships without sign-off.
- One instruction file for every agent. Project rules live in
AGENTS.md, shared by Claude Code and Codex, so whichever model picks up the work gets the same brief. When an agent gets something wrong, the fix goes into the brief — not into an argument in the chat. - A running task list. Every repo has a
TODO.mdthat the agent keeps current, and a custom skill rolls them up into one board across all my projects. - I approve every deploy. There’s no auto-deploy from git. The agent builds and checks the work; I decide when it goes live.
The research pipeline behind the Lab
Before planning this section, I had Claude study 38 reels I’d saved about AI — every word and every frame:
- Pulled the full list from my saved folder in the browser.
- Downloaded each reel with
yt-dlp. - Transcribed the audio locally with Whisper on Apple Silicon (nothing left my machine).
- Cut each video into contact sheets, one frame every two seconds, so on-screen text and demos were captured.
- Split the reels across four parallel subagents, each writing a structured note per reel: the hook, what’s said, what’s on screen, a credibility check.
- Synthesized the notes into the plan you’re looking at.
The biggest lesson from that research shaped this page: people who understand AI trust builds that show their pipeline, not ones that only show results.
What broke
- Infinite scroll fooled the first pass. Scripted scrolling only surfaced 12 of the 38 reels; Instagram needed real scroll-wheel events.
- A batch transcription quietly overwrote itself. Whisper’s command-line tool wrote every transcript to the first file’s name. A subagent caught the mismatch because the words didn’t match the frames — exactly why the frames were in the pipeline.
- A find-and-replace broke the brief. Swapping “Claude” for “Codex” across the instruction file also rewrote model IDs, file paths and URLs. The rule is now written into the brief itself.
- Fonts were a privacy problem. Loading them from Google’s servers is a GDPR risk in Europe, so they’re now hosted on this site.
Small touches
The 404 page is an empty diner — generated with Codex’s image tool, upscaled 4× with Real-ESRGAN so it holds up full-screen, because I love a diner and nobody should be serving pancakes at a dead link.