Payment run is tomorrow. Someone still needs to chase the invoices sitting in “awaiting approval.”
That job is usually a scavenger hunt: open the AP tool, sort by status, cross-check email, ping whoever owns the cost center, then rebuild the same list tomorrow. Ask ChatGPT or Claude to help and the path changes again — different filters, different columns, a polite essay instead of a queue.
The job
You want one turn that returns a fixed pack:
- Vendor
- Invoice number and amount
- Days waiting since it hit approval
- Current approver (and backup if you have one)
- Optional: due date or early-pay discount at risk
Same fields every morning. No improvising which view counts as “stuck.”
What breaks with a freeform prompt
A long prompt can find invoices once. Next week it invents a new route — Slack threads, a spreadsheet export, a PDF inbox. Approvals that sat nine days look the same as ones that arrived yesterday. You spend the turn re-teaching the job instead of sending nudges.
Industry surveys keep pointing at the same bottleneck: slow invoice and payment approvals. Ardent Partners’ 2025 ePayables research put that delay at the top of the challenge list for nearly half of AP leaders, with average end-to-end processing still measured in days. The ops takeaway is simple — the chase list has to be stable enough to act on before the run.
What to build
Encode the queue as one small tool. Hard-code the status filter (awaiting approval), the minimum days waiting, and the columns you always need. Point it at the AP system or the sheet that is the real source of truth. Keep write actions separate — a second tool to draft a short nudge is fine; don’t let the list tool send mail on its own.
In Smia that means a designed tool on a server URL your chat client can call from ChatGPT, Claude, or Cursor. The assistant invokes the tool; it doesn’t re-decide which tabs to open.
How to verify it worked
Run it twice on the same morning. You should get the same five (or fifty) rows, same ages, same approvers. Change one invoice’s approver in the source system and run again — only that row should move. If the list drifts without a data change, the filter is still soft. Tighten it until the output is boring.
When the payment run is clean because the stuck list was boring, the tool earned its keep.
