UBL Recon: reconciliation for a national bank
Context
Reconciliation means checking that two or more records of the same financial activity match, and finding exactly where they don't. For a bank as big as UBL, this means matching a huge number of transactions across systems that were never built to produce the same records.
Why it's harder than matching IDs
If both systems recorded every transaction the same way, reconciliation would just be a join. In reality it is messier: timing differences around cut-off times, one payment settled in several parts, fees and rounding differences, and transactions that exist in one system but not in the other. The software should resolve everything it can automatically, and show the rest (the real exceptions) to people in a way they can act on.
This means the match rate alone is not what matters. What matters is how clearly the unmatched records are explained. A system that matches 98% and leaves a confusing 2% has just moved the work, not reduced it.
Live progress with SignalR
Reconciliation runs take a long time. Without feedback, users can't tell if a run is still working or stuck, and they usually start it again, which is the worst thing to do. SignalR sends progress and results to the browser in real time. This protects the system as much as it improves the UX.
Built with .NET MVC and C# on Oracle, with Web APIs that let the rest of the platform use the reconciliation features.
Stack
.NET MVC · C# · Oracle DB · SignalR · Web APIs