I connected an AI assistant to the client records I already keep and gave it one job: look at who I've done work for and tell me which clients need an invoice. I run mine through OpenClaw over iMessage, so the list comes to me like a text, but the setup works with any assistant you can connect to your records. If you run a service business, this is one of the highest-leverage things you can hand off.
The point isn't to let AI send money requests on its own. It's to make sure nothing you did goes unbilled. Here's how I set it up.
Give it the records that decide when you bill
A name and email isn't enough. The assistant needs the rule that triggers a bill (a monthly date, a finished project, a deposit that's due) and whether an invoice already exists for that work. Point it at the CRM, sheet, or folder where you actually track that.
Give it the exact instruction
Be specific about what to return and what not to touch. This is the prompt I'd start with. It asks for a clear list and tells the assistant to flag anything uncertain instead of guessing.
Review the current client and billing records I have authorized you to access. Identify clients whose billing trigger has been met and who do not already have an invoice for that work. Return: client, billing trigger, work period or milestone, amount only if explicitly recorded, existing invoice status, source link, and missing information. Put existing unpaid invoices in a separate follow-up list. If a required record is missing or conflicting, flag it rather than guessing. Do not create invoices, send messages, or change records.
Read the first list against your own records
A client whose project is finished with no invoice on file should show up. If the amount isn't recorded, it should ask instead of inventing one. An invoice that already exists but hasn't been paid belongs on the separate follow-up list, not the "needs invoicing" one. Check the first run yourself before you trust it.
Only then make it recurring
Once one manual run is right, set the cadence. I have mine check every weekday morning and report back in the same conversation. It reports if a record is missing or its access fails, so a broken run never looks like an empty one.
After I have checked a successful one-time run, run this review every weekday at 8:00 a.m. America/New_York. Use current records and include the time checked and source links. If access fails or the data is stale, report the problem instead of presenting an old list as current. Return the list in this assistant conversation. Do not contact clients or create invoices.
The assistant finds and flags. You decide and send. Notice that both prompts tell it not to create invoices or contact clients: that line is the whole reason this is safe to run every day. An unpaid invoice is not the same as work that needs invoicing, so keep those two lists separate.
Start with the one job I gave it, which is finding unbilled work. Once you trust that, you can point the same setup at other things you keep forgetting.