All case studies

Case study · Energy & utilities · Finance operations

A regional utility provider

Reconciliation the finance team used to run by hand, now run by agents.

Every cycle, the utility's finance team reconciled billing, metering, payment, and bank records line by line, then chased down whatever didn't tie out. We built a set of AI agents that pull the source records together, match what lines up, and route only the real exceptions to a person, with the evidence attached.

Industry

Energy & utilities

Function

Finance operations

Workflow

Account reconciliation

Engagement

Custom agent build

The problem

Every billing cycle, records for the same transactions live in different systems: the billing platform, the meter data, the payment processor, and the bank. Someone in finance had to open each one and match them by hand, line by line, before the books could close.

Most lines matched cleanly. The work was in the ones that didn't: a payment posted a day late, a partial amount, a fee the bank took out, a meter adjustment that never made it to billing. Each break had to be found, explained, and resolved by a person reading across screens.

The matches were mechanical. The exceptions were where the real work, and the real risk, lived.

Reconciliation is a high volume, error sensitive queue that sits directly in the path of the close. Exactly the kind of workflow custom AI should own end to end.

What we shipped

A set of reconciliation agents built around the utility's own systems and the rules its finance team already used.

Sources · this cycle

Billing platform

Meter data

Payments

Bank statement

Source ingestion

Pulls the records for each cycle out of billing, metering, payments, and the bank into one place the agents can work over.

Matched across systems

Billing=Bank
Billing=Bank
Billing=Bank

Matching agents

Ties transactions together across systems, tolerant of the timing gaps and partial amounts that break naive matching.

Exceptions · to review

Payment posted late

Partial amount received

Bank fee not in billing

Exception routing

Surfaces only the items that don't reconcile, each with the candidate matches and the source records attached, for a person to decide.

How we built it

We started from how the team already reconciled, not from a generic template, so the agents matched the way finance actually thinks about these accounts.

Phase 01

Map the reconciliations

Cataloged which accounts get reconciled, against which sources, and what "matched" means for each one.

Phase 02

Build the matching agents

Wired the agents into each system and tuned matching to the real tolerances, timing gaps, and fees the team handled manually.

Phase 03

Route the exceptions

Stood up the exception queue with evidence attached, and folded each human decision back in so the agents keep improving.

Outcomes

What changed after the rollout.

Where the time goes

Matching line by line

Exceptions & judgment calls

Finance team refocused

Nobody matches line by line anymore. The agents clear what ties out, and the team spends its time on the exceptions and judgment calls that actually need a person.

Every line

linked

Source records

Match reasoning

A clean audit trail

Every match and every exception carries its source records and the reasoning behind it, so the close and the audit start from evidence instead of a spreadsheet someone has to reconstruct.

Your workflow could be next.

Thirty minutes. A straight conversation about your systems and where custom AI would pay back first.