70 min readAutonomous agents

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

FortinetFortiGate 40F (FG-40F)Qty: 1

$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

UbiquitiUSW-Pro-24-PoE (USW-Pro-24-PoE)Qty: 1

$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

UbiquitiU6-Pro (U6-Pro-US)Qty: 8

$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

AppleiPad 10th Generation 64GB WiFi (MPQ03LL/A)Qty: 4

$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

CTA DigitalPAD-PARAF (Premium Locking Floor Stand)Qty: 2

$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

Maclocks303B235SMENB (Space Enclosure with Flex Arm)Qty: 2

$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

Elo Touch SolutionsElo I-Series 4 15-inch (E390075)Qty: 1

$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

APCAPC Smart-UPS 1500VA (SMT1500RM2UC)Qty: 1

$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)

AkiaSaaS - per-room monthly subscription (tiered: Bronze/Silver/Gold/Platinum)Qty: 120-room property

$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.

$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

TwilioUsage-based APIQty: Per message

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

TwilioUsage-basedQty: 1

$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

Meta (via Twilio or 360dialog BSP)Usage-based per conversation

$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)

UbiquitiUniFi Network Application

$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)

MicrosoftPer-device monthly (standalone or M365 Business Premium)Qty: 4 tablets

$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

FortinetFortiGate 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)

OpenAIGPT-5.4 mini / GPT-5.4Qty: Usage-based

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

n8n GmbHSaaS or self-hosted (open source)

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

1
Document current network state nmap -sP 192.168.1.0/24 > current_network_scan.txt
2
Speed test from main network closet speedtest-cli --simple > bandwidth_baseline.txt
3
VLAN Design Document (create in documentation) VLAN 100 - Guest WiFi: 10.100.0.0/16 (isolated, internet-only, no inter-VLAN routing) VLAN 200 - Staff Operations: 10.200.0.0/24 (tablets, staff PCs, AI messaging platform access) VLAN 300 - PMS/Payment: 10.300.0.0/24 (PMS terminal, payment gateway, restricted API access) VLAN 400 - IoT: 10.400.0.0/24 (smart locks, kiosks, sensors)
Note

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.

FortiGate 40F initial setup: hostname, WAN, VLAN interfaces, DHCP, firewall policies, and FortiCloud registration
fortios
# 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 register
Note

Adjust 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.

1
Physically install switch in rack, connect port 1 to FortiGate port2 as trunk
2
Access UniFi Network controller (cloud or local at https://unifi.local)
  • 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
UniFi Switch Port Profile Assignments
text
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)
1
Adopt each AP: Devices > Adopt > Configure
2
Set AP channel width to 80MHz on 5GHz, disable legacy 2.4GHz rates below 12Mbps
3
Enable band steering to prefer 5GHz
Note

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.

1
Log in to Twilio Console (https://console.twilio.com)
2
Create a new sub-account for the hotel client: Account > Subaccounts > Create Subaccount — Friendly Name: [HotelName]-Messaging
3
Buy a phone number: Phone Numbers > Buy a Number — Search by area code matching hotel location, ensure SMS and MMS capabilities are checked, then purchase number
4
Create a Messaging Service: Messaging > Services > Create Messaging Service — Friendly Name: [HotelName]-Guest-Messaging, Use Case: Notifications, Customer Care — Add the purchased phone number as a sender
5
Configure A2P 10DLC registration (REQUIRED for US SMS): Messaging > Trust Hub > US A2P Brand Registration — Register the hotel as a brand, create a campaign: Mixed/Customer Care, wait for approval (typically 1–5 business days)
6
Record these credentials for the AI platform setup: Account SID, Auth Token (from sub-account), Phone Number, Messaging Service SID
7
(Optional) For WhatsApp: Messaging > Senders > WhatsApp Senders — Connect WhatsApp Business Account and submit business verification (requires Facebook Business Manager)
8
Configure webhook URL (will be provided by AI platform in Step 6): Phone Numbers > Active Numbers > [number] > Messaging — Set 'A MESSAGE COMES IN' to Webhook URL [to be configured after AI platform setup], HTTP POST
Twilio credentials to record for AI platform setup
text
Account SID: ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Auth Token: (from sub-account)
Phone Number: +1XXXXXXXXXX
Messaging Service SID: MGXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Note

A2P 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

1
Log into Mews Commander > Settings > Integrations > +Create. Integration Name: AI-Guest-Messaging. Type: API Consumer.
2
Generate API credentials: Client Token (auto-generated), Access Token (auto-generated), Base URL: https://api.mews.com
Mews PMS – Test API connectivity
bash
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

1
Register in Oracle Hospitality Integration Platform (OHIP): https://www.oracle.com/hospitality/integration-platform/
2
Create application registration.
3
Obtain: Client ID, Client Secret, Enterprise ID, Hotel ID.
Oracle OPERA Cloud – Test OAuth2 token retrieval
bash
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

1
Log into Cloudbeds > Settings > API.
2
Generate API key.
Cloudbeds – Test API connectivity
bash
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)
Note

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.

1
Sign up for Akia Partner/Reseller account (MSP): Contact Akia sales at https://www.akia.com/contact — Request partner pricing and white-label options
2
Create hotel property in Akia dashboard: Properties > Add Property — Enter Hotel Name, Address, Room Count, Timezone — Upload hotel logo and brand colors for white-label
3
Connect PMS Integration: Integrations > PMS > Select [Mews/OPERA/Cloudbeds/etc.] — Enter API credentials from Step 5 — Map room types: PMS room type codes -> Akia room categories — Map rate plans: PMS rate codes -> Akia rate display names — Enable data sync: Reservations, Guest Profiles, Room Status — Test sync: verify upcoming reservations appear in Akia dashboard
4
Configure SMS Channel: Channels > SMS > Connect Twilio — Enter Twilio Account SID, Auth Token, Phone Number — Akia provides webhook URL -> configure in Twilio console (Step 4.8) — Send test SMS to verify round-trip delivery
5
Configure Webchat Widget: Channels > Webchat > Customize Widget — Set brand colors, welcome message, position (bottom-right default) — Generate and install embed code on hotel website (add script tag before </body>)
6
Configure WhatsApp Channel (if applicable): Channels > WhatsApp > Connect via Twilio WhatsApp Sender — Link WhatsApp Business Account — Configure greeting message template
7
Build AI Knowledge Base: AI Settings > Knowledge Base > Add Articles — (See Custom AI Components section for detailed knowledge base structure)
8
Configure Automated Message Flows: Automations > Create Flow — Pre-Arrival (2 days before check-in): Welcome + check-in time + digital check-in link — Day-of Arrival (10:00 AM): Reminder + room not ready notice if applicable — Post Check-in (1 hour after room status = Occupied): Welcome to room + amenity highlights + 'text us anytime' — Mid-Stay Check-in (Night 2 of stay): How is your stay? + upsell offer (spa/dining/upgrade) — Pre-Departure (day before checkout): Checkout reminder + late checkout upsell + feedback request — Post-Stay (1 day after checkout): Thank you + review request link + loyalty enrollment
9
Configure Escalation Rules: Settings > Escalation — Escalate to human when: guest expresses dissatisfaction (sentiment: negative), billing dispute, safety/security request, AI confidence score < 70%, or guest explicitly requests human — Escalation targets: Front Desk (primary), Duty Manager (after hours) — SLA: Human must respond within 3 minutes during operating hours
10
Configure Upsell Offers: Upsells > Create Offer — Early Check-in: $25–50 (auto-offer at 48hrs pre-arrival) — Late Checkout: $25–50 (auto-offer at departure-1 day) — Room Upgrade: $50–150 (auto-offer based on availability) — Spa/Dining Credit: $25–100 (auto-offer mid-stay)
Webchat widget embed code
html
<!-- install before </body> on hotel website -->

<script src='https://chat.akia.com/widget/[PROPERTY_ID].js'></script>
Note

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.

1
Create user accounts in Akia: Team > Add Member. Roles: Admin: General Manager, Hotel IT contact | Agent: Front Desk Agents (2-4), Concierge (1-2) | Supervisor: Front Desk Manager, Duty Manager | Observer: Housekeeping Manager (read-only + task creation)
2
Configure notification preferences per user: Each user > Notification Settings. Escalation alerts: Push notification + sound | New conversation: Push notification | Unresponded timeout (3 min): Escalate to supervisor + sound alert
3
Configure shift-based routing: Settings > Routing > Schedules. Morning Shift (7am-3pm): Front Desk Agent 1, Concierge | Afternoon Shift (3pm-11pm): Front Desk Agent 2, Duty Manager | Night Shift (11pm-7am): Night Auditor (or route to on-call manager)
4
Install Akia app on staff tablets: Apple App Store > Search 'Akia' > Install. Or access via web browser: https://app.akia.com. Log in with each user's credentials. Enable push notifications when prompted. Enable location services if using proximity features.
5
Configure auto-assignment rules: Settings > Routing > Auto-assign. Round-robin among available agents on shift | Skill-based routing: housekeeping requests -> housekeeping supervisor | VIP guests (loyalty tier) -> concierge priority queue
6
Set up Microsoft Intune MDM on tablets: Intune Admin Center > Devices > Enroll Devices > Apple. Create Apple MDM Push certificate. Create enrollment profile for hotel tablets. On each iPad: Settings > General > VPN & Device Management > Enroll. Push required apps: Akia, hotel PMS mobile app, Microsoft Teams. Configure restrictions: disable App Store (prevent unauthorized apps). Enable Lost Mode capability.
Note

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.

1
Obtain widget embed code from Akia dashboard: Channels > Webchat > Get Code
2
For WordPress sites: Appearance > Theme Editor > footer.php — Paste widget code before </body> tag. OR install 'Insert Headers and Footers' plugin: Settings > Insert Headers and Footers > Scripts in Footer > paste code
3
For Squarespace sites: Settings > Advanced > Code Injection > Footer — Paste widget code
4
For custom HTML sites: Edit index.html (and all page templates) — Add before closing </body> tag
5
Configure widget appearance to match hotel brand: In Akia dashboard > Webchat > Customize — Primary color: [hotel brand hex color], Widget text: 'Chat with us' or 'Ask our AI concierge', Avatar: Upload hotel logo or concierge icon, Welcome message: 'Hi! I'm [HotelName]'s virtual concierge. How can I help?', Position: bottom-right (default), Trigger: show after 5 seconds on page
6
Verify installation: Visit hotel website in incognito browser, confirm widget appears after 5 seconds, send test message and verify response in Akia dashboard, test on mobile browser (widget should be responsive)
7
Add chat link to Google Business Profile: Google Business Profile > Edit > Chat — Enable Google Business Messages if supported by platform
Akia webchat widget embed code (example)
html
<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>
Append widget script tag to footer include file (custom HTML sites)
bash
echo '<script src="https://chat.akia.com/widget/PROPERTY_ID.js"></script>' >> footer-include.html
Note

Coordinate 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
Note

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.

1
Navigate to Akia Dashboard > Upsells > Create Offers
2
OFFER 1: Early Check-in — Trigger: 48 hours before arrival. Condition: Room of booked type is available and clean by requested time. Message Template: 'Hi [GuestFirstName]! Excited for your stay at [HotelName]. Would you like to check in early? We can have your room ready by [EarlyTime] for just $[Price]. Reply YES to secure your early check-in, or let me know if you have any questions!' Price: $25–50 (configurable by hotel). Approval: Auto-approve if room available; else escalate to front desk.
3
OFFER 2: Late Checkout — Trigger: Evening before departure (6:00 PM). Condition: Room not needed for same-day arrival. Message Template: 'Hi [GuestFirstName], hope you're enjoying your stay! Would you like a late checkout tomorrow? You can keep your room until [LateTime] for $[Price]. Reply YES to add this to your stay!' Price: $25–50. Approval: Auto-approve based on availability.
4
OFFER 3: Room Upgrade — Trigger: 24 hours before arrival. Condition: Higher room category available. Message Template: 'Welcome to [HotelName], [GuestFirstName]! Great news—we have a [UpgradeType] available for your dates. Upgrade for just $[Price]/night and enjoy [Benefits]. Interested? Reply YES!' Price: Dynamic based on rate differential. Approval: Auto-approve if within defined margin.
5
OFFER 4: F&B / Spa Package — Trigger: Day 2 of multi-night stay, 10:00 AM. Condition: Guest stay >= 2 nights. Message Template: 'Good morning [GuestFirstName]! Looking to treat yourself today? Enjoy [OfferName] at our [Venue] - [Description]. Book now for $[Price]. Reply YES or ask me for more details!' Price: Property-defined.
6
Navigate to Settings > Payments > Connect Stripe/Adyen
7
Enter API keys for your payment processor
8
Test payment flow with a $1.00 test charge
9
Verify PCI-compliant tokenized payment link generation
Note

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)

1
Session 1 (1 hour): Front Desk & Concierge - Demo: AI handling common guest questions (live examples) - Walkthrough: Escalation inbox - picking up conversations - Practice: Responding to escalated messages - Practice: Transferring conversations between departments - Practice: Manually sending a message to a guest - Review: When does AI handle vs. when does human handle - Review: Escalation SLA (3-minute response target) Session 2 (30 min): Management - Dashboard overview: conversation analytics, AI accuracy metrics - Upsell reporting: revenue generated, conversion rates - Guest satisfaction indicators: sentiment analysis - Knowledge base maintenance: how to update information Session 3 (30 min): Housekeeping - How guest requests flow to housekeeping tasks - Acknowledging and completing task assignments - Communicating room status updates
Soft Launch Plan (1 week)
plaintext
# 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 arrivals

Soft Launch Monitoring Metrics & Targets

1
AI accuracy: % of messages handled correctly without human intervention Target: >80% by end of soft launch - Escalation rate: % of conversations escalated to human Target: <25% (excluding proactive escalation triggers) - Staff response time: time to pick up escalated conversations Target: <3 minutes during business hours - Guest sentiment: positive/negative/neutral message analysis - False positives: AI providing incorrect information (CRITICAL to track) - Channel delivery: SMS delivery rate, webchat engagement rate Create a shared Slack/Teams channel: #ai-messaging-issues
2
All staff report AI errors or guest complaints here for rapid knowledge base fixes
Note

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.

1
Remove soft launch restrictions: Akia Dashboard > Settings > Enrollment — Set to: All Reservations (100%) — Enable all channels: SMS, Webchat, WhatsApp
2
Configure analytics dashboard: Analytics > Custom Dashboard > Create — Widgets to include: Total conversations (daily/weekly/monthly), AI resolution rate (% handled without human), Average response time (AI + human), Guest satisfaction score (sentiment analysis), Top 10 most asked questions, Upsell revenue generated, Upsell conversion rates by offer type, Channel breakdown (SMS vs webchat vs WhatsApp), Escalation reasons breakdown
3
Set up automated weekly report email: Analytics > Scheduled Reports > Create — Recipients: Hotel GM, Front Desk Manager, MSP account manager — Frequency: Weekly (Monday 8:00 AM) — Content: Previous week summary of all KPI metrics
4
Configure monthly MSP review report: Include: AI accuracy trends, knowledge base gaps identified, upsell revenue, system uptime, staff adoption metrics
5
Set up alerting: Settings > Alerts > Create — Alert 1: AI accuracy drops below 75% (email MSP + hotel IT) — Alert 2: Escalation queue > 5 unresponded conversations (email supervisor) — Alert 3: System connectivity lost (email + SMS to MSP NOC)
6
Go-live announcement: Notify all guests at check-in about the text messaging service — Update hotel website with 'Text Us' call-to-action — Update Google Business Profile with messaging option — Add QR code linking to webchat in room keycards/welcome packets — Train front desk to mention: 'You can text us anytime at [number]'
7
Document baseline KPIs (Week 1 full deployment): Record: AI resolution rate, avg response time, upsell revenue, guest satisfaction score, total message volume — These become the baseline for measuring improvement
Note

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:

plaintext
# 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]

1
Forget network and reconnect
2
Clear browser cache
3
Try 2.4GHz vs 5GHz network
4
Contact front desk at [ext] if issues persist
  • 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:

plaintext
# Pre-Arrival Welcome Workflow
# Platform: Akia (or equivalent AI messaging platform)
# Trigger: PMS reservation sync detects arrival date = current_date + 2 days

Workflow Definition (YAML-style configuration)

Pre-arrival welcome workflow
yaml
# 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: seconds

In-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:

1
In-Stay Request Router Agent
2
This agent operates within the AI messaging platform's conversation engine
3
Configuration maps to Akia's AI Settings or equivalent platform

Agent System Prompt (configure in platform's AI settings)

Full system prompt YAML — paste into your platform's AI/agent settings

system_prompt: | You are the virtual concierge for {{property.name}}, a {{property.description}}. YOUR ROLE: You handle guest messages during their stay. You are friendly, professional, and efficient. You use a warm but not overly casual tone. You use the guest's first name. You keep responses concise (under 160 characters for SMS when possible, up to 300 characters when needed for completeness). YOUR CAPABILITIES: 1. INFORMATION: Answer questions about the hotel, amenities, policies, and local area using ONLY the knowledge base provided. Never make up information. 2. REQUESTS: Create housekeeping and maintenance tasks by extracting the request details and routing to the appropriate department. 3. UPSELLS: When contextually appropriate, suggest relevant hotel services or upgrades. 4. ESCALATION: Transfer to a human staff member when the situation requires it. RULES: - NEVER provide information not in your knowledge base. If unsure, say: "Let me connect you with our team for the most accurate answer." - NEVER process payments or discuss specific charges without escalating. - NEVER share other guests' information. - NEVER make promises about compensation, refunds, or rate adjustments. - ALWAYS disclose you are an AI when directly asked: "I'm {{property.name}}'s AI concierge. I can connect you with our team anytime — just say 'human please.'" - ALWAYS escalate safety/security concerns immediately. - Use emoji sparingly (1-2 per message max, contextually appropriate). - For multi-part requests, address each part in order. CURRENT CONTEXT (injected per conversation): - Guest Name: {{guest.first_name}} {{guest.last_name}} - Room Number: {{reservation.room_number}} - Room Type: {{reservation.room_type}} - Stay Dates: {{reservation.checkin}} to {{reservation.checkout}} - Nights Remaining: {{reservation.nights_remaining}} - Loyalty Tier: {{guest.loyalty_tier}} - Previous Interactions: {{conversation.history_summary}}
Sonnet 4.6

Intent Classification & Routing Rules

Intent routing configuration — full YAML definition
yaml
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 minutes

Sentiment Detection Thresholds

yaml
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, escalate

Conversation Guardrails

yaml
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_escalate

Post-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 — YAML configuration
yaml
# 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) / total

PMS-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)

Webhook Payload Schema (from AI messaging platform)
json
{
  "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:

Quore API POST request body
json
{
  "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
Request body for Mews API tasks/add endpoint
json
{
  "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
Message template for Teams / Slack notification
text
🏨 **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
Response body sent back to AI platform
json
{ "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
Payload
json
{ "task_id": "xxx", "completed_by": "staff_name", "completed_at": "timestamp" }
1
Node 1: Look up original task (from database)
2
Node 2: Send callback to AI messaging platform
  • Method: POST
  • URL: {{original_task.callback_url}}
Body
json
{
  "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? 😊"

1
Node 3: Update database record status to 'completed'
2
Node 4: Update analytics counters

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)

AI disclosure YAML configuration
yaml
# 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 and opt-in handling configuration
yaml
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 configuration and data request handling
yaml
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 policy configuration
yaml
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_months

4. PCI DSS 4.0.1 COMPLIANCE RULES

PCI DSS 4.0.1 compliance configuration
yaml
# 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 data subject request configuration including right to access and right to erasure triggers, responses, and actions
yaml
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

yaml
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_minimum

Testing & 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:

1
System Overview (15 min): Walk through the complete guest messaging flow from pre-arrival to post-stay. Show real conversation examples from the soft launch period. Demonstrate how the AI handles common questions and when it escalates.
2
Staff Dashboard Training (20 min): Live demonstration of the escalation inbox, including: picking up a conversation, responding to a guest, transferring between departments, closing a conversation, and flagging an AI error. Each staff member should practice at least one live conversation.
3
Knowledge Base Maintenance (15 min): Show hotel management how to request knowledge base updates (via shared document or direct dashboard access if granted). Establish the process: hotel staff note changes in a shared Google Doc/Notion page → MSP reviews and updates the knowledge base within 24 hours. Cover seasonal updates (pool hours, restaurant specials, holiday closures).
4
Analytics & Reporting (15 min): Walk through the analytics dashboard. Explain key metrics: AI resolution rate (target >80%), average response time, upsell conversion rates, and guest sentiment scores. Show the automated weekly report email and explain what each metric means.
5
Escalation Procedures (10 min): Review the escalation SLA: 3-minute response target during business hours. Review after-hours routing to the duty manager. Review emergency escalation for safety/security concerns.
6
Compliance Responsibilities (10 min): Review the hotel's obligations under GDPR (if applicable), CCPA, and PCI DSS. Emphasize: never share credit card numbers via chat, always honor opt-out requests, AI disclosure must remain active. Provide the compliance quick-reference card.
7
Ongoing Support Model (5 min): Provide the MSP support contact information (phone, email, ticket portal). Explain the support SLA: critical issues (system down) = 1-hour response; standard issues = 4-hour response; knowledge base updates = 24-hour turnaround. Explain the monthly optimization review schedule.

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:

1
Knowledge Base Review (Monthly - 2 hours): Schedule a 30-minute call with the hotel operations manager to review knowledge base accuracy. Update any changed information (seasonal hours, new menu items, policy changes, staff changes, local events). Review the 'top unanswered questions' report from the AI platform and add new knowledge base articles for recurring gaps.
2
AI Performance Optimization (Monthly - 1 hour): Review AI accuracy metrics and conversation logs. Identify the top 10 conversations where the AI gave incorrect or suboptimal responses. Update AI training data, knowledge base entries, or escalation rules to address these gaps. Track improvement month-over-month.
3
Analytics Report & Client Review (Monthly - 1 hour): Generate the monthly performance report covering: total conversations, AI resolution rate, upsell revenue generated, guest satisfaction trends, staff response times, and system uptime. Present to hotel GM in a 30-minute review call. Identify optimization opportunities and agree on next month's priorities.
4
Network & Infrastructure Monitoring (Continuous): Monitor firewall, switch, and AP health via FortiCloud and UniFi Cloud dashboards. Set up automated alerts for: device offline, high CPU/memory, WAN link failure, unusual traffic patterns. Respond to critical alerts within 1 hour.
5
Security & Compliance (Monthly - 30 min): Review firewall logs for suspicious activity. Verify PCI DSS network segmentation is intact (run quarterly segmentation scan). Ensure all vendor platforms have current SOC 2 certifications. Apply firmware updates to network hardware during maintenance windows (monthly, after midnight).
6
Software Updates (As Released): The AI messaging platform (SaaS) updates automatically. Monitor release notes for new features or breaking changes. Test new features in a sandbox if available before they affect production. Update Twilio API versions if deprecated (typically annual).
7
Staff Device Management (Monthly - 30 min): Review Intune MDM compliance reports. Ensure all tablets have current OS updates. Replace any damaged or non-functional devices. Review app update status.
8
Vendor Relationship Management (Quarterly): Attend vendor partner webinars/updates. Review contract terms and pricing annually. Evaluate new features for client value. Monitor vendor financial health and market position.

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

1
Hotel staff identifies issue → reports via MSP ticket portal or phone
2
MSP L1 technician triages (network vs. platform vs. configuration)
3
Network issues: MSP L2 resolves or escalates to hardware vendor
4
Platform issues: MSP contacts Akia/Canary support (vendor SLA typically 4-hour response)
5
Integration issues: MSP L2/L3 investigates API connectivity, PMS sync, webhook failures
6
Unresolved after 4 hours: MSP account manager engages, provides hotel with workaround
7
Vendor escalation: MSP escalates to vendor engineering if platform-level issue

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.

Note

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.

Note

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.

Warning

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.
Note

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.

Note

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.

Note

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?