One phone number answers both texts and calls. Some messages are matched exactly and answered from a template in about forty milliseconds. Everything else goes to a model. The difference matters most when someone is standing in a hotel lobby and can’t get upstairs.
G2E 2026 · The Venetian, Las Vegas · Sept 29 to Oct 1
An AI that answers every message is a demo. It is also a system where the most urgent message on the property, I’m here, come get me, sits in a queue behind a language model having a think about it. So the messages that matter are not sent to a model at all.
Twilio is answered immediately and empty. The reply goes out separately, so nothing a person waits for is ever queued behind a model.
A code word is matched only when it is the entire message. “Where should I park?” is not a request for the suite number. That strictness is what makes a template answer safe to send without anyone reading it first. The words below are read from the running system, not typed into this page.
Unique to one campaign, so every reply is attributable to it.
| Word | What happens |
|---|---|
| JOBFAIR JOB FAIR JOBFAIRS | Tags the number as mailer-sourced, then offers both paths in a single message: a private suite hour, or the Wednesday reception. Nobody has to guess which word applies to them. |
| BOTH BOOK AND RSVP RSVP AND BOOK | Joins the reception list and explains how to hold an hour. |
Everything a campaign is actually asking for.
| Word | What happens |
|---|---|
| BOOK HOURS SCHEDULE TIMES | Starts a booking by text or by voice. Reply with a day and a time and the hour is held. No form, no link, no app. |
| OPENHOUSE OPEN HOUSE RSVP | Joins the reception list. Consent to be texted is asked for explicitly the first time and never assumed. |
The words that carry an actual person somewhere.
| Word | What happens |
|---|---|
| HERE ARRIVED IM HERE I AM HERE LOBBY DOWNSTAIRS IN THE LOBBY WERE HERE WE ARE HERE IN LOBBY HERE NOW | Highest priority path in the system. Replies with where to wait, and pages a human to come down. Also fires inside a short sentence: any of HERE ARRIVED LOBBY DOWNSTAIRS in a message of six words or fewer, so “hi, I’m here in the lobby” never reaches a model. |
| SUITE ROOM WHERE SUITE NUMBER ROOM NUMBER LOCATION | The room number once it exists, with the escort instruction attached. Before then: an honest “we get it Monday”, and an offer to text it the moment we do. |
Compliance, and the words carriers treat as law.
| Word | What happens |
|---|---|
| STOP STOPALL UNSUBSCRIBE END QUIT | A true opt-out. This is the carrier’s behaviour and the carrier’s word list, not ours: it is honoured before our system sees the message, and it is reversed only by the person themselves. |
| CANCEL CANCEL IT CANCEL THAT CANCEL THIS CANCEL HOLD CANCEL THE HOLD CANCEL BOOKING CANCEL MY BOOKING CANCEL THE BOOKING NEVER MIND NEVERMIND | Abandons a booking in progress. Deliberately not an opt-out. See the findings below; this one cost us people before we caught it. |
| HELP INFO | Who we are, where we are, and the three words worth knowing. |
BOOK also arrives from the website and from
people who heard about the suite on the floor, so it says nothing about where someone came from. A word printed on one
mailer and nowhere else does: every response to those packages is attributable to them, and no analytics product can
reconstruct that after the fact.
Tier 1 throughout. No model touched this conversation.
Tier 2. Not a keyword, so Jack answers, from a fixed facts block, not from memory.
Urgent priority. A person's phone rings at the same moment.
Most inbound messages are sentences, not commands, and on a phone call almost all of them are. Those go to Jack, who introduces himself as what he is: Strategy9’s AI attendant. Nobody is told they are talking to a person.
Every reply is generated against a block of current, literal facts: the show dates, the suite location, which hours are still open, whether this number already has a booking, and what the reception is. Availability is written in a form that cannot be misread, 6 slots OPEN, 1 booked, 7 total, because an earlier version said “6 of 7 hours open” and the model read it as six consumed.
This is the finding worth carrying into any deployment. A model that doesn’t know something rarely promises the impossible. It invents a restriction: plausible, confident, and expensive. Ours once told a caller that Tuesday was our opening day so we weren’t taking visitors then. That was not true, and it cost a booking. There is now an explicit rule against asserting any limit not present in the facts block.
The audience is HR directors and the product is a hiring system, so the employment-law questions are not hypothetical: background checks, ban-the-box, I-9, ADA accommodation, wage and hour. Every one varies by state, and on tribal land by sovereign jurisdiction as well.
| Refused | Why |
|---|---|
| Employment law, gaming regulatory and compliance, legal or tax advice | A wrong answer in writing from a vendor outlives the show, and “the AI said it” is not a defence. |
| Prices, discounts, contract terms, or any claim about a named competitor | Andrew’s job, in person. |
| Anything about a specific person’s employment or record | Never, on any channel. |
A draft is checked before it is sent, not after. Profanity, sexual content, a claim about a competitor, an apology admitting fault, any price: the draft is rejected, a person is paged, and the guest gets a short honest handoff instead of silence. The rejection is logged together with the message that caused it, which is how you find out someone is probing.
The Venetian’s suite floors need an escort. A room number in a text message does not get anybody upstairs. That single physical fact reorganised the whole system: the hard problem was never information, it was arrival.
So HERE is the highest-priority path in the system. Every reply that mentions visiting must also say how to get up. A booking confirmation is worthless without it, and the day-before reminder, not the confirmation weeks earlier, is where those instructions belong, because that is when they are read.
Every property has a constraint like this. A high-limit room with its own entrance. A host who has to meet someone at the door. A player who can’t be named over the radio. Find it first; it is the specification.
Every one of these looked fine in code review and failed in use. They are listed because a system like this is only credible if the failures are named.
Twilio’s default keyword list treats CANCEL as an opt-out, applied before our system ever sees the message. A guest mid-booking typing “cancel” to drop a hold was silently unsubscribing from everything. Fixed at the carrier, not in code.
Fallback messages were being written into conversation history labelled as Jack, so the model learned that “Andrew will text you right back” was a normal thing for it to say, and started saying it unprompted. System output is now excluded from history, and every line is labelled by who actually wrote it.
A time budget meant to bound the wait for a first word was being applied to the entire response stream, so long answers were truncated mid-sentence rather than delayed. Bounding it to the first token and re-arming took time-to-first-word from 5.6 seconds to about 0.6.
The phrase had been added as an alias for Wednesday so “come by on the open house day” would book. It also meant that “tell me about the open house” returned a list of available appointment times. Two layers had a claim on the same words and the parser ran first.
One character outside the GSM-7 alphabet, an em dash, a smart quote, an ellipsis, drops a text message from 153 characters per segment to 67. Every outbound message is now normalised and measured at the point of sending, and its segment count is logged.
A trade show suite is a small, honest test of a much more ordinary problem: a guest with a phone, a question, and no patience for a menu tree.
The caller is recognised by number before they say a word: tier, host, last visit, tonight’s reservation. The routine questions never reach a person; the ones that should, ring the right host in seconds.
Any guest who has to be met, high-limit, hotel VIP, a bus group, texts one word and the right person is paged with a name and a location. Every arrival is timestamped.
One code word per campaign, per property, per mail drop. Opt-in captured properly, response attributable to the piece that produced it.
The line that currently rings out, or reaches a voicemail box nobody empties, answers instead, with the facts it actually has and an honest handoff for anything else.
Text JOBFAIR and see what comes back, or call the same number and ask it something awkward.