Workflow automation · Dental accounts
Bupa Invoice Extractor
A private local tool that reads a year of dental invoices, calculates the accounts and flags anything that does not agree.
Problem
Monthly self-bill PDFs mixed NHS, private, commission, pension and adjustment rules that were being retyped into accounts by hand.Solution
A local tool that reads all twelve invoices, keeps the source figures and checks every monthly result against the PDF.Impact
The full year can be rebuilt in one run, while damaged files and mismatched totals are surfaced for review.| Month | Net calculation | Invoice total | Variance |
|---|---|---|---|
| April | £12,486.20 | £12,486.20 | £0.00 |
| March | £11,934.75 | £11,934.75 | £0.00 |
The problem
My wife works as a self-employed dental associate. Her monthly Bupa self-bill invoices contain the figures needed for annual accounts, but the useful values are spread across summary pages, payment calculations, deductions, adjustments and NHS UDA detail.
The manual process meant reading twelve PDFs, classifying each line and copying everything into a spreadsheet. Each monthly result had to agree with the invoice, not merely look plausible.
The solution
I built a local Python tool that reads the whole invoice folder, extracts the income, deductions and adjustments, then produces an annual Excel summary with a source sheet for every month. The formulas remain visible, so the accountant can follow the calculation.
The awkward exceptions became rules
The invoices contain cases a generic table extractor would miss: superannuation adjustments, UDA rate changes, Finance Scheme income, administration charges and variable private commission. Private commission uses the rate printed on that month’s invoice instead of assuming it never changes.
The evidence
Each month shows the calculated value beside the Net Amount Due from the PDF. A variance column exposes missing adjustments immediately and points the review back to one invoice.
One damaged PDF cannot spoil the year
If a PDF is damaged, the batch records the failure and continues. Every accepted row keeps its source month and detail, allowing a reviewer to move from the annual summary back to the invoice.
Privacy and control
The workflow runs locally. No invoice values are uploaded, and a person still reviews and signs off the accounts.
The impact
A manual annual exercise became a repeatable, reviewable workflow. The entire year can be rebuilt when a rule changes, with every exception made visible.
The result