
Implementation Guide: Handle guest messaging end-to-end within defined scope
Step-by-step implementation guide for deploying AI to handle guest messaging end-to-end within defined scope for Hospitality clients.
Hardware Procurement
Business-Class Firewall/Router
$350 MSP cost / $525 suggested resale
Perimeter firewall providing stateful inspection, VLAN routing, VPN connectivity for PMS-to-cloud API traffic, and intrusion prevention. Required for PCI DSS 4.0.1 network segmentation between guest WiFi, staff operations, and PMS/payment traffic.
Managed PoE+ Switch
$400 MSP cost / $600 suggested resale
24-port managed switch with PoE+ for powering wireless access points and IP phones. Supports VLAN configuration to segment guest, staff, PMS, and IoT traffic per PCI DSS requirements.
WiFi 6 Access Points
$150 per unit MSP cost / $225 per unit suggested resale (8 units for ~120-room property at 1 AP per 15 rooms)
Enterprise-grade wireless coverage for staff tablets/phones used to access the AI messaging escalation inbox. Also provides reliable guest WiFi which drives webchat widget engagement. Placement: lobby, front desk, each floor hallway, pool/restaurant areas.
Staff Tablets
$329 per unit MSP cost / $449 per unit suggested resale
Deployed at front desk (2), concierge station (1), and housekeeping manager (1) for accessing the AI messaging platform's unified escalation inbox. Staff use these to monitor AI conversations, handle escalated requests, and manage guest check-in workflows.
Tablet Floor Stand with Lock
$85 per unit MSP cost / $135 per unit suggested resale
Secure mounting for front desk tablets to prevent theft and ensure consistent availability. Adjustable height with cable routing for charging.
Tablet Desk Mount with Lock
$120 per unit MSP cost / $180 per unit suggested resale
Desk-mounted secure tablet enclosure for concierge and housekeeping manager stations. Allows 360-degree rotation for staff visibility.
Lobby Self-Service Kiosk
$950 MSP cost / $1,500 suggested resale
Optional lobby kiosk running the AI messaging platform's webchat interface for walk-in guests and self-service digital check-in. Provides an additional touchpoint that funnels guests into the AI messaging system.
UPS Battery Backup
$550 MSP cost / $800 suggested resale
Battery backup for network switch, firewall, and any on-premises PMS server to ensure messaging platform connectivity during power fluctuations. Provides 15–20 minutes of runtime for graceful shutdown or generator switchover.
Software Procurement
Akia AI Guest Messaging Platform (Primary - SMB/Boutique)
$3–$8 per room/month (Silver/Gold tier recommended); ~$360–$960/month for 120-room property. MSP resale at 20–25% markup.
Primary AI guest messaging platform for properties under 150 rooms. Handles autonomous guest messaging across SMS, WhatsApp, and webchat. Includes AI-powered auto-responses, Mini Apps for digital check-in, unified inbox for staff escalation, and PMS integration. Silver tier includes unified inbox; Gold tier adds custom branding and advanced workflows.
Canary Technologies AI Guest Messaging + AI Voice (Alternative - Mid-Market/Chain)
$500–$1,200/month for 120–200 room property (messaging + upsells modules). Custom enterprise pricing for chains. MSP resale at 15–20% markup.
SaaS - custom quote based on property size and modules
Market-leading AI guest messaging platform for mid-market and chain properties. Automates 80%+ of guest communications across SMS, email, webchat, and voice. Includes AI Voice for phone call handling, dynamic upsell engine, contactless check-in, and white-label branding. Best for properties needing voice + text combined or chain-wide standardization.
Twilio Programmable Messaging
SMS: $0.0079/message sent + $0.0079/message received; WhatsApp: $0.005/message + Meta conversation fees (~$0.02–$0.08/conversation). Typical 120-room hotel: $50–$200/month. Pass through to client at 15% markup.
Underlying SMS and WhatsApp message delivery infrastructure. Many AI messaging platforms (Akia, Conduit) use Twilio under the hood, but if the platform requires you to bring your own Twilio account, this is the direct procurement. Also needed for custom automation workflows.
Twilio Phone Number
$1.15/month per local number; $2.15/month per toll-free number. One-time: $0 for local, $0 for toll-free.
Dedicated phone number for the hotel's AI messaging system. Guests text this number for in-stay requests. Can port existing hotel SMS-capable number or provision new one.
WhatsApp Business API Account
$0.02–$0.08 per conversation (varies by country/category). Typical: $30–$100/month for international properties. Setup: free via BSP.
Required for WhatsApp channel activation. Increasingly standard for international guests and European properties. The AI messaging platform sends/receives WhatsApp messages through this API.
UniFi Network Application (Controller)
$0 (included with UniFi hardware) or $29/month for UniFi Site Manager cloud hosting
Centralized management of all Ubiquiti network hardware (APs, switch). Enables MSP remote monitoring, firmware updates, VLAN configuration, and client network visibility. Cloud-hosted option preferred for MSP remote management.
Microsoft Intune (MDM)
$8/device/month standalone or included in M365 Business Premium at $22/user/month. 4 tablets = $32/month standalone.
Mobile Device Management for hotel staff tablets. Enforces security policies, manages app deployment (AI messaging app, PMS app), enables remote wipe, and ensures compliance with hotel IT policies.
FortiGate Cloud / FortiAnalyzer
FortiCare Bundle for FG-40F: $200–$350/year
Cloud-based firewall management, logging, and threat analytics. Enables MSP remote monitoring, configuration backup, and PCI DSS audit trail for network security events. License type: SaaS - included with FortiCare subscription.
OpenAI API (for custom workflow components)
GPT-5.4 mini: $0.15/1M input tokens, $0.60/1M output tokens. Typical hotel custom workflows: $10–$50/month. GPT-5.4: $2.50/1M input tokens, $10/1M output for complex tasks.
Used for custom AI components built alongside the primary messaging platform—such as review response generation, staff briefing summaries, and knowledge base content generation. Not required if using only the primary platform's built-in AI.
n8n Workflow Automation
Cloud Starter: $24/month; Pro: $60/month. Self-hosted: free (requires hosting).
Workflow automation engine for orchestrating custom integrations between the AI messaging platform, PMS, housekeeping systems, and notification channels that are not natively supported by the primary platform. Used for advanced automation scenarios like multi-system task routing.
Prerequisites
- Active cloud-based PMS with API access enabled (Oracle OPERA Cloud, Mews, Cloudbeds, roomMaster, or StayNTouch). If using legacy on-premises OPERA 5, confirm VPN connectivity and API gateway availability before proceeding.
- Minimum 100 Mbps dedicated business internet connection with 99.9%+ uptime SLA. A secondary failover ISP is strongly recommended for properties where messaging uptime is business-critical.
- Existing hotel phone number(s) that can be ported or forwarded for SMS/voice AI. Confirm with current telco that numbers are SMS-capable and can be ported to Twilio.
- Hotel general manager or operations manager designated as project stakeholder with authority to approve: (a) guest-facing message templates and tone of voice, (b) scope of autonomous AI decisions (e.g., max comp value, allowed request types), (c) escalation policies and staff response time SLAs.
- Complete inventory of hotel FAQs, policies, and operational information: check-in/check-out times, cancellation policy, parking details, WiFi instructions, restaurant hours, pool/gym hours, pet policy, smoking policy, local attraction recommendations, shuttle schedules, room service menu, and any seasonal/event-specific information.
- PMS administrator credentials or API key provisioning access. The MSP technician will need: (a) API client ID and secret for the PMS, (b) webhook endpoint configuration capability, (c) read access to reservations, guest profiles, room status, and folios.
- Credit card or billing account for Twilio (or confirmation that the AI messaging platform includes messaging infrastructure in their pricing).
- For WhatsApp channel: Facebook Business Manager account linked to the hotel, with a verified business phone number. WhatsApp Business API approval typically takes 1–5 business days.
- Staff email addresses for all users who will access the AI messaging escalation inbox (typically 4–8 users: front desk agents, concierge, housekeeping supervisor, GM, duty manager).
- Physical site survey completed: Ethernet drops at front desk, concierge, and network closet confirmed. Power outlets available for AP placement locations. Network closet has adequate ventilation and power.
- PCI DSS 4.0.1 self-assessment questionnaire (SAQ) completed or scheduled. Confirm current PCI compliance status and identify any gaps that this deployment must not worsen.
- Written guest data privacy policy reviewed by hotel management or legal counsel, covering: AI chatbot disclosure, data collection scope, retention periods, and opt-out mechanisms. Template will be provided during implementation.
Installation Steps
Step 1: Network Infrastructure Assessment and VLAN Design
Conduct a physical and logical network assessment of the hotel property. Document existing network topology, internet service details, switch infrastructure, and wireless coverage. Design the VLAN architecture that will segment traffic for PCI DSS compliance and optimal performance. Create four VLANs: Guest WiFi (VLAN 100), Staff Operations (VLAN 200), PMS/Payment Systems (VLAN 300), and IoT/Smart Locks (VLAN 400).
Network discovery scan, bandwidth baseline, and VLAN design reference
If the property already has a managed network with VLANs, adapt the existing scheme rather than replacing it. The key requirement is that guest WiFi traffic is fully isolated from PMS/payment traffic. For properties with fewer than 50 rooms, a simpler two-VLAN setup (Guest vs. Everything Else) may suffice. Document all findings in the MSP's documentation platform before proceeding.
Step 2: Install and Configure FortiGate 40F Firewall
Rack-mount or desktop-deploy the FortiGate 40F firewall. Connect WAN port to the ISP modem/handoff. Configure LAN interfaces with VLAN sub-interfaces. Set up firewall policies that allow the AI messaging platform's cloud endpoints (HTTPS/443 outbound), PMS API traffic, and block unauthorized inter-VLAN routing. Enable IPS and web filtering. Register the device with FortiCloud for MSP remote management.
# Initial setup via console cable (115200 baud) or default IP https://192.168.1.99
# Set hostname and management credentials
config system global
set hostname Hotel-FW-01
set timezone 12
set admin-sport 8443
end
# Configure WAN interface (adjust for ISP settings)
config system interface
edit port1
set alias WAN
set mode dhcp
set allowaccess ping https ssh
next
end
# Configure LAN trunk interface with VLANs
config system interface
edit port2
set alias LAN-Trunk
set type physical
next
edit VLAN100-Guest
set vdom root
set ip 10.100.0.1 255.255.0.0
set allowaccess ping
set interface port2
set vlanid 100
next
edit VLAN200-Staff
set vdom root
set ip 10.200.0.1 255.255.255.0
set allowaccess ping https ssh
set interface port2
set vlanid 200
next
edit VLAN300-PMS
set vdom root
set ip 10.300.0.1 255.255.255.0
set allowaccess ping
set interface port2
set vlanid 300
next
edit VLAN400-IoT
set vdom root
set ip 10.400.0.1 255.255.255.0
set allowaccess ping
set interface port2
set vlanid 400
next
end
# DHCP server for Staff VLAN
config system dhcp server
edit 1
set interface VLAN200-Staff
config ip-range
edit 1
set start-ip 10.200.0.100
set end-ip 10.200.0.200
next
end
set default-gateway 10.200.0.1
set dns-server1 8.8.8.8
set dns-server2 8.8.4.4
next
end
# Firewall policy: Staff VLAN -> Internet (for AI messaging platform access)
config firewall policy
edit 1
set name Staff-to-Internet
set srcintf VLAN200-Staff
set dstintf port1
set srcaddr all
set dstaddr all
set action accept
set schedule always
set service HTTPS HTTP DNS
set nat enable
set utm-status enable
set ips-sensor default
set ssl-ssh-profile certificate-inspection
next
end
# Firewall policy: PMS VLAN -> Internet (restricted to PMS cloud + AI platform APIs)
config firewall policy
edit 2
set name PMS-to-Cloud
set srcintf VLAN300-PMS
set dstintf port1
set srcaddr all
set dstaddr all
set action accept
set schedule always
set service HTTPS
set nat enable
set utm-status enable
set ips-sensor default
next
end
# DENY Guest VLAN -> Staff/PMS VLANs (critical for PCI)
config firewall policy
edit 10
set name Block-Guest-to-Internal
set srcintf VLAN100-Guest
set dstintf VLAN200-Staff VLAN300-PMS VLAN400-IoT
set srcaddr all
set dstaddr all
set action deny
set schedule always
set service ALL
next
end
# Register with FortiCloud
exec forticloud registerAdjust firewall rules based on specific AI messaging vendor IP ranges if available (most use major cloud providers like AWS/GCP so IP-based restrictions are impractical; rely on HTTPS inspection instead). Ensure FortiCare subscription is active for firmware updates and FortiCloud remote management. Save a backup configuration after setup: 'exec backup config flash'. If the property already has a capable firewall, skip this step and apply equivalent VLAN and policy configurations to the existing device.
Step 3: Deploy and Configure Ubiquiti Network Switch and Access Points
Install the USW-Pro-24-PoE switch in the network closet. Connect uplink to the FortiGate LAN trunk port. Configure VLANs on switch ports matching the firewall VLAN design. Deploy U6-Pro access points throughout the property, connecting each to PoE switch ports. Adopt all devices into the UniFi Network controller and configure wireless networks per VLAN.
- Settings > Networks > Create New Network: Name: Guest-WiFi | VLAN ID: 100 | Subnet: 10.100.0.0/16 | DHCP: FortiGate (10.100.0.1)
- Settings > Networks > Create New Network: Name: Staff-Ops | VLAN ID: 200 | Subnet: 10.200.0.0/24 | DHCP: FortiGate (10.200.0.1)
- Settings > Networks > Create New Network: Name: PMS-Net | VLAN ID: 300 | Subnet: 10.300.0.0/24 | DHCP: FortiGate (10.300.0.1)
- Settings > Networks > Create New Network: Name: IoT-Net | VLAN ID: 400 | Subnet: 10.400.0.0/24 | DHCP: FortiGate (10.400.0.1)
- Settings > WiFi > Create New WiFi Network: SSID: [HotelName]-Guest | Network: Guest-WiFi | Security: WPA2 | Guest Policy: ON
- Settings > WiFi > Create New WiFi Network: SSID: [HotelName]-Staff | Network: Staff-Ops | Security: WPA2-Enterprise or WPA2-PSK
Switch Port Profiles:
Ports 1-2: Trunk (All VLANs) - uplinks
Ports 3-10: Staff-Ops (VLAN 200 native) - front desk PCs, tablets
Ports 11-16: PMS-Net (VLAN 300 native) - PMS terminals, payment devices
Ports 17-24: Trunk (VLAN 100, 200) - AP connections (tagged Guest + Staff WiFi)For properties with existing Ubiquiti or Cisco Meraki infrastructure, integrate with the existing controller rather than deploying new. AP placement should follow a site survey—install APs in hallway ceilings every 40–50 feet for optimal coverage. Use the UniFi Design Center tool (design.ui.com) for pre-deployment RF planning. Label all switch ports clearly and document the port map in the MSP documentation system.
Step 4: Provision Twilio Account and Phone Number
Create a Twilio account (or use existing MSP sub-account structure), provision a local or toll-free phone number for the hotel, configure the number for SMS capability, and set up the messaging service that the AI platform will use. If the hotel wants to keep their existing number, initiate a number port to Twilio.
Account SID: ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Auth Token: (from sub-account)
Phone Number: +1XXXXXXXXXX
Messaging Service SID: MGXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXA2P 10DLC registration is mandatory for US SMS and takes 1–5 business days. Start this early in the project. If the hotel wants to port their existing number, initiate the port request on Day 1—ports can take 1–4 weeks. For international properties, also register a WhatsApp Business number. Twilio sub-accounts allow the MSP to manage billing centrally while keeping client data separated. Store all credentials securely in the MSP's password manager (e.g., IT Glue, Hudu).
Step 5: Set Up PMS API Access and Test Connectivity
Work with the hotel's PMS administrator to enable API access for the AI messaging platform. Obtain API credentials, configure webhook endpoints, and test basic data retrieval (reservations, guest profiles, room status). This is the most critical integration and the most likely source of delays.
For Mews PMS
curl -X POST https://api.mews.com/api/connector/v1/reservations/getAll \
-H 'Content-Type: application/json' \
-d '{
"ClientToken": "YOUR_CLIENT_TOKEN",
"AccessToken": "YOUR_ACCESS_TOKEN",
"Client": "AI-Messaging-Integration",
"StartUtc": "2025-01-01T00:00:00Z",
"EndUtc": "2025-01-02T00:00:00Z"
}'For Oracle OPERA Cloud
curl -X POST https://[region].oraclehospitality.com/oauth/v1/tokens \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'grant_type=client_credentials&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET'For Cloudbeds
curl -X GET 'https://api.cloudbeds.com/api/v1.2/getReservations?status=confirmed' \
-H 'Authorization: Bearer YOUR_API_KEY'Verify You Can Retrieve
- Current reservations (today + next 7 days)
- Guest profile data (name, email, phone)
- Room status (clean, dirty, occupied, vacant)
- Folio/billing data (for upsell context)
PMS API access is the #1 risk item for timeline delays. Some PMS vendors (especially Oracle OPERA) require partner registration and certification that can take 2–4 weeks. Start this process in Week 1, even before hardware arrives. If using a Tier 1 AI messaging platform (Akia, Canary, Duve), they typically have pre-built certified integrations—request the vendor's integration team handle the PMS connection directly. Document all API credentials in the MSP password manager with expiration dates and renewal procedures. For legacy on-premises PMS without APIs, investigate middleware solutions like Hapi or myDigitalOffice that expose PMS data via REST APIs.
Step 6: Deploy and Configure AI Guest Messaging Platform (Akia - Primary)
Create the hotel's Akia account, configure the property profile, connect the PMS integration, set up messaging channels (SMS, webchat, WhatsApp), customize the AI knowledge base, and configure automated message flows for the guest journey. This is the core of the deployment and will take the most configuration time.
<!-- install before </body> on hotel website -->
<script src='https://chat.akia.com/widget/[PROPERTY_ID].js'></script>Spend significant time on Step 7 (Knowledge Base) and Step 8 (Automated Flows)—these define the quality of the guest experience. Work closely with the hotel GM and front desk manager to capture the property's unique voice, policies, and local knowledge. The AI will only be as good as the knowledge base you build. Plan 2–3 working sessions of 2 hours each with hotel operations leadership to refine the knowledge base content. For Canary Technologies deployment, the configuration flow is similar but uses Canary's dashboard—their implementation team provides guided onboarding and typically handles PMS integration directly.
Step 7: Configure Staff Escalation Inbox and User Accounts
Create user accounts for all hotel staff who will handle escalated conversations. Configure the unified inbox interface, set up notification preferences, define shift schedules for routing, and install the Akia app on staff tablets.
Staff adoption is the most common failure point for AI messaging projects. The escalation inbox must feel effortless to use or staff will ignore it. Keep the app on the tablet home screen, configure aggressive notification sounds for escalations, and set up a visible 'unresponded conversations' counter. During the soft launch phase, have the MSP technician on-site or on-call to troubleshoot staff workflow issues in real-time. Consider printing a one-page quick reference card for each staff station covering: how to pick up an escalated conversation, how to resolve and close it, how to transfer to another department.
Step 8: Install Webchat Widget on Hotel Website
Deploy the AI messaging webchat widget on the hotel's website. This provides a direct channel for potential guests browsing the website to interact with the AI agent for pre-booking questions, availability inquiries, and direct booking assistance.
<script>
(function(w,d,s,o,f,js,fjs){
w['AkiaWidget']=o;w[o]=w[o]||function(){
(w[o].q=w[o].q||[]).push(arguments)};
js=d.createElement(s),fjs=d.getElementsByTagName(s)[0];
js.id=o;js.src=f;js.async=1;fjs.parentNode.insertBefore(js,fjs);
}(window,document,'script','akia','https://chat.akia.com/widget/PROPERTY_ID.js'));
akia('init', { propertyId: 'PROPERTY_ID', theme: 'custom', primaryColor: '#1a5276' });
</script>echo '<script src="https://chat.akia.com/widget/PROPERTY_ID.js"></script>' >> footer-include.htmlCoordinate with the hotel's web developer or marketing team for website access. If the hotel uses a third-party booking engine overlay (SynXis, Cloudbeds BE), ensure the widget doesn't conflict with the booking engine's UI. Test on mobile devices extensively—over 60% of hotel website traffic is mobile. Consider adding a 'Text us' call-to-action with the Twilio number on the hotel's Google Business Profile and social media bios.
Step 9: Build and Test AI Knowledge Base
This is the most labor-intensive and highest-impact step. Populate the AI agent's knowledge base with comprehensive hotel-specific information so it can accurately and helpfully respond to guest inquiries autonomously. Work directly with hotel operations leadership to capture all necessary information.
- In Akia Dashboard > AI Settings > Knowledge Base, create the following categories and articles:
- CATEGORY: Property Information — Articles: Hotel Overview (address, phone, description, star rating, brand); Check-in / Check-out Times (standard + early/late policies + fees); Parking (valet/self-park, rates, EV charging, height restrictions); WiFi (network name, password, troubleshooting steps); Pet Policy (allowed?, fee, weight limit, designated areas); Smoking Policy (smoke-free property? designated areas?); ADA Accessibility (accessible rooms, facilities, services)
- CATEGORY: Rooms & Amenities — Articles: Room Types (descriptions, bed configurations, max occupancy, views); In-Room Amenities (coffee maker, mini bar, safe, iron, hair dryer); Room Requests (extra pillows, towels, rollaway bed, crib - and how to request); Pool & Hot Tub (hours, rules, towel policy, seasonal availability); Fitness Center (hours, equipment list, any personal trainer services); Spa (services menu, hours, booking process, pricing); Business Center (hours, printing, fax, meeting rooms); Laundry (self-service location, valet laundry pricing and turnaround)
- CATEGORY: Dining — Articles: On-Site Restaurant (name, cuisine, hours, dress code, reservation policy); Room Service (hours, menu highlights, ordering instructions); Bar/Lounge (hours, happy hour details, dress code); Breakfast (included?, hours, location, menu type); Coffee Shop (hours, location); Nearby Restaurants (top 5–10 with cuisine type, distance, price range)
- CATEGORY: Local Area & Activities — Articles: Getting Here (directions from airport, train station, highway); Airport Shuttle (schedule, booking, cost, pickup location); Local Attractions (top 10 with descriptions, distance, hours, ticket prices); Shopping (nearby malls, boutiques, convenience stores); Nightlife (bars, clubs, entertainment venues); Events & Conferences (nearby convention center, current events); Weather & What to Pack (seasonal guidance)
- CATEGORY: Services & Requests — Articles: Housekeeping Requests (extra cleaning, towels, DND preferences); Maintenance Issues (how to report, what constitutes emergency); Lost & Found (process, contact, timeline); Concierge Services (tour booking, restaurant reservations, tickets); Transportation (taxi, Uber/Lyft, car rental, shuttle schedules); Package & Mail Handling
- CATEGORY: Policies — Articles: Cancellation Policy (by rate type: flexible, non-refundable, group); Payment Methods Accepted; Incidental Hold / Authorization Amount; Noise Policy & Quiet Hours; Visitor/Guest Policy; Maximum Occupancy Rules
- CATEGORY: Troubleshooting — Articles: WiFi Not Working (step-by-step troubleshooting); Room Key Not Working (quick fixes + front desk contact); AC/Heat Not Working (thermostat instructions + maintenance request); TV/Entertainment System (channel guide, streaming instructions); Safe Instructions (how to set/reset code)
- After populating, test with at least 50 sample questions:
- 'What time is checkout?' → expects: check-out time + late checkout offer
- 'Do you have parking?' → expects: parking options + rates
- 'Can I bring my dog?' → expects: pet policy + fee details
- 'What restaurants are nearby?' → expects: local dining recommendations
- 'I need more towels' → expects: creates housekeeping request + ETA
This knowledge base is a living document that must be updated whenever hotel policies, hours, or amenities change. Create a shared document (Google Doc or Notion page) with the hotel operations team where they can flag changes, and establish a monthly review cadence. The quality of AI responses is directly proportional to the comprehensiveness and accuracy of this knowledge base. Allocate 6–10 hours for initial knowledge base population with hotel staff. Include seasonal variations (pool hours change in winter, restaurant holiday hours, etc.) with date-based activation rules if the platform supports them.
Step 10: Configure Automated Upsell and Revenue Workflows
Set up automated upsell offers that the AI agent will present to guests at optimal moments during their journey. These offers generate incremental revenue for the hotel and demonstrate clear ROI for the AI messaging investment.
Upsell revenue is the primary ROI metric hotels care about. Track upsell conversion rates in the Akia analytics dashboard and report monthly. Industry benchmarks: early check-in converts at 15–25%, late checkout at 20–30%, room upgrades at 8–15%. At $8–$15 incremental revenue per room night, a 120-room hotel at 70% occupancy can generate $8,000–$15,000/month in upsell revenue. This alone often covers the entire cost of the AI messaging platform multiple times over.
Step 11: Staff Training and Soft Launch
Conduct training sessions with hotel staff on the AI messaging system. Run a soft launch with a limited room block to validate the system in production before full rollout. Monitor AI accuracy, staff response times, and guest satisfaction during the soft launch period.
Training Session Agenda (2 hours)
# Day 1-2: AI messaging enabled for 20% of arriving guests (specific room block)
# Day 3-4: Expand to 50% of arrivals
# Day 5-7: Expand to 100% of arrivalsSoft Launch Monitoring Metrics & Targets
During the soft launch, assign one MSP technician as a dedicated monitor who reviews AI conversations in real-time for the first 2–3 days. This person should have the authority to immediately update the knowledge base when the AI gives wrong answers. Staff training is not a one-time event—schedule a 30-minute refresher session 2 weeks after go-live and another at 6 weeks. Create a laminated quick-reference card for each staff station with the top 5 actions they need to know (pick up escalation, close conversation, flag AI error, send manual message, check analytics).
Step 12: Full Deployment, Analytics Configuration, and Go-Live
After successful soft launch validation, enable AI messaging for all guests across all channels. Configure analytics dashboards and automated reporting for the hotel management team and MSP monthly review. Establish baseline KPIs and success criteria.
Go-live day should not coincide with high-occupancy periods (avoid holidays, convention weeks, or major events). Ideal go-live timing: a mid-week period with 50–70% expected occupancy. Ensure the MSP has a technician available on-call for the first 48 hours of full deployment. Print QR code table cards or in-room cards that say 'Need anything? Text us at [number] or scan to chat' and distribute to all rooms. The first month's data will establish baselines—do not make major changes during the first 2 weeks of full deployment unless there are critical errors.
Custom AI Components
Hotel Knowledge Base Schema
Type: prompt
Structured knowledge base template that defines how hotel-specific information is organized and fed to the AI agent. This ensures comprehensive coverage of all guest inquiry categories and enables consistent AI responses. Used to populate the AI messaging platform's knowledge base in Step 9.
Implementation:
# Hotel Knowledge Base Schema for AI Guest Messaging Agent
# Use this template to gather all property-specific information
# Each section maps to a knowledge base category in the AI platform
---SECTION 1: PROPERTY OVERVIEW
- Property Name: [Full legal name and brand affiliation]
- Address: [Full address with zip code]
- Phone: [Main number]
- Email: [General email]
- Star Rating: [Official rating]
- Brief Description: [2-3 sentence elevator pitch for the property]
- Unique Selling Points: [What makes this property special - list 3-5]
- Total Rooms: [Number]
- Number of Floors: [Number]
- Year Built / Last Renovated: [Year]
SECTION 2: CHECK-IN / CHECK-OUT
- Standard Check-in Time: [e.g., 3:00 PM]
- Standard Checkout Time: [e.g., 11:00 AM]
- Early Check-in Policy: [Available? Fee? How early? Must request in advance?]
- Late Checkout Policy: [Available? Fee? How late? Subject to availability?]
- Digital/Mobile Check-in: [Available? Process description]
- ID Requirements: [Government-issued photo ID, credit card at check-in]
- Age Requirement: [Minimum age to check in, typically 18 or 21]
- After-Hours Check-in: [Process if arriving after front desk hours]
SECTION 3: ROOM TYPES (repeat for each room type)
- Room Type Name: [e.g., Deluxe King]
- Description: [2-3 sentences]
- Bed Configuration: [e.g., 1 King bed]
- Max Occupancy: [Adults + Children]
- Room Size: [Square feet/meters]
- View: [City/Ocean/Garden/Courtyard/None]
- Floor(s): [Which floors]
- Key Amenities: [List all in-room amenities]
- ADA Accessible Version: [Available? How many?]
SECTION 4: IN-ROOM AMENITIES (master list)
SECTION 5: WIFI INSTRUCTIONS
- Network Name: [SSID]
- Password: [If applicable]
- Connection Steps: [Step-by-step for guests]
Troubleshooting: [Common issues and fixes]
- Bandwidth: [Adequate for streaming? Any restrictions?]
- Premium WiFi: [Available? Cost?]
SECTION 6: DINING
On-Site Restaurant(s) (repeat for each)
- Name: [Restaurant name]
- Cuisine Type: [e.g., Mediterranean]
- Hours: [Breakfast/Lunch/Dinner with times]
- Dress Code: [Smart casual, etc.]
- Reservation Required: [Yes/No, how to book]
- Menu Highlights: [3-5 popular items]
- Dietary Accommodations: [Vegetarian, vegan, gluten-free, kosher, halal]
Room Service
- Hours: [24-hour or limited]
- Ordering: [Dial ext, use app, text us]
- Delivery Time: [Typical wait]
- Tray Pickup: [Instructions for when done]
Breakfast
- Included: [Yes/No, which rate plans]
- Type: [Buffet/Continental/A la carte]
- Hours: [Time range]
- Location: [Restaurant name/floor]
Bar/Lounge
- Name: [Bar name]
- Hours: [Opening/closing]
- Happy Hour: [Times, specials]
- Dress Code: [If applicable]
SECTION 7: HOTEL AMENITIES
Pool
- Type: [Indoor/Outdoor/Both]
- Hours: [Opening/closing]
- Seasonal: [Open year-round or seasonal dates]
- Towels: [Provided at pool or bring from room]
- Rules: [No glass, lifeguard on duty?, children policy]
- Hot Tub: [Available? Hours? Capacity?]
Fitness Center
- Hours: [e.g., 24 hours with room key access]
- Equipment: [List major equipment]
- Towels/Water: [Provided?]
- Personal Trainer: [Available? How to book?]
Spa
- Hours: [Operating hours]
- Services: [Top services with approximate pricing]
- Booking: [How to book - phone, app, concierge]
- Cancellation: [Spa cancellation policy]
Business Center
- Hours: [Operating hours]
- Services: [Printing, fax, computer access]
- Meeting Rooms: [Available? Capacity? Booking process?]
SECTION 8: PARKING & TRANSPORTATION
- Self-Parking: [Available? Rate per day? Location?]
- Valet Parking: [Available? Rate per day? Hours?]
- EV Charging: [Available? Number of stations? Cost? Type (Level 2/DC Fast)?]
- Height Restrictions: [Garage clearance if applicable]
- Oversized Vehicle: [Policy for RVs, buses]
- Airport Shuttle: [Available? Schedule? Cost? Booking required?]
- Local Shuttle: [Complimentary area shuttle? Radius? Hours?]
- Taxi/Rideshare: [Pickup location, estimated costs to key destinations]
- Car Rental: [On-site or nearby? Partner company?]
- Public Transit: [Nearest stop/station, directions]
SECTION 9: LOCAL AREA
Nearby Attractions (list top 10)
- Name: [Attraction]
- Type: [Museum/Park/Entertainment/Shopping]
- Distance: [Miles/minutes from hotel]
- Hours: [Operating hours]
- Ticket Price: [Approximate, or if hotel offers discounted tickets]
- Getting There: [Walk/drive/shuttle instructions]
Nearby Restaurants (top 10 off-property)
- Name: [Restaurant]
- Cuisine: [Type]
- Price Range: [$/$$/$$$]
- Distance: [Walking/driving]
- Reservation Recommended: [Yes/No]
- Hotel Guest Discount: [If applicable]
Nearby Essentials
- Pharmacy: [Nearest, with address and distance]
- Grocery Store: [Nearest]
- Convenience Store: [Nearest, or hotel gift shop]
- Hospital/Urgent Care: [Nearest, with address and phone]
SECTION 10: POLICIES
- Cancellation Policy: [By rate type] - Flexible: [e.g., Free cancellation until 6 PM day of arrival] - Non-Refundable: [No cancellation/modification] - Group: [Separate policy]
- Payment: [Accepted cards, cash policy]
- Incidental Hold: [Amount, when charged, when released]
- Pet Policy: [Allowed? Fee? Weight limit? Breed restrictions? Pet-free floors?]
- Smoking: [Property-wide non-smoking? Designated areas? Fee for violations?]
- Noise/Quiet Hours: [e.g., 10 PM - 8 AM]
- Visitor Policy: [Non-guests allowed in rooms? Lobby access?]
- Damage Policy: [How assessed and charged]
SECTION 11: SPECIAL REQUESTS & HOUSEKEEPING
- Extra Towels: [How to request, typical delivery time]
- Extra Pillows/Blankets: [Available types, request process]
- Rollaway Bed: [Available? Fee? Must request in advance?]
- Crib: [Available? Fee? Request process]
- Connecting Rooms: [Available? How to request]
- Hypoallergenic Bedding: [Available?]
- Housekeeping Schedule: [Daily? Time? Opt-out option?]
- Do Not Disturb: [How to set, policy for extended DND]
- Turndown Service: [Available? Request process?]
SECTION 12: SAFETY & EMERGENCY
- Emergency Number: [Dial 911 or front desk extension]
- Fire Exit: [General directions, noted on room door]
- First Aid: [Available at front desk]
- AED Location: [If applicable]
- Security: [24-hour? Contact method?]
- Safe Location: [In-room safe instructions]
Pre-Arrival Welcome Workflow
Type: workflow
Automated workflow that triggers 48 hours before guest arrival, sends a personalized welcome message via SMS, offers digital check-in, and presents early check-in and room upgrade upsell opportunities based on PMS reservation data and real-time room availability.
Implementation:
# Pre-Arrival Welcome Workflow
# Platform: Akia (or equivalent AI messaging platform)
# Trigger: PMS reservation sync detects arrival date = current_date + 2 daysWorkflow Definition (YAML-style configuration)
# full YAML-style configuration including trigger, steps, error handling,
# and analytics
workflow:
name: pre_arrival_welcome
trigger:
type: time_based
condition: reservation.arrival_date == today() + 2_days
time: 10:00_AM_property_timezone
filter:
- reservation.status == 'confirmed'
- reservation.channel != 'walk_in'
- guest.phone_number IS NOT NULL
- guest.opted_out_messaging != true
steps:
- step: 1
action: send_message
channel: sms # primary; fallback to email if no phone
template: |
Hi {{guest.first_name}}! 🏨 We're looking forward to welcoming you
to {{property.name}} on {{reservation.arrival_date_formatted}}!
Your reservation details:
📅 {{reservation.arrival_date_formatted}} - {{reservation.departure_date_formatted}}
🛏️ {{reservation.room_type_name}}
👥 {{reservation.adult_count}} adult(s){{#if reservation.child_count}}, {{reservation.child_count}} child(ren){{/if}}
✅ Save time at arrival — complete your digital check-in now:
{{digital_checkin_link}}
Reply to this message anytime with questions about your stay.
We're here 24/7! 💬
delay: 0
- step: 2
action: check_upsell_eligibility
delay: 30_minutes_after_step_1
conditions:
early_checkin:
check: room_availability(reservation.room_type, reservation.arrival_date, before=reservation.standard_checkin_time)
if_true: go_to_step_3a
room_upgrade:
check: upgrade_availability(reservation.room_type, reservation.arrival_date, reservation.departure_date)
if_true: go_to_step_3b
both_available:
if_true: go_to_step_3c # combined offer
neither_available:
if_true: end_workflow
- step: 3a
action: send_upsell_offer
type: early_checkin
template: |
By the way, {{guest.first_name}} — would you like to check in
early on {{reservation.arrival_date_formatted}}?
⏰ Check in as early as {{early_checkin_time}} for just ${{early_checkin_price}}.
Reply YES to add early check-in, or NO THANKS.
on_response:
'YES':
- create_upsell_charge(early_checkin_price)
- send_payment_link()
- update_reservation(early_checkin=true)
- send_confirmation: "Early check-in confirmed! See you at {{early_checkin_time}}. 🎉"
'NO THANKS':
- send_acknowledgment: "No problem! Standard check-in is at {{standard_checkin_time}}."
no_response_24h:
- end_workflow
- step: 3b
action: send_upsell_offer
type: room_upgrade
template: |
Great news, {{guest.first_name}}! 🌟 We have a {{upgrade_room_type}}
available for your dates.
Upgrade and enjoy:
{{upgrade_benefits_list}}
Just ${{upgrade_price_per_night}}/night extra ({{upgrade_total_price}} total).
Reply UPGRADE to secure it, or let me know if you have questions!
on_response:
'UPGRADE':
- create_upsell_charge(upgrade_total_price)
- send_payment_link()
- update_reservation(room_type=upgrade_room_type)
- send_confirmation: "Awesome! You've been upgraded to a {{upgrade_room_type}}! 🎊"
decline:
- send_acknowledgment: "No worries! Your {{original_room_type}} is a great choice."
- step: 3c
action: send_combined_offer
template: |
{{guest.first_name}}, we have two options to enhance your stay:
1️⃣ Early Check-in at {{early_checkin_time}} — ${{early_checkin_price}}
2️⃣ Room Upgrade to {{upgrade_room_type}} — ${{upgrade_price_per_night}}/night
3️⃣ Both! — ${{combined_price}} (save ${{combined_savings}}!)
Reply 1, 2, 3, or PASS.
on_response:
'1': trigger_step_3a_acceptance
'2': trigger_step_3b_acceptance
'3': trigger_combined_acceptance
'PASS': send_acknowledgment
error_handling:
sms_delivery_failure:
- retry_once_after: 2_hours
- if_still_failed: send_via_email
pms_api_error:
- log_error
- alert_msp_team
- skip_upsell_steps
payment_failure:
- notify_guest: "No worries — we can add this at check-in instead."
- flag_for_front_desk
analytics:
track:
- message_delivered: boolean
- message_read: boolean (if available)
- digital_checkin_completed: boolean
- upsell_offered: type
- upsell_accepted: boolean
- upsell_revenue: amount
- response_time: secondsIn-Stay Request Router Agent
Type: agent
Autonomous AI agent that receives guest messages during their stay, classifies the intent, and either handles the request directly (informational queries), creates operational tasks (housekeeping, maintenance), triggers upsell flows (spa, dining), or escalates to human staff (complaints, billing, safety). This is the core autonomous agent that handles 80%+ of in-stay communications.
Implementation:
Agent System Prompt (configure in platform's AI settings)
Full system prompt YAML — paste into your platform's AI/agent settings
Intent Classification & Routing Rules
intent_routing:
# TIER 1: AI handles autonomously (no human needed)
informational:
intents:
- hotel_hours # "What time does the pool close?"
- amenity_info # "Do you have a gym?"
- wifi_help # "What's the WiFi password?"
- directions # "How do I get to the airport?"
- local_recommendations # "Any good Italian restaurants nearby?"
- policy_question # "What's your cancellation policy?"
- room_info # "Does my room have a coffee maker?"
- checkout_info # "What time is checkout?"
- parking_info # "Where do I park?"
- dining_info # "What's on the breakfast menu?"
action: respond_from_knowledge_base
fallback: escalate_if_confidence < 0.7
# TIER 2: AI creates task + confirms with guest
service_request:
intents:
- extra_towels # "Can I get more towels?"
- extra_pillows # "I need another pillow"
- extra_amenities # "Can I get more shampoo?"
- room_cleaning # "Can someone clean my room?"
- turndown_service # "Can I get turndown service?"
action: create_housekeeping_task
response_template: |
Of course, {{guest.first_name}}! I've sent your request for
{{request_item}} to our housekeeping team. They'll be at room
{{reservation.room_number}} within {{estimated_time}}. 🙂
estimated_times:
extra_towels: "15-20 minutes"
extra_pillows: "15-20 minutes"
extra_amenities: "15-20 minutes"
room_cleaning: "30-45 minutes"
turndown_service: "by 8:00 PM"
maintenance_request:
intents:
- ac_not_working # "My AC isn't working"
- tv_not_working # "TV won't turn on"
- plumbing_issue # "Toilet is running"
- light_burned_out # "Bathroom light is out"
- key_not_working # "My room key doesn't work"
- noise_complaint # "The room next door is loud"
action: create_maintenance_task
pre_action: attempt_troubleshooting_first
troubleshooting:
ac_not_working: |
I'm sorry about that! Let's try a quick fix first:
1. Check if the thermostat is set to COOL mode
2. Try setting the temperature 5 degrees lower
3. Make sure the unit isn't blocked by curtains
Did that help, or should I send our maintenance team?
tv_not_working: |
Let me help troubleshoot:
1. Press the power button on the remote (not the TV)
2. If no response, try the TV's power button on the bottom edge
3. Check that the TV is plugged in behind the console
Still not working? I'll send someone right up!
key_not_working: |
Sorry about that! Sometimes room keys demagnetize near phones.
Please visit the front desk and they'll make you a new key
right away. They're available 24/7! 🔑
post_troubleshoot_fail:
action: create_maintenance_task + notify_front_desk
response: |
I've notified our maintenance team. Someone will be at room
{{reservation.room_number}} within {{estimated_time}}. We
apologize for the inconvenience!
# TIER 3: AI presents upsell + handles transaction
upsell_opportunity:
intents:
- spa_inquiry # "Do you have a spa?"
- dining_reservation # "Can I book dinner?"
- late_checkout_ask # "Can I check out late?"
- upgrade_inquiry # "Can I upgrade my room?"
- activity_inquiry # "What is there to do around here?"
action: present_relevant_upsell + provide_info
context_rules:
- If guest asks about spa -> provide spa info + offer booking link
- If guest asks about late checkout -> check availability + offer
- If guest mentions special occasion -> suggest celebration package
# TIER 4: MUST escalate to human
escalation_required:
intents:
- billing_dispute # "My bill is wrong"
- rate_complaint # "I was quoted a different rate"
- compensation_request # "I want a refund"
- safety_concern # "I feel unsafe" / "There's a fire"
- medical_emergency # "I need a doctor" / "Someone is hurt"
- harassment_report # "Another guest is harassing me"
- severe_complaint # "This is unacceptable" + negative sentiment
- human_request # "I want to talk to a person"
- legal_threat # "I'm going to sue" / "lawyer"
action: immediate_escalation
response: |
I understand, {{guest.first_name}}. Let me connect you with
our {{department}} team right away. Someone will be with you
within {{sla_time}}.
priority_levels:
safety_emergency: P1 # Immediate + phone call to duty manager
billing_complaint: P2 # Within 3 minutes
general_escalation: P3 # Within 5 minutes
human_preference: P3 # Within 5 minutesSentiment Detection Thresholds
sentiment_monitoring:
positive_threshold: 0.6 # Log as positive interaction
neutral_range: 0.3-0.6 # Continue normally
negative_threshold: 0.3 # Flag for review
critical_threshold: 0.15 # Auto-escalate regardless of intent
consecutive_negative: 2 # If 2+ negative messages in a row, escalateConversation Guardrails
guardrails:
max_ai_turns_without_resolution: 5 # Escalate if AI can't resolve in 5 turns
max_conversation_duration: 30_minutes # Alert supervisor if open > 30 min
profanity_handling: acknowledge_frustration_and_escalate
off_topic_handling: politely_redirect_or_escalate
pii_detection: never_repeat_credit_card_numbers_in_messages
language_detection: if_non_english_attempt_response_else_escalatePost-Stay Review Solicitation Workflow
Type: workflow
Automated workflow that triggers 24 hours after checkout, thanks the guest, solicits feedback through a satisfaction rating, and routes satisfied guests to public review platforms (Google, TripAdvisor) while routing dissatisfied guests to an internal recovery process to prevent negative public reviews.
Implementation:
# Post-Stay Review Solicitation Workflow
# Trigger: 24 hours after PMS checkout event
workflow:
name: post_stay_review
trigger:
type: event_based
event: reservation.status_changed_to_checked_out
delay: 24_hours
filter:
- reservation.stay_duration >= 1_night
- guest.phone_number IS NOT NULL
- guest.opted_out_messaging != true
- conversation.negative_escalation_unresolved != true
# Don't solicit review if there's an open complaint
steps:
- step: 1
action: send_thank_you_and_rate
channel: sms
template: |
Hi {{guest.first_name}}, thank you for staying at
{{property.name}}! 🙏
How was your experience? Reply with a number:
5 ⭐ - Excellent
4 ⭐ - Very Good
3 ⭐ - Good
2 ⭐ - Fair
1 ⭐ - Poor
timeout: 48_hours
on_no_response: end_workflow
- step: 2a
condition: response in [4, 5]
action: route_to_public_review
template: |
Wonderful, thank you! We're so glad you enjoyed your stay! 😊
Would you mind sharing your experience? It really helps
other travelers:
📝 Google: {{property.google_review_link}}
📝 TripAdvisor: {{property.tripadvisor_link}}
Thank you, {{guest.first_name}}! We hope to welcome you
back soon. 🏨
analytics:
track: promoter_review_requested
- step: 2b
condition: response == 3
action: acknowledge_and_gather_feedback
template: |
Thank you for your feedback, {{guest.first_name}}.
We always aim for excellence — is there anything
specific we could have done better?
Your input helps us improve! 🙂
on_response:
action: log_feedback
notify: hotel_gm_email
respond: |
Thank you for sharing that. I've passed your feedback
to our management team. We hope to exceed your
expectations next time!
- step: 2c
condition: response in [1, 2]
action: service_recovery_escalation
template: |
We're truly sorry your experience didn't meet expectations,
{{guest.first_name}}. Your feedback is important to us.
Could you share what went wrong? Our General Manager
would like to personally address your concerns.
on_response:
action: create_service_recovery_ticket
assign_to: general_manager
priority: HIGH
include: full_conversation_history
respond: |
Thank you for letting us know. Our General Manager,
{{gm.first_name}}, will be reaching out to you within
24 hours. We take this seriously and want to make it right.
analytics:
track: detractor_recovery_initiated
analytics:
track:
- survey_sent: count
- survey_responded: count_and_rate
- rating_distribution: [1,2,3,4,5]
- review_link_clicked: boolean
- recovery_tickets_created: count
- nps_equivalent: (5_count + 4_count - 1_count - 2_count) / totalPMS-to-Housekeeping Task Bridge
Type: integration
Integration component that bridges the AI messaging platform with the hotel's housekeeping/task management system. When a guest requests housekeeping services via the AI agent, this integration creates a structured task in the housekeeping system (Quore, Flexkeeping, or native PMS task module), tracks completion status, and sends a confirmation message to the guest when the task is completed.
Implementation:
- PMS-to-Housekeeping Task Bridge
- Implemented via n8n workflow automation or platform-native webhooks
n8n Workflow Configuration
- Trigger: Webhook from AI messaging platform
- URL: https://your-n8n-instance.com/webhook/housekeeping-task
- Method: POST
- Authentication: Header-based API key
Webhook Payload Schema (from AI messaging platform)
{
"event_type": "task_created",
"source": "ai_messaging_agent",
"timestamp": "2025-07-15T14:30:00Z",
"guest": {
"id": "guest_12345",
"first_name": "Sarah",
"last_name": "Johnson",
"room_number": "412",
"reservation_id": "res_67890",
"phone": "+15551234567",
"vip_level": "gold"
},
"task": {
"type": "housekeeping", # housekeeping | maintenance | concierge
"category": "extra_towels", # extra_towels | extra_pillows | room_cleaning | amenity_restock | turndown
"description": "Guest requested extra bath towels",
"quantity": 2,
"priority": "normal", # urgent | high | normal | low
"requested_time": null, # null = ASAP, or ISO timestamp
"original_message": "Can I get a couple more towels please?"
},
"conversation_id": "conv_abc123",
"callback_url": "https://api.akia.com/webhooks/task-update"
}n8n Workflow Steps
- Node 1: Webhook Trigger
- Type: Webhook
- HTTP Method: POST
- Path: /housekeeping-task
- Authentication: Header Auth (X-API-Key)
- Node 2: Validate Payload
- Type: IF
- Condition: {{$json.task.type}} is not empty AND {{$json.guest.room_number}} is not empty
- True: Continue
- False: Respond with 400 error
- Node 3: Route by Housekeeping System
- Type: Switch
- Based on environment variable: HOUSEKEEPING_SYSTEM
Route A: Quore Integration
- Node 3A: HTTP Request to Quore API
- Method: POST
- URL: https://api.quore.com/v1/tasks
- Headers:
- Authorization: Bearer {{$env.QUORE_API_KEY}}
- Content-Type: application/json
Body:
{
"property_id": "{{$env.QUORE_PROPERTY_ID}}",
"task_type": "guest_request",
"category": "{{$json.task.category}}",
"room": "{{$json.guest.room_number}}",
"description": "{{$json.task.description}} (Qty: {{$json.task.quantity}})",
"priority": "{{$json.task.priority}}",
"guest_name": "{{$json.guest.first_name}} {{$json.guest.last_name}}",
"source": "AI Guest Messaging",
"callback_url": "https://your-n8n-instance.com/webhook/task-completed"
}Route B: Native PMS Task Module (Mews)
- Node 3B: HTTP Request to Mews API
- Method: POST
- URL: https://api.mews.com/api/connector/v1/tasks/add
{
"ClientToken": "{{$env.MEWS_CLIENT_TOKEN}}",
"AccessToken": "{{$env.MEWS_ACCESS_TOKEN}}",
"Name": "Guest Request: {{$json.task.category}}",
"Description": "{{$json.task.description}} | Room {{$json.guest.room_number}} | Guest: {{$json.guest.first_name}}",
"DepartmentId": "{{$env.MEWS_HOUSEKEEPING_DEPT_ID}}",
"ServiceOrderId": "{{$json.guest.reservation_id}}"
}Route C: Simple Notification (no dedicated housekeeping system)
Node 3C: Send to Microsoft Teams / Slack
- Channel: #housekeeping-requests
🏨 **New Guest Request**
Room: {{$json.guest.room_number}}
Guest: {{$json.guest.first_name}} {{$json.guest.last_name}}
Request: {{$json.task.description}}
Priority: {{$json.task.priority}}
Time: {{$json.timestamp}}
React with ✅ when completed.Node 4: Log Task in Database (for tracking)
- Type: Postgres / Airtable / Google Sheets
- Action: Insert Row
- Fields: task_id, room, guest_name, category, status=pending, created_at, conversation_id
Node 5: Respond to AI Platform (acknowledge receipt)
- Type: Respond to Webhook
- Status: 200
{ "status": "accepted", "task_id": "generated_id", "estimated_minutes": 15 }Task Completion Callback Workflow (separate n8n workflow)
- Trigger: Webhook from housekeeping system on task completion
- Path: /task-completed
{ "task_id": "xxx", "completed_by": "staff_name", "completed_at": "timestamp" }- Method: POST
- URL: {{original_task.callback_url}}
{
"event_type": "task_completed",
"task_id": "xxx",
"conversation_id": "conv_abc123",
"completed_at": "2025-07-15T14:50:00Z"
}This triggers the AI platform to send the guest a completion message: "Your extra towels have been delivered to room 412! Is there anything else I can help with? 😊"
Guest Messaging AI Disclosure and Privacy Compliance Module
1. AI DISCLOSURE (EU AI Act - mandatory transparency)
First-contact disclosure message (sent before or with first AI message)
# first-contact template and identity response
ai_disclosure_template:
trigger: first_message_in_conversation
position: prepended to first AI response OR sent as separate first message
template: |
💬 Welcome to {{property.name}} messaging!
I'm an AI-powered virtual concierge here to help with your stay.
A real person is always available — just reply HUMAN at any time.
By continuing this conversation, you agree to our privacy policy:
{{property.privacy_policy_url}}
Reply STOP to opt out of messages.
# Shorter version for returning guests (already disclosed):
returning_guest_template: |
Welcome back, {{guest.first_name}}! 😊 Your AI concierge is here.
Reply HUMAN anytime for a real person, or STOP to opt out.
# When guest explicitly asks if they're talking to AI:
ai_identity_response: |
Great question! I'm {{property.name}}'s AI-powered virtual concierge.
I can help with most questions about your stay, amenities, and local area.
For anything I can't handle, I'll connect you with our team right away.
Just say HUMAN whenever you'd like to speak to a person. 🙂2. OPT-IN / OPT-OUT HANDLING (GDPR + CCPA + TCPA)
opt_out_handling:
trigger_keywords: ['STOP', 'UNSUBSCRIBE', 'OPT OUT', 'CANCEL', 'QUIT']
action:
- immediately_stop_all_automated_messages
- send_confirmation: |
You've been unsubscribed from {{property.name}} messages.
You will no longer receive automated messages.
Reply START to re-subscribe, or call us at {{property.phone}}.
- update_guest_profile: opted_out_messaging = true
- log_opt_out: timestamp, channel, guest_id
- do_NOT_send_any_further_messages (including marketing, upsells, surveys)
- exception: staff-initiated manual messages for critical stay information
(e.g., safety alerts) are still permitted under legitimate interest
opt_in_handling:
trigger_keywords: ['START', 'SUBSCRIBE', 'OPT IN']
action:
- update_guest_profile: opted_out_messaging = false
- send_confirmation: |
Welcome back! You'll now receive messages from {{property.name}}.
Reply STOP anytime to unsubscribe.CCPA Notice
For CCPA: Include 'Do Not Sell My Personal Information' link
ccpa_notice:
applicable_when: guest.state == 'CA' OR property.state == 'CA'
include_in: privacy_policy_url
action_on_request: |
If a guest requests data deletion or asks about data practices:
1. Acknowledge the request
2. Escalate to hotel management with CCPA/privacy tag
3. Response: "I've forwarded your privacy request to our management team.
They'll respond within 45 days as required. You can also email
{{property.privacy_email}} directly."3. DATA RETENTION POLICY
data_retention:
conversation_messages:
retention_period: 13_months # Balance between operational need and minimization
auto_delete: true
legal_hold_override: true # If flagged for legal, extend retention
guest_profiles:
retention_period: 36_months # Align with typical loyalty program cycle
anonymize_after: 36_months # Don't delete — anonymize for analytics
deletion_on_request: immediately # GDPR right to erasure
payment_data:
retention: NEVER_STORE # PCI DSS: Never store card data in messaging
tokenized_references: 13_months
analytics_data:
retention: aggregated_indefinitely # No PII in aggregated analytics
individual_metrics: 13_months4. PCI DSS 4.0.1 COMPLIANCE RULES
# card number detection and tokenized payment processing rules
pci_compliance:
# Rule: NEVER collect, store, display, or repeat credit card numbers in messages
card_number_detection:
pattern: '\b(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|3[47][0-9]{13}|6(?:011|5[0-9]{2})[0-9]{12})\b'
action_if_guest_sends_card_number:
- DO NOT echo or confirm the number
- immediately_respond: |
⚠️ For your security, please never share credit card numbers
via text message. I've flagged this message for secure deletion.
To make a payment, please use this secure link:
{{generate_payment_link()}}
Or visit the front desk where we can process your card safely.
- flag_message_for_deletion: true
- alert_security_team: true
- log_pci_incident: true
# Rule: Use only tokenized payment links
payment_processing:
method: tokenized_payment_links_only
providers: [stripe_payment_links, adyen_pay_by_link, shift4_secure_link]
link_expiration: 24_hours
template: |
Here's your secure payment link for {{charge_description}}:
{{payment_link}}
This link expires in 24 hours. Your card information is
processed securely and never stored in our messaging system.5. GDPR DATA SUBJECT REQUESTS
gdpr_requests:
right_to_access:
trigger_phrases: ['my data', 'what data do you have', 'data request', 'subject access']
response: |
I can help with your data request, {{guest.first_name}}.
Under GDPR, you have the right to access your personal data.
I'm connecting you with our data protection team who can
process your request within 30 days.
action: escalate_to_management(tag='GDPR_SAR')
right_to_erasure:
trigger_phrases: ['delete my data', 'forget me', 'erase my data', 'right to be forgotten']
response: |
I understand you'd like your data deleted. I've forwarded this
request to our data protection team. They'll process your
request and confirm within 30 days. You can also email
{{property.dpo_email}} for direct assistance.
action:
- escalate_to_management(tag='GDPR_ERASURE')
- create_task(department='management', priority='HIGH')6. AUDIT LOGGING
audit_log:
log_all:
- ai_disclosure_presented: timestamp, guest_id, channel
- consent_status_changes: timestamp, guest_id, old_status, new_status
- opt_out_requests: timestamp, guest_id, channel, keyword_used
- data_subject_requests: timestamp, guest_id, request_type
- pci_incidents: timestamp, guest_id, type, action_taken
- escalation_events: timestamp, guest_id, reason, assigned_to
- message_deletion_events: timestamp, reason, authorized_by
storage: platform_native + export_to_msp_siem
retention: 24_months_minimumTesting & Validation
- NETWORK TEST: From a staff tablet on VLAN 200 (Staff-Ops), confirm you can access the AI messaging platform dashboard (https://app.akia.com) with <2 second page load time. Verify that the same tablet CANNOT access devices on VLAN 300 (PMS) directly via IP.
- NETWORK TEST: From a device on VLAN 100 (Guest WiFi), attempt to access a device on VLAN 200 or VLAN 300. Confirm the connection is BLOCKED by the firewall. This validates PCI DSS network segmentation.
- SMS DELIVERY TEST: Send a test SMS to 3 different carrier numbers (AT&T, Verizon, T-Mobile) from the provisioned Twilio number. Verify delivery within 5 seconds. Reply from each number and verify the AI agent responds appropriately within 10 seconds.
- WEBCHAT TEST: Visit the hotel website in Chrome, Firefox, Safari, and on iOS/Android mobile browsers. Verify the webchat widget appears within 5 seconds, is clickable, and allows message input. Send a test message and verify AI response within 5 seconds.
- PMS SYNC TEST: Create a test reservation in the PMS with check-in date = tomorrow. Verify that within 15 minutes, the reservation appears in the AI messaging platform dashboard with correct guest name, dates, room type, and contact information.
- AI ACCURACY TEST - INFORMATIONAL: Send 20 different informational questions covering all knowledge base categories (e.g., 'What time is checkout?', 'Do you allow pets?', 'Where's the nearest pharmacy?', 'What's the WiFi password?'). Score each response for accuracy and completeness. Target: 90%+ correct answers with no fabricated information.
- AI ACCURACY TEST - SERVICE REQUESTS: Send 5 housekeeping requests ('Can I get extra towels?', 'Please clean my room', 'I need more shampoo', 'Can I get a rollaway bed?', 'Turndown service please'). Verify each creates a task in the housekeeping system with correct room number and request details.
- ESCALATION TEST: Send messages that should trigger escalation: 'I want to speak to a manager', 'My bill is wrong', 'I feel unsafe in my room', 'This is completely unacceptable'. Verify each is escalated to the human inbox within 30 seconds with correct priority level.
- AI DISCLOSURE TEST: Start a brand new conversation (new phone number). Verify the AI disclosure message is sent within or before the first AI response, clearly stating it is an AI system with a link to the privacy policy and opt-out instructions.
- OPT-OUT TEST: Send 'STOP' to the messaging number. Verify immediate opt-out confirmation is received. Then trigger a pre-arrival workflow for the opted-out guest and verify NO message is sent. Send 'START' to re-subscribe and verify confirmation.
- PCI COMPLIANCE TEST: Send a fake credit card number (use Stripe test number 4242424242424242) in a message. Verify the AI does NOT echo the number, responds with a security warning, generates a secure payment link instead, and the incident is logged.
- UPSELL WORKFLOW TEST: Create a test reservation with check-in in 2 days. Verify the pre-arrival welcome message is sent at the configured time. Respond 'YES' to the early check-in offer and verify a payment link is generated and the reservation is updated in the PMS.
- MULTI-LANGUAGE TEST (if applicable): Send messages in Spanish, French, and Mandarin. Verify the AI responds in the guest's language or gracefully escalates if the platform doesn't support that language.
- FAILOVER TEST: Temporarily block outbound HTTPS (port 443) on the firewall to simulate internet outage. Verify that queued messages are delivered once connectivity is restored, and that the MSP monitoring system generates an alert within 5 minutes.
- STAFF TABLET TEST: On each staff tablet, verify: (a) Akia app is installed and logged in, (b) push notifications are enabled and audible, (c) staff can pick up an escalated conversation and respond, (d) staff can close a resolved conversation, (e) MDM enrollment is active and device appears in Intune.
- LOAD TEST: Using the Twilio API, send 50 concurrent test messages to the AI platform and verify all receive responses within 30 seconds with no dropped messages. This simulates a busy check-in period at a 120-room property.
- AFTER-HOURS TEST: Send a guest request at 2:00 AM (outside front desk hours). Verify the AI handles the informational request autonomously. Then send an escalation-required message and verify it routes to the on-call duty manager's notification channel.
- END-TO-END GUEST JOURNEY TEST: Simulate a complete guest lifecycle: (1) receive pre-arrival welcome 48 hours before check-in, (2) complete digital check-in via link, (3) send in-stay request after check-in, (4) receive mid-stay satisfaction check, (5) receive late checkout offer before departure, (6) receive post-stay review solicitation after checkout. Verify each touchpoint fires correctly with accurate personalization.
Client Handoff
Conduct a formal 90-minute handoff session with the hotel General Manager, Front Desk Manager, and all staff who will use the escalation inbox. Cover the following topics in order:
Documentation to Leave Behind
- Printed and laminated quick-reference cards for each staff station (escalation inbox workflow, 5 key actions)
- Staff training video recording (record the dashboard training portion)
- Knowledge base update request form/process document
- Compliance quick-reference card (PCI, GDPR, opt-out handling)
- Network diagram with VLAN layout, IP addresses, and credentials location
- Vendor contact information (Akia/Canary support, Twilio support)
- Emergency procedure document (system outage, what to do if AI gives wrong info)
- Monthly reporting template with KPI targets
- Full system architecture document with all integration endpoints, API keys (referenced by password manager entry, not plaintext), and webhook URLs
Success Criteria to Review Together
Maintenance
Monthly MSP Responsibilities:
Model Retraining / Knowledge Base Refresh Triggers
- Hotel renovates or adds new amenities
- Restaurant menu or hours change
- Seasonal transitions (summer/winter pool hours, holiday schedules)
- New local attractions or events
- Policy changes (cancellation, pet, parking)
- AI accuracy drops below 80% for two consecutive weeks
- New complaint category emerges (>5 similar complaints in a month)
- Guest feedback identifies consistent AI error pattern
SLA Considerations
- Platform Uptime: 99.9% (vendor SLA) — MSP monitors and escalates to vendor
- Network Uptime: 99.5% (MSP responsibility) — redundant ISP recommended
- Knowledge Base Updates: 24-hour turnaround for standard changes, 4-hour for critical corrections
- Emergency Support: 1-hour MSP response for system-down scenarios
- Staff Support: 4-hour response for non-critical operational questions
Escalation Path
Alternatives
Canary Technologies (Mid-Market/Enterprise Alternative)
Replace Akia with Canary Technologies as the primary AI messaging platform. Canary is the market leader with a $600M valuation, 25,000+ hotel customers, and the broadest feature set including AI Voice (handles phone calls), AI Guest Messaging (SMS/email/webchat), Dynamic Upsells, Contactless Check-in, and white-label branding. Canary offers a single platform that combines text and voice AI, eliminating the need for separate voice solutions.
Tradeoffs: Higher cost ($500–$1,200/month vs. $360–$960/month for Akia) but significantly more features, especially AI Voice for handling phone calls. Better for properties with 150+ rooms, chain/brand affiliations, or high call volumes. Longer implementation timeline (2–4 weeks vs. 1–2 weeks for Akia). White-label capability is stronger, which benefits MSP branding.
- Recommend Canary when: client has 150+ rooms, needs voice AI, is part of a hotel group, or has enterprise PMS (OPERA).
- Recommend Akia when: client has <150 rooms, needs fastest deployment, is budget-conscious, or values simplicity.
HiJiffy (International/European Properties)
Replace Akia with HiJiffy for properties with significant international guest populations or European locations. HiJiffy is headquartered in Europe (GDPR-native), supports 130+ languages via its proprietary Aplysia AI engine, and serves 1,800+ hotels globally. Strong WhatsApp and Booking.com native integrations make it ideal for properties heavily reliant on OTA bookings and international travelers.
Starting at ~$100/month, HiJiffy is cost-competitive with Akia. Superior multilingual AI capabilities (130+ languages vs. limited languages in US-focused platforms). GDPR compliance is built-in rather than bolted on. However, US-market PMS integrations may be less mature than Akia or Canary. Support is European-timezone-primary.
- Recommend HiJiffy when: client is European-based, has >30% international guests, relies heavily on Booking.com/Expedia, or has strict GDPR requirements.
- Not recommended when: property is US-only with primarily domestic guests and uses OPERA or Cloudbeds (where Akia/Canary have stronger integrations).
Custom Build with Botpress + Twilio + OpenAI
Instead of a purpose-built hospitality platform, build a custom AI messaging agent using Botpress Cloud (visual chatbot builder), Twilio (messaging infrastructure), and OpenAI GPT-5.4 (LLM inference). The MSP develops and maintains the entire solution, including PMS integration via custom API code, conversation flows, knowledge base, and analytics.
Much higher implementation complexity (8–16 weeks vs. 4–8 weeks) requiring a developer with API integration experience.
Tradeoffs
- Lower monthly SaaS cost ($89/month Botpress + ~$50/month Twilio + ~$30/month OpenAI ≈ $170/month vs. $360–$1,200/month for SaaS platforms) but significantly higher MSP labor for ongoing maintenance (10+ hours/month vs. 2–4 hours/month).
- No pre-built PMS integrations—must build and maintain custom API connections.
- No hospitality-specific features (upsell engine, digital check-in, payment links) unless custom-built.
- No vendor support—MSP owns all troubleshooting.
Recommend ONLY when: client has unique requirements not met by any SaaS platform, MSP has dedicated development resources, or client operates a highly non-standard property type. Not recommended for typical hotel deployments.
Runnr.ai (Ultra-Budget European Option)
For extremely budget-conscious properties or small European hotels (under 50 rooms), Runnr.ai offers AI guest messaging automation at approximately €0.75 per room per month. Focuses primarily on WhatsApp and Booking.com inbox automation. Claims 95% automation rate and 45-minute setup time. Direct integration with OPERA Cloud, Mews, and StayNTouch.
Tradeoffs: By far the lowest cost option (€0.75/room/month = ~€37.50/month for 50-room property vs. hundreds for alternatives). Extremely fast deployment (45 minutes claimed). However, feature set is limited compared to Akia or Canary—primarily WhatsApp + Booking.com channels only, limited upsell capabilities, and less mature AI. MSP resale margin is thin due to low price point (supplement with network/support services).
Recommend when: client is a small European hotel (<50 rooms), budget is extremely tight, primary guest channel is WhatsApp/Booking.com, and property needs basic automation rather than comprehensive guest experience management.
Conduit (Voice + Text Combined)
For properties where phone call volume is a major pain point (e.g., resorts, properties with older demographics, high-service luxury hotels), Conduit (formerly HostAI) is the only platform that handles both voice calls and text-based messaging through a single AI system. The AI answers phone calls, understands spoken requests, and handles them autonomously or transfers to staff.
Tradeoffs
Starting at $500/month for self-serve (up to $2,000/month for mid-sized properties with full service), Conduit is priced comparably to Canary. The unique voice AI capability eliminates the need for a separate IVR system or phone answering service. However, voice AI is newer technology with higher error rates than text—expect 60–70% autonomous resolution on voice vs. 80%+ on text. Implementation takes 2–4 weeks including voice AI training and PMS integration.
Recommend when: client receives 50+ phone calls per day, has staffing challenges at the front desk, or specifically wants to reduce phone burden. Not recommended when: property's guest communication is primarily text/chat-based or budget is under $500/month.
Want early access to the full toolkit?