Ledgerly — payments back office

Role
Tech lead · team of 5
Stack
Go · PostgreSQL · React · Kafka
Outcome
Payouts from 40 minutes to 90 seconds; manual reconciliation down 70%.
Settlement ran as one synchronous job. A single slow bank response blocked every payout in the batch, and the finance team reconciled the difference by hand every morning. We split settlement into events, gave each payout its own state machine, and made retries idempotent. The finance team now sees a live ledger instead of a nightly report.