Module 10The six AI workflows4 min read
The monthly query chase: one email instead of six
The job that quietly eats a bookkeeper's week. How to find every transaction you cannot code, group them into one email per client, and draft it, with the arithmetic done by a script rather than by the model.
The monthly query chase is the job of finding every transaction you cannot classify and asking the client what each one was. Done by hand it becomes six separate emails over a fortnight. Written down as a workflow it becomes one email per client per month, drafted in minutes, with the amounts computed by a script rather than read off by eye. Build this one first: it repeats more than any other job in the practice and it is almost entirely templated once written down.
Key takeaways
One email, not six. A client answers "the three Cloudhost payments" faster than three separate questions asked on three different days.
Order by value. The largest unknown is where a wrong answer costs most, so it goes at the top.
Never guess what a transaction was. A plausible description is not an answer, and a guess that gets posted is worse than an open query.
Data problems are yours, not the client's. A row with an unreadable amount is your exception list, not a question for them.
What counts as a query
A transaction is a query when its account is blank or sits in a holding account: Ask My Accountant, Uncategorised Expense, Uncategorised Income, Suspense, Unassigned, To Be Classified. Those names differ by platform and by whoever set the file up, so the workflow checks all of them rather than one.
What it is not is anything you could code by looking at the ledger yourself. Every avoidable question you send costs the client's patience, and patience is what you need when the query genuinely matters.
The procedure
- Export the period. In Xero: Accounting, Reports, Account Transactions, set the date range, export to CSV. In QuickBooks Online: Reports, Transaction List by Date, same approach.
- Run the script. It reports the source file, the row count, a control total and the exceptions, then every unclassified transaction grouped by contact with a line number on each.
- Read the exceptions before the queries. A non-numeric amount or a missing date is a data problem. It belongs on your list, not in the client's email.
- Draft one email per client. Grouped by contact, ordered by value, with a suspected duplicate flagged as a suspicion rather than a fact.
- Check last month's answers first. Asking a client something they already told you is the fastest way to make the whole process look careless.
Why the model must not do the arithmetic
Language models handle twenty numbers well and a hundred badly, and the failure is quiet: the total comes back looking reasonable and wrong. On a query email that matters twice over, because the client checks the figure against their own bank and you lose the argument before it starts.
Every amount and count in this workflow comes from a bundled script. The model reads the request, runs the code, and writes the email around the result.
Install it: skills/monthly-query-chase
Finds every unclassified transaction, groups them by contact so one email covers all of them, and reports the value in query with a control total. Reads Xero, QuickBooks or a plain CSV export.
Get the six workflows on GitHubWorks in Claude, Claude Code, Codex and Cursor. Copy the folder into .claude/skills/ and ask in plain language.
What the email looks like
Short, specific, and easy to answer in one line each.
| Date | Description | Amount | Note |
|---|---|---|---|
| 14 Aug | Card payment 9920 | 412.00 | |
| 14 Aug | Card payment 9920 | 412.00 | Looks like a duplicate of the above |
| 12 Jul | Card payment 4417 | 289.50 | |
| 28 Jul | Transfer | 1,000.00 | No contact on the transaction |
A one-line answer against each is plenty, and saying so in the email gets you a faster reply than a polite paragraph.
What it cannot do
It cannot send. There is no email tool in the Xero connection at all, so the output is a draft for a human to send.
It cannot code the transactions. It asks the question. A person applies the answer to the ledger.
It does not watch the ledger. Nothing fires when an unknown transaction appears. The workflow runs when you run it, which for a monthly job is exactly right, and it sits naturally at the start of the month-end close.
For the wider picture of that boundary, see AI for accountants. Anything that has to happen on a schedule without a person present belongs in accounts receivable automation rather than an assistant.
Common questions
How long does this workflow take to build?
About an afternoon, and most of that is writing down how you already ask the question. The skill above is the finished version if you would rather start from something working.
Can it run across all my clients at once?
Through CSV exports, yes. Every live connection holds one organisation at a time, so a bookkeeper with twenty clients would reconnect twenty times. The export route is the one that scales across a book.
What if the client never answers?
That is a practice management problem rather than a workflow one, and it is the reason the email is short and ordered by value. Chasing the answer is the same job as the client email desk.
More in The six AI workflows
The client email desk: first drafts of the replies that eat an afternoon
First drafts of the technical replies, with every position marked for a human to verify.
Management pack commentary: three reports to a one-page pack
Three reports to a one-page commentary, with every variance computed by a script.
Client onboarding: one intake, three documents that agree
One intake producing an engagement letter, information request and AML checklist that agree.
Fee scoping: price a client from their data, not from a guess
Price a client from measured volume and measured messiness instead of from a guess.
The year-end review pass: a second set of eyes that is not yours
A second set of eyes that runs the same checklist on every file, at the same standard.