Utility Bill Auditor
Checks the energy invoice against the contract nobody has re-read
- 8hard rules
- Things it must never do, enforced in every run
- 5handover rules
- Conditions where it stops and gives the work to a person
- 10output fields
- A structured result, not a paragraph you have to re-read
- ≤6steps per run
- Bounded work: at most 5 tool calls, enforced by the runtime
Read-only by design. This agent has no path to sending, spending, publishing or committing anything. Where that limit is the product, removing it would remove the reason to trust the output.
Overview
A commercial energy invoice carries a unit rate, a standing charge, capacity charges, levies and pass-through costs, and any of them can be wrong. An estimated read carried for eleven months. A contract rate that never replaced the out-of-contract one after renewal. A capacity charge for capacity the site has never drawn.
Nobody checks, because reading a bill against the contract takes an hour per site per month. This agent does that arithmetic. It reads the supply contract from your knowledge base and tests each line of the invoice against the terms that apply to it, reporting the contracted value, the invoiced value and the difference, with the clause behind each.
It flags the two things that cost most and are easiest to miss: consumption billed on estimates rather than actual reads, and a rate that changed at a date the contract does not support. It pays nothing, disputes nothing, and switches nothing — it produces the exception report a person acts on.
Benefits
Recovers money paid quietly
These errors persist for years because nobody re-reads the bill.
Minutes per site
Instead of the hour nobody has.
A dispute with a clause attached
Suppliers settle those quickly.
What it does
Rate against contract
Unit rates, standing charges and capacity tested against the terms that actually apply.
Catches carried estimates
Consumption billed on estimated reads month after month — the commonest and quietest overcharge.
Checks the date a rate changed
A rate that moved on a date the contract does not support.
Shows the arithmetic
Contracted value, invoiced value, difference. Nothing an approver has to recompute.
Compares across sites
A site paying a different rate than its identical neighbour is a finding.
Changes nothing
It reports. Disputes, payments and switching stay with a person.
What this changes
What this changes about your week
- It takes over
- Reading each energy invoice against the supply contract.
- Done today by
- Nobody, which is the point.
- How often
- Every site, every billing period.
- Typical manual effort
- An hour per site per month, which is why it does not happen.
Why Energy & Utilities in particular. An estimated read carried eleven months, or a rate that never changed at renewal, is small monthly and enormous annually.
Runs unattended
Started by you or by an event, and it finishes on its own. Nothing waits for someone to be at a desk.
The same standard every time
The two-hundredth item is held to the bar the first one was. Consistency is the part people cannot sustain.
It cannot act on its own
Utility Bill Auditor has no path to sending, spending or committing. That limit is why its output is safe to act on.
How it runs
This agent runs server-side through the PROMIVO runtime. Each run is logged step by step and every tool call is permission-checked before it executes.
- 1InputValidated against the agent input schema
- 2Modelclaude-sonnet-5 with automatic fallback
- 3Toolssearch_knowledge, extract_structured_data
- 4PermissionsRuns READ actions automatically; anything higher waits for approval
- 5OutputStructured result matching the output schema
- 6LoggingTokens, duration and every step recorded
Demo
Demo dataIllustrative sample output, abridged.
Input
{
"site": "Depot 2",
"lines": [],
"period": "August 2026",
"currency": "EUR",
"supplier": "Regional Power"
}Output
{
"escalate": true,
"disclaimer": "An exception report against the contract in your knowledge base. No dispute has been raised, no payment approved, and this is not tax or energy procurement advice.",
"exceptions": [
{
"line": "Day unit rate — 41,200 kWh",
"issue": "rate-mismatch",
"clause": "Schedule 1 — day rate fixed at 0.1420 for the full term.",
"difference": 1091.8,
"invoicedValue": "EUR 0.1685/kWh",
"sourceDocument": "Supply agreement 2025-2028 — schedule 1",
"contractedValue": "EUR 0.1420/kWh (fixed to 2028)"
}
],
"contractFound": true,
"totalDisputed": 1091.8,
"contractDocument": "Supply agreement 2025-2028 — schedule 1",
"escalationReason": "The out-of-contract rate appears to have been applied despite a fixed term, and four periods have been billed on estimates.",
"estimatedReadHistory": "Four consecutive periods billed on estimated reads. Last actual read: April 2026."
}Requirements
Integrations
No integrations required.
Before you start
- The invoices, as data or text
- A knowledge base holding your supply contracts
- Requires the Starter plan or higher
Use cases
Monthly bill run
Every site checked against its contract.
After a renewal
Confirm the new rate actually applied when it should have.
Portfolio review
Find the sites paying more than comparable ones.
Pricing
Starter
Billed monthly through your PROMIVO subscription. Cancel at any time.
Runs consume your plan allowance for agent executions and tokens. See plan limits
FAQ
Can it raise a dispute or switch supplier?
No. It produces the exception report with the clause and the number. Disputing, paying and switching commit your business and stay with a person.
What if the contract is not loaded?
It checks internal consistency and estimated reads only, and says the contract check was not performed. There is no standard tariff to assume.
Does it forecast costs?
No. It audits what you were billed against what was agreed. Forecasting depends on market prices it does not have.
Reviews
Reviews open once customers have run this agent.
Need this agent to work differently?
Tell us what to change and our team will scope a customised version for your business.
Customize this agent