Not a software-engineering career. No bootcamp, no prior production code. In January I installed Claude Code, asked what npm meant, and then I didn't stop — operators' problems, real users, real deploys.
Most “vibe coding” content is one weekend demo. This is the other thing: what happens when you stay — months in, still shipping. Platform failures, an account lockout, whole architectures torn down and rebuilt, and a 51/49 partnership with an AI told to push back. The sustained part is the story.
The productive sessions all had the same shape: I brought the direction and the judgment — I know the users, the tax work, the actual problem — and the AI brought execution and honest resistance. Fifty-one to forty-nine, mine. The moment that ratio flips — the AI turns agreeable, or I go passive and just accept output — the quality falls off a cliff. Every real breakthrough here came out of friction, not frictionless compliance. So the timeline below isn't a victory lap. It's the record of a partnership that argued its way to working software.
Reconstructed from commit history across 37 repositories, GitHub creation dates, and the conversation logs. The conversations explain why; the commits show what. Together they're the receipts.
Before any of this, I'd been trying to build software for a while and failing at it. ChatGPT-era automation scripts. Browser-scraping hacks for a claims portal I used in a side line of insurance work. A couple of half-built apps that never shipped. I tried Replit, I tried a few AI coding tools — nothing held together long enough to become a habit. The itch was real; the workflow wasn't.
Getting Claude Code to run at all was a three-day battle — Node, Git Bash, environment variables, an execution-policy wall in PowerShell. My very first question to it was, in plain words, “what's npm?” Once it ran, the first real thing I built was a script to pull documents out of that claims portal — and I set the two rules I've kept ever since: explain it without jargon, and don't ask my permission for every step.
Before writing much more, I set the rule the whole portfolio would answer to: automation has to make me more indispensable, never more replaceable. From there the foundations got laid fast — a tax-planning engine that parsed hundreds of organizer PDFs into a searchable database, a document parser built to survive every broker's ugly statement format, and the first seed of what became a flood-claims pipeline.
One choice defined the architecture of everything that followed. Replit was flexible but the metered pricing was unpredictable and climbing. The alternative — Claude Code plus Vercel plus Supabase — was a flat, knowable monthly cost. I picked the boring, predictable stack. Every app in this portfolio is built on that one Tuesday decision.
Once the stack was settled, the dam broke. In February alone I spun up nineteen new repositories spanning tax, fitness, education, coaching, accounting, auditing, language learning, and a cryptographic timestamping experiment. A tax report-card scanner shipped twenty-one commits on its first day. By the 22nd I could say out loud: eleven working apps, one month, under seven hundred dollars.
Building the thing is the easy half. This stretch was billing (Stripe subscriptions and metered charges), test harnesses across five apps at once, multi-tenant plumbing, an embeddable widget, and an iOS App Store build. The lesson I'd give my earlier self: you need a test harness at app number three, not app number twenty-seven — because the SAT-tutoring monorepo alone would go on to eat 146 commits, and nothing that big stays sane without one.
The last stretch is where the pieces connected. A flood-claims pipeline went from manual PDF grind to an automated pipeline with a dashboard. An email-answering system got built end-to-end in a single day. A Claude-vs-Claude test runner came online to grade the other apps. And I unified Google/Apple sign-in across four consumer apps at once. On the busiest day I created four new repositories before dinner.
The timeline is the map. The living work is everywhere else on this site — and it's still going. Every app above kept shipping past this window: hardening, monetization, whole rewrites when the first design was wrong.
If you want the day-to-day of how it actually gets built — the scars, the tools tried, the frustrations that bit — start with the Updates, where each field note is welded to a real thing tested. If you want the verdicts — every platform, model, and connector run, the wins and the ones dropped on sight — read the Reviews. No hype in either. Just what happened, and the receipts.