Discovery turned up something the brief had not mentioned: the marketplace
payout was already net of fees, while the card processor reported gross with a
separate fee line. The spreadsheet had been silently absorbing that difference
for over a year, which meant the historical figures everyone trusted were
slightly wrong in a consistent direction.
That changed the job. Before building anything we agreed a position on
historical data: the backfill would restate it rather than preserve the
existing numbers, and the difference would be reported rather than quietly
corrected.
A ledger service with one adapter per payment source, a matching engine that
runs in passes, and an exceptions queue with enough context attached that a
non-technical user can resolve an item without opening another system.
The backfill was written to be resumable from the start, which proved
necessary — the first run was interrupted twice.