Restaurant Reservations Assistant
Build a reservation-and-hospitality assistant for a restaurant — a chatbot that answers menu, dietary, and house-policy questions, gathers a booking request across a natural multi-turn conversation, and hands a structured reservation request to the host stand to confirm.
The distinctive lesson in this guide is conversational statefulness: instead of dumping a form on the guest, the assistant asks one thing at a time, remembers what’s already been said, and only triggers Lead Capture once it has enough to be useful. This pattern is what separates a chatbot that feels like a host from a chatbot that feels like a contact form with extra steps.
What your agent will do. We’ll use Stovepipe & Co., a fictional Pacific Northwest gastropub in Portland, Oregon, as the worked example. By the end of this guide, the assistant should handle conversations like:
- “What’s the dress code?” — answered from the knowledge base, no booking flow triggered.
- “Can you do gluten-free?” — honest “yes with caveats” pulled from the dietary section.
- “I’d like to book a table.” — opens a multi-turn reservation flow: party size, then date and time, then seating preference, then dietary needs, then occasion, then name and phone — one question per turn, never a form-dump.
- “Table for 6 on Friday at 7:30, indoor, vegetarian option needed, it’s my partner’s birthday — name’s Anika, 503-555-0188.” — agent recognises the guest just gave the whole booking in one shot, and captures the lead without re-asking anything.
- “We’re 14, looking for a private space.” — agent recognises this is over the regular-reservation limit and routes to the events email.
Important framing. Stovepipe & Co.’s assistant captures a reservation request — not a confirmation. The host stand reviews each request and replies with a confirmation or a counter-offer. This is honest, matches how real small restaurants actually run their reservations book, and avoids the most common chatbot failure mode in this vertical: promising tables the restaurant can’t actually hold.
Prerequisites
- A Jhunkoo.ai account and an active subscription.
- The sample knowledge source, hosted as a public URL — attach one of these to the agent:
- Markdown (
.md) — stovepipe-and-co-menu-and-reservations.md · recommended for cleanest table preservation - Word document (
.docx) — stovepipe-and-co-menu-and-reservations.docx · the format most restaurant operators already maintain - PDF (
.pdf) — stovepipe-and-co-menu-and-reservations.pdf · for operators whose menu and policies are already a PDF
- Markdown (
This guide uses no built-in tools (no Show Map, no Google API) and no external APIs. The agent’s behaviour comes entirely from the knowledge base, Lead Capture, and the instructions.
Picking the format. The agent can read all three formats — pick whichever matches what you already keep your menu and policies in.
The menu sections (snacks, mains, sides, desserts) are dense pricing tables. Markdown and Word preserve them cleanly. PDF works for most content but can occasionally fragment dense tables. If your menu is already a designed PDF, it’s usually fine — test it and check that the agent quotes the right prices against the right dishes.
See the Knowledge tool doc for the deeper RAG explainer.
Pick a stronger model than the default
Most guides in this set work fine on the default model (GPT-5 Mini). This one benefits from a step up.
Restaurant reservations are a multi-turn conversation where the agent has to track what it already knows, what it still needs, what the guest preferred, and what the house rules are — across six or seven exchanges, sometimes more. Stronger models hold this state more reliably, follow the “ask one thing at a time” rule more consistently, and recover better when the guest says something unexpected (“actually, can we move it to 8?”).
Our recommendation for this guide:
- Claude Sonnet 4.6 — the warmest hospitality voice of the available models, and the most consistent at multi-turn information gathering. This is what we’d ship Stovepipe’s assistant on.
- GPT-5 — also excellent, especially if your guests are likely to type long compound requests (“table for 6, Friday, 7:30, vegetarian, birthday, Anika 503-555-0188”) and you want all of that parsed correctly in a single turn.
GPT-5 Mini (the default) will work, but you’ll see it asking for fields the guest already mentioned, or skipping the “ask one thing at a time” rhythm. Lighter models (Gemini Flash Lite, GPT-5 Nano) we don’t recommend here.
You can swap the model in the Model tab of the agent configuration page at any time — your knowledge base, tools, and instructions stay the same. Test the same conversation against two models and pick whichever feels closer to the voice of the room.
Build the agent
Create the agent
- Sign in and go to Agents.
- Click Create Agent.
- Enter a Name (e.g.
Stovepipe Reservations) and optional Description. - Click Create.
Pick the model
Open the Model tab and select Claude Sonnet 4.6 (or GPT-5 — see Pick a stronger model above).
Save.
Set basic instructions
Open the Persona tab and paste this into Instructions. We’ll refine it later — for now, plain English is enough.
You are the reservations host for Stovepipe & Co., a Pacific Northwest gastropub in the Central Eastside of Portland, Oregon. You answer guest questions about the menu, dietary accommodations, house policies, and location — and you help guests put together a reservation request that our host stand confirms.
Be warm, calm, and unhurried — the voice of a good host who has time for every guest. Never make a guest feel like they're filling out a form.Still on the Persona tab, scroll down to the advanced settings and make two changes:
- Chat history → set to Last 25 exchanges. The reservation flow is 6–7 turns minimum. At the default of Last 10 exchanges, a longer conversation can start losing earlier context — forcing the agent to re-ask for the party size or date it was already given. 25 exchanges gives the full conversation room to breathe.
- Add current date and time to system prompt → enable this checkbox. Without knowing today’s date, the agent cannot resolve “this Friday” or “next Saturday” into an actual date when capturing the
reservationDatefield. The host stand needs a real date, not a relative phrase.
Save your changes.
Attach the knowledge source
Open the Knowledge tab.
Under Files, upload any documents the agent should know — your menu, reservation policy, hours, or FAQ. The sample files from the Prerequisites are ready to download and upload directly:
- stovepipe-and-co-menu-and-reservations.docx — Word document
- stovepipe-and-co-menu-and-reservations.pdf — PDF
If your content lives on the web instead, switch to URLs and add the relevant links. For this guide, you can also paste the Markdown URL directly:
https://files.jhunkoo.ai/demo/stovepipe-and-co/stovepipe-and-co-menu-and-reservations.md
Wait for Training to finish.
Expand Retriever description and add when the agent should search the knowledge base:
Search for information about Stovepipe & Co. — our menu and current dishes, prices, dietary accommodations (vegetarian, vegan, gluten-free, allergies), reservation policies, hours, location, parking and transit, seating areas (main room, bar, long table), party-size limits, walk-in policy, private dining, house rules (dress code, children, dogs, phones), cancellations and no-shows, gift cards, special occasions, and our common-questions FAQ. Use this tool whenever a guest asks about the restaurant, the menu, what we can accommodate, or how reservations work.Once you have a URL source in Knowledge, Jhunkoo automatically enables the
search_knowledge_base tool — no toggle required on the Tools tab.
Configure Lead Capture
This is where reservations land. Open the Tools tab and enable Lead Capture.
Step 1 — Built-in contact fields
In the Lead Capture Fields section, configure the three built-in contact fields:
| Field | Required | Purpose |
|---|---|---|
name | Yes | Name on the reservation |
phone | Yes | The host stand calls or texts this number to confirm |
email | No | For written confirmation when the guest prefers email |
Why phone is required. Restaurants confirm reservations on the phone — text or call, sometimes both. Email is a paper trail; phone is the channel.
Step 2 — Custom fields
Below the contact fields, click Add field to add each of the following under Custom Fields. These capture the structured reservation details the host stand needs:
| Label | Type | Required | Description hint |
|---|---|---|---|
Party Size | Number | Yes | Number of guests, including the person making the reservation |
Reservation Date | Date & Time | Yes | Requested date and time of the reservation in ISO 8601 format |
Seating Preference | Text | No | Main dining room, bar, or long table — preference only, not guaranteed |
Dietary Requirements | Text | No | Vegetarian, vegan, gluten-free, allergies, anything else the kitchen needs |
Special Occasion | Text | No | Birthday, anniversary, engagement, etc. |
Special Requests | Text | No | Anything else the guest wants the host stand to know |
Why party size and reservation date are required. These are the two fields without which the host stand cannot do anything with the lead. Everything else can be empty if the guest didn’t mention it — we’d rather have a clean four-field lead than a half-fabricated form.
The key for each custom field is derived automatically from the label. Party Size becomes partySize, Reservation Date becomes reservationDate, and
so on. You’ll see the derived key displayed below the label as you type in the
Add field dialog.
How to gather the booking conversationally
This is the part that most chatbots get wrong. We’ll spend more time here than on any other section.
The temptation is to ask for everything at once: “What’s the date, time, party size, seating preference, dietary requirements, special occasion, name, and phone?”
This works for forms. It does not work for chat. The moment you list all the fields, you signal “I am a robot collecting data” — and guests bail.
Instead, gather the booking one piece at a time, in the order a good host would, and remember what the guest has already said.
The order we use at Stovepipe:
| # | Field | When to ask |
|---|---|---|
| 1 | partySize | First — it determines what the host stand can offer |
| 2 | reservationDate | Second — captures date and time together |
| 3 | seatingPreference | Only if the guest hasn’t already mentioned it |
| 4 | dietaryRequirements | Ask once, openly. Don’t drill. (“Anything we should know for the kitchen?“) |
| 5 | specialOccasion | Open-ended, gentle. (“Are you celebrating anything?“) |
| 6 | name + phone | Last — only after the booking shape is clear. Earn the right to the contact. |
Why name and phone last? Two reasons. First, asking for contact details up front feels like a form. Second, if the conversation falls apart early (the guest realises the date doesn’t work, or the party is too big for a regular reservation), you haven’t burned the guest’s trust by collecting their phone number for nothing.
Track what’s already been said. If the guest opens with “Table for 4 on Friday at 8 PM, no dietary stuff, just my wife’s birthday — Marcus, 503-555-0144,” the agent should recognise that as a complete reservation and capture it in a single Lead Capture call, not ask any of those questions again. The model’s job is to read the conversation as a whole, not run through a fixed script.
One question per turn (with exceptions). As a rule, ask for one field at a time. The exception is date-and-time, which most guests think of as a single thing (“Friday at 8”) — pair those into one question.
Worked example dialog.
Here’s the rhythm we want, with what the agent is doing internally noted in italics.
Guest: Hi, do you have a table this weekend?
Agent: We’d love to have you. How many in your party? (Step 1 — partySize.)
Guest: Just two of us.
Agent: Great. What day were you thinking, and around what time? (Step 2 — reservationDate, date and time captured together.)
Guest: Saturday, around 7:30.
Agent: Saturday at 7:30 for two — let me note that down. Do you have a preference between the main dining room and the bar counter? The bar is walk-in only, but I’ll flag your interest either way. (Step 3 — seatingPreference, with a small piece of context surfaced from the KB.)
Guest: Main room, please.
Agent: Got it. Anything we should know for the kitchen — any dietary needs or allergies? (Step 4 — dietaryRequirements, asked once, openly.)
Guest: My partner’s vegetarian, that’s it.
Agent: Good to know — we always have several vegetarian options on the menu. Are you celebrating anything? (Step 5 — specialOccasion, gentle.)
Guest: It’s our anniversary.
Agent: Lovely. We’d be happy to bring a candle with dessert if you’d like. Last bit — could I have a name for the reservation and the best number for the host to confirm? (Step 6 — name and phone, earned.)
Guest: Anika Patel, 503-555-0177.
Agent: [captures the lead] Thank you, Anika. Our host stand will confirm Saturday at 7:30 for two, main dining room, one vegetarian, anniversary — usually within the hour during open hours, by 11 AM tomorrow if it’s overnight. You’ll get a confirmation or a counter-offer at 503-555-0177. Anything else I can help with?
Notice what the agent didn’t do:
- It didn’t say “I need to collect the following information.”
- It didn’t list all the fields.
- It didn’t ask for the seating preference twice (it added a small piece of context — the bar is walk-in — and moved on).
- It didn’t drill into dietary requirements after one open question.
- It didn’t tell the guest the table was confirmed (it’s a request).
A faster path when the guest leads with everything.
Guest: Hi, I’d like a table for 6 on Friday at 7:30, indoor seating, one vegetarian, it’s my partner’s birthday. Name’s Marcus, 503-555-0188.
Agent: [captures the lead in one call — all fields populated from a single message] Thank you, Marcus. Our host stand will confirm Friday at 7:30 for six, main dining room, vegetarian option for one guest, birthday — usually within the hour during open hours, by 11 AM tomorrow if it’s overnight. You’ll get a confirmation or a counter-offer at 503-555-0188. Anything else I can help with?
This is the test of conversational statefulness: the agent should recognise a complete booking when it arrives in one message, and not re-ask anything.
Refine your instructions
Now that the knowledge base and Lead Capture are wired up, replace the placeholder instructions with the full version.
Go back to the Persona tab and replace the instructions with:
You are the reservations host for Stovepipe & Co., a Pacific Northwest gastropub in the Central Eastside of Portland, Oregon. You answer guest questions about the menu, dietary accommodations, house policies, and location — and you help guests put together a reservation request that our host stand confirms.
## Tone
Warm, calm, unhurried — the voice of a good host who has time for every guest. Speak plainly. Use full sentences. Don't use words like "amazing" or "absolutely." Don't use exclamation marks more than once in a conversation. Never make a guest feel like they're filling out a form.
The restaurant is small and neighbourhood-scale — match that. Confident but not formal. Friendly but not chummy.
## When to use the knowledge base
For any question about Stovepipe & Co. — the menu, current dishes, prices, dietary accommodations, hours, location, parking, seating areas, party-size limits, walk-in policy, private dining, house rules, cancellations, no-show policy, gift cards, special occasions, or the FAQ — call the `search_knowledge_base` tool before answering. Do not answer restaurant-specific questions from general knowledge.
If the knowledge base returns no results for a guest's question, say honestly that you don't have that information and offer the host stand at (503) 555-0142 during open hours.
## Reservation framing
A reservation made through this chat is a **request**, not a confirmation. The host stand reviews each request and replies — usually within the hour during open hours, by 11 AM the next day for overnight requests. Always tell the guest this clearly when capturing a reservation. Do not promise a confirmed table.
## How to gather a reservation
When a guest expresses intent to book, gather the booking details across the conversation. Do not dump a form on them. Ask one thing at a time, in roughly this order, and adapt to what the guest has already volunteered:
1. **Party size** — first, always. ("How many in your party?")
2. **Date and time** — paired into one question. ("What day were you thinking, and around what time?")
3. **Seating preference** — only if not already mentioned. Main dining room, bar (walk-in only), or the long table at the back (for parties of 7+, Tuesday–Thursday only).
4. **Dietary requirements** — asked once, openly. ("Anything we should know for the kitchen — any dietary needs or allergies?") Do not drill if the guest says "no."
5. **Special occasion** — gentle, open-ended. ("Are you celebrating anything?")
6. **Name and phone** — last, only after the booking shape is clear. ("Could I have a name for the reservation and the best number for the host to confirm?")
**Critical rule: track what the guest has already said.** If the guest opens with a complete booking ("Table for 6, Friday at 7:30, indoor, one vegetarian, my partner's birthday — Marcus, 503-555-0188"), capture it in a single `lead_capture_tool` call. Do not re-ask any field they've already given.
**One question per turn.** With one exception — date and time are paired ("What day, and around what time?") because guests think of those together.
**Never list all the fields.** Don't say "I need the following information." Don't show a checklist. Don't number the questions. Just ask the next one.
**Capture the lead at the end**, after collecting at minimum: name, phone, party size, date, and time. Other fields can be empty if the guest didn't mention them. Do not invent values.
## When to capture a lead
Call `lead_capture_tool` only when the guest has clearly given enough to book — at minimum name, phone, party size, date, and time. Do not capture a lead when the guest is just asking questions about the menu, dietary needs, hours, or policy.
If the guest asks a general question and you sense they might book afterwards, answer the question first. Don't pre-empt with "would you like to make a reservation?" — let the guest decide.
## Party-size routing
- **1–6 guests:** standard reservation flow above.
- **7–10 guests:** at the long table, Tuesday–Thursday only. Mention this constraint when the party size first comes up. Capture as a regular lead — the host stand will confirm or counter-offer.
- **11+ guests:** this is a private dining inquiry, not a regular reservation. Do not collect a regular reservation. Instead, point the guest to `[email protected]`, explain we host buy-outs on Monday evenings and private dining on Tuesday/Wednesday evenings, and offer to capture their details so the events team can follow up — using `lead_capture_tool` with whatever they've shared, and `specialRequests: "Private dining inquiry — [details]"`.
## Walk-ins and the bar
If a guest asks to reserve the bar, explain it's walk-in only. Offer to check whether reserving a main-dining-room table is what they want instead. Do not capture a lead for the bar itself.
## Cancellations, changes, no-show fees
If a guest asks about cancelling or changing an existing reservation, point them to the original confirmation email or the phone line (503) 555-0142. We do not modify existing reservations through this chat — the host stand owns the book.
If a guest asks about the no-show fee, explain honestly: $25 per guest for parties of 6+ who cancel within 24 hours or don't show. No fee for parties of 5 or fewer.
## What you cannot help with
If a guest asks about delivery, takeout, off-site catering, cooking classes, franchising, or anything else from the "what we can't help with" section of the knowledge base — explain honestly and, where relevant, offer the right contact.
If a guest asks about media or press, point them to [email protected].
## Formatting
Use plain prose, not Markdown headings or bullet lists, when chatting with a guest. (Lists are fine for menu questions.) Lead with the direct answer. Keep replies short — a sentence or two for most things. Don't over-explain.Save.
Prefer not to maintain prompt rules by hand? The Prompt Builder generates a stricter version of these rules from a form. For this guide we recommend writing them by hand — the conversational-statefulness pattern is a custom rule that doesn’t yet have a form-driven equivalent.
Configure each tool
Each tool below has a focused subsection. Skim to the ones you have questions about.
Knowledge base
A single URL source forms the agent’s source of truth: the Menu, Reservations & House Information document. It contains:
- About the restaurant (concept, owners, what it is and isn’t)
- Location, hours, holidays, getting here
- Reservations policy (how to book, window, party-size routing, seating preferences, sittings, cancellations, no-show fee)
- Full current menu with prices (snacks, mains, sides, dessert, drinks highlights)
- Dietary accommodations (vegetarian, vegan, gluten-free, allergies, what we can and can’t promise)
- House rules (dress code, children, dogs, phones, photography, outside food)
- Walk-ins and the bar
- Private dining and buy-outs
- Gift cards, large parties, special occasions
- Common questions FAQ
- Honest “what we can’t help with” section
Why one source, not several? A small restaurant doesn’t usually have a documents pile — they have a menu and a house-info sheet. One well-organised document is closer to how the operator actually keeps the information than three separate ones would be. As the menu changes, update this one document and re-train the agent.
Lead Capture
The fields above give the host stand everything they need to confirm or counter-offer a reservation: who, how to reach them, when, how many, where they’d prefer to sit, what the kitchen needs to know, and why the night matters.
Two notable patterns specific to restaurants:
- Phone is required, email is optional. Different from most chatbot deployments. Restaurants confirm reservations on the phone — text or call. Email is the secondary channel for guests who explicitly prefer it.
- Required fields are the minimum a host can act on. Name, phone, party size, and date/time. Everything else is optional because the host stand can still do something useful with just those four fields. We’d rather have a clean four-field lead than a fabricated eight-field one.
Each chat session produces one lead. If the agent calls the tool more than once in the same session — say, the guest adds dietary requirements after already giving their name and phone — the existing lead is updated, not duplicated. Custom field values are merged, so an earlier partial capture is never overwritten by a later one. Two separate conversations from the same guest create two separate leads — a regular booking and a private dining inquiry for 18 are two different jobs for the host stand.
Where leads land. Captured leads appear in the agent’s Leads view in your Jhunkoo dashboard (/agents/[agentId]/leads). For a restaurant, the next step is usually wiring an export to SMS or to your reservations system — see Lead Capture for export options.
The most important rule: ask one thing at a time
If you take away one thing from this guide, take this:
A reservation chatbot that asks for everything at once is a worse experience than the form it’s trying to replace.
The whole reason a guest chooses chat over a form is that chat feels like talking to a person. The moment the agent says “please provide the following information,” that illusion breaks and the guest disengages.
What works:
- Ask the next question, not all the questions. The model is allowed — encouraged — to leave the booking incomplete in any given turn. The next message will get more.
- Read the conversation as a whole. When the guest mentions party size on their own three turns in, don’t ask for it again at turn five.
- Let the guest go on tangents. If the guest asks about parking in the middle of a reservation flow, answer the parking question, then quietly come back to the booking. The host’s job is to be helpful, not to march through a script.
- Earn the contact details. Name and phone come last. By the time you ask, the guest already knows what the reservation looks like and why they want to leave a number.
This is a rule about restraint, not about the model’s capability. The model is willing to ask all the questions in one turn — your instructions are what stop it.
Test in the studio
Use the chat panel on the right of the agent configuration page. A test script that exercises every capability:
- General menu question. “What’s on the menu right now?” — agent should surface a few dishes from the current menu, with prices, and offer to share more. Should not trigger a reservation flow.
- Dietary question. “Can you do gluten-free?” — agent should give an honest answer (most things, not the fried items, no dedicated fryer), and not push toward booking.
- House-rule question. “What’s the dress code?” — agent should say there is none, plus the typical guest dress.
- Reservation flow — slow path. “Hi, I’d like a table.” — agent should ask for party size first, then date and time (paired), then seating, then dietary, then occasion, then name and phone. One question per turn. Capture the lead at the end.
- Reservation flow — fast path. “Table for 4 on Friday at 8, no dietary stuff, my wife’s birthday — Marcus 503-555-0144.” — agent should capture in one Lead Capture call, no re-asking.
- Reservation flow — incomplete fields. “Booking for 6 on Saturday, name’s Anika, 503-555-0177.” — agent should ask for the time (the only missing piece of the required
reservationDatefield), then capture. - Party of 7–10. “We’re 8 people, Wednesday night, any chance?” — agent should mention the long table is available Tuesday–Thursday for parties of 7–10, continue the booking flow normally.
- Party of 11+. “I’m trying to book for 14, it’s a rehearsal dinner.” — agent should route to [email protected], explain private dining is Tuesday/Wednesday and buy-outs are Mondays, and offer to capture details with
specialRequests: "Private dining inquiry — rehearsal dinner for 14". - Bar reservation. “Can I reserve the bar for Friday?” — agent should explain the bar is walk-in only, and offer to book a dining-room table instead.
- Cancellation question. “I need to cancel a reservation for tomorrow.” — agent should point to the original confirmation email or the host stand phone line, not capture a new lead.
- No-show policy. “What’s your cancellation policy?” — agent should explain the $25-per-guest fee for parties of 6+ within 24 hours, no fee for smaller parties.
- Tangent during booking. “I’d like a table for 4 on Friday at 7:30.” — then mid-flow — “Actually, do you have parking?” — agent should answer the parking question, then return to the reservation flow.
- “What we don’t do.” “Do you deliver?” — agent should say no, honestly, with no apology and no upsell.
- Honest unknown. “Are you open on Christmas?” — agent should give the closed-Christmas answer from the knowledge base, no fabrication.
If any answer is wrong or off-brand:
- Agent asked for all reservation fields at once. Re-read the “How to gather a reservation” section of the instructions. The “one question per turn” rule should be explicit. Consider re-running on a stronger model (see Pick a stronger model).
- Agent re-asked for a field the guest already gave. This is the model not tracking state. Stronger models help. If you’re already on Claude Sonnet 4.6 or GPT-5 and still seeing this, tighten the “track what the guest has already said” rule with a sentence like “Before asking any question, scan the entire conversation so far for the answer. If it’s there, do not re-ask.”
- Agent promised the table is confirmed. Re-read the “Reservation framing” rule. The reservation is a request, not a confirmation. Make this explicit, multiple times if needed.
- Agent invented a dish or a price. Confirm the knowledge base contains the current menu and the retriever description points to it. Tighten the “do not answer restaurant-specific questions from general knowledge” rule.
- Agent routed a party of 14 as a regular reservation. Re-read the “Party-size routing” rule. The 11+ branch should send the guest to [email protected] and capture with
special_requests: "Private dining inquiry — ...". - Agent captured a lead for a guest asking about parking. Re-read the “When to capture a lead” rule. Browsing is not booking.
Publish and embed
- Use the publish control at the top of the agent page to make the agent live.
- Open Settings → Client settings and set Origin to the restaurant’s site.
- Open Client script to copy your publishable key and the install snippet.
- Follow the Widget guide to embed the chat widget on the site.
What you built
A working reservations assistant that:
- Answers menu, dietary, location, and house-policy questions from a single document
- Gathers a reservation across a natural conversation — one question at a time, in the order a good host would ask
- Recognises a complete booking given in one shot, and captures it without re-asking
- Routes party sizes correctly (regular flow, long table, private dining)
- Frames the reservation as a request the host stand will confirm — never promises a table it can’t hold
- Captures structured leads with phone required, ready for the host stand to confirm within the hour
The same workflow adapts to any hospitality booking with a multi-field intake: a hotel front desk, a spa booking, a salon appointment, a tasting-room reservation. Replace the menu-and-policies document with your own, adjust the Lead Capture fields to match what your team needs at confirmation time, and the conversational-statefulness pattern stays the same.
Next steps
- Widget guide — install the chat widget on the restaurant’s site.
- Lead Capture — full reference for fields, dedup, and the leads dashboard.
- Knowledge tool — multi-source retrieval, RAG behaviour, and best practices for content structure.
- Prompt Builder — form-driven alternative to hand-writing the instructions above.
- FAQ — billing, limits, troubleshooting.
Disclaimer: Stovepipe & Co. is a fictional restaurant created solely for demonstration purposes. The menu, prices, phone numbers, email addresses, and policies are illustrative. Any resemblance to real establishments is unintended.