
Two weekends. That's how long it took to go from "I haven't written HTML since MySpace" to a live Next.js site with analytics, social cards, SEO, a dark mode, and the blog post you're reading — which, yes, was written by the same setup that built the site.
I didn't do it by suddenly becoming a great front-end developer. I did it by running a crew.
The problem: I can steer, but I can't type fast enough
I understand systems. I can read code, spot a bad pattern, and tell you why an integration is going to fall over. What I can't do is produce thousands of lines of clean, modern React and Tailwind at speed — I've been away too long, and honestly, I don't want to. That's grunt work.
So the model was never "AI writes my website while I nap." It was a job site. I'm the general contractor. The AI is the crew. My job is to know what "done" looks like and to reject work that isn't.
The crew
Here's who was on the payroll and what each one did:
| Role | Who | What they did |
|---|---|---|
| Research | Claude + Gemini | Scoped the stack, compared options, pulled current docs, and argued both sides of a decision so I didn't have to guess. |
| Foreman / reviewer | Claude (frontier) | Broke work into plans, dispatched tasks, and reviewed every diff — caught the stuff the cheap labor got wrong. |
| Planning + execution | Superpowers workflow | Turned "build a blog" into an actual spec → plan → isolated-worktree → implement loop instead of vibes. |
| Labor | Local models on an RTX 3080 | Boilerplate, component scaffolds, transforms, commit messages — the bounded, high-volume typing. |
| Art department | Imagen 4 + Gemini | Every illustration, mascot pass, and header — including the two on these posts. |
The unlock is that not every task needs a frontier brain. Most of building a website is labor, not judgment. So the expensive model stays in the foreman's trailer making decisions and checking work, and the cheap, local, runs-in-my-house model does the actual typing.
The gaming rig doing the heavy lifting
The "labor" line in that table is a used RTX 3080 with 10GB of VRAM sitting on my desk, running LM Studio. A 9-billion-parameter Qwen model does the code edits through Aider; a couple of bigger Gemma models get pulled in when a task needs more reasoning than speed. It all runs on my LAN — the files never leave the building, which matters more than you'd think.
Cost of that crew, per hour of grinding out components? Roughly the electricity. I've written a whole series benchmarking exactly how good these local models are — spoiler, a 9B hits about 95% of frontier quality on this kind of bounded work — but for the website the point was simpler: let the machine I already own do the boring 90%.
The assembly line
A typical unit of work looked like this:
- I describe the outcome — "a markdown blog with drafts, tags, and RSS," in plain English.
- Claude + Gemini research it, propose two or three approaches, and I pick one.
- Superpowers turns that into a plan and spins up an isolated git worktree so nothing half-built touches the live site.
- The local model does the typing — files, components, wiring.
- Claude reviews the diff like a senior dev who doesn't care about my feelings, and kicks back anything sloppy.
- I look at it in the browser, approve, ship.
Run that loop enough times over two weekends and you get a whole site. The header images on these two posts came off the same line — I described the vibe, Imagen drew it, and I kept the ones that looked like the brand instead of like a stock illustration.
Two weekends, fully wired
By the end it wasn't just pretty pages. It shipped with:
- Self-hosted analytics so I own the data, not a third party.
- SEO, social cards, and an RSS feed, generated as part of the build rather than bolted on.
- A dark "blackboard" mode and a mobile Lighthouse score I'm genuinely happy with.
- These blog posts, drafted by the same crew that wrote the code — including this one, which is a little recursive and I've made my peace with it.
Takeaways
- Be the foreman, not the bricklayer. Your job is judgment — defining "done" and rejecting what isn't. Let AI do the volume.
- Match the model to the task. Frontier for decisions and review; a cheap local model for the 90% that's just typing. Paying frontier prices for boilerplate is how the budget dies.
- A used GPU is a real crew member. ~10GB of VRAM runs a 9B that's good enough for bounded work, for the price of electricity, and your files never leave the house.
- Plan, isolate, review. The reason two weekends produced something shippable — and not a pile of broken branches — was a real spec → plan → worktree → review loop, not raw prompting.
- Ship the whole thing. Analytics, SEO, social, content: wire them in as you build. "I'll add tracking later" means never.
Prev: The Last Time I Wrote HTML, MySpace Was Winning — why the site looks the way it does.