Skip to content
← Back to overview

Selected project

Claude Code Billing & Product Ops Automation

Built and operate it at Search Atlas

I own the billing side of product at Search Atlas, and for most of the last year that meant one recurring nightmare.

$1M+ MRR

Revenue this billing surface protects

Multi-tool search → 1 prompt

Investigation time

Zero

Developer code needed for routine fixes

Someone flags that a customer's billing looks off, and I disappear for an hour or two into Stripe, then the database, then the codebase, trying to reconstruct what actually happened to their account. If the fix turned out to be more than a config toggle, I'd write it up and hand it to an engineer, then wait. Multiply that by however many billing tickets land in a given week and you get a job that's mostly archaeology, not decision-making.

So I connected Claude Code to the systems I was already digging through by hand: Linear for tickets, GitLab for the codebase, Stripe for the source of truth on payments, and our production databases. MCP made the plumbing straightforward. The part that actually took work was everything after the plumbing. An agent with database access and no judgment is just a faster way to make a mess, so I spent real time writing down how I actually investigate a billing issue, the sequence of checks, the places accounts usually break, the difference between a symptom and a root cause, and turned that into playbooks the agent could follow instead of improvising every time.

Here's roughly how it runs now. A message comes in through ClickUp: this customer says their billing looks wrong. I hand that straight to Claude Code. It pulls the account's current status from Stripe, cross-references it against our database, and walks the relevant code paths to work out what's likely going on, the same three stops I used to make manually, just without me typing anything into three different tabs. It opens or updates the Linear ticket with what it found. If the issue is one of the routine ones, a stuck subscription state, a webhook that didn't fire, a plan mismatch we've seen before, it writes the fix, runs it locally, and hands it back to me to review before anything touches production. I'm not rubber-stamping this blind, either. I can pull up the session history and see exactly which playbook it used, which files it touched, and then go query the database myself to check its reasoning holds up. That verification step matters more to me than the automation itself. I'm not interested in trusting an agent's word on a customer's money.

That verification step matters more to me than the automation itself. I'm not interested in trusting an agent's word on a customer's money.

What changed practically is that investigations that used to eat an hour now start with a single prompt, and the routine fixes ship without an engineer writing a line of code, which means engineering time goes toward the harder billing problems instead of the repetitive ones. But the more interesting outcome isn't the time savings. It's that the hard problem here was never technical. Wiring Claude Code into Stripe and Linear and a database is a few afternoons of work. The real problem was mine to solve: taking the judgment I'd built up doing this manually, knowing which log line matters, which failure mode is cosmetic versus which one means a customer got billed twice, and writing it down precisely enough that something else could execute it without me standing over its shoulder for every step. That's not an engineering skill. It's the same thing I've been doing as a PM for years, just aimed at a system instead of a team: turning judgment into a process that holds up when I'm not in the room.

Skills demonstrated

Claude Code & MCP architecture · Stripe operations · Process codification · AI agent workflow design · SQL & production data literacy

← All workNext: Edves Billing Manager →