SKIP TO CONTENT
AI Agents8 minAgents in Production / Ep. 1

How an AI Agent Cut Bank Reconciliation to 23 Minutes

Adam Boudjemaa
SHARE
Pixel-art illustration of a lamp-lit desk buried under stacks of mismatched ledgers, with a glowing thread pulling two matching documents together.

KEY TAKEAWAYS

  • A single production agent cut bank reconciliation from 8 hours to 23 minutes inside a real-estate private-equity fund with roughly $3B AUM.
  • The speed came from unifying about 2 TB and 1.4M files across 13 years and 13 sources into one queryable ground truth.
  • The part that made it safe was not the matching. It was the abstention: the agent escalates anything it cannot back with evidence instead of guessing.
  • In regulated finance the number that sells the agent is 23 minutes. The number that keeps it in production is zero confident wrong answers.
8h
BEFORE
by hand, per cycle
23 min
AFTER
mostly human review
11
AGENTS IN PRODUCTION
the fund's platform

The eight hours nobody wanted

Someone at the fund did bank reconciliation by hand, and it ate a full working day. Eight hours, once a cycle, of a smart person opening files and cross-checking numbers that a computer should have checked. Nobody wanted the job. It was the kind of task that quietly convinces good people to leave.

I was the forward-deployed AI engineer embedded in that fund, a US real-estate private-equity shop with roughly $3B in assets under management. I built the agent that took those eight hours down to twenty-three minutes. This is the whole thing, end to end, including the part most write-ups skip: what it refused to do.

HOW IT WENT
1

A full day, once a cycle

Someone at the fund reconciles by hand. Eight hours of opening files and cross-checking numbers a computer should have checked. Nobody wants the job.

2

I get embedded

Forward-deployed AI engineer inside the fund, a US real-estate private-equity shop with roughly $3B in assets under management.

3

Eight hours becomes twenty-three minutes

I build the agent that takes the day. What is left is mostly a person reviewing the lines the agent escalated instead of guessing.

4

The part most write-ups skip

What it refused to do. That is the real subject here, and the reason it stayed in production.

The arc of this piece. The numbers are the easy part. The refusals at the end are what the article is actually about.

What bank reconciliation actually is

Bank reconciliation is boring until it is wrong, and then it is a very bad day. You have what your records say happened, and you have what the bank statement says happened. Reconciliation is proving those two stories are the same, line by line, and explaining every place they differ.

For a fund, "explaining every difference" is not bureaucracy. It is how you catch a duplicated payment, a fee nobody approved, or a wire that went somewhere it should not have. The output is not a spreadsheet. It is the confidence that the money did what the books claim it did.

WHAT RECONCILIATION ACTUALLY IS
Flow diagram: 5 stepsFlow diagram: 5 steps. What your books say, then What the bank says. What the bank says, then Match, line by line. Match, line by line, then Explain every difference. Explain every difference, then Confidence, not a spreadsheet.1What your books sayThe ledger: every payment, fee andtransfer you believe happened.2What the bank saysThe statement: what actually clearedthe account.3Match, line by linePair each ledger line with thestatement line that proves it.4Explain every differenceA duplicated payment, a fee nobodyapproved, a wire that went somewhereit should not have.5Confidence, not a spreadsheetThe output is knowing the money didwhat the books claim it did.
Two independent stories about the same money, forced to agree. The valuable step is not the matching, it is being able to explain every line where they differ.

Why it took a whole day

The eight hours were not spent matching. They were spent searching. The evidence that explained any given line was scattered across sources that had accumulated over more than a decade, in formats that did not agree with each other, named by whoever happened to save the file.

When I mapped it, the scale was the story: roughly 2 TB and 1.4 million files across 13 years and 13 sources. A human reconciling a single odd line might open five systems to find the one PDF that explained it. The matching was minutes. The hunting was the day.

WHERE THE EIGHT HOURS WENT
Layered stack diagram: 5 layers, top to bottomLayered stack diagram: 5 layers, top to bottom. Layer 1, THE ASK: Explain one line that does not match. Layer 2, THE HUNT: Open five systems, Find the one PDF that explains it. Layer 3, THE PILE: ~2 TB, 1.4 million files. Layer 4, SPREAD OVER: 13 years, 13 separate sources. Layer 5, NAMED BY: Whoever happened to save the file.THE ASKExplain one line that does not matchTHE HUNTOpen five systemsFind the one PDF that explains itTHE PILE~2 TB1.4 million filesSPREAD OVER13 years13 separate sourcesNAMED BYWhoever happened to save the file
The matching was never the hard part. The evidence that explained one odd line was buried somewhere in a decade of files nobody had named consistently, so the day was spent hunting for it.
Where the 8 hours went
What it really was
Finding the source document for a line
A search problem across 13 systems
Reading it to confirm the amount
Manual evidence-checking
Chasing the few that would not tie out
The genuinely hard 10% that needed judgment
Re-doing it because a file moved
No single source of truth

The agent, end to end

So I did not build a "reconciliation AI." I built a retrieval-first agent whose real job is to find the evidence, propose the match, and be honest about what it could not prove. Here is the pipeline.

DATA FLOW
Flow diagram: 5 stepsFlow diagram: 5 steps. Unify the ground truth, then Retrieve the evidence. Retrieve the evidence, then Propose a match with citations. Propose a match with citations, then Check the numbers. Check the numbers, then Decide. Decide branches into 2: If the evidence holds and the numbers tie, then Book the cited match. If either is missing, then Abstain to a human.THE EVIDENCE HOLDSAND THE NUMBERS TIEEITHER IS MISSING1Unify the ground truthIngest the 2 TB and 1.4M files intoone store with vector search over thedocuments (Postgres with pgvector).Now "where is the invoice for thisline" is a query, not an archaeologydig.2Retrieve the evidenceFor each statement line, pull thecandidate source documents that couldexplain it. Nothing is proposedwithout a document behind it.3Propose a match with citationsThe agent pairs the line with itssupporting evidence and attaches thecitation. A reviewer can clickstraight to the source, not take themodel's word for it.4Check the numbersA proposed match has to actuallyreconcile. Numeric checks confirm theamounts tie out to the cent beforeanything is called a match.5DecideThe agent does not guess.Book the citedmatchWith the sourcedocumentattached, so areviewer canverify it in oneclick.Abstain to ahumanIt flags the linefor a person withwhat it found andwhy it stopped.
The pipeline: retrieve, cite, then a hard numeric gate. The final step forks into a cited match or an abstention a human reviews.

The part that mattered: what it refuses to match

Here is the counterintuitive part. The feature that made this agent safe to run near a fund's books is not the matching. It is the refusing.

An agent that matches everything is easy to build and impossible to trust. The moment it confidently books a wrong match, you have not saved eight hours, you have created a landmine in the audit trail that costs far more than a day to defuse. So the design goal was never "match more." It was "never be confidently wrong."

That means the agent is allowed to say "I do not know." When the evidence does not support a match, it abstains and escalates instead of inventing a plausible answer. The 23 minutes is mostly a person reviewing exactly those escalations, which are the cases that actually needed a human anyway.

THE RULE
Decide: What does the agent do with a proposed match?Decision tree: What does the agent do with a proposed match? If the evidence supports it and the numbers tie out, then Book the cited match. If the evidence is thin or missing, then Abstain, escalate to a human. If the numbers don't reconcile, then Block it.DECIDEWhat does the agent do with aproposed match?IF the evidence supports it and thenumbers tie outBook the cited matchThe line is reconciled with itssource document attached, so areviewer can verify it in oneclick.IF the evidence is thin or missingAbstain, escalate to a humanThe agent hands the line to aperson with what it found and whyit stopped, instead of guessing.IF the numbers don't reconcileBlock itA proposed match that does not tieout to the cent never lands in thebooks.
One rule, three exits. The agent only books what it can cite and reconcile. Everything else routes to a person or gets blocked.

This abstention rule gets its own deep dive in the piece on verified citations and abstention.

What made it trustworthy enough to keep

None of this is safe on vibes. The reconciliation agent lived inside an 11-agent platform that shared a serious guardrail layer, and those guardrails are the reason it was allowed near real money.

Retrieval meant every claim pointed at a real source document, not the model's memory. Numeric and consistency checks caught the cases where a match looked right in prose but did not add up. Evidence-based abstention turned uncertainty into an escalation. And before any of it went live, it was evaluated and red-teamed, because "it worked in the demo" is not a standard you can reconcile a fund on.

THE GUARDRAIL LAYER
Layered stack diagram: 4 layers, top to bottomLayered stack diagram: 4 layers, top to bottom. Layer 1, THE PLATFORM: 11-agent platform, One shared guardrail layer. Layer 2, THE GUARDRAILS: Retrieval, Numeric and consistency checks, Evidence-based abstention. Layer 3, THIS AGENT: Bank reconciliation. Layer 4, BEFORE GO-LIVE: Evaluated, Red-teamed.THE PLATFORM11-agent platformOne shared guardrail layerTHE GUARDRAILSRetrievalNumeric and consistency checksEvidence-based abstentionTHIS AGENTBank reconciliationBEFORE GO-LIVEEvaluatedRed-teamed
The reconciliation agent did not carry its own safety. It sat inside an 11-agent platform that shared a guardrail layer, and nothing went live until it had been evaluated and red-teamed.

The tempting version

A model that reads the statements and outputs matches. Fast, impressive in a demo, and quietly wrong in ways nobody catches until an auditor does.

The version you can keep

Retrieval so claims are grounded, numeric checks so matches actually tie out, and abstention so uncertainty escalates. Slower to build, and the only version allowed near the books.
Guardrail
What it catches
The failure it prevents
Retrieval and citations
A claim with no source document behind it
The agent answering from memory instead of evidence
Numeric and consistency checks
A match that reads right but doesn't tie out to the cent
A plausible but wrong booking
Evidence-based abstention
A low-confidence line dressed up as an answer
A confident wrong match landing in the audit trail

If you want the wider system this sat inside, I broke down the full 11-agent platform in its own piece.

The real lesson is not the 23 minutes

When I present this, people latch onto "8 hours to 23 minutes." Fair, it is a good number, and it is why the fund said yes. But it is the wrong lesson to take away.

The number that keeps an agent in production in regulated finance is not its speed. It is the count of times it was confidently wrong, and that count has to be zero. Speed gets you the pilot. Restraint gets you the renewal, because the merely fast agent gets switched off the first time it is wrong with confidence.

That is the real forward-deployed lesson. The hard engineering was not making the agent clever. It was making it honest.

If you have not read it, what a forward-deployed AI engineer actually does is the wider picture this reconciliation work fits into.

FAQ

Most of the 8 hours was not matching, it was hunting: opening 13 different sources spanning 13 years to find the document that explained a line. I unified about 2 TB and 1.4M files into one queryable store, so the agent retrieves the supporting evidence in seconds. It proposes matches with citations, and a human confirms the handful it was not sure about. The 23 minutes is mostly that human review.

No, and that is deliberate. The agent proposes matches and attaches the evidence for each one. Anything it cannot support with a citation, or where the numbers do not add up, it does not guess. It escalates to a person. In a regulated fund, an agent that confidently books a wrong match is far more expensive than one that asks.

Three things working together: retrieval so every claim points at a real source document, numeric checks so a proposed match has to actually reconcile to the cent, and evidence-based abstention so a low-confidence case becomes an escalation instead of a fabricated answer. It was also evaluated and red-teamed before it went live.

The reconciliation agent was one part of an 11-agent GenAI platform I delivered for a confidential US real-estate private-equity fund with roughly $3B AUM. The platform shared the retrieval layer, the evaluation harness, and the guardrails, which is why a single agent could be both fast and safe.

The pattern transfers if your bottleneck is the same: too many sources, too much history, and a review that is really a search problem. What does not transfer is skipping the guardrails. The retrieval, the numeric checks, and the abstention policy are the reason it is allowed near the books, not optional polish.

Agents in Production

Episode 1 · 10 published

PreviousNext
Adam Boudjemaa

Adam Boudjemaa

Former CTO of Integra. Named author (1 of 5) of ERC-3643, first author of ERC-6960, co-author of ERC-7410, and co-author of ERC-8203, which is still a draft. Building production AI and regulated Web3 systems.

Enjoyed this post?

Get more like it in your inbox every Tuesday.