Google Sheets is where most of these lists live today. One tab per month, one row per client, columns for bank statement, sales invoices, purchase invoices, payroll hours. Someone updates it by hand on the 3rd and sends the chasers by hand on the 5th. At 30 clients that is roughly 70 chaser emails a month, typed one at a time.
The list can build itself. The system knows which client has a bank feed and which still posts PDFs. It knows whether the payroll hours arrived because they come to one address. It knows the sales invoices are in because they were posted as drafts. What is left is the gap, and the gap is the chase.
Chasing in your tone matters more than people expect. You wrote the first chaser years ago and it works: short, friendly, one list, one deadline. The system reuses that text. It fills in the client's name, the items still missing and the date you need them by. The second chaser, a week later, is a little firmer. You wrote that one too.
It sends on the schedule you set. 2nd of the month at 09:00, then the 9th, then a note to you about who has still not replied. When the bank statement lands, the row updates and that client drops off the next run. No one gets chased for something they sent yesterday.
This is the kind of thing we build. It runs from your own Gmail or Outlook, so replies land where they always did.