A stack of bills and time to check a few
Your clients pay you partly to make sure their energy bills are right. Every month, bills arrive for every site: PDFs from several suppliers, each with its own layout, some with multiple meters per bill. An analyst opens a bill, finds the contract for that meter, checks the unit rate, the standing charge, the period and the reads, and moves on to the next one.
There are far more bills than hours. So the team checks the large sites and a sample of the rest, and hopes the others are fine. Occasionally a client finds a problem on a bill nobody checked, and asks what they are paying you for.
Why checking every bill by hand does not scale
Each bill check is simple in principle. The time goes on finding and lining up the information.
- Bill layouts vary between suppliers and change over time.
- The contracted rates are in contract documents or a spreadsheet, not beside the bill.
- Multi-rate tariffs, day and night rates and several charge lines need matching one by one.
- Bills cover different periods and may include adjustments for earlier periods.
- Reads on bills have to be compared with reads you hold.
An analyst can do it well for a limited number of bills. Checking every bill needs the lining up to be done by software.
What unchecked bills cost clients and you
Errors on unchecked bills are paid. Some may be recovered later, many are not noticed. For the client, that is money lost. For the consultancy, it is a service promise that is only partly met.
Checking by hand also delays the useful part of the job. By the time a problem is spotted, several more bills may have been issued on the same wrong basis, and the supplier query becomes larger and slower.
Validation that reads bills and compares them
We build a bill validation pipeline that checks every bill and sends only the problems to a person.
- Bills arrive by email, from supplier portals or as data files, and are collected automatically.
- Each bill is read with an extraction step, using a model such as OpenAI or Anthropic Claude for PDFs and a parser for data files, into a standard structure: meter, period, reads, consumption, each charge line and totals.
- The bill is matched to the meter and the contract in your records.
- Checks run line by line: unit rates and standing charges against the contract, billing period against the previous bill, reads against reads you hold, arithmetic, VAT and levies against the client's records.
- Bills that pass are marked validated. Bills with mismatches go to an analyst queue with the difference explained and the bill and contract side by side.
- The analyst confirms a problem, marks it explained, or raises a query with the supplier from the same screen.
| Check | By hand | Automated validation |
|---|---|---|
| Unit rates | Looked up in the contract | Compared line by line |
| Standing charges | Checked if time allows | Compared on every bill |
| Billing period | Glanced at | Checked for gaps and overlaps |
| Reads | Compared occasionally | Compared with reads you hold |
| Coverage | A sample of bills | Every bill received |
The checks follow the contract terms you record. Deciding whether a difference is an error, and what to say to the supplier or the client, stays with your analysts.
Analysts working on real problems
Bills arrive and are checked overnight. In the morning, the analyst queue holds the handful that did not match, each with the difference already worked out. The rest are marked validated. Analysts spend their time on queries and clients, not on lining up numbers.
Clients can be told that every bill was checked, and shown which ones raised queries. That is a stronger service than a sample, and easier to explain in a review meeting.
Is bill validation a sample exercise?
- Your team can only check a sample of bills.
- Clients have found bill errors before you did.
- Contract rates are looked up by hand for each check.
- Different supplier layouts slow checking down.
- Problems are found months after they started.