DineOS
Restaurant operations platform used daily across 3 restaurants.
The problem
Three restaurants were running orders across separate Uber Eats, DoorDash and pickup tablets, tracking inventory in spreadsheets and typing supplier invoices in by hand. Orders got missed, stock ran out without warning, and nobody had one view of the business.
Constraints
- One engineer building and maintaining everything.
- Staff are not technical, so the app has to be obvious on a cheap Android tablet.
- Money is involved: an order must never be counted twice.
How it works
Delivery + pickup orders: Uber Eats and DoorDash webhooks plus in-store pickup orders.
Key decisions
Idempotency keys on every write
Delivery platforms retry webhooks. Keying each order on its source ID made retries harmless, which is how 10k+ orders went through with zero duplicates.
Queue instead of inline processing
Redis and Celery keep the webhook endpoint fast and let a slow downstream step retry without losing the order.
Humans review the uncertain reads
Rather than trusting every OCR result, low-confidence fields are routed to a person. Accuracy matters more than full automation when stock counts drive purchasing.
Results
- $134K+ in transactions tracked
- 10k+ orders with zero duplicates
- 97% field accuracy on 400+ receipts
- Used daily across 3 restaurants
What I'd do next
Forecast-based reordering from sales history, so low-stock alerts become suggested purchase orders.