How it works

From utility PDF to clean rows — in seconds

A purpose-built parser for utility bills. Two extraction paths handle every layout. A validation layer catches every malformed row before it reaches your system.

The pipeline

Four stages, sub-3-second average

Ingest

PDF, scan, or photo. Up to 1,000 bills per batch via dashboard or API.

Classify

Auto-detect provider, region, and bill format from 400+ templates.

Extract & validate

Pull 60+ fields. Cross-check totals, periods, and usage math.

Export

CSV, JSON, JSONL, Excel — or push via webhook to your system.

Two parser paths

Template-first, AI-fallback

Template parser

For our 400+ supported providers, deterministic templates extract every field with millimetre precision. Sub-second per bill, zero hallucination, full audit trail.

AI fallback

For unknown providers, a vision model extracts structured fields and flags low-confidence rows. We use this output to ship a new template in 24–48 hours.

What we extract

Every field. Every line item.

A full bill becomes 60+ structured fields. Here's a sample of what lands in your CSV.

  • Account number
  • Service address
  • Meter number(s)
  • Service period start/end
  • Bill date
  • Due date
  • Usage (kWh, therms, gallons, CCF)
  • Demand (kW)
  • Base / supply charges
  • Delivery / distribution
  • Demand charges
  • Taxes & surcharges
  • Riders & adjustments
  • Late fees
  • Credits / rebates
  • Previous balance
  • Payments received
  • Total due
  • Rate schedule / tariff
  • Time-of-use breakdown
  • Power factor
  • Solar / net metering credits
Validation

Bad rows never reach your system

Every parsed bill runs through a validation layer before it's released:

  • Line-item arithmetic — every charge sums to the printed total
  • Period sanity — service window matches statement date logic
  • Usage continuity — meter reads progress in the expected direction
  • Currency & unit normalization (kWh, therms, m³, kL)
  • Provider-specific format checks (account number length, rate codes)

Rows that fail are flagged with confidence scores and field-level diagnostics — never silently merged into your output.

Custom templates

New provider? 24–48 hours.

Don't see your utility in the directory? Request a template from your dashboard. We ship the first version within 24–48 business hours — usually for free on paid plans, otherwise $49 flat. Once shipped, every customer on the platform can use it.