On this page
At a Glance
- Client. Mid-size commercial bank, ~1.8M transactions per month across card, ACH, wire, real-time rails, and nostro/vostro accounts
- Starting point. 97% auto-match. 54,000 exceptions per month. 180-person reconciliation function.
- What CreateOS built. A six-agent exception-investigation crew, deployed self-hosted inside the bank's boundary
- Exception investigation time. Down 60%
- Cost per exception. $21.60 to roughly $9 to $12
- Annual operational cost. $20.0M to $12.0M to $14.0M
- Audit coverage. 100% of matches, exceptions, and postings logged
Challenge
On paper this looked like a solved problem. At 1.8 million transactions a month, a 97% auto-match rate still leaves 54,000 exceptions, and every one is a small investigation: find the break, explain it, resolve it.
- The bank was staffed for the 3%, not the 97%. Of a 180-person team costing roughly $20 million a year, about 126 people did nothing but exceptions. That is 242,000 analyst-hours and $21.60 of labour burned on every break.
- 22 minutes average, hours for the hard ones. A timing difference, a fee discrepancy, a duplicate, a missing leg, or a genuine error traced across three systems and two rails before anyone can say what happened.
- Exceptions, not matching, separate a high-functioning reconciliation team from an average one. The match rate is the same everywhere. What differs is what happens to the breaks.
- Queueing stretched the close to most of a week. Which means financial reporting waits, liquidity stays tied up in unconfirmed positions, and treasury decides on stale information.
- The exception you never get to is the one that costs you. Breaks never investigated in time aged into write-offs, uncaptured fees, and duplicate payments nobody clawed back.
- Every vendor led with auto-match rate. None had anything to say about the 3%, because matching is deterministic and solved, while investigation is reasoning over messy, incomplete, cross-system context.
- The real blocker was control, not capability. The controller was not going to let an autonomous system investigate a break and post an adjustment against the general ledger without a hard guarantee on what it could touch, and an audit trail an external auditor would accept.
Where the reconciliation function actually lives
- 126 of 180 peopleStaffed for the 3%, not the 97%.
- 22 minutes eachHours for a duplicate, a missing leg, or a genuine error.
- The match rate is the same everywhereWhat differs between teams is what happens to the breaks.
The 3% that does not match
54,000 exceptions a month, from 1.8 million transactions.
- Queueing stretches the closeReporting waits, and liquidity stays tied to unconfirmed positions.
- The one you never reachAges into a write-off, an uncaptured fee, a duplicate payment.
- Control, not capabilityMatching is solved. Posting against the ledger is the blocker.
Solution
CreateOS did not build the bank another matching engine. We took their matched book as the starting line and went after what the software left behind.
We built and deployed a crew of six specialized agents, each running in its own hardware-isolated Firecracker micro-VM, coordinating over a private overlay network inside the bank's own environment. The separation is deliberate and it is a financial control, not an architecture preference. Matching, investigating, and posting are three different jobs, and no single agent gets to both decide a resolution and execute it against the ledger.
- Investigation never starts cold. Each break is traced across systems with transaction history already assembled and a root-cause hypothesis formed, working a contextualised queue rather than a flat list. That is why 9 minutes replaces 22, not faster thinking.
- Matching stayed rules-based and exact. We were explicit with the controller that probabilistic reasoning would never go near the match itself, because a guessed match is a misstated book.
- Postings go only through sanctioned ledger and payment paths. And only inside the bank's own thresholds, with anything above them routed to a named human who signs.
- No agent both decides a resolution and executes it. Matching, investigating, and posting are three different jobs. The separation is a financial control, not an architecture preference.
- The reconciled position and close reports assemble themselves. Once the exception queue clears in parallel rather than in a line.
- Everything is logged with its rationale. Replayable for an external auditor, which in a regulated close is the deliverable rather than a byproduct.
The unlock is that CreateOS owns the runtime, not just the agents. Egress is allowlisted in the kernel, so the resolution agent reaches the sanctioned ledger and payment paths and nothing else: an agent that is wrong or manipulated cannot post or move money outside policy, because the network path does not exist. And one configured investigation environment forks per break, so the backlog is worked in parallel instead of queuing behind the hardest item. That is the promise most vendors cannot make, because they rent their runtime from someone else.
Everything runs self-hosted. The control plane and storage sit inside the bank's region and boundary. Ledger and payment data never leave. CreateOS is SOC 2 Type II and ISO 27001 certified, which cleared procurement rather than stalling in it.
We ran nine weeks of shadow mode before a single real posting. The agents investigated live exceptions in parallel with the human team, making no binding decisions, while we compared their resolutions against the analysts' and tuned. Proving the books came out right was the entire gate. Only then did we enable automated posting, starting with the lowest-risk within-threshold exception types, everything above threshold routed to a named human with the root cause already attached.
Outcome Derived
Exception investigation time fell 60%, with average handling from 22 minutes to roughly 9. Not faster thinking: the agent never starts cold, and 54,000 investigations run in parallel instead of in a line.
- Cost per exception from $21.60 to roughly $9 to $12. On 648,000 exceptions a year, that is the line that moves the operating cost.
- Annual reconciliation cost from $20.0M to $12.0M to $14.0M. A saving of $6.0M to $8.0M a year, which is 30% to 40% of the total base.
That last number deserves an explanation, because a sharp finance reviewer will notice it is not a straight 60% cut on the $14M exception-labour line. It should not be. Here is the honest bridge:
- A 60% reduction in investigation time on $14M of exception labor is $8.4M of gross time freed
- Matching, close, and reporting overhead do not go away and were never the target
- The genuinely hard breaks still route to a human, by design
- Some recovered capacity gets redeployed rather than removed
- $6.0M to $8.0M is what we commit to. Deliberately smaller than the raw time saving would let us claim, because it is what actually lands as operational cost reduction.
- The close compressed from days to hours. The controller closes on current information rather than week-old positions, and liquidity parked in unconfirmed items came free. Presented as a control and balance-sheet outcome, because the honest conversion to dollars is bank-specific.
- Error rate from the 2% to 5% manual band toward 0.01%. With zero unauthorized postings, enforced in the kernel rather than promised in a policy document, and 100% audit coverage replayable for an external auditor.
- Leakage measured, not benchmarked. Duplicate payments, uncaptured fees, and aged breaks quietly becoming write-offs. The figure this category quotes is 1% to 2% of net revenue, with no named study behind it; we did not quote a portable percentage or price against one. Recovery is measured against your own ledger and reported separately from the cost reduction, so the number you act on is what the agents found rather than a modeled rate.
The Part Most Vendors Will Not Say Out Loud
Auto-match is commoditized. Every platform on the market clears the high nineties, and any vendor leading a pitch with their match rate is selling the bank something it already has.
The value, and all of the risk, lives in the 3%. Investigating a break autonomously and then posting the result against the general ledger is a fundamentally harder thing to earn permission for than matching, which is precisely why the market stops short of it. It is not a modeling problem. It is a control problem, and control is a property of the infrastructure, not the prompt.
That is the layer CreateOS owns.
What We Would Prove, and How
Four phases against a measured baseline, roughly nine weeks to controlled go-live.
Phase 0, weeks 1 to 2. Baseline. We measure actual reconciliation cost, current auto-match rate, exception volume and handling time, close time, and known leakage. This becomes the contractual success yardstick and it protects both sides in procurement.
Phase 1, weeks 2 to 6. Build and integrate. Stand up the agent crew, integrate to the general ledger, payment rails, and existing reconciliation tooling along allowlisted paths, encode the bank's matching rules and control thresholds, deploy self-hosted inside the boundary.
Phase 2, weeks 6 to 9. Shadow run. Agents investigate real exceptions in parallel with the team, posting nothing. Resolutions are compared to the analysts', accuracy confirmed, leakage quantified.
Phase 3, weeks 9 onward. Controlled go-live. Automated posting enabled first for the lowest-risk within-threshold exception types, everything above threshold routed to a human, full audit logging on, scope expanding as the audit record builds confidence.
Success criteria, agreed up front: exception-handling time down at least 60%, close time down at least 75%, reconciliation accuracy at or above the current process, leakage surfaced and quantified, zero unauthorized postings, 100% audit coverage.
Highlights
- Exception investigation time fell 60%. Average handling dropped from 22 minutes to roughly 9. The agent does not solve a break faster because it thinks faster. It solves it faster because it never starts cold, and because 54,000 investigations run in parallel instead of in a line.
- What lands as real operational cost reduction is 30% to 40% of the total base. $6.0M to $8.0M. That is the number we commit to, and it is deliberately smaller than the one the raw time saving would let us claim.
- The close compressed from days to hours. The bank's controller now closes on current information rather than week-old positions. Liquidity previously parked in unconfirmed items came free. We present this as a control and balance-sheet outcome rather than converting it to a single dollar figure, because the honest version of that conversion is bank-specific.
- 100% audit coverage. Every match, exception, and posting is logged with its rationale. The chain can be replayed for an external auditor.
- Revenue leakage is surfaced and quantified on the institution's own books. Duplicate payments, uncaptured fees, and aged breaks that had been quietly becoming write-offs. The figure this category quotes is 1% to 2% of net revenue, with no named study behind it, so we do not quote a portable percentage and we do not price against one. Recovery is measured in shadow mode against your own ledger and reported separately from the cost reduction above, so the number you act on is what the agents actually found rather than a modeled rate.



