≈ the owner's estimate from his own experience
Before
At first stock lived only in the accounting system and was carried onto the website by hand. Then the website got a sync — and that is where it stopped: when Rozetka and Prom, the two big Ukrainian marketplaces, were added, listings, prices and quantities were uploaded there as a file. The file was prepared once a day, at best.
The consequence is simple and expensive. An item is sold from the warehouse, but on the marketplace it stays in stock for another hour or two — and an order arrives for something that is no longer there. What follows is either a call saying "sorry, we have run out" or a cancellation, and a cancellation on a marketplace damages the seller's rating. To avoid that, stock was held back by hand — and then what was actually there did not get sold.
Prices lived their own separate life: one figure in the price list, another on the website, a third on the marketplace, because the files were uploaded on different days.
What I built
- One source of truth — the accounting system. Every other channel only reflects what is in it.
- A change in quantity or price propagates across the channels by itself, instead of a once-a-day file.
- A reservation for an order not yet issued is visible to every channel at once, so the same unit is never sold twice.
- If a channel did not answer or rejected the update, an alert arrives. Silence does not count as success.
- A new channel is connected the same way: its price and availability rules are described separately, and the source stays the same.
After
The quantity in the warehouse, on the website and on the marketplaces is the same. Files remain as a fallback rather than as daily work.
What it gave
Two opposite losses disappeared: selling what is not there, and holding stock back "just in case" so that it does not sell at all. Nobody prepares uploads by hand any more, and a discrepancy between channels became an event with an alert rather than a normal state noticed through a customer complaint.
For your company
The channels can be anything: your own website, Rozetka, Prom, OLX, a second shop, a partner's warehouse — all that matters is that they have an API. The rules are yours too: show the full stock in one place, only one warehouse's stock in another, keep a buffer for the shop floor somewhere else. In my company this grew out of wholesale and e-commerce, but for a chain of shops the logic is the same: one figure, and everyone looks at it.
Stack: Python, accounting system API, website and marketplace APIs, an update queue, failure alerts
Related service: Accounting ↔ website ↔ marketplaces ↔ CRM