Case I
2025Chatbot & RAGHospitality

A concierge that already knows the wine list.

Hearth & Vine, a hospitality group with seven rooms across two cities, asked me to build something its sommeliers would actually recommend — a guest-facing assistant grounded in the cellar, the menu, and the calendar.

Client
Hearth & Vine Group
Year
2025
Role
Strategy · Design · Build
Scope
Web chatbot, RAG corpus, admin tooling, support window
Stack
Claude · Postgres · pgvector · Next.js

01 — The BriefAnswer the same fifty questions — beautifully.

Hearth & Vine had a problem the team called "the Tuesday list." Every Tuesday afternoon, a sommelier would clear ninety minutes to answer guest emails — wine pairings, menu allergies, late check-in requests, the same fifty questions, written fifty different ways.

The team didn't want a chatbot. They wanted the answers a senior sommelier would give at the door — informed, on-brand, never wrong about the cellar. They wanted it on the website by the holidays. And they wanted it to never invent a vintage.

02 — The SystemA small stack with one job.

I started by asking what not to build. No model fine-tuning. No bespoke vector database. No retrieval framework on top of a retrieval framework. I picked, in order:

  • A single retrieval-augmented chat surface with a fixed system prompt, written by hand and reviewed by the head sommelier.
  • A live corpus of the cellar (CSV, updated nightly), the menu (markdown, edited in the kitchen), and the booking calendar (read-only, scoped per property).
  • An admin page that answers a single question for the team: what did the assistant get wrong this week?
Figure 01 · Architecture
Figure 01 — The whole system on one page. Three sources of truth, one model, one logged answer per turn.

The cellar corpus turned out to be the load-bearing piece. I standardised on a single line per bottle — vineyard, vintage, varietal, on-hand count, paired-dish notes — and let the retriever do the rest. The model never sees the whole cellar; it sees the eight or twelve lines that matter for the question being asked.

We stopped explaining the wine list and started asking guests where they wanted to spend the evening. The assistant did the rest.— Marin S., Head Sommelier, Hearth & Vine

03 — Refusal as a featureIt says I'm not sure when it isn't.

The single most contested decision was also the one the team thanked me for first: when the retriever doesn't surface a confident match, the assistant says so, and routes the guest to a sommelier with a one-tap button. No bluff, no improvisation, no soft-pedalling.

It costs the brand a percentage point of "self-served" interactions. It earns them the trust they were after in the first place.

Figure 02 · Console
Figure 02 — The weekly review console. Every refused turn is logged, sorted, and reviewable in under three minutes.

04 — ReflectionWhat I'd do the same. What I wouldn't.

The same: keep the cellar as the only source of truth. Keep the prompt short and human. Keep the admin page boring on purpose — the team should never wonder what's underneath.

What I'd do differently: write the refusal language with the team on day one. The two weeks I spent rewriting it at launch were avoidable. Refusal is brand work; treat it that way.

V — The Result

Three quiet changes — across one Tuesday afternoon.

01

The Tuesday list shrank to a Tuesday morning. The sommeliers got their afternoons back.

02

Wine pairing questions, in particular, moved off email almost entirely. The same answers, faster, with the cellar in front of them.

03

Late check-in requests now route directly to the property duty manager. No middleman, no translation, no hand-off.

Get In Touch

Got a Tuesday list of your own?

Tell me about the work nobody on your team wants to keep doing. I'll tell you whether a chatbot, a knowledge base, or just a better form is the right fix.

Get in Touch