MartinAI
September 9, 2026·9 min read

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.

CommodityKey fields beyond total costWhy it matters
ElectricityEnergy (kWh), demand (kW), time-of-use periods, power factorDemand and time-of-use often drive more cost than energy
Natural gasVolume, heating value, delivery vs commodity chargesVolume converts to energy only via the heating value
Water and sewerConsumption, sewer often billed on water volumeThe sewer charge can exceed the water charge itself
SteamMass or energy delivered, usually district-suppliedNeeds 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.

~3,000
US electric distribution utilities, each with its own format
60% / 34%
of commercial energy: electricity / gas
15-20%
of C&I invoices contain errors
$40k+/yr
manual data entry for just 20 buildings

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.