Problem
A regional retailer had three live sales surfaces and a finance team spending a full day a week reconciling them by hand. The systems all disagreed on what counted as a “shipped order,” what counted as a refund, and when the cash actually moved.
Approach
A small reconciliation service that pulls from all three APIs on a schedule, normalizes events into a single ledger, and surfaces disagreements as actionable tickets. The ledger is the source of truth; the upstream systems are inputs. No big-bang migration — the system runs alongside their existing workflow and slowly absorbs the load.
Stack
Python + FastAPI for the worker, Postgres for the ledger, plus the three vendor SDKs. Deployed on a single small VPS with daily backups.
What shipped
In production since late 2024. The weekly reconciliation ritual went from a day to about forty minutes of review. The finance team is doing analysis instead of bookkeeping.
What’s next
A small reporting layer for the operator. Right now the ledger is the report; a few preset views would let them stop exporting CSVs.