UBL Recon — reconciliation for a national bank
Context
Reconciliation is the process of proving that two or more records of the same financial activity agree — and finding out precisely where they don't. At a bank of UBL's size, that means matching very large volumes of transactions across systems that were never designed to produce identical records.
Why it's harder than matching keys
If both systems recorded every transaction identically, reconciliation would be a join. Real breaks are messier: timing differences across cut-offs, one-to-many settlements, fee and rounding variances, and transactions present in one system and genuinely absent in the other. The software's job is to resolve everything resolvable automatically and present the rest — the true exceptions — to humans in a form they can act on.
The design consequence: the value is not in the match rate alone. It's in how clearly the unmatched remainder is explained. An engine that matches 98% and dumps an inscrutable 2% has moved the work rather than reduced it.
Live progress with SignalR
Reconciliation runs are long. Without feedback, operators cannot distinguish a run in progress from a hung process, and the usual response is to start it again — which is the worst possible action. SignalR pushes run progress and results to the browser in real time, which is as much an operational safeguard as a UX feature.
Built on .NET MVC with C# over Oracle, with Web APIs exposing reconciliation operations to the wider platform.
Stack
.NET MVC · C# · Oracle DB · SignalR · Web APIs