Start a Project

Case Study / Retail & Distribution

One inventory,
three warehouses,
zero spreadsheets.

A multi-location retailer in the USA was reconciling stock across warehouses by hand every night, and still overselling items that were "in stock" at the wrong location. EdgeWeb built a single, real-time inventory ledger every warehouse reads from and writes to — with a live demo of the transfer logic below.

The Problem & The Approach

The problem

Every warehouse tracked its own stock in its own spreadsheet, reconciled by hand at close each night. By the time counts were compared, a product already showing "in stock" online had sometimes sold out at the only warehouse that actually had it — and a customer's order couldn't be fulfilled.

The approach

Replace three spreadsheets with one live ledger. Every sale, receipt or transfer posts as an event the instant it happens, and every warehouse's on-hand count is a real-time projection of that event stream — not a batch import from the night before.

Core System Logic

Five pieces, one shared ledger.

Real-Time Stock Ledger

Every sale, receipt and transfer posts an event to a central ledger. Each warehouse's on-hand count is a live projection of that stream, recalculated the instant an event lands — never a nightly import.

Network-Wide Availability

Online and in-store checkouts check stock against the combined network total by default, not one warehouse's count, so a sale in one location can't oversell stock that only physically exists in another.

Automatic Transfer Suggestions

When one location drops below its reorder threshold while another holds meaningful surplus of the same SKU, the system suggests an inter-warehouse transfer instead of a new purchase order. The live demo below runs this exact logic.

Low-Stock & Anomaly Alerts

Per-SKU, per-location thresholds trigger alerts before a shelf actually empties. A sudden, unusually large stock delta — a miscount, or worse — gets flagged for review instead of silently updating the ledger.

Reconciliation Audit Trail

Every manual adjustment is logged with a reason code, replacing "nobody knows why the count changed" with a queryable history any location manager can search.

Try It

See the live inventory ledger.

Click "Sell 1" under any warehouse to simulate a sale. Watch the network total update instantly, and a transfer suggestion appear the moment a location drops below its reorder threshold.

Live inventory ledger

SKUWarehouse AWarehouse BWarehouse CNetwork Total
Running Shoe — Size 9
14
3
9
26
Wireless Earbuds
2
11
4
17
Insulated Water Bottle
18
6
2
26

Suggested transfers

Move 3 units of Running Shoe — Size 9: Warehouse AWarehouse B
Move 2 units of Wireless Earbuds: Warehouse BWarehouse A
Move 2 units of Wireless Earbuds: Warehouse BWarehouse C
Move 4 units of Insulated Water Bottle: Warehouse AWarehouse B
Move 4 units of Insulated Water Bottle: Warehouse AWarehouse C

Architecture

Built to stay correct under concurrent writes.

Node.js (event-driven)PostgreSQLRedis (write locks)Kafka (event stream)React admin dashboardREST + webhook integrationsBarcode / POS integrationAWS

Outcomes

6 hrs
Daily manual reconciliation removed
3
Warehouses unified on one ledger
0
Overselling incidents since launch

FAQ

Does this replace our existing POS system?

Not usually — the ledger typically integrates with the POS and e-commerce platform you already run, rather than replacing either.

How does it handle a miscount or theft?

A stock delta well outside the expected range for that SKU and location gets flagged for review instead of silently updating the ledger, so a shrinkage pattern shows up quickly rather than getting buried in noise.

Can this scale beyond three warehouses?

Yes — the ledger and transfer-suggestion logic aren't specific to a fixed number of locations; more warehouses just means more nodes reading from and writing to the same event stream.

How long did a project like this take?

A first working version across all locations typically takes 8–12 weeks, with POS/e-commerce integrations usually the long pole rather than the ledger itself.

Have a project in mind?Start a Conversation →