Fund operations is unglamorous, unforgiving work. A wrong number is not an inconvenience; it is a problem with regulatory weight behind it.
FinSight hired us to take that work off spreadsheets and onto a single reconciled system. What we set out to build was one source of truth for the back office, where every figure agrees and every figure can be defended.
About the Client
- Client
- Institutional Fund Manager
- Industry
- Fund operations
- Stage
- Internal stage · Institutional finance
- Service
- AI Development
FinSight is an institutional fund and portfolio operations platform. The job is exacting: pull statements and brokerage data from every custodian, reconcile them, surface the portfolio in dashboards, and keep a compliance and audit trail running through all of it. It is part of our work moving deeper into regulated financial operations, where the bar is less about novelty and more about being right every time and being able to prove it.
The old model
Follow one number through a month-end close. It starts in a custodian's statement, in that custodian's format, arriving on that custodian's schedule. Somebody re-keys it into a spreadsheet. It is matched against a brokerage feed that says something slightly different. The gap gets investigated, resolved and noted somewhere — an email, usually. The portfolio view is rebuilt from the result. And weeks later, when a manager or an auditor asks where the number came from, someone reconstructs that entire path from memory and inbox archaeology.
Every step there is a place a mistake can enter, and the mistakes hide in a specific spot: the gap between two figures that should match and do not. A break that is caught the day it appears is a five-minute question. The same break found at quarter-end is a forensic exercise, because by then it has propagated into three reports and nobody remembers what changed.
The re-keying is the visible cost and the smaller one. The real cost is that the evidence trail is produced separately from the work — assembled after the fact, by hand, under audit pressure, from sources that were never designed to be evidence.
-
Ingest from every custodian and normalise into one structure, rather than re-keying each cycle
-
Reconcile automatically, surfacing breaks while they are still small and explainable
-
Present one operational view, not a patchwork of files that disagree
-
Keep lineage by default, so every figure is traceable without anyone assembling a report
What changed
We designed one operating path that runs ingestion, normalisation, reconciliation, exception handling, portfolio reporting and source lineage as a single sequence rather than as separate activities joined by spreadsheets.
The design priority was traceability, and it drove a specific structural decision: the audit trail is a property of the data, not a report someone assembles later. Each final figure carries its source and its transformation path. Nobody produces the evidence, because the evidence was never separate from the work.
The second decision matters as much and is easier to get wrong. An unresolved break stays visible. The system does not net it away inside an aggregate to make a dashboard look clean. That is a deliberate refusal — a reconciliation system that hides its own exceptions is worse than a spreadsheet, because it looks authoritative while doing so.
Together those two turn the month-end question from "can we finish the close" into "is there anything outstanding," which is a question the team can answer on any day of the month rather than only at the end of one.
How the ingestion, reconciliation and lineage layers are builtDesign decision: breaks surface as they appear rather than at cycle end. A discrepancy found on the day it arises is a question; the same discrepancy found six weeks later is an investigation.
The new workflow
Feeds arrive and normalise themselves
Statements and brokerage data from every custodian, pulled in and mapped into one structure — so the work starts with data already in shape rather than with data entry.
Reconciliation runs continuously
Feeds are matched against each other as they land, not in a batch at month-end. Discrepancies surface while they are still small enough to explain.
Breaks stay visible until resolved
An unmatched item is an open exception with its own state, not a rounding difference absorbed into a total.
One view, on any day
The portfolio is a single operational picture the team manages from, rather than a monthly rebuild of a spreadsheet.
The trail is already there
Every figure carries its source and transformation path, so a review reads the same record the team works from.
Control and evidence
What can change a number
Nothing untracked. Each figure keeps its lineage from custodian statement through normalisation and reconciliation to final presentation, so "where did this come from" is a query rather than an investigation. An unresolved break cannot be silently absorbed — it holds its own state until someone resolves it explicitly.
What runs, in what order
Ingest, normalise, reconcile, raise exceptions, report the portfolio, retain lineage. Running these as one path rather than as separate stages joined by files is what keeps the audit trail continuous — the trail breaks wherever the process passes through something that isn't the system.
What you can see afterwards
The team, a manager and an auditor all read the same record: the source statement, what was extracted, how it was normalised, what it was matched against, which breaks were raised, how each was resolved, and how it reached the final figure. There is no separate audit view, because a separate audit view is a second version of the truth.
Impact
Month-end changed from a manual reconciliation under time pressure into an operational view the team can trust on any day of the month. Custodian feeds that used to be stitched together by hand agree automatically, and the compliance trail regulated fund work depends on is built into the system rather than reconstructed afterwards.
This project did not reach deployment. It concluded at internal stage, so the statements below describe how the system we built works — not a close time a fund operations team realised in production.
-
Month-end reconciliation in hours rather than days, with custodian feeds ingested and reconciled automatically
-
One reconciled view across every custodian, replacing the monthly spreadsheet rebuild
-
Lineage on every figure by default, with unresolved breaks staying visible rather than netting away
Reading the numbers
The qualifier belongs at the top: this was a real client project at internal stage and was not deployed. The days-to-hours statement describes the built system's working behaviour. It is not a production result and not a saving a fund booked.
What is directly demonstrable: multi-custodian ingestion and normalisation, automated reconciliation with exception state, the single portfolio view, and per-figure source lineage.
For your own estimate: records per close × processing time × closes per year × loaded operator cost, plus break-investigation time, plus what audit reconstruction actually costs you. That last term is the one worth measuring properly — most teams carry it as unbudgeted time from senior people, so it never appears in the business case despite being the thing the system removes most completely.