Weekly UK filing deadline tracker for your client book

By General Input

Every Monday, check each client's accounts and confirmation statement dates on the UK register, open tasks for what is due soon, and post the practice one clear status update.

Integrations

  • Companies House
  • Google Sheets
  • Asana
  • Slack Bot

Type

Agentic Task

Categories

  • Finance
  • Operations

Every Monday at 8am, run a filing deadline review across my whole client book and tell the practice where it stands.

Start by reading my client list from Google Sheets with Get Values. Each row has the client name, their UK company number, and the partner who owns the relationship. Read the company number column as text so leading zeros are preserved, and zero pad anything shorter than 8 characters before you look it up, because Companies House company numbers are 8 character zero padded strings and 04829911 is not the same as 4829911.

For each client, use Companies House Get Company Profile to pull the next accounts due date and the next confirmation statement due date, along with whether either one is already flagged as overdue. The fields that matter are accounts.next_due, accounts.overdue, confirmation_statement.next_due and confirmation_statement.overdue. If a company number returns nothing, or the company is dissolved, do not fail the run. Set that client aside and mention it at the end of the Slack summary so someone can fix the sheet.

Then use List Filing History for each client to confirm what has actually been filed. Look at the accounts and confirmation statement filings and compare the most recent one against the period the profile says is now due. If the register still shows a due date but the matching return has already been accepted for that period, treat it as filed and leave that client out of the buckets. The point is to avoid chasing partners for work that is already done.

Sort every client and every filing type into four buckets based on the statutory date: already overdue, due within 7 days, due within 30 days, and due within 90 days. A single client can appear in more than one bucket if their accounts and confirmation statement fall in different windows, so treat each filing type as its own line item rather than collapsing them per client.

For anything sitting inside the 30 day window, including everything already overdue, create an Asana task with Create a Task in my practice deadlines project. Name the task for the client and the filing type, for example "Harrow Textiles Ltd, confirmation statement". Set the statutory date as the Asana due date, not the date you are running, and assign the task to the partner who owns the relationship by matching the sheet's partner name to an Asana user by name or email. If no Asana user matches, still create the task so the deadline is not lost, leave it unassigned, and call it out in the Slack summary.

Before you create anything, pull the tasks that already exist in that project with Get Multiple Tasks and use them to dedupe. If a client already has an open task for the same filing type, skip it rather than creating a second one, because this runs every week and the same deadline will stay in range for several runs. Do not use Asana's workspace task search for this, it requires a premium plan. Scope the read to the project instead.

Finish by sending one Slack message with Send a Message to our practice channel. Lead with the overdue clients, since those are the ones with real consequences, then the 7 day bucket, then the 30 day bucket, then a count of the 90 day bucket so people can see what is coming without reading every line. Close with the tasks created this week and note anything skipped as a duplicate. For each line include the client name, company number, filing type, statutory date, and owning partner. Write it so nobody has to open Companies House to know where the practice stands.

Companies House allows 600 requests per rolling 5 minute window per API key, and this workflow makes two calls per client. Work through the client list steadily rather than firing every lookup at once. If you get a 429, honour the Retry-After header and resume where you left off instead of restarting the run or dropping the remaining clients.

Related prompts

Explore more prompts
Call overdue Xero customers with an AI collections agentLocal listing health board for every location you manageLet support send one-off Loops emails without an engineerA brand asset library your marketing team actually searchesTurn Mailjet email clicks into ranked HubSpot follow-upsClean out the Looker dashboards and Looks nobody opensStop cold emails to anyone with a live deal in PipedriveLiveKit live operations console for room moderationWake up dormant Keap leads with a researched reasoniMessage campaign console with pre-flight checks and delivery board