HOSPITALITY · 2022-2025
Restaurant ERP | Case Study
POS, inventory, recipe costing, procurement and multi-branch accounting for restaurant groups.

00 · CONTEXT
An end-to-end system for multi-branch restaurant groups: POS on the floor, inventory and recipe costing in the back, procurement and consolidated accounting at head office, across 70+ branches and 45K orders a day.
01 · PROBLEM
Multi-branch groups couldn't tell which outlet was profitable, inventory, sales and purchasing lived in different systems.
02 · STRATEGY
Anchor everything to the recipe. Once every dish has a costed bill of materials, sales instantly become margin data.
03 · DESIGN
A touch-first POS for the floor and a dense analytics console for head office, built from one component library.
04 · ENGINEERING
Offline-first POS with conflict-free sync, event-sourced inventory movements, and nightly consolidation jobs.
05 · CHALLENGES
No branch-level truth
Sales, inventory and purchasing lived in different systems, so nobody could say which outlet actually made money.
The network drops mid-service
A POS that stops when the internet does is not a POS.
Inventory drift
Stock counts diverged from reality within days, making food-cost numbers unusable.
06 · PROCESS
Every dish got a costed bill of materials. Once that existed, each sale automatically became margin data and each order became a stock movement.
Orders are written locally and synced with conflict-free merge rules, so service continues through outages and reconciles afterwards.
Stock is a ledger of movements, not a mutable number, making variance traceable to the shift that caused it.
Per-branch books roll up into group-level P&L overnight, with exceptions surfaced to head office in the morning.
07 · THE SOLUTION
- Touch POS with offline mode and shift management
- Recipe and bill-of-materials costing
- Purchase orders, supplier price tracking and GRN
- Event-sourced stock movements with variance reports
- Real-time per-branch P&L
- Central menu and price management across branches
08 · ARCHITECTURE
- React web console + Electron POS client
- Node.js services on PostgreSQL with event-sourced inventory
- Conflict-free sync layer for offline order capture
- Nightly consolidation and reporting jobs
09 · RESULTS
- 11% reduction in food cost within two quarters
- Real-time per-branch P&L
- Zero downtime service during network outages
10 · WHAT IT TAUGHT US
Costing the recipe was the unlock. Every report the group asked for later turned out to be a query on top of that one model.
11 · STACK
RELATED CASE STUDIES
RELATED READING
The interface is the product
Users never see your architecture. They see the two seconds between intent and result, and they judge the entire company on it.
Designing for the empty state
Every product is at its worst the first time someone opens it. Most teams design that screen last.
The anatomy of a homepage that converts
Section order, proof placement and the single decision each block of a page should help a visitor make.