Ledger and treasury for a mid-market lender
One ledger. Real-time exposure. Zero manual reconciliation.
- Client
- Meridian Capital
- Industry
- Fintech
- Year
- 2025
- Engagement
- 11-month engagement

- Legacy systems retired
- 8 → 1
- Reconciliation cycle
- 3d → mins
- Manual adjustments in 2025
- 0
The challenge
Meridian's book was spread across eight systems: a core banking platform for lending, a bolt-on treasury tool, a spreadsheet for FX exposure, and five downstream reports that never agreed with each other.
The risk desk was hand-reviewing four hundred exposures every week. Reconciliation took three days at month-end. The auditors were losing patience, and the underwriters were making pricing decisions on data that was already 24 hours old.
Meridian didn't need a new front-end. They needed a real operating spine, one that could handle capital movement at production quality without an army of analysts holding it together.
Our approach
We built an event-sourced ledger in Go with Kafka as the transport, Postgres as the read-side, and a compliance-grade audit log baked in from the first commit. Every entry is traceable, every rollback is safe, and every downstream report reads from the same numbers.
The treasury and risk workflows moved onto the same spine. Exposure now updates the instant a facility funds. FX positions revalue as the market ticks. The underwriters see the price of a new loan against the portfolio in real time.
We ran the new platform alongside the legacy stack for four months, reconciling every entry, before Meridian cut over. The switch happened on a Sunday. Monday morning, nobody noticed anything except the reports being early.
The outcome
Reconciliation runs unattended and closes before the analysts arrive. Risk exposure is visible in real time. The audit cycle went from six weeks to two, and passed with no adjustments.
Eight legacy systems retired. Two full-time reconciliation roles freed up for actual analysis. Underwriting can now price a loan against live portfolio numbers instead of yesterday's snapshot.
Meridian's regulator called it "the cleanest audit trail we've reviewed this year."
What people ask about this engagement.
01How do you replace a ledger without losing a single transaction?
You do not replace it in one move. The new ledger runs in parallel against live traffic, and every balance is reconciled against the incumbent daily until the two agree to the cent for an unbroken stretch. Only then does the old system stop being authoritative. The reconciliation harness is built before any migration code, because without it you are migrating on faith.
02How is this auditable for a regulator?
Every posting is immutable and carries the event that produced it, so any balance can be explained back to its source without reconstruction. Controls, access and retention were designed with the compliance team present rather than demonstrated to them afterwards. The evidence an auditor asks for is a query against the system, not a project.
03Why consolidate eight systems rather than integrate them?
Integration was the first option we costed, and for several of the eight it was the right answer. The ones we retired were retired because they held the same facts as another system and disagreed, which is a reconciliation problem no integration layer can fix. Where a system was the clear owner of its data, we left it alone and connected to it.
04What happened to the manual adjustments?
They went to zero, which is the number that mattered to the finance team. Manual adjustments were the symptom of systems that disagreed; once there was one authoritative ledger with a reconciliation that ran to completion, the corrections had nothing left to correct.
What we shipped it on.
- Go
- Kafka
- Postgres
- AWS
- Terraform
Bring us the hard part.
A short conversation is usually enough to know if we are the right team. If we are not, we will tell you.
