Work · a European wealth-management platform
Reconciliation that reports breaks the day they happen
The problem
Reconciliation ran monthly and compared totals. A break that started on the third of the month surfaced on the first of the next one, by which point the cause was buried under four weeks of writes.
The approach
We moved reconciliation to a daily job comparing at the transaction level rather than the total, and made every write path idempotent so a retry could not itself create a break. The daily report names the first divergent transaction rather than a delta.
What was technically hard
Going from totals to transactions multiplies the comparison by every row, and the first honest run surfaces every small historical difference at once. The daily job had to separate a break that started today from one that has been sitting there for months — otherwise the first report is unreadable and every report after it gets ignored. Idempotency was the other half of the same problem: a retry that re-books a movement creates exactly the kind of discrepancy the job exists to catch, so the ingestion had to be safe to repeat before the comparison could be trusted at all.
One decision we made, and why
The report names the first divergent transaction instead of the size of the gap. A delta tells an operations team that something is wrong and leaves them to find it; an identifier tells them where to look. It costs more to compute, because the job has to hold an ordered comparison rather than two sums — and it is the only version anyone actually opened twice.
More work
- Machine data that arrives twice, late, or not at all →
Shift totals now reconcile to the plant's own counts.
- Population statistics for any polygon a user can draw →
- A training record registry auditors can trust →
$ tell us what you're building and where it's stuck
Book a 30-min discovery call
We reply within one business day.