Everyday dining, rethoughtSingapore / October 2026

grub

A dining companion
that listens.

Your restaurant’s menu.
A conversation shaped around you.

SCAN. TALK. ORDER.

Built as Grub, at the Grab office.
An agentic dining companion
Everyday track
grubThe problem

Every restaurant. The same work again.

The menu knows
the food.
It doesn’t know you.

A QR code gives you a menu. You still have to:

01 Find dishes that fit your diet.

02 Check ingredients and allergies.

03 Remember what everyone liked.

Your preferences and past choices get left behind.

“Anything vegetarian?”
“Does this have peanuts?”
“What did we get last time?”
The problem: each menu starts from zero, even when you already know what you like.
02
grubThe solution / Meet Grub

A dining companion between you and the menu

Your menu.
Your preferences.
A conversation.

Ask what to eat. Get suggestions from real dishes and prices, shaped around your tastes.

Kopi & Satay House

Chicken Satay
(10 sticks)

$9.00
Category
Grill
Menu tag
Halal
May contain
Peanuts, soy
Description
Charcoal-grilled chicken with peanut sauce, cucumber and onion.
Menu extraction, conversational ordering and preference memory are now merged into main.
03
grubVoice experience / Scripted preview

Speak naturally

“Vegetarian
and chicken
options, please.”

Talk through the choices while the menu and basket stay in view.

Scripted preview · no microphone access

“Show me vegetarian and chicken options.”

Listening to the diner

Your words appear here so you can check what Grub heard.

Basket · 1 lime juice$2.50
Realtime voice is implemented. This is a scripted preview; physical-phone voice testing remains pending.
04
grubMobile experience / Design concept

A companion at the table

One screen.
The whole
conversation.

You can hear the answer, see the dishes and check your order together.

01Recommendations from this menu
02Voice controls with a text fallback
03A basket that stays within reach
Grub concept screen showing Gado Gado at $7.50, Chicken Satay at $9, voice controls and a $2.50 lime juice basket
Grub conversation concept. Food images are illustrative, not restaurant photography.
05
grubPreference memory / Implemented

Less explaining, every time

Your next meal
starts with
what you like.

Saved preferences follow the diner. The Memory tab also shows past orders.

Confirm allergies and dietary rules before saving them. Let diners see and delete what Grub remembers.

A diner profile connecting to three restaurant menusYour taste profileThis restaurantToday’s orderAnother menuSame preferencesBack againPast favouritesLikes spicyVegetarian choicesPast orders
  1. This restaurantSave the preferences you choose to share.
  2. Another menuThe same preferences help guide the conversation.
  3. Back againReview past orders in the Memory tab.
Memory is implemented. Phone linking is demo-only and unverified; confirm allergies with restaurant staff.
06
grubOrdering flow / Merged

An agent can help. You make the call.

A final tap
before the kitchen
sees it.

Read back the dishes, quantities and total. Show the summary. Save the order after confirmation.

01Prices come from the server’s menu

02Special requests travel with the order

03Payment stays at the counter

Your orderKopi & Satay House · Table 12
1 × Gado Gado$7.50
1 × Chicken Satay
(10 sticks)
$9.00
1 × Iced Lime Juice$2.50
Total$19.00
Confirm order

Pay at the counter

Illustrative order using exact seed-menu prices. No transaction occurs in this presentation.
07
grubKitchen dashboard / Merged

The other side of the table

The kitchen gets
a clear order.

Table number, dishes, quantities and notes.
The kitchen view polls for new orders every two seconds.

A confirmed order moves from a diner's phone to the order store and kitchenConfirmedOrder storeSupabaseRestaurant’s orders only
New orderIllustration

Table 12

1 × Gado Gado
1 × Chicken Satay
1 × Iced Lime Juice
Personal profiles stay out of this view.
Diner ordering and kitchen are integrated in main. Orders are saved after the diner confirms.
08
grubHow it fits together

Two ways to talk.
One set of order actions.

Text and voice share cart tools and preferences. Final phone voice testing remains.

Architecture: Claude or OpenAI text and OpenAI voice use shared cart actions, followed by diner confirmation and server-side Supabase storage TEXT · MERGEDClaude / OpenAI chatNext.js server / API key stays here VOICE · MERGEDOpenAI RealtimePhone / WebRTC / short-lived key SHARED ACTIONSAdd. Remove. Review.One live basket in the browserSame menu and table context Diner confirmsFinal review on screen Server validates prices and savesSupabase restaurants / orders / profiles
  1. Text or voiceClaude / OpenAI chat, or OpenAI Realtime with a short-lived key.
  2. Shared actionsAdd, remove and review dishes in one basket. Save confirmed preferences.
  3. You confirmCheck dishes, quantities, notes and total before placing the order.
  4. Server validates and savesMenu prices are checked, then the order is stored in Supabase.
Next.js + React + Tailwind frontend. Supabase access stays on the server. Production hosting: Vercel.
09
grubBuild snapshot

What’s built.
What comes next.

Main · 0f47da9
13 October 2026

CapabilityStatusWhat that means
Restaurant menu + QRDeployedPR #12 · Website or photos → saved menu → QR
Text ordering + basketMerged + tested*Claude support; live OpenAI chat and basket checks
Kitchen dashboardIntegratedConfirmed orders, live polling and mark served
Realtime voicePhone test pendingImplemented; live session credentials tested*
Diner memoryImplementedConfirmed preferences, order history and deletion
Grub brand + designApplied to appA1 bear, cream / orange / sage and shared tokens
*Tests reported in PR #13. PWA installability, live payment and external checkout automation remain roadmap.
10
grubBeyond the hackathon / Vision

The restaurant keeps its own flow

Your restaurant.
Your payment.
Grub alongside.

The future agent could build the order on the restaurant’s site, hand control back for payment, then resume.

Future payment handback from Grub to restaurant checkout and backgrubOrder assistantRestaurant checkoutYou approve paymentHand control to the dinerResume the conversation
  1. Grub helps build the orderA conversation around the restaurant’s menu.
  2. You approve paymentHand control back to the restaurant’s checkout.
  3. Resume with GrubThis payment handback remains a roadmap idea.
Today’s ordering scope ends with “pay at the counter”.
GrabPay handback and live-site automation remain roadmap ideas.
11
grubEveryday track

A little less scrolling.
A little more
“that sounds good.”

A dining companion that understands the menu
and helps you choose.

Open the live Grub app Scan this QR code to open github.com/tanveerriaz/sg-opus-dev-day Project source: github.com/tanveerriaz/sg-opus-dev-day12

The Grub story

Speaker notes