I'm not a developer.
I built all of this anyway.
I run a consulting firm helping progressive nonprofits with IT and operations. I also manage a 30-year-old online community and try to keep my ADHD brain on track. Somehow I now build software too. Here's everything I've shipped using Claude Code.
The story
I've been doing progressive politics and nonprofit operations for twenty years. I know ActionKit, Google Workspace, and Freshdesk inside out. I can fix a broken email pipeline in my sleep. But writing code? That was always someone else's job.
Then I started using Claude Code and things changed fast. I went from "Can you help me write a Python script?" to shipping full-stack web apps in a single sitting. Not toy demos. Real tools that I use every day, that clients pay for, that hundreds of people depend on.
I'm not a coder/developer, but I want to try and level up my skills via vibecoding with Claude Code.
The thing that surprised me wasn't the code. It was how much ground I could cover. On a given day I might fix a WordPress security hole, build a SaaS frontend with Stripe billing, set up server monitoring, and configure automated backups. Claude doesn't just write code. It handles basically everything involved in running a tech-heavy life.
I have ADHD, so I bounce between projects constantly. Most productivity advice says that's a problem. With Claude Code it turned into an advantage. I can jump between a Firebase app, a Cloudflare Worker, a WordPress plugin, and a Next.js dashboard and actually finish all four the same afternoon.
Everything below was built over the past few months. No contractors, no dev team. Just me explaining what I needed, and Claude helping me build it. What started as a three-week sprint has become a different way of working entirely.
This experience is a big part of why I think progressives need to engage with AI instead of sitting it out. I wrote about that here.
Tools for progressive campaigns
My day job is helping progressive nonprofits fix their tech and run better campaigns. These are the tools I've built to do that. Want this kind of help for your org? Learn more at campaign.help.
AK Help
AI help for ActionKit users (the advocacy platform most progressive nonprofits run on). A Playwright scraper pulls 114 help docs and 176 real support emails, anonymizes them, and feeds an AI knowledge base. Freemium SaaS with Stripe billing, magic-link auth, and a monthly auto-refresh pipeline.
campaign.help
My consulting firm's website. Built it in one session, pulling real testimonials and client logos from Notion. Compressed images 81%, wired up GA4, deployed to Cloudflare Pages.
Progressives for AI
Newsletter for progressives who want to actually engage with AI instead of just being scared of it. Six issues published. Landing page, Beehiiv publication, Cloudflare Worker signup flow, and an N8N automation pipeline that generates LinkedIn and Bluesky drafts after each issue goes out.
highspeedrail.tv
Curated video site for high-speed rail advocacy. YouTube API-powered admin panel for searching, queueing, and reviewing videos. AI helps evaluate new content quickly. Auto-deploys on push.
MDM Fleet Management
Runbook for managing Mac fleets at two nonprofit clients. FileVault key escrow, Escrow Buddy deployment, remediation tracking, and a side-by-side comparison of Mosyle vs. JAMF Now.
AI Code Review Pipeline
Dual-LLM code review deployed across 28 repos. Every pull request gets reviewed by OpenAI Codex and cross-checked by Claude. The two models reconcile disagreements before a summary hits the PR. Branch protection enforced on all public repos. Backed by a quality-gate layer: pre-commit TypeScript/ESLint in 5 active repos, a global type-check hook on every file edit, and a nightly N8N workflow snapshot-to-git across 3 automation instances.
Running a 30-year-old online community
I've been running an online creative writing community since 1994. 139 active members, 438,000+ collaborative stories, five web properties. Claude helped me overhaul the whole thing.
Staff Operations Platform
Replacing the mess of Google Sheets, email chains, and tribal knowledge we'd been using. 15-table data model, 136 members imported, NocoDB backend, Authentik SSO, Next.js admin panel with role-based access. Then: a full 10-point security audit — IDOR fixes, CSRF validation, rate limiting, audit logging, PII filtering by role, and an error diagnostics dashboard.
Visitor Fingerprinting Plugin
WordPress plugin that fingerprints visitors (canvas, WebGL, fonts, screen data) and checks them against banned users when someone applies to join. Catches the folks who get banned and come back under a new name.
438K-Post Archive
Every collaborative story the community has ever written, stored in Firebase. Cloud Functions handle the data processing, with automated backups to iDrive (5.2GB raw, 1.76GB compressed).
4-Pipeline Backup System
Offsite backups for everything: cPanel snapshots, custom DB dumps (had to work around a 268MB kernel memory cap), Firebase archive exports, and VPS configs. Migrated all 4 servers from iDrive to Backblaze B2 after iDrive proved unreliable.
1.2M Email Archive
1.22 million messages across three accounts (446K personal Gmail, 775K SB118 Gmail, iCloud), indexed for full-text search using Notmuch and Xapian. Instant server-side search that would take grep minutes now takes milliseconds.
MediaWiki 10x Speedup
Got a 54,000-page wiki from 1.5s down to 0.15s page loads. Migrated to PHP 8.2 + FPM, added APCu caching, turned on OPcache JIT, and cleaned out a 1.38GB stale cache table.
WordPress 14x Speedup
WordPress Multisite homepage went from 3.4s to 0.24s. Cleaned out 87MB of orphaned tables, removed 5 themes nobody was using, and optimized 284 database tables.
SEO Program
SEO overhaul across all 5 web properties. RankMath on WordPress, GA4 everywhere, Search Console for 3 domains, 11 new content pieces, and drip email campaigns.
Constitution Rewrite
Rewrote the community's governing documents from scratch. Read through 114 forum posts of old debate, pulled together two previous rewrite attempts, and put together an annotated review presentation with a 55-row traceability matrix. After the first review round, migrated 102 web annotations into 14 discussion threads on the community forum — automated via the forum API — so the debate could happen where people actually talk.
Self-Hosted Workflow Automation
Deployed Activepieces (open-source, MIT-licensed) as an N8N alternative for the community's FOSS committee. Docker Compose on the VPS, wired into the same backup pipeline as everything else, with a public docs page explaining how to contribute workflows.
Annual Address Builder
App for putting together the community's annual address from 11 groups' submissions. Role-based auth, Claude API for AI-assisted summaries, and wiki integration.
Server Monitoring
Self-hosted Netdata with custom health alerts and a status dashboard that pulls live metrics via API every 30 seconds.
Security Plugin
WordPress must-use plugin that locks down private multisite sub-sites. The old plugin left the REST API and RSS feeds wide open. This one blocks everything. Covers 6 internal staff sites.
Email Infrastructure
Set up Sendy for 3 brands after AWS SES denied production access. Switched to SMTP2GO, designed custom HTML email templates, built a 3-email drip sequence, and redid 9 notification templates across 4 sites.
Building the systems my brain needs
I have ADHD. Off-the-shelf productivity tools either overwhelm me or bore me until I stop using them. So I built my own.
AI Progress Tracker
My first AI build, before Claude Code even existed. Tracks the predictions from Dario Amodei's "Machines of Loving Grace" essay across four categories: biology, neuroscience, economics, and governance. Progress bars, expandable sections, and a Reddit community for discussion. Originally on Vercel, recently migrated to Cloudflare Pages.
Drift
My main productivity app, built from nothing to deployed in one sitting. Task management that lets me bounce between projects without guilt, a debt payoff tracker (avalanche method), uptime monitoring for 17 sites, a content drafting dashboard, and one-click posting to Bluesky via the AtProto SDK.
Domain Locker
Self-hosted portfolio monitor for the 47 domains I own across personal and client work. Tracks expiration dates, DNS changes, SSL certs, and WHOIS updates, with a daily refresh and a dashboard that finally tells me what's about to lapse before the registrar does.
Smart Bookmarks
Click a bookmarklet on any page. A Cloudflare Worker grabs the content, Claude generates a title, description, and tags, and it all saves to Raindrop.io. I never have to tag bookmarks manually again.
Fathom Sync
I kept losing action items after meetings. This polls Fathom AI (the meeting note-taker) and syncs summaries to Notion while turning action items into tasks in Drift. Runs twice a day on its own.
Healthy Eating System
Not an app, more of a system. ADHD plus reactive hypoglycemia means I can't rely on willpower for meal decisions. 64-item food database, auto-generated grocery lists, and a Friday reminder to confirm Saturday pickup.
Secrets Manager
261-line Python CLI that keeps API keys in sync across two config files at once. Found 2 mismatches the first time I ran it.
Lease Tracker
React PWA that answers one question: "How many miles can I drive today?" Tracks remaining daily mileage for my car lease. Works offline. Fits in a single HTML file.
Personality Profile
Fed Claude 1,023 of my AI conversations plus a formal psych evaluation and had it build a personality profile. Using AI to understand how I use AI. Pretty meta.
Actual Budget
Self-hosted personal and business finance tracking with SimpleFIN bank sync across 12 accounts. Custom CLI for querying both budgets. Uncovered $7,500/mo in personal subscriptions and fixed a -$99K "To Budget" bug caused by how credit card starting balances were categorized.
Weekly Content Sprint
Every Monday at 7:30am, an N8N workflow wakes up, reads my session logs from the previous week, grabs starred articles from my RSS reader, and sends everything to Claude. Output: content drafts across four tracks (personal, consulting, newsletter, high-speed rail) plus story ideas. The drafts now flow into a 14-channel daily content queue that auto-schedules them to Tue/Thu/Fri and surfaces what's due in my morning briefing email.
Prompt Injection Defense
Claude Code hits all three legs of what security researchers call the "Lethal Trifecta": private data, exposure to untrusted content, and the ability to take real-world actions. Built a multi-layer defense: behavioral rules, a PostToolUse detection hook that scans for 9 injection patterns, and email sanitization with 5 layers of content stripping.
The stories behind the projects
The stats are fine, but the real stuff is in the details.
Built Drift in a Single Session
February 8: Started from an empty folder. By the end of one sitting I had a working Next.js app with SQLite, all the API routes, Docker config, and four default project areas seeded. I've used it every day since.
10x Wiki Speedup
54,000-page wiki, 1.5 seconds down to 0.15 seconds. PHP 8.2 migration, APCu caching, OPcache JIT, and cleaning out a 1.38GB stale cache table. Fun fact I learned the hard way: APCu's CLI and FPM memory pools are completely separate.
The Backup That Wouldn't Fit
A 40GB archive kept crashing the backup system. Turns out the VPS had a 268MB kernel memory cap that killed any tar+gzip operation. After a bunch of failed attempts, we redesigned the whole approach: separate DB dumps from file sync, skip compression entirely.
Eight Projects in One Day
February 16: Migrated an email platform, shipped two milestones of a SaaS app, wrote a client acquisition strategy, ran an infrastructure audit with parallel AI agents, worked through a data model design, deployed SEO fixes, and more.
Finding the Silent Failures
Some of the most useful work was just finding stuff that was broken and nobody noticed. A 41GB backup that never actually ran. An AWS Glacier bill from 2.1TB of forgotten archives. Forum emails silently failing for 31 days. An internal wiki exposed to the public via REST API.
Read the post →AI Analyzing AI Conversations
I gave Claude 1,023 of my old AI conversations plus a formal psych evaluation. It produced a 271-line personality profile that any future AI session can read to understand how I work, how I think, and how my ADHD shows up.
Two AIs Reviewing Each Other's Code
I deployed a dual-LLM code review pipeline across 28 repos. OpenAI Codex reviews each pull request; Claude cross-checks the review and flags disagreements. They reconcile before a summary hits the PR. It's AI QA on AI QA.
Read the post →Publishing the Uncomfortable Argument
I wrote a post arguing that progressives need to stop sitting out the AI conversation. Before publishing, I ran a dual-agent debate — one Claude instance argued for publishing, another argued against — to stress-test the framing. It found real weaknesses. I fixed them, then published.
Read the post →A Polish Pass Across 12 Sites
Ran an automated audit across every web property I touch and fixed what it turned up — darkened a few brand accent colors for better contrast, added descriptive text to 30+ wiki images, and shipped a small WordPress plugin that adds the labels the theme was missing. Twelve sites, one weekend.
Moving the Debate to Where People Actually Talk
After the first round of community review on a big governance rewrite, the feedback was scattered across 102 inline web annotations. I pulled them all via API, clustered them into 14 topical threads, and posted each one to the community forum under a neutral bot identity — so the debate could keep going where members already hang out, instead of dying in a review tool nobody visits twice.
End-to-End Business Stack in a Weekend
A side project build where I spun up a multi-market lead-gen site, custom PDFs rendered by headless Chrome from a Google Sheets pipeline, an N8N automation that hands work off to a fulfillment API, and Stripe billing behind the whole thing. Same pattern, different cities. The service was almost the excuse — the fun part was watching the automation carry it.
Follow the journey
I write about what it's actually like to build all of this — the wins, the weird bugs, and the things I'm still figuring out.
Read Building in Public