Skip to main content
Back to all work
AndroidFood & Beverage / SMB2024Concept phase

Table Tap

Speculative QR-code table ordering for sit-down restaurants — customer scans the QR on the table, browses the menu, orders directly to the kitchen. Complementary to a traditional POS, not a replacement.

Visit live siteConcept · opens in a new tab
Table Tap — android case study cover
Table Tap — secondary surface
Table Tap — core mechanism

Overview

Table Tap is a speculative concept for QR-based customer self-ordering in sit-down restaurants. Unlike Perfect Plate (our real kitchen POS where waiters enter orders), this design puts the menu in the customer's pocket and pipes orders directly to the kitchen. It's a different product entirely — and the case study below is how we'd approach it if a restaurant partner came to us. Not shipped.

The problem

At a busy sit-down restaurant, order-taking is the single biggest bottleneck during the dinner rush. A waiter takes 4-6 minutes per table to walk over, wait for the group to decide, write it down, and carry it to the kitchen. Multiply by 20 tables and that's 80-120 minutes of waiter time consumed by order entry alone — time not spent on service, bill-splitting, or upselling. Existing QR-order apps (Dineout, Petpooja customer) are either tied to a larger ecosystem the restaurant doesn't want to join or assume a data model (franchised chains, centralised menus) that doesn't fit an independent family restaurant.

What we built

  • Menu lives at a restaurant-scoped URL (e.g. perfectplate.in/t/T4) that opens instantly in a mobile browser — no app install, no account creation. Customer scans, sees the menu, starts building an order in 5 seconds.
  • Built as a PWA so return customers get a home-screen icon, offline-cached menu, and push notifications when the food is ready — without ever going to an app store.
  • Order submits via Firebase Function to a Firestore collection, which a Kotlin-based kitchen display tablet subscribes to in realtime. New orders ping the kitchen in under 1 second — faster than a waiter could walk the docket.
  • Waiter still owns service: when the customer submits, the waiter's app on a separate device sees the order too, carries drinks, checks spice level in person, closes the bill. Removes order-entry friction without removing the humans.
  • Multilingual menu (English / Hindi / Telugu / Tamil) auto-switches based on the phone's system locale. Item names stay in the original script, descriptions translate. Reflects how we actually talk about food — you don't translate 'dosa', you translate 'served with sambar and coconut chutney'.

Key features

  • QR-to-menu in 1 scan — no app install, no account, instant load
  • PWA: returning customers get a home-screen icon + offline menu cache
  • Orders land in the kitchen in <1 second via Firestore realtime listeners
  • Multilingual menu (English / Hindi / Telugu / Tamil) auto from phone locale
  • Waiter dashboard sees every order — service stays human, entry gets automated
  • Custom request field per item ('less spice', 'no onions') that speaks to the kitchen, not an algorithm
  • No payment integration by design — waiter still closes the bill, upsell moment preserved
  • Restaurant-scoped URL → different restaurants just subdomain, no multi-tenant auth complexity

Results

Concept, not shipped. What exists: a Figma design file with the customer menu and kitchen display, a prototype of the customer flow wired to a mock Firestore, an architecture document, and this case study. If you run a sit-down restaurant (especially one that already has a POS like Perfect Plate's) and order-entry during rush is your real bottleneck, talk to us.

A concept design for a cloud-menu that lives at a restaurant-scoped URL (e.g. perfectplate.in/t/table-4), opens instantly in the browser with no install, lets the customer build an order, sends it straight to the kitchen display. Waiter still handles service, payments, and upsells — but reclaims the 10 minutes of order-taking at a peak rush.

During dinner rush my waiters are running. Half their time is writing down orders. If the customer writes it themselves the waiter can actually serve.
Restaurant owner, Hyderabad (field research conversation)

What we learned

  • QR ordering is often framed as waiter-replacement. The better framing is order-entry replacement — let the waiter do service (the human part), let the customer do data entry (the rote part).
  • PWA beats native app for this. An 'install our app to see the menu' dialog kills conversion harder than any menu layout problem.
  • Payment integration was the fork in the road where this could have become a Big Product. Keeping it out (waiter still closes the bill) kept the scope honest and kept the upsell moment human.

Stack

React 19TypeScriptViteFirebase (Firestore + Functions)Kotlin (kitchen display)PWA

Have a similar project?

Tell us what you're building and the deadline. We'll reply in 24 hours — with either a scoped proposal or an honest "not our fit".