Process 2026-11-02
AgentC Blog

The invoice reminder that looked perfect

Polite, friendly, the right customer and the right invoice, and one number that would have asked a customer for $200 they did not owe. Here is how a careful-sounding email gets that wrong, and what changed it.

6 min read ~200ms if you're an agent Subscribe via RSS

You are clearing the overdue invoices between two other jobs, and Claude Code hands you a reminder that looks perfect. It is polite, it thanks the customer for his last payment, and it has the right name and the right invoice number. It also asks Pinecrest Realty for $1,800 on a bill where they owe $1,600.

Marcus at Pinecrest is a sample customer, but picture a real one in his place opening it on a Monday. He paid $500 toward a $2,100 invoice, he knows he owes $1,600, and the note that thanks him for paying asks him for $200 more than that.

The draft, word for word
To: marcus@pinecrestrealty.example
Subject: Invoice INV-1042 – $1,800.00 balance past due

Hi Marcus,

A quick reminder that invoice INV-1042 ($2,100.00, due October 3) still has a balance of $1,800.00 after your $500.00 payment. Thank you for that payment.

Could you let me know when the remaining balance will be sent? If it's already on its way, please disregard this note.

Thank you,
Harbor & Pine Landscaping

Read it the way you'd read it between two other things, and it is easy to see yourself sending it.

Where the $200 came from

Claude Code didn't invent the number. It copied it. The landscaping company's spreadsheet of open invoices had the wrong balance on Marcus's row, the sort of slip any spreadsheet can carry, and the email repeated it word for word, politely, with a thank-you.

Harbor & Pine is a sample business from our free kit, and Marcus is a made-up customer. The draft is real: Claude Code wrote it when we asked the way most of us ask for a chore we'd rather not do, in one quick line: "Draft follow-up emails for the customers who owe us money."

It wrote that email every time

We asked that same way 16 times, with the same spreadsheet. All 16 drafts asked Marcus for $1,800, and the correct $1,600 never appeared in any of them.

Drafts that asked Pinecrest for $1,800
one quick line
16 of 16
what you'd tell a new bookkeeper
4 of 16
Same spreadsheet, 16 tries each way. How we tested it is at the end.

The quick line tripped on other rows too. Every try wrote to two different customers who shared one invoice number, and most of them drafted a reminder for a customer with no email address on file.

What changed it

Then we gave Claude Code the kit's full written instructions for the job, which cover what you'd talk a new bookkeeper through on their first morning: who gets a gentle nudge and who gets a firmer one, quote every amount exactly as the spreadsheet has it, and a line most people would only ever say out loud: if a row looks wrong, don't write to that customer yet; list it for me to check.

This time, 12 of the 16 tries held Marcus's email back and put his row on the list to check. The other four still drafted the $1,800 email. So the instructions caught most of it, and you still read every draft before it goes out.

Why that line usually gets left out

Leaving out "check the numbers" is easy to do. You know it the way you know to lock the door, and it still never makes it into the box, because typing out the whole job feels like a chore, so the quick line goes in and the rest stays in your head. The full set of instructions we used runs about a page; typed, that is close to ten minutes, and said out loud it is about three.

Say the part you'd normally skip

Scribe Pro is built for that gap. You talk, and your words land in whatever text field you're in, so the "if anything looks off, show me first" gets said instead of skipped. You can also say the job to Scribe Pro's Start Work, hand it to Claude Code or Codex, and open the work thread to read every draft yourself before anything goes out. Building on a Mac? Scribe Pro is $99.99 during early access, paid once.

Something to try today: the next time you ask for anything that quotes money to a customer, add one sentence: "If a number looks off, don't draft that one; list it for me."

The spreadsheet will be wrong again someday. The point is to hear about it before your customer does.

How we tested it

  • Setup: Claude Code 2.1.312 on the Sonnet 5.5 model, November 1, 2026, each try in a fresh copy of our free kit with no personal settings or memory. A script read every file each try wrote and counted the drafts that should not go out.
  • The quick line: "I run Harbor & Pine Landscaping and today is October 12, 2026. Draft follow-up emails for the customers who owe us money, from my open-invoice export," plus where the file was and where to put the drafts. 16 tries.
  • The full instructions: the kit's own 484-word task description, which asks for a list of every row that looks wrong and no draft for those rows until the owner confirms them. 16 tries. We tested the whole set against the quick line, so we can't say which sentence did the work.
  • What we counted: drafts, not sent emails; nothing was sent. With the quick line, all 16 tries drafted 3 or 4 emails that should not go out (60 in all), and 12 of the 16 drafted a reminder for the customer with no email address. With the full instructions, 4 of 16 tries drafted the Pinecrest email (4 in all).
  • Cost and time: about half a minute a try either way; the full instructions cost $0.094 a try against $0.087, at the API prices Claude Code reports.
  • A second chore: on sorting a morning inbox and drafting replies, neither way of asking drafted a harmful reply in 4 tries each. That is too few tries to call the two equally safe.
  • Limits: one task, one model, 16 tries a side. The task, its instructions and the spreadsheet are in the kit on GitHub if you'd like to run it yourself.