Resort guests get an answer at any hour, and reservations gets the enquiry already written up.
Lovely. Shall I pass those details to reservations for a quote?
The dates, the room and the guest count, lifted out of one ordinary sentence.
The situation
How this used to work
A resort enquiry is never one question. It is a small pile of them, and they all have to be answered before anyone books anything: what time can we arrive, is breakfast in the price, is that true of the room we actually want, is there space in August.
Almost none of those answers are the same for every room. Breakfast comes with a Deluxe Room. It is an extra on a Royal Apartment. Beach House guests walk to the breakfast area. A page that says the resort serves breakfast has technically answered and actually not.
And the last question in the pile is the one nobody on the website can answer, because availability lives with reservations. So the honest end of the conversation is not an answer. It is somebody taking the details.
What we built
The system
A chat agent on amoopi-nymfes.gr that answers from the resort's own indexed knowledge, in the register the prompt asks for: warm, like a Greek host, rather than like a booking engine with a greeting.
It is told to search the knowledge base before it answers, and it is told outright never to invent availability or prices. That is the correct instruction for a resort. An agent that guesses at a rate has sold a room that does not exist at a price nobody agreed.
The part that makes this more than a knowledgeable mouth is the capture, and it is built rather than switched on. Lead capture with conversational mode, so the details are lifted out of ordinary sentences and no form is ever drawn. A custom trigger decides when. Custom fields decide what: the dates, the room type, the number of guests. It confirms with the guest before it saves anything, and the enquiry lands in the CRM.
What it cannot do is set as deliberately as what it can. No agentic mode, no voice, no MCP tools, no widget tools. It does not hold a calendar and it cannot fetch a human. It answers, and it takes the details, and that is the whole surface.
How it works
The pipeline, step by step
Per room, not per resort
Check-in from three, check-out by eleven, and breakfast that depends entirely on what you booked: included with the Deluxe Rooms, optional on the Royal Apartments, in the breakfast area for the Beach Houses. The answer changes with the room because the truth does, and a guest asking about breakfast is really asking about their breakfast.
| Room type | Breakfast |
|---|---|
| Deluxe Rooms | Included |
| Royal Apartments | Optional |
| Beach Houses | Breakfast area |
One document, indexed. The answer moves with the room type.
The trigger is narrow on purpose
Capture does not fire because someone said hello. It fires when a guest wants to book a room, check specific dates, or asks what a stay costs. Everything else is just a conversation, and a resort assistant that reaches for contact details on the first message is a form with extra steps and worse manners.
One of these is an enquiry. The rest is a guest having a conversation.
Out of the sentence, not out of a field
Two of us, twelve to sixteen August, ideally a Beach House. That one line carries all three fields, and the guest was not filling anything in. Conversational mode is the difference between a chat that ends in a form and a chat that quietly was the form.
It reads the details back
Before anything is saved, the agent puts what it heard in front of the guest. Extraction from free speech is exactly where a wrong date gets written down confidently, and the person best placed to catch it is the one who said it four seconds ago.
It never quotes a price it does not have
Rates and availability are the two things it is forbidden to produce, and the resort is the only place either of them actually lives. So the enquiry goes to reservations with the details already on it. Slower than an instant answer, and the only version where the answer is true.
Answers and capture, nothing else
Agentic mode off. Voice off. Zero of three MCP tools, zero of seven widget tools. The platform can hand a chat to a human and read a calendar. This deployment does neither, and both absences are a decision rather than a backlog.
Two capabilities on. Everything else switched off on purpose.
What changed
The result
It is live on the resort's site and answering now. Asked about check-in and breakfast on 16 July, it came back with the times and the room-by-room breakfast rule, which is the answer the site's own pages make a visitor assemble for themselves.
An enquiry now arrives at reservations with the dates, the room type and the number of guests already on it, gathered in the conversation the guest was having anyway. Nobody was asked to fill anything in, and nobody was made to wait for office hours to be asked.
The line it holds is the price. It will take every detail needed to quote a stay and it will not quote one, because the number is not its to give. Capture without that restraint is not a booking assistant, it is an expensive way to promise a rate the resort never agreed to.
The stack
Where it runs
- Liberators OS
- os.liberators.ai
- GPT-4o
Knowledge
- 1 indexed document
- RAG before answering
Capture
- conversational mode
- custom trigger
- 3 custom fields
- confirm before save
- CRM
Switched off
- agentic mode
- voice
- MCP tools
- widget tools