Extracting utility data across mixed commodities at portfolio scale
One bill is easy to read by hand. A portfolio of electricity, gas, water and steam across hundreds of formats is a different problem. Here is why mixed-commodity extraction breaks templates and OCR, and what it actually requires.
A single utility bill is a solved problem: anyone can read one by hand. A portfolio is a different problem entirely. It is electricity, gas, water and sometimes steam, across dozens or hundreds of sites, from utilities that each design their own bill and change the layout without notice. Extraction at that scale is less about reading a document and more about reading thousands of documents that refuse to agree on anything.
The instinct is to treat this as an optical-character-recognition task: turn the PDF into text, pull the numbers. That works for one predictable format and falls apart across a real portfolio, because the hard part is not seeing the characters. It is knowing what each number means when every provider labels, orders and bundles them differently.
Why the scale changes the problem
There is no single utility bill to build a template against. Nearly 3,000 electric distribution utilities operate in the United States alone, and that is before counting the gas, water and steam providers, each with their own formats. A commercial portfolio also runs on a mix of commodities: electricity is about 60 percent of the energy a commercial building uses and natural gas about 34 percent, with water and, in some facilities, district steam on top. A complete record for one site can mean four bill types, in four unit systems, on four billing cycles, from four providers. Multiply that by the number of sites, and add the fact that any provider can redesign its bill next quarter.
Each commodity carries different data
The commodities do not just look different. They contain different information, and a system that flattens them all to usage and cost throws away what makes each one useful.
| Commodity | Key fields beyond total cost | Why it matters |
|---|---|---|
| Electricity | Energy (kWh), demand (kW), time-of-use periods, power factor | Demand and time-of-use often drive more cost than energy |
| Natural gas | Volume, heating value, delivery vs commodity charges | Volume converts to energy only via the heating value |
| Water and sewer | Consumption, sewer often billed on water volume | The sewer charge can exceed the water charge itself |
| Steam | Mass or energy delivered, usually district-supplied | Needs conversion to a common energy basis to compare |
Extracting only the total from each of these gives you a number you cannot analyze. You cannot manage a demand charge you never captured, and you cannot convert gas you recorded in cubic meters without also capturing its heating value. Mixed-commodity extraction means pulling the fields that make each commodity analyzable, not just the amount due.
Why templates and plain OCR break
A template maps fixed positions on a page to fields. It works until the utility moves a box, adds a rider, or you onboard a site on a format nobody has seen. Across a portfolio you are always onboarding a new format, so a template library becomes a permanent maintenance backlog that never catches up. Plain OCR has the opposite failure: it reads every character correctly and understands none of them, so it cannot tell a meter multiplier from an account number, or a current charge from a carried-forward prior balance.
The reliable approach reads a bill the way an experienced analyst does, by understanding what the fields mean and how they relate, so a charge is identified by what it is rather than by where it sits on the page. That is what lets one process handle a layout it has never encountered, which is the normal case at portfolio scale.
What portfolio-scale extraction actually requires
- Read every commodity, not just electricity, and every field, not just the total
- Normalize units and rate classes to a common basis across providers
- Map each bill to the correct site, meter and account automatically
- Reconcile usage against meter reads and billing dates as it extracts
- Flag exceptions for review instead of failing silently on an unfamiliar format
Extraction and validation belong together at this scale. Around 15 to 20 percent of commercial energy invoices contain errors, so reading a number is only half the job. The other half is checking it against the tariff and the account's own history as it lands. The Green Button standard proves structured utility data is achievable, defining a consistent format for electricity, gas and water usage, but most bills still arrive as PDFs and portal exports, so the structuring has to happen on ingestion.
Doing this by hand does not scale. Manual data entry and benchmarking for just 20 buildings can run over $40,000 a year, and the error rate climbs with the tedium. The goal of portfolio-scale extraction is to make mixed commodities across hundreds of formats behave like one clean dataset, so your team spends its time on the exceptions that matter rather than re-keying bills.
Frequently asked questions
Why is extracting utility data across a portfolio harder than reading one bill?
Because there is no single format. Nearly 3,000 electric utilities in the US each design their own bill, and gas, water and steam providers add more. A portfolio is a constant stream of new and changing layouts across several commodities in different units and cycles, so a process that works on one predictable bill does not survive the variety.
Why does OCR alone fail on utility bills?
Optical character recognition reads the characters but does not understand them. It cannot reliably tell a meter multiplier from an account number, or a current charge from a carried-forward balance. Extraction has to understand what each field means and how fields relate, so a charge is identified by what it is rather than by its position on the page.
What fields matter beyond the total on each commodity?
Electricity needs energy, demand, time-of-use periods and often power factor, because demand and time-of-use frequently drive more cost than energy. Gas needs volume and heating value to convert to energy. Water bills often carry a sewer charge based on water volume that can exceed the water charge. Steam needs conversion to a common energy basis.
Should extraction and validation happen together?
Yes. Around 15 to 20 percent of commercial invoices contain errors, so reading a value is only half the work. Checking each figure against the tariff and the account history as it is extracted is what turns a pile of mixed-commodity bills into a dataset you can trust across the portfolio.
Getting clean data out of utility bills: manual entry vs OCR vs reasoning
Three ways to turn a stack of utility bills into usable data, and why the difference shows up the moment you scale past a handful of accounts. A practical comparison for anyone tired of re-keying bills.
Why utility bills need reasoning, not OCR
OCR reads characters. Utility data needs a system that understands tariffs, meters and the relationships between fields. Here is the difference, and why it matters for billing accuracy.
