⚙️ Automation

Your Monthly Report Takes Three Days.
It Could Take Four Minutes.

Somebody in your finance team loses the first three days of every month. They export from the ERP, pull a file from the bank portal, download a CRM report, paste all of it into a workbook that has been maintained since 2019, reconcile the differences by hand, and email a PDF to eleven people.

That person is usually qualified to do analysis and spends a third of their month doing data entry instead. Here is what replacing it actually involves — not the pitch version, the real one.


Where the Three Days Actually Go

Before automating anything, time the steps. The distribution is almost always lopsided, and it is rarely where people assume.

StepTypical timeAutomatable?
Exporting from source systems2-3 hoursYes, fully
Cleaning and reformatting exports3-4 hoursYes, fully
Reconciling differences between sources6-10 hoursMostly
Building the workbook and charts2-3 hoursYes, fully
Chasing missing data from other teams4-8 hoursNo — process problem
Review and commentary2-3 hoursNo — keep it human
Distribution1 hourYes, fully

Two rows matter most. Reconciliation is the biggest automatable block, which is where the return concentrates. And chasing missing data is not an automation problem at all — it is a process problem, and no tool fixes a colleague who submits their numbers late.

💡 If chasing is your largest block, automation will disappoint you. Fix the submission deadline first, then automate.

What the Automation Actually Looks Like

Concretely, for a typical finance pack, the workflow has five stages that run on a schedule:

The shape of a month-end workflow

Trigger        1st of month, 06:00, or on-demand

  1. Extract    ERP  -> API or scheduled export -> staging
                Bank -> API or SFTP             -> staging
                CRM  -> API                     -> staging

  2. Validate   Row counts within expected range?
                Control totals present?
                Required accounts all reporting?
                -> if any check fails, STOP and alert

  3. Transform  Map account codes to reporting lines
                Convert currency at month-end rate
                Apply intercompany elimination
                Reconcile ERP vs bank, flag variances

  4. Load       Write to warehouse
                Refresh the Power BI semantic model

  5. Distribute Generate the PDF pack
                Email to the distribution list
                Post the summary to Teams

Nothing here is exotic. The whole thing is a scheduled sequence of steps a person currently performs. The value is that it runs identically every month, at 6am, without anyone losing three days.

Which Tool, Honestly

There are three realistic categories and the choice matters less than people think, provided you avoid building it somewhere it cannot be maintained.

ApproachGood forWatch out for
Power AutomateMicrosoft-only stacks, simple flowsPer-run costs; awkward with complex transforms
n8n (self-hosted)Mixed systems, full control, no per-task feeYou run the infrastructure
Python + schedulerHeavy transformation, full testabilityNeeds someone who maintains code
Azure Data FactoryLarge volumes, already on AzureHeavier setup for a small pack

For a mid-sized finance pack touching an ERP, a bank and a CRM, self-hosted n8n is frequently the sweet spot: it connects to almost anything, the logic is visible on a canvas so a non-developer can follow it, and self-hosting means unlimited runs with no per-task billing. It also now orchestrates AI steps, which matters for the variance commentary discussed below.

What matters more than the tool: the logic must live somewhere version controlled and readable by someone other than its author. An automation nobody can modify is a worse dependency than the spreadsheet it replaced.

The Hard Part Is Not the Automation

Extracting and transforming data is routine engineering. The part that consumes the project is reconciliation logic, because it encodes judgement that currently exists only in somebody's head.

Ask your finance person what they do when the ERP and the bank disagree by 400. You will get something like: under 500 and it is timing, so it carries to next month; over 500 they investigate; if it is exactly a round number it is usually a manual journal. None of that is written down anywhere.

That conversation is the project. Three days of it, documented properly, and the build is straightforward afterwards. Skip it and you will automate the easy 60% and leave the person doing the hard 40% by hand, which saves far less than promised.

Reconciliation rules, written down

IF   |variance| < 500 AND days_open < 30
     -> classify: timing, carry forward, no alert

IF   |variance| >= 500
     -> classify: investigate, alert the controller

IF   variance is an exact multiple of 1000
     -> classify: likely manual journal, flag for review

IF   variance appears in the same account 3 months running
     -> classify: systematic, escalate

ELSE -> classify: unexplained, hold the pack
💡 That last rule is the important one. An automation that publishes regardless of what it found is worse than a person, because a person would have stopped.

What Happens When It Breaks

It will break. A source system changes a column, an API token expires, a file arrives in a different format. The difference between a reliable automation and an unreliable one is entirely in what happens next.

The failure mode to design against is silent partial success: the workflow runs, one source returns nothing, and it publishes a pack that quietly excludes a subsidiary. Everybody trusts it because it arrived on time.

So validate before you publish. Row counts inside an expected range, control totals present, every required entity reporting. If a check fails, stop, alert a named person, and publish nothing. A pack that is late is a minor inconvenience. A pack that is wrong and on time costs you the trust that justified the project.

What It Costs to Build

For a typical finance pack with three or four source systems, expect three to five weeks: about a week on discovery and reconciliation rules, two on the build, one on parallel running until the automated output ties to the manual one, and a few days on documentation and handover.

Run it in parallel for at least two cycles. Nobody switches off a working process on the strength of one good month, and they are right not to.

Against three days a month of a qualified person's time, the payback is usually inside a year — and the second automation is considerably cheaper than the first, because the extraction and alerting plumbing is already there.

Start With One Report, Not All of Them

The instinct after a successful pilot is to automate everything at once. Resist it for a practical reason: the first automation teaches you things about your data that change how you would build the second.

You will discover that the ERP export includes a trailing summary row. That the bank file changes format in months with a public holiday. That one subsidiary reports in a different currency than everyone assumed. None of this appears in a requirements document, and all of it surfaces during the first parallel run.

Build one, run it for two cycles, then build the next with what you learned. The second takes half as long, and the third is faster again, because the extraction, alerting and validation patterns are already in place.

There is a people dimension too. The person whose three days you are removing needs to be part of building it, not have it done to them. In practice they hold most of the knowledge the project depends on, and if the automation is something that happened to them, they will keep maintaining the spreadsheet in parallel just in case. Then you have two processes instead of one.

What We Would Do

We start by sitting with whoever currently produces the pack and documenting what they do, including the judgement calls. Then we build the extraction, validation and reconciliation as a scheduled workflow with alerting, run it in parallel until it ties, and hand over documentation your team can modify.

We also say when a process is not worth automating. If the pack takes three days because two of them are spent chasing other departments, the honest answer is that a deadline change would deliver more than we would.

💬 Working with us

Phoenix Solutions builds workflow automation with n8n, Power Automate and custom pipelines, connecting ERP, CRM, banking and BI into processes that run themselves. See workflow automation, or the finance case study where reporting time halved and ETL processing dropped 85%.

Losing three days a month to a spreadsheet?

Tell us which systems the pack pulls from and roughly how long each step takes. We will tell you what is worth automating and what is not.

Start the Conversation →