Amol Sood

Senior Software Engineer

CV ↗
How deep do you want to go?
03

bank-events: Near-Real-Time, Self-Healing Webhook System

Card swipes, approvals and settlements arrive whenever they like. Someone’s balance can’t be “eventually correct”.

A lot of banking activity doesn’t happen inside our own system first. It happens somewhere else, and we get told about it after the fact. Account creation, a completed transfer, a card purchase at a store: all of these show up as webhooks, and they can genuinely race each other. A card swipe hitting a balance at the exact moment a user is moving money in the app isn’t a hypothetical, it’s Tuesday. Get the sequence wrong and someone’s balance is briefly, visibly wrong.

So I built a dedicated system whose only job is catching these events fast, safely, and correctly, then handing each one to whichever part of the system actually cares about it. An account event goes to the account logic. A transfer event goes to the transfer system (including triggering the next hop in a multi-step transfer, tying directly back into the transfer work). A card event goes to the card logic. Nobody has to poll for anything; everyone gets told the moment it matters to them.

If a downstream service fails to process an event, it isn’t silently dropped. It retries automatically, and if it still can’t be processed, it’s marked and surfaces on an hourly check so a human looks at it within the hour, not whenever someone happens to notice something’s off.