🥬 Live on iMessage

Ask for a time.
Leave with it booked.

lettuce.rsvp is one contact in your Messages app for tables, haircuts, spa visits, repairs, tattoo sessions, and more. Say what you need, see real availability, and book.

Message the agent

No app, no account, no card. Businesses run it from the terminal or the dashboard.

7:41
lettuce.rsvp ✓
Apple Business Messages
How it works

One contact. Every reservation.

Restaurants, hairdressers, salons, spas, mechanics, tattoo shops, and any appointment-based business can share one direct booking path. Open it from a site, map pin, search result, or your saved contact.

01

Ask like a person

“Dinner for four Thursday” or “haircut Friday afternoon.” The agent pulls the service, party, day, and time out of plain language, then asks only for what is missing.

02

Get real options

It answers with businesses that can actually take the booking, with live times. No “request sent,” no waiting to hear back.

03

Tap a time

Pick the spot and the seating, give a name, confirm. You get a code in the thread — text it back to change or cancel.

04

Anywhere you already are

iMessage today, terminal today, and the same agent behind the web widget. One brain, one reservation ledger.

For people who live in a shell

Book dinner
without leaving $_

The same agent, the same ledger, zero dependencies. Arrow-key time picker, real availability, pretty output.

npx lettuce-rsvp
lettuce-rsvp — chat with the agent
lettuce-rsvp places — who's bookable
lettuce-rsvp open rosewater --party 4 --date thursday
lettuce-rsvp book rosewater --party 2 --time 7pm --name "Jordan Marsh"
lettuce-rsvp cancel ROSE-7H2QM
lettuce-rsvp login — link your Lettuce account
lettuce-rsvp — zsh — 96×30

    
At the table

Scan. Order.
Split it and go.

Every table gets a sticker pointing at lettuce.rsvp/t/<tag>/<table>. The first scan opens a shared tab; everyone else who scans joins it. Add what you want from your own phone — the bill splits by what each person ordered, or evenly, and everyone pays their own share.

One tab per table — not one cart per person
Split by item or evenly — remainders never go missing
Pay from your own phone — Apple Pay, Google Pay, card
No app, no login — the QR is the whole onboarding
QR code that opens the Rosewater, table 12 demo tab
Rosewater Table 12 · scan to open the tab
No scanner? Tap here →
Made for real places

From the dinner table to the barber chair.

Guests can find a real time, choose what they need, and book directly with the people doing the work. Restaurants, hairdressers, salons, spas, mechanics, tattoo studios, and more all get the same simple booking path.

People sharing a meal at a warm restaurant table
Book the table.Live availability for dinner, drinks, and the places people gather.
Hair stylist working with a client in a salon
Book the appointment.Haircuts, color, spa visits, repairs, tattoos, and everything in between.
For businesses

One tag. Every surface.

Restaurants, hairdressers, salons, spas, mechanics, tattoo shops, and other appointment businesses join with a short tag — @rosewater — that becomes their reservation identity everywhere.

You sign in with a Lettuce account, tell us who you are, and we verify the business before the agent starts answering as you.

ReservationsSeating a table, on every surfacefree
Table & QR orderingOff the food only — never tax or tips3%
PickupSame catalog, order ahead5%

Run availability, reservations, menus or service catalogs, orders, table QR codes, payouts, and exports in the Lettuce console. Toast and Square are optional connections, never required to operate. Money moves on your own Stripe account, and you keep the guest relationship and data.

See the tools

Sign in required — submit your business for review before it goes live.

agentsuggestions, booking, follow-up
availabilityhours, capacity, lead time
menusitems, photos, tax, fulfilment
table qrshared tab, split bill, per-guest pay
checkoutStripe Connect, Apple Pay, hosted page
imessagephoto cards + Apple Pay request
clinpx lettuce-rsvp
business consolecatalog, bookings, orders, QR codes, payouts
optional pos syncToast and Square connections
courierson-demand dispatch — next
FAQ

The short answers.

Is the demo above actually booking something?

Yes. The phone talks to the same /api/rsvp/agent endpoint the iMessage webhook uses. The restaurants are demo listings, but the hours, capacity and confirmation codes are real — text a code back to release the table.

Do I need to install anything to use iMessage?

No. Apple Business Messages is just Messages. You tap a business's Messages button and a normal thread opens — the agent is on the other side.

How does the agent know what's free?

Each business defines its hours, seating interval, seats per slot and lead time. Availability is computed against confirmed reservations, so a slot disappears the moment it fills.

What about my phone number?

Apple hands us an opaque ID, not your number. We hash it again before it's stored, so a thread can find its own reservations and nothing else.

Can I script it?

The CLI is a thin client over a public REST surface: /api/rsvp/businesses, /api/rsvp/availability, /api/rsvp/reserve, /api/rsvp/reservation, /api/rsvp/menu, /api/rsvp/table, /api/rsvp/order and /api/rsvp/agent. Add --json to any CLI command for raw output.

What does Lettuce actually charge?

Reservations and appointment bookings are free. Table and QR ordering is 3% of the food, and pickup is 5%. We never take a cut of tax or tips. Card processing is Stripe's usual rate and is shown separately in every quote.

Does Apple Pay work inside Messages?

Yes — Apple Messages for Business supports an Apple Pay request. Until a merchant has an Apple Pay merchant identifier (and for anyone not on Apple Pay), the same order opens on our hosted checkout page, which also offers Apple Pay, Google Pay and cards through Stripe.

How does splitting the bill work?

One tab per table, not one cart per person. Split by what each person ordered — shared plates and tax are apportioned proportionally — or evenly across any number of people. Remainder pennies are distributed so the shares always add back to the total, and each phone pays its own share.