Home/ Case Studies/ Restaurant POS & Online Ordering
Restaurant · POS · Multi-Outlet

Restaurant POS & Online Ordering Platform — Cutting Aggregator Commissions for a 14-Outlet Chain

A 14-outlet QSR chain was leaking 25-28% of every order to aggregators. We built a complete POS + customer-app + kitchen-display platform that pulled orders back into their owned channel — and cut aggregator commissions by 38% in five months.

38%Aggregator Commissions Cut
14Outlets Live
28%Repeat-Order Rate
4.6 App Rating

Project at a glance

Industry
QSR · multi-outlet restaurant chain
Scope
POS terminal app, customer mobile app, kitchen display, admin web
Team size
7 engineers + 1 PM + 1 designer + 1 hardware-integration specialist
Timeline
4 months to v1 · 5 months to all 14 outlets live
Regions
Three Indian metros · architecture sized for 50 outlets
Status
Live · ITD on monthly retainer + new outlet on-boarding

The client & the problem

The chain had grown from one outlet to fourteen on the back of Swiggy and Zomato visibility. The economics had stopped working — at 25-28% commission their unit margin was thin, and aggregator-led customers churned to whichever brand had the bigger discount. They needed an owned ordering channel and a POS that did not feel like a downgrade from the legacy system.

  • Aggregator dependency: 85% of online orders came from Swiggy/Zomato; commissions ate the margin.
  • POS sprawl: Different outlets used different POS systems; reconciliation was a weekly nightmare.
  • No customer data: Aggregator orders were anonymous — no ability to re-target, re-engage, or win loyalty.
  • Kitchen chaos: Order tickets came on three different printers from three different aggregators; mis-prints were daily.
  • Pricing inconsistency: Menu prices and offers drifted between outlets and channels.

The solution

We delivered a four-product platform: customer ordering app, in-outlet POS terminal, kitchen-display system, and central admin. The hard part was hardware: receipt printers, KOT printers, payment terminals, weight scales — each with its own driver and quirks.

1. Customer ordering app (Flutter)

Outlet locator, menu browse with photos, customisations (size, add-ons, spice level), cart, dine-in / takeaway / delivery toggle, scheduled orders, UPI + cards + COD, order tracking, reorder, loyalty wallet, offer engine.

2. POS terminal (Flutter desktop / Android)

Cashier UI optimised for speed: large tappable buttons, item search, offer codes, bill split, tip handling, table management, customer lookup, KOT print, receipt print. Works offline — orders queue and sync when network returns.

3. Kitchen display system (web on tablet)

Live order queue, color-coded by elapsed time, station-routing (grill / fry / cold), bump-button per station, expediter view. Replaces paper KOTs entirely in three of the 14 outlets.

4. Admin web (React)

Master menu (one source of truth), per-outlet pricing override, offer engine with cohort targeting, sales reports per outlet/category/hour, inventory deduction, payouts, customer database, rider/runner management.

5. Backend (Node.js + Postgres)

TypeScript NestJS, Postgres for transactional data, Redis for live-order pub/sub to KDS terminals, Razorpay + Cashfree for payments, Twilio for SMS. Hosted on AWS Mumbai.

Tech stack & why

We picked the stack for fit, performance under realistic load, and operational simplicity. Here is the breakdown:

Flutter 3.x NestJS TypeScript PostgreSQL Redis Bull (queues) Razorpay Cashfree ESC/POS printer protocol Pine Labs API Twilio AWS EC2 + RDS GitHub Actions Sentry

Flutter for POS too: we ran Flutter on the cashier Android terminal (a rugged Sunmi V2s). One codebase from customer phone to cashier-counter terminal saved real money. Performance was native-class.

Postgres + Redis pub/sub for KDS: a new order writes to Postgres, publishes to a Redis channel; KDS tablets listen and update in 200ms. Simpler than running Kafka and good enough at 14-outlet scale (we'd revisit at 100 outlets).

ESC/POS protocol directly: we skipped vendor-specific SDKs and wrote ESC/POS bytes ourselves. This let us support any 80mm thermal printer the outlets already owned. New outlet setup time dropped from 2 days to 3 hours.

The hardest technical problem we solved

Offline-tolerant POS.

A POS that goes down when the internet does is a refund magnet. In Indian restaurant outlets, the network drops daily — sometimes for hours. We architected POS as a local-first app: every order is written to a local SQLite first, then synced to the cloud.

Sync conflicts are the hard part. If two terminals in one outlet take an order while offline, both think they have order #42. We resolve this with outlet-prefixed UUIDs at write time — no central counter, no conflict at sync.

Result: zero lost orders across 14 outlets in the first 60 days, including a region-wide ISP outage that took down all 14 outlets simultaneously for 90 minutes.

Go-to-market & ramp

We rolled out outlet-by-outlet, two outlets per week. Each outlet got two days of on-site training plus a hardware kit (printers, terminal, KDS tablet) we pre-configured. By outlet seven, the on-boarding was a documented playbook — outlets 8-14 went live in three weeks.

The customer app launched after the POS was stable in five outlets. We did not want app-side bugs amplified by POS-side bugs.

Results

38%Aggregator Commissions Cut
14Outlets Live (zero failed roll-outs)
28%Repeat-Order Rate (90-day)
4.6 ★App Rating · 1,800+ reviews
0Lost Orders in 60 Days
3 hrsNew Outlet Setup (from 2 days)
Rs 1.4 CrAnnual Commission Savings
22 secAvg Order Punch Time at Counter

“We don't fight aggregators any more — we use them as one channel among many. The POS is the bedrock; the customer app is the flywheel. Our owned-channel revenue is 41% of online and rising.”

Founder & CEO

QSR Chain · 14 outlets · India

What we would do differently

Hardware-test on the actual outlet printers, not on a clean test-bench printer. Two of the 14 outlets had non-standard 58mm printers we discovered on go-live morning; we rebuilt the layout in a 48-hour scramble. Pre-survey hardware in week one of every roll-out.

Building a POS or ownership-channel platform?

Aggregator commissions are the tax on not owning your customer. We've built POS + ordering platforms that pay back in months, not years. Get a costed roadmap from engineers who have shipped this before.

Get a Free Consultation

Get Digital Growth Tips in Your Inbox

Weekly insights on app development, web design, SEO, and marketing. No spam — just actionable advice.

Join 2,500+ business owners. Unsubscribe anytime.