
Overview
Store stock and website stock were two separate beliefs about the same shelf. Roughly one in eleven online orders got cancelled after the customer had already paid, because the last piece had walked out of a Dadar store an hour earlier. Store managers, meanwhile, saw the website as a competitor taking credit for their sales — which turned out to be the harder problem of the two.
The challenge
- 9% of online orders cancelled after payment because of stock mismatch.
- No pickup in store and no cross-store returns, so a customer was stuck with the channel they bought on.
- Every promotion had to be set up twice, once in POS and once online, and they drifted apart.
- Checkout fell over during the first festive weekend of every year.
How we approached it
One ledger, one truth
Every store, warehouse and online reservation writes to the same inventory ledger with soft holds. Overselling stopped being a process problem and became structurally impossible.
Give the store the credit
Orders route to the nearest location that has the stock and the capacity, and the fulfilling store gets the sale on its books. That single decision is why store staff started pushing the website instead of resenting it.
Checkout rebuilt for the worst day of the year
Payment and inventory calls made idempotent and queued, then load-tested at four times the previous festive peak — not at average traffic, which is where these tests usually cheat.
One promotions engine
Campaigns are defined once and behave the same at the counter and online, loyalty accrual included.
What we built
Technology stack
Frontend
- React
- TypeScript
- PWA storefront
Backend
- Node.js
- PostgreSQL
- Redis
- Event queue
Infrastructure
- AWS
- CDN
- Autoscaling
The results
online revenue in 12 months
post-payment cancellations
of orders fulfilled by stores
checkout outages at festive peak
"The technical part I expected. What I did not expect was the team telling us our incentive structure was the real blocker. They were right, and fixing that is what made the numbers move."



