Skip to main content

AI2 — Operator Copilot Specification

Surface: Operator Desktop + Tablet Front-Desk Phase: P2 / R2 Feature flag: operator-copilot Competitive reference: Notion AI, Linear Asks, Mews Assistant, Cloudbeds AI


1. Overview

The operator copilot is an AI assistant embedded in the operator desktop and tablet front-desk apps. It assists front-desk and management staff with writing, summarisation, analysis, and decisions — with a strict Human-in-the-Loop (HITL) design: the AI always drafts, the operator always approves.

Core principle: The operator copilot NEVER takes action autonomously. It drafts, suggests, and explains. The operator presses "Accept" or modifies before anything is saved or sent.


2. Copilot capabilities (R2)

CapabilityTriggerOutput
Draft a replyOperator opens guest message → "Draft reply" buttonSuggested reply text in the message compose area
Summarise stayReservation detail → "Summarise stay"One-paragraph summary: name, dates, preferences, notable incidents
Suggest upsellReservation detail → "Suggest upsell"2–3 personalised upsell recommendations with reasoning
Explain anomalyFolio → unusual charge → "Explain"Plain-language explanation of the charge with source event
Draft housekeeping noteRoom detail → "Add note" → "AI assist"Suggested note text from previous notes + room history

3. HITL UX pattern

Every copilot suggestion follows the same HITL pattern:

┌─── Copilot suggestion ────────────────────────────┐
│ 📎 Draft reply (based on guest message + stay data) │
│ │
│ "Dear Ahmad, thank you for reaching out. We would │
│ be happy to arrange an airport transfer for your │
│ arrival on 1 May at 15:40. The rate is $45 per │
│ vehicle. Shall I confirm this for you?" │
│ │
│ Reasoning: Guest asked about airport transfer; │
│ rate from property config; departure time from │
│ booking. │
│ │
│ [✓ Use this draft] [✏️ Edit] [✗ Dismiss] │
└────────────────────────────────────────────────────┘

Provenance card: Every suggestion shows a collapsed "Reasoning" section. Expanding it shows:

  • Which data the AI used (booking data, property config, conversation history)
  • Confidence level (High / Medium — Low suggestions are not shown; operator is asked to handle manually)

4. Inline copilot trigger

In text areas (reply compose, note field, task description), a "✨ AI assist" button appears:

  • One-tap → AI drafts based on context
  • The draft appears in the text area highlighted in color.ai.suggestion token (distinct from operator-typed text)
  • Operator can accept (removes highlight, text becomes theirs), edit (in-place), or dismiss (reverts to empty)

5. Upsell suggestion

On the reservation detail screen:

┌─── Copilot: Upsell suggestions ───────────────────┐
│ Based on Ahmad's past stays and current booking: │
│ │
│ 1. 🌅 Late checkout (+$30) │
│ "He's checked out late twice before and has │
│ a 17:00 flight today" │
│ [Offer this →] │
│ │
│ 2. 🍳 Breakfast package (+$12/pp) │
│ "No breakfast in current rate; 2-day stay" │
│ [Offer this →] │
└────────────────────────────────────────────────────┘

"Offer this" → opens a pre-filled guest message with the upsell offer. Operator reviews and sends. The AI does not send the message directly.


6. Anomaly explanation

When a folio line item is flagged (unusual amount, unexpected charge, manual entry):

🔍 This charge looks unusual. Ask AI to explain?

[Explain →]

"This $150 charge on 2 May is a minibar restocking
fee. It was added manually by desk agent Karim at
14:32 via folio manual-charge entry (Event ID:
fol-8821). The standard minibar fee for this room
type is $120; the $30 premium was noted in the
charge reason: 'Missing premium whisky bottle'."

Provenance: event ID + actor + timestamp. Links to audit log entry.


7. Context available to the copilot

The copilot has access to (via ai-gateway-service context injection):

  • Current reservation (dates, room, guest preferences, special requests)
  • Guest history (previous stays, preferences, HITL-approved notes)
  • Current folio (charges, payments)
  • Property configuration (amenities, rates, policies)
  • Conversation history (guest messages)

NOT available:

  • Other guests' PII
  • Platform-level data (other tenants, billing)
  • Staff personal data

8. Guardrails

  • Output language: same as the operator's locale (not the guest's)
  • Medical/legal/compliance advice: blocked
  • PII of non-relevant guests: blocked
  • Max suggestion length: 300 words
  • Operator must always be the author of record (AI contribution invisible to guests)

9. Accessibility

  • "AI assist" button has aria-label="Get AI draft suggestion"
  • AI suggestion area has role="region" aria-label="AI suggestion — review before sending"
  • Accept/Edit/Dismiss buttons are keyboard accessible

References