Designing AI forReal Hotel Operations

Designing AIfor Real HotelOperations

This case study focuses on the system behind the interface. I designed and built the guest and staff experiences end to end, while leading the decisions that shaped how the system works: how AI turns conversations into operational requests, routes them across hotel teams, and keeps working through the four kinds of uncertainty that break it.

TEAMSOLE PRODUCT DESIGNER · 5 ENGINEERS
ROLEPRODUCT DESIGN LEAD & ENGINEER
TIMELINEAPR - MAY 2026
SETTINGCAPSTONE · IBM AI ENGINEERING, SEOUL

Happy path: When everything goes as expected

At its simplest, the experience looks like this: a guest makes a request, AI turns it into something the hotel can act on, and staff handles it.

GUEST
STAFF
01 / COMMUNICATION CHAIN

Imagine ordering a pizza 🍕 from your hotel room

Hotel communication chain ordering pizza from room to front desk and kitchen

You call the front desk. They call the kitchen. The kitchen manager passes it to staff. One request, several handoffs. Call back five minutes later, and the whole chain starts over.

02 / TOURISM GROWTH

For years, this worked fine

International tourism was lower, and enough hotel staff could absorb the repeated communication. Then in 2025, tourism surpassed its all-time record, including every pre-pandemic peak, reaching 1.52B travelers. The growth continued into 2026. Hotels are no longer serving the same volume, or the same diversity, of international guests they did just a few years ago.

1.5B1.0B500M20192020202120222023202420252025 1.52B
Source: UN Tourism Barometer (2019–2026)
03 / THE INTERVIEWS

When foreign guests couldn’t explain their requests over the phone

To understand how this shift affected day-to-day hotel operations, I interviewed staff members at Samjung Hotel, a four-star business hotel in Seoul. Many international guests walked to the Front Desk with a translation app already open. Service requests now shared the same queue as check-ins and check-outs, creating an operational bottleneck during peak hours.

Foreign guest on hotel phone and crowded front desk queue
04 / WORKFORCE GAP

Hiring more staff isn't the fix

The hotel manager described staffing shortages as one of their biggest operational challenges, particularly during overnight shifts. This isn’t unique to one hotel. The COVID-19 pandemic drove many hospitality workers into other industries, and despite the rapid return of travelers, hotels have struggled to bring them back. In the US, 65% of surveyed hotels reported staffing shortages in 2025, and the OECD continues to identify labor shortages as a persistent challenge across the hospitality sector.

65% Staffing Shortage
Source: AHLA (2025), OECD Tourism Trends and Policies.
05 / THE OPPORTUNITY

I scoped what AI could actually do, not everything

Task analysis revealed that over one-third of daily front desk operations consists of repetitive guest communication.

Waiting & Other Tasks
33%
Check-in / Check-out
28%
Guest Communication
22%
Phone Calls
11%
Administrative Tasks
4%
Cross-Department Coordination
1%
Transportation Arrangements
1%

These requests were repetitive, language-heavy, and required clear handoffs between shifts. This is exactly where LLMs excel: real-time translation, handling repetition consistently, and keeping automated records.

Source: Asian Productivity Organization (APO)
One deep operational study

I traced the workflow with hotel staff

I sat down with the general manager and a front desk employee at Samjung Hotel on 22 April and walked through how a guest request actually moves through a shift. Two of the things they raised came before I could pitch anything, and both of them changed what I built.

What they warned me aboutIf asking gets easier, people will ask for more

The manager raised this before I could pitch anything. Lower the barrier with a QR code and a chat box and you do not just capture existing demand, you create new demand. Someone pays for the extra bottles of water.

How the product answers itThe free allowance is part of the conversation

Bottled water and towels, the two items the hotel named as most requested, carry a daily allowance per room. Ordering inside it is frictionless. Crossing it becomes a question the guest has to answer with the surcharge stated, and agreeing once does not carry over to the next request. The barrier was not removed, it was moved to where it belongs. Which items have a limit, and what the limit costs, is configuration rather than a decision baked into the product, because a property would set its own on the way in.

What they warned me aboutWithout the PMS, it does not get adopted

The property management system is where a hotel already keeps guests, rooms, charges and remarks. The manager was blunt that a tool which does not connect to it is not something a hotel would run.

How the product answers itGuest and room data sit under the product, not beside it

Guest records, room state, menus and billing are modelled as first-class data rather than something bolted on later. Guests sign in with their stay, not an account. Charges post against the room, and checkout resets what the room is holding. It made the build heavier and it is the reason a real hotel could plug this in.

The full study, including what it could not tell me.

Guest Request
LACK OF KNOWLEDGE

Does the AI actually know this?

UNCERTAINTY FROM GUESTS

Is the guest's intent actually clear?

FADING MEMORY

Does it remember enough to act?

REALITY CHECK

Does the decision hold once it's real?

Reliable Hotel Operations

Here's how I designed for each uncertainty

When AI doesn't know the answer

No matter how much knowledge existed before launch, guests would inevitably ask questions the AI had never seen before. I prioritized reliable boundaries over maximizing automation. When the AI reaches the limits of what its knowledge can support, it stops rather than filling the gap with an assumption and hands the conversation to the Front Desk. This decision also shaped what happened after the handoff: unanswered questions became opportunities to expand what the AI could handle over time.

Explore the full matrix to see how handoff rules were defined for other operational scenarios.

Human handoff shouldn’t reset the conversation

A handoff fails if the conversation starts over and the guest has to repeat themselves. I treated a handoff as a continuation of the same conversation, not the start of a new support flow. The handoff screen surfaces only what staff need to take immediate action: a concise issue summary, the reason for the handoff, and key operational context.
The front desk workspace: a queue of guest requests, the conversation for room 707, and a Request Details panel. The guest asks about checking out at 2:00 PM, and the panel already reads: why it was handed over, late checkout requires checking room availability and applying manual fee policies; guest context, guest is requesting a 3-hour extension until 14:00.

Without a shared language, the handoff still fails

I approached multilingual communication as an operational problem rather than simply a translation feature. Guests continue chatting in their own language, while staff work entirely in their system language. Translation happens automatically in both directions.
GUEST
STAFF

Every handoff should make the system better

The same question shouldn't require staff intervention again. I designed each handoff to expand the system's knowledge. The AI automatically generates a draft knowledge entry from each handoff, so every issue staff resolve becomes something the AI can answer on its own next time.

Learning should never slow down live service

Requiring staff to review every entry immediately would create friction during busy shifts. I chose to separate service urgency from knowledge maintenance. Staff can defer knowledge capture without losing context, allowing them to stay focused on guests during peak hours and return to structured knowledge drafts when operations slow down.

AI shouldn’t decide what becomes knowledge

AI could propose new knowledge, but staff remained the final authority on what became operational truth. Every AI-generated knowledge draft required human approval before entering the knowledge base. This prevented automated updates from introducing errors or contradictions while preserving the hotel-specific context AI couldn’t reliably determine on its own.

Every request begins as natural language

Unlike traditional products, AI products don’t receive structured inputs. Guests describe what they want in natural language, where both their intent and the information needed to act may be unclear. I designed the conversation to progressively turn that ambiguity into an actionable request, from understanding what the guest wants to collecting the information required to fulfill it.

Guests rarely provided every detail in a single message

Once the guest’s intent was clear, the next challenge was determining what information was actually required to fulfill the request. I defined the minimum information required for each hotel service, creating a clear operational threshold for when a request was ready to proceed.

Explore the information requirements I mapped across hotel services.

AI should know when to stop asking

A long conversation wasn’t necessarily a failed one. A conversation that stopped making progress was. Some requests naturally required several turns, like a taxi reservation that needed a destination, a departure time, and a passenger count. But repeatedly failing to collect the same information signaled that the conversation was no longer progressing. So I designed the stopping condition around progress, not turn count. Only when the same information remained unresolved across multiple turns did the AI stop asking and offer a handoff to the Front Desk. This let complex requests continue naturally while preventing stalled conversations from falling into repetitive loops.

My first rule stopped after three questions even when a booking was progressing. I changed it to count three attempts at the same missing detail instead.

Stopping didn’t automatically mean handing off to a human

Human intervention carried a real operational cost. If every unresolved conversation was transferred, staff would end up handling every situation the AI couldn’t resolve, creating more work instead of reducing it. Guests might also be casually exploring a service without ever intending to speak to a person. So I separated “the AI can no longer make progress” from “a human needs to take over.” Depending on the situation, the system could hand off immediately, confirm whether the guest still wanted help, or end the conversation without involving staff.

Explore the criteria I used to decide when to hand off, confirm first, or end the conversation.

Remember request state, not conversation

Keeping the entire conversation in context meant the model had to process more information with every response, increasing latency and the risk of incorrect assumptions. From a hotel operations perspective, remembering the conversation itself was never the goal. The real challenge was deciding what needed to persist for the system to act correctly as requests evolved. So instead of relying on conversation history as memory, I provided the AI with structured operational context: the guest’s service request history, each request’s current status, and a small window of recent conversation.

Can I get 2 towels?
Sure, anything else?
Also a bottle of water
Got it, anything else?
Actually, late checkout too
State Extracted
Request #1214
in_progress
servicelate_checkout
requested_time2:00 PM
roomRoom 402
contextlast 5 messages
Persists across shifts without chat logs

What persistent state made possible

By preserving request state, the AI could interpret new messages in relation to what had already happened. It could modify or cancel existing requests, prevent duplicate work when a request was already in progress, and use completed requests to produce accurate summaries later.
What persistent state made possible: modify existing requests
What persistent state made possible: prevent duplicate work
What persistent state made possible: accurate summaries

A shift ends, the requests don't

The front desk employee I interviewed said the handover was the worst part of the job. Requests are worked in one place and written up in another, in a Word file or the remarks field of the property system, so the same day gets entered twice at the end of every shift. Because the AI is already in the conversation, none of that has to be typed a second time. The briefing is assembled from requests that already exist, split into the three shifts a hotel actually runs, and it can be exported back into the spreadsheet the hotel was using before.

Cancellation becomes a request, not an action

Once a request was in progress, staff might already be acting on it, so cancelling or replacing it could affect work already underway. I designed cancellation as an approval process once a request was in progress. The guest’s cancellation became a new request to the staff member handling the original request, who could approve or reject it based on the work already underway.
GUEST
STAFF

A second notification catches what the first one misses

Staff on the floor couldn’t always check notifications immediately. But cancellations were time-sensitive: the longer they went unanswered, the further unnecessary work could progress. I designed a second layer of operational safety. If a cancellation remained unanswered for 90 seconds, it was escalated to the Front Desk, allowing them to contact the responsible department directly and resolve it in real time.
FRONTDESK

The AI could still make the wrong decision

Even with the right knowledge, context, and enough information, the AI could still make the wrong operational decision. A request could reach the wrong department, or real-world conditions could make the AI’s original decision no longer appropriate. But an incorrect AI decision shouldn’t automatically become an operational mistake. So I designed the final layer around recovery: catching incorrect decisions before they affected hotel operations, and giving staff the ability to correct them when reality required it.

Agents can refuse, but never redirect

Rather than relying on AI confidence scores, I gave each department agent one decision: Does this request belong here? If not, it could reject the request, but never choose another department. Every rejected request returned to the Front Desk before another routing decision was made, creating a single recovery path that prevented agents from passing requests back and forth.

DEPARTMENT AGENT
Does this belong here?
REJECT
FRONT DESK
Single routing authority
New routing decision
DEPARTMENT AGENT

Sometimes reality changed after the AI made its decision

A request reaching the wrong department didn’t always mean the AI had made the wrong decision. It could make the right decision based on what the guest said, only for staff to discover new information once the request entered hotel operations. So I treated operational ownership as something that could change after the AI made its decision. When new information changed which department should handle the request, staff could request a reassignment.

Every reassignment needs Front Desk sign-off

Allowing operational ownership to change didn’t mean departments could freely pass requests between one another. Without a single decision point, reassignment could turn into the same back-and-forth routing problem between departments. So I kept the Front Desk as the single control point for reassignment. Staff could request a department change, but the request only moved after Front Desk approval.

Decision Architecture

The framework didn't come first. It emerged from the decisions I made while designing and implementing the product.

Design Principles

01

AI doesn't fail for one reason

I stopped treating AI uncertainty as one problem and split it into four: what the AI knows, what the guest means, what it remembers, and whether its decision matches reality. Each required a different response: retrieval, conversation design, state, and recovery. There was no single safeguard for “AI uncertainty.”

02

Engineering changed how I design UX

Building the system revealed how much of the product lived beneath the screen: prompt design, the boundary between deterministic code and probabilistic logic. The interface is where people experience the product; the system is where that experience gets created.

03

UX follows mental models, not system models

The system's internal logic didn't always match how people understood the task. Replacing a request was technically a cancel-and-recreate flow, but guests experienced it as a single modification. Likewise, departments worked from task queues, while Front Desk worked through conversations. When the system model and the user's mental model diverged, I let the interface follow the person, not the data structure.

04

Human judgment is part of the architecture

I intentionally kept certain decisions human: approving new knowledge, deciding whether an in-progress request could still be cancelled, and authorizing department reassignments. Human involvement wasn't a fallback for AI failure. When a decision required operational context or authority, I designed human judgment into the system from the start.

Beyond hospitality

The same problems exist beyond hospitality

The architecture was designed for hotel operations, but the underlying problems weren’t hotel-specific: incomplete knowledge, ambiguous intent, fading context, and decisions that can diverge from reality. The same patterns appear wherever AI turns uncertain input into real-world action, from customer support and logistics to healthcare, finance, and enterprise operations.

Designing Around Communication

This project was about how information moves inside a hotel: who has to carry it, what falls out along the way, and what a system has to hold so nobody repeats themselves. Sizing the opportunity is what justified building it. Since it has not run in a hotel, those are still predictions, so they sit here next to the readings that would tell me whether they were right.

What I predictedModelled, not measured
4.4m → 1.0m

Average request handling time

Modelled by resolving a request at the first point of contact instead of relaying it, using the task analysis as the starting point.
25 – 42 hrs

Daily operational work, 200-room hotel

Modelled from the share of front desk work that is repeated communication, scaled to a property of that size.
How I would check it
Not yet measured

Time from asking to being picked up

Today a request is posted in a group chat, and nobody records when it was read or claimed. Establishing this baseline is the first thing a pilot would do, because every other number is judged against it.

Fails ifIf a request here is not picked up faster than the same request in the group chat, the hotel should keep the group chat.
100% today

Requests that pass through the front desk

Every request currently goes through one person, who takes the call and relays it. This is the one baseline I can state with confidence, and it is the number the product exists to move.

Fails ifIf the front desk still touches most requests, the routing is not doing its job and is only adding a screen.
Every shift

Handovers typed a second time

Shift notes are written from scratch into a Word file or the remarks field of the property system, separately from the work itself. The briefing is meant to make that a byproduct.

Fails ifIf staff are still writing the handover by hand after a month, the record was not actually a byproduct.

A prediction without a test is a wish. Defining both before launch is the part I could do without a hotel, and if the readings come back against the model, the model was wrong and the design has to answer for it.

Where this stands

What I still don't know

Those are readings I would take, not readings I have. This system has never run a real guest's request, and I would rather say that plainly than let a model stand in for evidence.

  • Whether guests would use it at all. The whole product rests on the assumption that a guest who currently walks down to the lobby would type instead. I could reason about that, not watch it.
  • Whether the pull model survives scale. Five people in a group chat sort themselves out. I do not know the headcount at which broadcasting stops working and someone has to start assigning.
  • What breaks over a full week. I saw the workflow described, not lived. The failures that matter in operations are usually the ones that only show up on the third bad night.

We did not secure a hotel pilot, so live adoption and operational impact remain untested. That is a fact about this market rather than an obstacle I could design around, and it is worth stating plainly: the barrier to validating an operations product is not the design, it is being trusted with a live shift.