Skip to content

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.

40+
Projects Built
5
Live Apps
3
Areas of My Life
1
Line of Code by Me

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 in about three weeks. No contractors, no dev team. Just me explaining what I needed, and Claude helping me build it.

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.

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.

Live (Beta) Next.jsPlaywrightStripeClaude Haiku

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.

Live Next.jsCloudflare PagesNotion API

Progressives for AI

Newsletter for progressives who want to actually engage with AI instead of just being scared of it. Landing page, Beehiiv publication, Cloudflare Worker signup flow, and AI-generated photo banners for each issue.

Live BeehiivCloudflare WorkersDALL-E

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.

Live EleventyExpressYouTube APICloudflare Pages

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.

Active MosyleJAMF NowmacOS

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.

In Progress Next.js 15NocoDBPostgreSQLAuthentik

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.

Deployed PHPWordPressJavaScript

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).

Live FirebaseCloud FunctionsNode.js

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.

Deployed rcloneBashNode.jscron

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.

Complete MediaWikiPHP-FPMAPCu

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.

Complete WordPressWP-CLIMariaDB

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.

Ongoing RankMathGA4Sendy

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.

Under Review MarkdownHTML

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.

Deployed ReactExpressClaude API

Server Monitoring

Self-hosted Netdata with custom health alerts and a status dashboard that pulls live metrics via API every 30 seconds.

Live NetdataApache

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.

Deployed PHPWordPress MU

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.

Deployed SendySMTP2GO

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.

Live Next.jsTypeScriptTailwindCloudflare 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, and a social content drafting pipeline.

Live Next.jsSQLiteDockerDrizzle ORM

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.

Deployed Cloudflare WorkersClaude APIRaindrop.io

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.

Deployed TypeScriptNotion APILaunchAgent

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.

Active NotionShellLaunchAgent

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.

In Use Python

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.

Live ReactPWAGitHub Pages

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.

Complete PythonClaude Batch API

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.

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.

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