TL;DR: I'm the entire technology department at Consumer Watchdog — front end, back end, email, telecom, broadcast, donor CRM, archive — and this is what that actually looks like day to day, not the LinkedIn version of it.
Being the sole technologist at a nonprofit is not the same job as being "CTO" of a startup with six engineers under you, whatever the title implies. There's no ticket queue to triage. There's a reporter on deadline right now, a press conference tomorrow morning, a litigator who needs a case document served through the site at 11pm, and a donor database that is not allowed to lose a single record, ever. You don't manage the queue. You are the queue.[^1]
ConsumerWatchdog.org has been mine end-to-end since I took it on: front-end, back-end, email platform, telecom, broadcast integrations, donor CRM, archive tooling — every one of those threads through exactly one person. This post is what that looks like from the inside.
The stack, honestly described
The site runs on a Drupal core with a heavily customized theme and content architecture, which is the correct choice and not a nostalgia pick — Drupal handles a decade of policy reports, legal filings, press releases and video archives as structured content with real taxonomies and access control. This is not a blog pretending to be an archive. Around that core:
- Mailchimp — newsletter distribution, list segmentation
- NationBuilder — advocacy actions, supporter CRM, petition signups
- A self-hosted phone system — press-office call routing, voicemail-to-email
- Amazon S3 + Lightsail — static assets, archives, low-traffic microsites
- Salesforce — donor and institutional relationships
Press conference day is a product launch with worse odds
A press conference is its own species of product launch. Reporters need the release, the visuals, the b-roll and a quotable expert, all landing at the exact same moment. The site has to push the media kit live the instant the embargo lifts, the email blast has to hit reporter inboxes within 60 seconds of that, and the livestream has to be hot the second the lectern mic opens. None of it gets a retry.
I built the publishing workflow to fire all three from one action, and it is not glamorous engineering — it's the boring, reliable, three-lines-of-terminal-output kind. Which is exactly what a press operation actually needs at 9:57am ahead of a 10am conference, and not one second before that matters.[^2]
The broadcast side nobody sees
Consumer Watchdog produces enough of its own video that the site has to function like a lightweight newsroom CMS whether I planned that or not. Every press conference gets a public video archive page. Every TV hit gets its clip hosted and slotted onto the right topic page. The YouTube API does the heavy lifting on hosting, but deciding that "this clip is about oil and gas" belongs on every relevant case page — that logic is mine, not YouTube's, and it never will be automatic.
What breaks, and when it breaks
The usual suspects: a mass email flagged as spam because some ISP quietly rotated its reputation rules overnight. A donation form that stops posting to the CRM because a third party pushed a silent schema change nobody announced. A phone tree that starts dropping calls because a carrier changed something at their network edge and told exactly no one.
None of that shows up as "the site is down." All of it shows up as one staff member asking why this one specific thing stopped working for one specific person in Ohio.
Most of the job is figuring out what actually broke — writing new code is a smaller share of it than you'd think. The investigation part is the part that doesn't scale to a team, because you have to be holding the whole system in your head already to find the fault line fast enough to matter.
Why this stays solo
Nonprofits run on real budget constraints, not the imaginary kind. One technologist who can genuinely do Drupal, telecom, broadcast and email — and who actually cares whether the mission succeeds — is worth two senior specialists on paper and more than that in practice. It's also exhausting, and I'm not going to pretend otherwise. But the organization moves faster because every change runs through one person who holds the whole map in his head, and for the work Consumer Watchdog does, that's a trade I'd make again.
[^1]: This is the sentence every non-technical friend nods along to and does not actually absorb until the night their own donation form breaks at 11pm. [^2]: 9:57am is not a rounded-off estimate. I have watched that clock.