[ Case study ]
Supplier invoices arrived as PDFs by email, were downloaded, keyed into the ERP by hand, matched against purchase orders, and filed. Two full-time staff spent most of every day on it, and month-end close slipped whenever volume spiked.
CLIENT a wholesale building-materials distributor — FOCUS Map the manual process node by node
Representative examplesEvery case study in this library is an illustrative composite of the kind of engagement we deliver — written to show our method and standards, not to name clients.
Building materials move out of two depots to a trade customer base that orders on account, and purchases come in from a long tail of suppliers — EDI at the top end, emailed PDFs everywhere else. Purchasing runs on a decades-old ERP that has survived every attempt to replace it; finance runs alongside it on spreadsheets and email. The accounts team is two people who have processed supplier invoices the same way for years, trusted precisely because nothing leaves their hands undocumented. We arrived when the owner asked what happens when one of them retires.
Supplier invoices arrived as PDFs by email, were downloaded, keyed into the ERP by hand, matched against purchase orders, and filed. Two full-time staff spent most of every day on it, and month-end close slipped whenever volume spiked.
We proposed a self-hosted n8n workflow that watches the invoice inboxes, extracts line items per supplier, and posts each batch to a review queue a human clears before anything reaches the ERP. The reasoning: the ERP stays the source of truth untouched, finance keeps an approval gate on every posting, and the automation absorbs the fetching and typing rather than the judgment. Extraction is per-supplier by design — three genuinely different formats deserve three honest paths, not one template that is almost right everywhere. Anything below confidence threshold flows to the same review queue as a normal exception, so the fallback is a feature rather than an apology.
Just as important is what we ruled out, and why:
The current process was documented as a workflow map first — every download, check, and keying step — so the automation mirrors reality instead of an idealized version.
Each supplier format got its own extraction path with a review queue for anything below confidence thresholds — the fallback is the feature.
Extracted lines post to a review queue; approval posts to the ERP and writes a full audit record, so finance signs off on every batch.
Delivered by the systems pod — automation specialist + engineer over 6 weeks, with working increments reviewed with the client every week.
Obstacle
In week four, one of the three suppliers switched to scanned images after a printer change on their side, and extraction confidence collapsed on their whole file.
Handled: We added an OCR pre-pass for that supplier with a lower auto-approval threshold and logged it as a known-degraded path until their portal export became available.
Obstacle
The ERP import file rejected accented characters in supplier names, which no one had tested because the sample invoices happened to be plain ASCII.
Handled: The workflow now normalizes text through a character map before writing the import file, with a checksum comparison logged for every batch.
The headline: average handling time per invoice batch (human review only), measured over the first full month — 45 min → 4 min, read from Workflow execution logs plus time study. A second check: missed early-payment discounts since go-live at 0.
The two processors still touch every invoice — that was the point — but their day now starts with a queue instead of an inbox. The controller approves batches from one screen with the audit record beside her, and month-end stopped being a season. What surprised the owner most: the processors became the people who explain the workflow to suppliers, because for the first time the process was legible enough to describe. One of them has started maintaining the confidence thresholds herself.
The result was read from Workflow execution logs plus time study against the pre-engagement baseline over the stated window, with a guardrail check on missed early-payment discounts since go-live. Where platform-reported numbers and business outcomes differ, this record says which layer it is quoting.
What we would do differently
We would have negotiated API access to the ERP's staging environment at kickoff — the import-file workaround works but adds a sync step we'd rather not maintain.
[ Related service ]
[ Related builds ]
44% 71%Tier-1 tickets resolved without human touch, month two post-launch versus month before
4 hrs 25 minAverage policy-comparison preparation per client file, verified over 40 files
[ Next step ]
Next case study