2026  ·  automation · claude-api · finance · power-automate

Autonomous Finance Reporting Pipeline

A zero-touch pipeline that ingests accounting ledgers and five platform exports and writes a reconciled dataset, with schema drift caught rather than absorbed.

The old process worked right up until a column moved, and then it quietly produced a wrong number nobody checked.

What it is. A pipeline built on Power Automate, the Claude API, and Power Query that ingests accounting ledgers and five platform exports, extracts and normalizes line items through structured-output model calls, and writes a reconciled dataset with schema-drift detection.

Why it matters. The reporting it replaced ran through ten chained-VLOOKUP workbooks. Its failure mode wasn't crashing. It was a shifted column silently corrupting totals that then went out unreviewed.

Payoff. A six-hour weekly build became twenty minutes, a 94% reduction, and the silent-failure path is now a loud one.

What this actually is

Finance was assembling a weekly picture by hand out of an accounting ledger and five separate platform exports, each with its own idea of how a line item should be shaped.

The glue was ten workbooks of chained VLOOKUPs. That structure is fragile in a specific and dangerous way: it doesn't announce failure. If an upstream export gains a column, the lookups keep returning values, just the wrong ones.

The pipeline replaces the glue. Exports land, structured-output model calls extract and normalize the line items into one schema, and the result is written as a reconciled dataset.

Why an LLM belongs here at all

Not for judgment. For shape.

The variance across five exports isn't semantic, it's cosmetic: the same concept described five ways, renamed between versions, with inconsistent nesting. Writing deterministic parsers for all of it is possible and miserable, and every upstream change reopens the work.

Structured outputs handle the normalization while keeping the result typed, which means it can be validated rather than trusted.

Schema drift is the actual feature

The speed is the headline, but the reason I'd defend this build is the drift detection.

The old process was fast enough to survive and wrong often enough to matter. Catching the moment an upstream schema changes, and stopping loudly, is worth more than the five hours and forty minutes.