Lou chases your failed payments.
Lou is the bookkeeper. He reads every Stripe webhook, and when a payment fails he pulls the customer's record, reads the decline code, and drafts a recovery email matched to both the cause and the relationship. That's the whole job today, and it's the one that pays for itself. Drafts wait for your approval; an auto-send threshold is designed but not yet wired.
What Lou does.
The dunning loss number for a $5K-$500K ARR SaaS sits between 5 and 9% of MRR. Most of that is recoverable. Stripe's smart retries get a chunk back; the email layer that runs after the retries — the part where someone actually writes a polite note that reads the customer's history — is what most founders never get to. The recovery email is the difference between a customer who updates their card and a customer who silently churns.
Lou handles that layer. When Stripe fires payment_intent.payment_failed, Lou pulls the customer's full record (tenure, MRR, prior support history, lifecycle stage), reads the decline code, and drafts an email that matches both the cause and the relationship. A long-tenure customer gets a different tone than a first-month one. An expired card gets a clear card-update walkthrough. A hard decline gets no-pressure language. The draft lands in your inbox; one click sends.
He is called the bookkeeper because the bookkeeping is coming, and it's worth being precise about where it is. The monthly close and the P&L are built, and today they run on our own books rather than on yours: the close fans out across a period's transactions, and the runtime won't run a fan-out step in a workspace that holds everything for approval, which is how every workspace ships. Lifting that restriction safely is the work between here and the close running for you.
Renewal touchpoints and expansion signals are further back than that: designed, not built. Lou does not watch a renewal calendar today, and nothing flags an account whose usage outgrew its plan. When either lands, it lands as a playbook you install, and Inky will say so in the changelog.
Lou doesn't replace your judgment. Lou removes the work between knowing something happened on the billing side and a thoughtful, contextual email being ready to go.
What sets it off, what it reads, what it writes.
- Triggers
- Stripe webhook payment_intent.payment_failed
- Stripe webhook invoice.payment_failed
- Manual /run from the founder
- Inputs
- Customer record (Stripe)
- MRR, tenure, lifecycle stage
- Prior failure and recovery history
- Decline code from Stripe
- Founder voice samples
- Outputs
- Drafted recovery email (subject + body)
- Audit trail entry
- Optional Slack notification when the draft needs you
The playbook in plain English.
Recovery flow. Stripe fires payment_intent.payment_failed. Lou reads the customer's full record — not just the failed payment but tenure, MRR, prior support history, past recovery attempts. That's the customer-graph view, and it's why the recovery email reads like the customer matters.
Then he classifies the failure from the Stripe decline code into one of eight causes — an expired card and a fraud block and a processing error are three different conversations, and writing the same note for all of them is what makes dunning email read like dunning email. An expired card gets a clear walkthrough of how to update without canceling. A hard decline gets no-pressure language. A temporary processing failure gets a light try-again note rather than an apology.
The draft lands in your approval queue with the reasoning attached, so you can see which cause Lou landed on before you decide whether he read it right. Edit and send, or discard. Every recovery is replayable from the audit log afterwards, and six weeks in that log is what tells you which approaches actually worked.
The guardrails are yours.
- Turn Lou off — the per-agent switch is real and enforced. A disabled agent refuses at dispatch; your queue and audit trail stay put.
- What Lou may touch — the permissions granted to the installation are read on every run. Withhold one and the tool it covers is unavailable to him, not merely discouraged.
- Auto-send threshold (designed, not yet wired) — dollar amount below which Lou would send without review. Every recovery holds for approval today.
- Recovery floor (designed, not yet wired) — the amount below which a failed charge isn't worth an email.
- Cooldown (designed, not yet wired) — how long before Lou tries a second recovery on the same customer.
- Voice slant (designed, not yet wired) — careful and traditional, growth-oriented, or founder-perspective.
- Call to action (designed, not yet wired) — update card, manage subscription, or contact support.
- Excluded segments (designed, not yet wired) — customer segments Lou never writes to.
Nothing here yet.
We're pre-launch, so there is nothing to put here. Customer quotes go up as design partners come online and consent to being named.
Lou on revenue.
Lou is the lead agent on the Revenue area, and failed-payment recovery is his shipped surface. The bookkeeping that gives him his job title is built but not yet running on customer workspaces. The other four agents touch revenue indirectly — Hank watches customer health upstream of churn, Frankie filters billing questions out of the support inbox, Dale tracks the MRR delta in the weekly brief.
Read the revenue pillar →Common questions about Lou.
How does Lou classify failure causes?
Stripe's codes collapse into eight causes: expired card, insufficient funds, card declined, card not supported, processing error, fraud block, customer cancelled, and unknown. Lou drafts different copy for each. The set isn't configurable, and unknown is a real answer he's allowed to give — a cause guessed wrong sends the wrong email.
Does Lou retry the payment automatically?
No. Stripe handles retry logic via smart retries; Lou handles the email layer. Stripe and Lou are complementary — you'd use both, not one or the other. Lou's value is the contextual email after the retries have done their job.
Can Lou close my books?
Not yet. The close and the P&L are built and running on our own books, not on yours. The close works by fanning out across a period's transactions, and the runtime won't run a fan-out step in a workspace that holds everything for approval, which every workspace does. Letting it through safely, without weakening that promise, is the work between here and you getting it.
Does Lou track renewals or flag expansion?
Not today, and these are further off than the bookkeeping. Neither is built: no renewal calendar, no touchpoint cadence, and nothing watching for an account whose usage outgrew its plan. Lou's shipped work for you is failed-payment recovery. When the rest lands we'll say so in the changelog rather than quietly changing this page.
What languages does Lou support?
English is what he's built and tested for. There's no language detection in the recovery path, so a non-English customer gets a draft like anyone else rather than being routed anywhere special. Every draft holds for your approval, so nothing goes out in a language you didn't read first — but the check is you, not Lou.
Can I see exactly what Lou drafted before it sent?
Yes. The audit log shows the original draft, any founder edits, and the final version sent. You can replay any recovery from the dashboard. Every action Lou takes is auditable and explainable — that's a hard rule.
What happens if Lou's draft is rejected?
You edit the draft and send it. Lou notes the difference, and once three of your edits pull the same direction that lesson starts shaping later drafts and comes to you as a rule to approve or reject. The corrections are the training, and they start counting before you've ruled on them.
Does Lou ever send without founder review?
No — not today. The auto-send threshold is designed but not wired, so every recovery email holds for your approval. When it does ship, a copy of every auto-sent email will still land in your inbox: you always see what went out under your name.
What if my Stripe failure rate is unusually high?
Lou doesn't diagnose it — he has no view of a processor outage or a mass card reissue, and won't guess at one. What protects you is that nothing leaves without your approval: a bad afternoon on Stripe's side produces a pile of drafts you discard in one pass, not a pile of emails your customers already got. There's no rate limiter under that, so the approval queue is doing the work.
Closing
Lou's the agent I'd hire if I could hire one for this. — A cofounder
PorchOps puts a crew of AI coworkers on your back office: recovering failed payments, sorting support, keeping the books. Everything they write waits for your approval.






