How it works
Pieces that already talk to each other.
A guest assistant, a place for your team to work, an app in their pocket, and a desk for your trade partners. Sold together because they're only useful together.
Front of house
The guest assistant
One script tag on your site and a real WhatsApp Business number. Same brain, both channels.
- Answers in the guest's language
- Including mid-conversation switches. Nothing to configure.
- Quotes exact totals
- Seasons, board basis, extra adults, children by age band.
- Never asks twice
- Holds dates and party size through the conversation, and across visits.
- Checks availability, places a hold
- Real availability from your PMS, and a 48-hour courtesy hold at exactly the price it quoted.
- Hands off by name
- A real person and a real number — not “our team will be in touch”.
Yalu
Kotiyagala Luxury Villas
Declines to guess, escalates by name
Mission control
The dashboard
Every inquiry becomes a lead with the context already written up.
- One record per guest
- Widget, WhatsApp or phone — all the same lead, never duplicated.
- The conversation, summarised
- What they actually want, without reading forty messages.
- Email inside the lead
- Two-way sync with your reservations inbox, replies under the right signature.
- One timeline, one brief
- Chat, WhatsApp, email, calls and notes in one place, summed up in a brief that stays current.
- Bookings from your PMS
- Every reservation synced in and linked to its lead, holds shown as holds, open tasks flagged.
- Live visitors
- See who's chatting on your site and step in — Yalu steps aside and translates both ways.
- Follow-ups that stop
- Three steps over two weeks, halted by any reply, each one in your Inbox three hours before it goes.
Anja Weber
Germany · via website chat
Summary · Family of four from Berlin. Quoted 9,300 without pushback. Main hesitation is child safety after dark.
Back of house
The staff app
Your team works the pipeline from their phones — and approves everything Kalu drafts. Installable from the browser, and on iOS through TestFlight.
- A queue already written
- Quiet leads come with a drafted follow-up, ready to edit or skip.
- Bookings, rooms and tasks
- The bookings list, the room plan, holds and the team's tasks — on the phone, not just the desk.
- Kalu on any lead
- Ask it anything about the guest in front of you.
- Push when it matters
- An alert when a guest shows real booking intent, not for every message.
- Log an issue once
- Tell Kalu a gate is closed; the guest assistant stops guessing immediately.
Kalu
Lead · Anja Weber · in discussion
Send email — needs your approval
To: anja.weber@example.com
The pool fencing at Kotiyagala
Hi Anja, apologies for the wait — I wanted to check properly rather than guess. Each villa pool is private and enclosed within your own walled garden…
Signed as Ishan, Room Manager
Intelligent room allocation
The right villa, and why
A suggested villa for every booking in the period, each move explained in plain words, with exactly what to change in the PMS.
- Reads what the guest said
- Allergies, access needs, occasions and promises, read from the conversations and pinned to the booking.
- Follows your rules
- Written in plain English by your team; the system shows what it understood before using one.
- Placed in code, not by the model
- No two bookings in one villa on one night — confirmed stays first, holds after, alerts when one won't fit.
- Knows the map
- Walking distances and views between villas, so two-villa families get a close pair.
Room allocation
Plan · suggested vs. in eZee now
Suggested move
WeberVilla 05Villa 02
Tenth anniversary, mentioned in chat — anniversaries get a sea-view villa. Also closes a one-night gap in Villa 05 before the Lees arrive.
In eZee: change the room on reservation 4821 to Villa 02
Khan's hold fits only in Villa 04 — it would block a two-villa booking for Mon–Wed.
Trade desk
Mithu and the trade portal
A separate assistant for DMCs, travel agents and tour operators — open to chat, with rates only behind your team's approval.
- Sign-up inside the chat
- An emailed six-digit code, no password. Business registration uploaded from the conversation; an admin approves.
- Onboarding that teaches
- Five topics in under five minutes, with photo galleries — and partner features locked until it's done.
- Holds by emailed code
- Availability without prices for registered partners; holds for approved ones, each confirmed by its own code.
- Partners in the same CRM
- Every partner is a lead with a timeline, so Kalu and the team see trade and guests in one list.
Mithu
Kotiyagala trade portal
Rates stay behind approval
The playbook
How it runs a sales conversation.
Not a script and not a decision tree — a set of instructions about how to behave, the same ones you'd give a good new hire on the desk.
Discovery, not an intake form
It learns the dates, who's coming, the occasion and where they're travelling from — across the conversation, never in one burst of questions. One good question beats a checklist, and it never asks twice for something already said.
Answers the worry they haven't voiced
Someone booking beside a national park is usually wondering whether it's safe, and often won't ask. It raises the elevated walkway before they have to — the specific reason they can watch animals move through the property without standing at ground level with them.
Recommends, rather than waiting to be asked
Once it knows roughly who's coming and when, it suggests a specific villa that fits — with a real name read from your site and a real total from the rate engine.
Specific beats polished
“We had a leopard near the walkway a few days ago” does more work than any amount of marketing language. When there's something current worth mentioning, it uses it.
Never discounts. Adds instead.
When someone pushes on price, it doesn't deflect and it doesn't cave. It finds out the occasion first — an anniversary, a first safari — then offers the single experience that fits. Champagne on arrival, a spa treatment for two, sundowners by one of Yala's lakes, a guided walk ending in a beach picnic, a night drive. One idea, offered warmly. Never a menu, never a consolation prize.
Knows the difference between interested and ready
Someone still deciding gets patience. Someone ready to move gets a clear next step — their details to Ishan for a personal follow-up, or the booking link if they'd rather do it themselves. It lets the guest's own readiness pick.
Who's in charge
Every decision that costs money stays with a person.
The assistant is deliberately powerless where it matters. It can persuade, quote and capture — it cannot concede, promise or spend.
It cannot discount. Only you can.
Yalu has no authority to move a rate, and no way to acquire it. So when a concession is made, it comes from a person — which protects your rate integrity and means the guest thanks a human, not a bot.
It escalates to a name, not a queue
“Ishan or Sha will follow up personally” — deliberately a real person rather than “our team”. A named human is what reassures someone about to spend four figures.
It taps the right shoulder
Kalu can put a task in front of a specific staff member — ask Ishan to call her before six, she's deciding tonight. If the name is ambiguous it asks which one, rather than guessing.
You hear about it while it's still warm
When a guest shows real booking intent, your team's phones go off mid-conversation — not in a morning digest when they've already booked elsewhere.
Nothing Kalu writes goes out unread
Every email, status change and scheduled send Kalu drafts pauses on the exact text, and goes out under the approving person's own signature.
Anything urgent leaves the chat immediately
A safety or security concern during a stay is never handled in conversation. It tells the guest to call you directly, straight away.
Why this sells the rate rather than protecting it
An assistant that can discount will eventually discount when it shouldn't — and once a guest has seen a lower number, your published rate is fiction. Yalu can't, so the rate holds by default. If you then choose to do something for a guest, it arrives from Ishan or Sha as a decision a person made about them specifically. That reads as generosity. The same thing offered by a chatbot reads as a discount that was always available.
When they go quiet
The follow-up sequence.
Written from the actual conversation, in your team's Inbox before it goes, and hard capped so nobody gets pestered.
After 48 hours
The first nudge
Written from what actually happened in the conversation — their dates, what they asked about, where you left it. Never a template.
Five days later
A reason to picture it
If something real has happened at the property — a sighting, a moment worth sharing — it weaves that in. Only if it genuinely fits; never forced.
A week after that
The soft close
No hard sell, no pressure to reply. Essentially “we're here whenever it's useful.” Then it stops.
- Stops the instant they reply
- Three steps. Never a fourth.
- Every draft waits in your Inbox for three hours — edit it, skip it, or let it go
- Never sent to a guest already in discussion, booked or lost
- A daily cap on automated email, so a backlog can't flood anyone
- Grounded in the lead's real notes and conversation — it doesn't invent history
Guardrails
Every way we stopped it making things up.
Constraints built into the system — not promises made in a prompt.
Prices are calculated, not generated
The quote engine is deterministic code, not the language model doing arithmetic. Ask for three nights over Christmas with two extra adults and the number is exact. Ask about dates outside the loaded rate card and it says it can't quote — rather than inventing a figure.
Nothing Kalu does happens without a human
Every action Kalu takes — an email, a status change, a hold, a booking, a message to a colleague — pauses and shows your team the exact text. Approve it and it goes. Ignore it and nothing happens.
A hold only goes in at the price it quoted
When Yalu places a courtesy hold, it goes into the PMS only if the PMS prices the stay at exactly what Yalu quoted the guest. If it doesn't, the hold goes to your team to set up by hand — the guest is never shown a second number.
It cannot invent a room
Room and villa names are read from your live website at the moment of the conversation. The assistant physically has no way to offer a suite you don't have.
It won't tell a guest it saved their details unless it did
If lead capture fails, the assistant says so and offers another route. It never confirms something it didn't actually do.
Rules that hold under pressure
Resident-only rates need two things: the guest says plainly that they're a resident, and they're on a local phone number. Never inferred from a name, a language or a number alone — and hardened against people trying to talk their way around it.
It knows what's broken today
Your team logs an issue once — a closed entrance, a pool under maintenance — and the guest assistant stops guessing about it immediately.
It never pretends to be a person
Asked directly, it says plainly that it's your hotel's AI assistant. No fake names, no invented staff members.
It writes like a person, not a brochure
Two to four sentences. No headings, no bullet-point walls, no tables. If it's about to write an essay, it asks a question instead.
Worth being clear about
Yalu holds the villa. A person confirms the booking.
It checks live availability in your PMS and places a courtesy hold at the exact price it quoted — never a different one. The guest can confirm by paying through your PMS's own secure link, or your team confirms through Kalu, once a person approves. Changing or cancelling a confirmed booking from the chat is still ahead of us.
See the roadmapSee it answer a question about your hotel.
Thirty minutes. We'll load a little of your own content in first, so you're watching it handle your property — not a demo script.