Skip to main content

EP-013: AI & Intelligence

FieldValue
Epic IDEP-013
Epic NameAI & Intelligence
OwnerAI/ML Module Lead
Created2026-03-05
Last Updated2026-03-05
StatusIn Progress
PriorityP2 - Medium

1. Business Objective​

Leverage AI/ML capabilities to drive 8-15% RevPAR (Revenue Per Available Room) uplift through demand forecasting and dynamic pricing, enhance guest experience through sentiment analysis and smart room assignment, and reduce operational costs through route optimization and anomaly detection. Indian hotel revenue management is still largely manual, with rate decisions based on intuition rather than data. AI-powered pricing alone can increase room revenue by INR 500-1,500 per room per month for mid-segment hotels. Sentiment analysis of guest reviews across MakeMyTrip, TripAdvisor, and Google can identify service gaps before they become systemic issues.


2. Audience​

RoleInteraction
Revenue ManagerDemand forecasting, dynamic pricing recommendations, revenue optimization
General ManagerAnomaly detection alerts, NL query for business insights, AI-generated reports
Front Desk AgentSmart room assignment suggestions, AI concierge for guest queries

3. Scope​

3.1 In Scope​

  • Demand forecasting (occupancy prediction for 30/60/90-day horizons)
  • Dynamic pricing engine (AI-recommended rates based on demand, competition, events)
  • Guest sentiment analysis (NLP on reviews from OTAs, surveys, social media)
  • Anomaly detection (unusual patterns in revenue, expenses, operations)
  • Housekeeping route optimization (minimize travel time between rooms)
  • Smart room assignment (AI-driven room selection considering preferences, maintenance, balance)
  • Natural language query bar (ask questions in plain English/Hindi, get data answers)
  • Natural language report generation (AI-written narrative reports from data)
  • AI concierge chatbot (guest-facing FAQ, recommendations, service requests)

3.2 Out of Scope​

  • Full marketing automation / campaign management (covered in EP-010 CRM)
  • Chatbot for staff internal communication (use standard messaging tools)
  • Physical robotics / IoT automation
  • Computer vision for security / surveillance

4. Current Implementation Status​

4.1 Backend (01-hmp-backend - AI Service)​

ComponentStatusNotes
AI Concierge ChatbotBuiltFAQ responses, local recommendations, basic NLU
Anomaly DetectionBuiltStatistical anomaly detection on revenue/expense data
Sentiment AnalysisBuiltBasic keyword/rule-based sentiment scoring
Housekeeping Route OptimizerBuiltTSP-based route optimization for room assignments
NL Report GenerationBuiltTemplate-based narrative generation from data
Demand ForecastingPartialUses placeholder/mock model, needs real training data
Dynamic Pricing EnginePartialRule-based pricing, not ML-driven
Smart Room AssignmentPartialRule-based heuristics, not ML optimization
NL Query ParserPartialHandles basic queries, complex joins/aggregations fail
Sentiment NLP PipelinePartialKeyword-based, not transformer/LLM-based

4.2 Dashboard (02-hmp-web-dashboard)​

ComponentStatusNotes
NL Query BarBuiltInput field with natural language query execution
Sentiment DashboardBuiltSentiment scores by source, trend charts
Anomaly AlertsBuiltAlert cards with severity and affected metric
Revenue Prediction ChartBuilt30-day forecast visualization (mock data)
AI Concierge ConfigPartialFAQ management, response templates, basic analytics
Dynamic Pricing UINot StartedNo UI to review/accept/reject AI price recommendations

5. Gap Analysis​

#GapImpactEffortPriority
1ML models are placeholder/mockCritical - no real predictive capabilityXLP1
2Demand forecasting needs historical data pipelineHigh - forecasting accuracy depends on data qualityLP1
3Sentiment analysis is keyword-based onlyMedium - misses nuance and sarcasmLP2
4Dynamic pricing not connected to rate managementHigh - recommendations not actionableMP1
5Smart assignment is rule-based onlyLow - works reasonably well for most casesMP3
6NL query parsing limited to simple patternsMedium - users expect flexible natural languageLP2
7No UI for reviewing AI pricing recommendationsHigh - revenue manager cannot accept/rejectMP1

6. User Stories Summary​

Story IDTitlePriorityPointsSprintStatus
US-013-01Demand ForecastingP1131Partial
US-013-02Dynamic Pricing RecommendationsP1132Partial
US-013-03Guest Sentiment AnalysisP182Partial
US-013-04Anomaly Detection & AlertsP181Built
US-013-05Housekeeping Route OptimizationP283Built
US-013-06Smart Room AssignmentP283Partial
US-013-07Natural Language Query BarP284Partial
US-013-08NL Report GenerationP254Built
US-013-09AI Concierge ChatbotP2135Built
US-013-10Dynamic Pricing UI & ApprovalP182Not Started
US-013-11ML Model Training PipelineP1131Partial

7. Dependencies​

DependencyTypeEpic/ServiceStatus
Reservation data (historical)UpstreamEP-003 / reservationAvailable
Revenue/rate managementPeerEP-007 / revenueAvailable
Property service (room inventory)UpstreamEP-002 / propertyAvailable
Guest reviews (OTA sources)ExternalOTA APIs / scrapingNot Ready
Housekeeping servicePeerEP-006 / housekeepingAvailable
Frontdesk service (room assignment)DownstreamEP-005 / frontdeskAvailable
Kafka event busInfraDocker / KafkaAvailable
Redis (model cache, predictions)InfraDocker / RedisAvailable
ML infrastructure (model serving)InfraTBD (TensorFlow Serving / ONNX)Not Ready

8. Epic-Level Acceptance Criteria​

  1. AC-EP-013-01: Demand forecast achieves MAPE (Mean Absolute Percentage Error) of less than 15% for 30-day occupancy predictions after 6 months of training data.
  2. AC-EP-013-02: Dynamic pricing recommendations are generated daily and can be reviewed, accepted, or rejected by the revenue manager before application.
  3. AC-EP-013-03: Sentiment analysis processes guest reviews within 1 hour of ingestion and produces sentiment scores (positive/neutral/negative) with topic extraction.
  4. AC-EP-013-04: Anomaly detection identifies revenue/expense deviations exceeding 2 standard deviations and alerts within 15 minutes.
  5. AC-EP-013-05: The NL query bar handles at least 80% of common hotel management queries (occupancy, revenue, bookings, guest count) without errors.
  6. AC-EP-013-06: The AI concierge chatbot resolves at least 60% of guest queries without human handoff.

9. KPIs​

KPITargetMeasurement Method
RevPAR uplift from dynamic pricing8-15%Before/after comparison
Demand forecast accuracy (MAPE)< 15%Predicted vs actual occupancy
Sentiment analysis accuracy> 85%Manual validation sample
Anomaly detection precision> 90%True positives / flagged anomalies
NL query success rate> 80%Successful queries / total
Chatbot resolution rate> 60%Resolved without human / total
Housekeeping route efficiency gain> 15%Time saved vs sequential routing

10. Detailed User Stories​


US-013-01: Demand Forecasting​

As a Revenue Manager, I want to see AI-generated occupancy and demand forecasts for the next 30/60/90 days, So that I can proactively adjust rates, staffing, and inventory allocation.

Priority: P1 | Points: 13 | Sprint: 1 | Status: Partial

Implementation Status​

Forecast endpoint returns predictions but uses a placeholder model (random with slight trend). Real implementation needs: historical booking data pipeline (minimum 12 months), feature engineering (day of week, seasonality, local events, holidays), and a time-series model (Prophet, LSTM, or gradient boosting). Dashboard chart shows 30-day forecast visualization with confidence intervals.

Acceptance Criteria​

Scenario: View 30-day occupancy forecast
Given the hotel has 12+ months of historical booking data
And the ML model has been trained on this data
When the revenue manager opens the demand forecast dashboard
Then a chart displays predicted occupancy for each of the next 30 days
And each prediction shows a confidence interval (e.g., 75% +/- 8%)
And high-demand dates (predicted > 85% occupancy) are highlighted
And the forecast accounts for known events (e.g., "India-Australia cricket match at Wankhede" on March 20)

Scenario: Forecast accuracy tracking
Given the forecast predicted 82% occupancy for March 5
And actual occupancy on March 5 was 78%
When the revenue manager views forecast accuracy metrics
Then the MAPE for the last 30 days is displayed (e.g., 12%)
And a comparison chart shows predicted vs actual occupancy for past dates
And the model's accuracy trend (improving/degrading) is shown over time

Scenario: Forecast impact of local event
Given the "Pune International Film Festival" is scheduled for March 15-20
When the demand forecast incorporates this event
Then occupancy predictions for March 15-20 increase by 15-25% over baseline
And the revenue manager sees an event indicator on those dates
And the system recommends reviewing rates for the event period

US-013-02: Dynamic Pricing Recommendations​

As a Revenue Manager, I want to receive AI-generated rate recommendations based on demand forecasts, competitor rates, and occupancy targets, So that I can optimize revenue without manual rate analysis.

Priority: P1 | Points: 13 | Sprint: 2 | Status: Partial

Implementation Status​

Current pricing engine uses rule-based logic (e.g., if occupancy > 80%, increase rate by 10%). Real ML-based dynamic pricing not implemented. Needs: demand forecast integration, competitor rate feeds (from rate shopping tools), price elasticity modeling, and a recommendation engine that produces optimal rates per room type per date.

Acceptance Criteria​

Scenario: Receive daily pricing recommendations
Given the demand forecast predicts 90% occupancy for March 20 (cricket match day)
And the current rate for "Deluxe King" is INR 5,000/night
And competitor hotels are charging INR 6,500-7,500 for similar rooms
When the dynamic pricing engine generates recommendations
Then the system recommends increasing "Deluxe King" rate to INR 6,800/night
And provides reasoning: "High demand (90% predicted), competitor avg INR 7,000, price elasticity suggests INR 6,800 maximizes RevPAR"
And shows estimated revenue impact: "+INR 54,000 for 30 Deluxe rooms"
And the recommendation is pending revenue manager approval

Scenario: Revenue manager accepts pricing recommendation
Given 15 rate recommendations are pending for the next 7 days
When the revenue manager reviews and accepts 12 recommendations
And modifies 2 (adjusts recommended rate by -INR 500)
And rejects 1 (prefers to keep the current rate)
Then the 12 accepted rates are applied to the rate management system
And the 2 modified rates are applied with the manager's adjusted values
And the rejected recommendation is logged with the rejection reason
And all accepted rates are pushed to OTA channels via EP-009

Scenario: Dynamic pricing respects floor and ceiling rates
Given "Deluxe King" has a floor rate of INR 3,500 and ceiling of INR 12,000
When the AI recommends a rate of INR 2,800 during extreme low demand
Then the recommendation is auto-adjusted to the floor rate of INR 3,500
And a note indicates "AI recommendation (INR 2,800) was below floor rate"

US-013-03: Guest Sentiment Analysis​

As a General Manager, I want to understand guest sentiment from reviews across OTA platforms and post-stay surveys, So that I can identify service strengths and areas for improvement.

Priority: P1 | Points: 8 | Sprint: 2 | Status: Partial

Implementation Status​

Basic sentiment scoring using keyword matching and rule-based analysis (positive/negative word lists). Processes text from post-stay survey responses. OTA review ingestion not implemented (would require API access or scraping from MakeMyTrip, TripAdvisor, Google). Topic extraction (cleanliness, food, staff, location) is rudimentary. Needs NLP pipeline upgrade (transformer-based or LLM-powered).

Acceptance Criteria​

Scenario: Analyze post-stay survey sentiment
Given 50 post-stay survey responses were collected in February 2026
When the sentiment analysis pipeline processes the responses
Then each response is scored as Positive (> 0.6), Neutral (0.3-0.6), or Negative (< 0.3)
And topic extraction identifies mentions of: cleanliness, food quality, staff behavior, room comfort, value for money
And the dashboard shows:
| Topic | Positive | Neutral | Negative | Avg Score |
| Cleanliness | 38 | 8 | 4 | 0.78 |
| Food Quality | 30 | 12 | 8 | 0.65 |
| Staff Behavior| 42 | 5 | 3 | 0.85 |
| Value for Money| 25 | 15 | 10 | 0.58 |
And "Value for Money" is flagged as an area needing attention (lowest score)

Scenario: Detect negative sentiment trend
Given sentiment for "Food Quality" has dropped from 0.75 to 0.55 over 3 months
When the trend analysis runs
Then an alert is generated: "Food Quality sentiment declining - 27% drop in 3 months"
And the alert includes sample negative reviews for context
And the general manager can assign a follow-up action to the F&B manager

Scenario: Process review in Hindi
Given a guest submits a review: "Kamra bahut saaf tha lekin khana theek nahi tha"
When the sentiment analysis processes the Hindi text
Then the system identifies: Room (positive: "bahut saaf"), Food (negative: "theek nahi")
And correctly categorizes the review as Mixed (positive room, negative food)

US-013-04: Anomaly Detection & Alerts​

As a General Manager, I want to be alerted when unusual patterns are detected in revenue, expenses, or operational metrics, So that I can investigate potential issues (fraud, errors, system failures) promptly.

Priority: P1 | Points: 8 | Sprint: 1 | Status: Built

Implementation Status​

Anomaly detection engine runs on scheduled basis, analyzing time-series data for revenue, ADR, occupancy, F&B revenue, and expense categories. Uses statistical methods (Z-score, IQR) to detect deviations exceeding configurable thresholds (default: 2 standard deviations). Alerts displayed on dashboard with severity (Info/Warning/Critical) and drill-down to affected data.

Acceptance Criteria​

Scenario: Detect revenue anomaly
Given the average daily room revenue for March is INR 4,00,000
And March 3 records room revenue of only INR 1,50,000 (62% below average)
When the anomaly detection engine runs
Then a "Critical" anomaly alert is generated
And the alert details: "Room revenue on March 3 is 62% below the 30-day average"
And suggests possible causes: "Unusually high cancellations? System error? Rate issue?"
And the general manager can view the affected date's booking and revenue breakdown

Scenario: Detect expense spike
Given the average daily laundry expense is INR 15,000
And yesterday's laundry expense was INR 45,000 (200% above average)
When the anomaly detection engine runs
Then a "Warning" anomaly alert is generated
And the alert details: "Laundry expense spike - 200% above 30-day average"
And the expense line items for the date are linked for investigation

Scenario: Suppress known anomaly (holiday effect)
Given Holi (March 14) typically shows 40% lower occupancy due to late check-ins
When the anomaly engine detects low revenue on March 14
And the date matches a known holiday pattern
Then the alert severity is reduced to "Info" with note "Expected holiday pattern"
And the general manager can confirm and suppress future alerts for this pattern

US-013-05: Housekeeping Route Optimization​

As a Housekeeping Supervisor, I want to receive optimized room cleaning routes for housekeeping staff, So that cleaning time is minimized and rooms are ready for check-in faster.

Priority: P2 | Points: 8 | Sprint: 3 | Status: Built

Implementation Status​

Route optimizer uses a Travelling Salesman Problem (TSP) approximation algorithm to determine the optimal sequence of rooms for each housekeeper. Inputs: list of rooms to clean (departures, stayovers, vacant dirty), floor plan distances, priority (departures first for incoming guests), and housekeeper starting position. Returns ordered list of rooms with estimated time per room.

Acceptance Criteria​

Scenario: Generate optimized cleaning route
Given housekeeper "Lakshmi" is assigned 18 rooms across floors 3-5
And 6 rooms are departures (priority: clean first for incoming guests)
And 12 rooms are stayovers
When the route optimizer calculates the cleaning sequence
Then departure rooms are prioritized and grouped by floor proximity
And the route minimizes total walking distance between rooms
And estimated completion time is calculated (25 min/departure, 15 min/stayover)
And the route is displayed on a floor map with numbered sequence

Scenario: Re-optimize route after priority change
Given room "405" has a VIP arriving in 2 hours (not in original priority list)
When the front desk marks room "405" as urgent
Then the route optimizer recalculates with room "405" as top priority
And "Lakshmi" receives an updated route notification on her mobile device
And the estimated completion times are recalculated

US-013-06: Smart Room Assignment​

As a Front Desk Agent, I want to receive AI-optimized room assignment suggestions that consider guest preferences, room maintenance status, and floor balancing, So that guest satisfaction is maximized and room wear is distributed evenly.

Priority: P2 | Points: 8 | Sprint: 3 | Status: Partial

Implementation Status​

Current assignment uses rule-based heuristics: match room type, prefer guest's floor preference, avoid recently maintained rooms, balance occupancy across floors. ML-based optimization (learning from guest satisfaction scores correlated with room assignments) not implemented.

Acceptance Criteria​

Scenario: AI-optimized room assignment
Given guest "Rajiv Mehta" has stayed 5 times before
And his past stays show: prefers rooms 501-510 (floor 5, quiet side), always requests extra blanket
And room 507 (his most frequent room) is available and clean
When the smart assignment engine runs
Then room 507 is recommended as the top choice
And the recommendation includes: "Guest's preferred room (3 of 5 past stays), floor 5 quiet side"
And the system pre-flags the extra blanket request to housekeeping

Scenario: Balance floor occupancy
Given floor 3 has 18 of 20 rooms occupied (90%) and floor 4 has 10 of 20 rooms occupied (50%)
And a guest has no specific floor preference
When the smart assignment runs for a Deluxe room
Then a room on floor 4 is recommended to balance occupancy
And the reasoning notes: "Floor 4 has lower occupancy - balances maintenance load and noise distribution"

Scenario: Avoid rooms with recent maintenance issues
Given room "302" had a plumbing complaint last week (resolved but not verified)
When the smart assignment considers room "302"
Then room "302" is ranked lower with a note: "Recent maintenance - plumbing issue 5 days ago"
And alternative rooms without recent issues are preferred

US-013-07: Natural Language Query Bar​

As a General Manager, I want to ask business questions in plain English or Hindi and receive data-driven answers, So that I can get instant insights without navigating complex reports.

Priority: P2 | Points: 8 | Sprint: 4 | Status: Partial

Implementation Status​

NL query bar handles basic patterns: "What is today's occupancy?", "How many check-ins tomorrow?", "Revenue this month". Parses queries into structured database queries. Fails on complex queries involving joins, comparisons, or time-range calculations. Needs LLM-powered query understanding for flexible natural language support.

Acceptance Criteria​

Scenario: Simple occupancy query
Given the current date is March 5, 2026
When the general manager types "What is today's occupancy?"
Then the system responds: "Today's occupancy is 78% (78 of 100 rooms occupied)"
And shows a mini chart comparing to last week and last month
And the response time is under 3 seconds

Scenario: Revenue comparison query
Given the manager types "Compare this month's revenue with last March"
When the NL parser processes the query
Then the system responds with a comparison table:
| Metric | March 2026 (MTD) | March 2025 | Change |
| Room Revenue | INR 85,00,000 | INR 72,00,000 | +18% |
| F&B Revenue | INR 32,00,000 | INR 28,00,000 | +14% |
| Total Revenue | INR 1,17,00,000 | INR 1,00,00,000| +17% |
And the response includes a bar chart visualization

Scenario: Query in Hindi
Given the manager types "Aaj kitne log check-in karne wale hain?"
When the NL parser processes the Hindi query
Then the system responds: "Aaj 32 guests ka check-in scheduled hai (28 confirmed, 4 tentative)"
And the response includes a link to the arrivals list

US-013-08: NL Report Generation​

As a General Manager, I want to receive AI-generated narrative reports that summarize key metrics in readable prose, So that I can quickly understand hotel performance without analyzing raw numbers.

Priority: P2 | Points: 5 | Sprint: 4 | Status: Built

Implementation Status​

Template-based report generation produces narrative summaries from structured data. Templates cover: daily operations summary, weekly revenue report, monthly performance review. Uses predefined sentence structures with data interpolation. More advanced LLM-based generation (context-aware, insight-highlighting) not yet implemented.

Acceptance Criteria​

Scenario: Generate daily operations summary
Given the business date is March 5, 2026
When the general manager requests the daily summary report
Then the system generates a narrative like:
"Hotel performance for March 5, 2026: Occupancy reached 78% with 78 rooms sold at an ADR of INR 5,450, generating room revenue of INR 4,25,100. This is 3% above last Tuesday's performance. F&B outlets recorded INR 1,82,000 in sales, led by the restaurant (INR 1,10,000). 32 guests checked in today (28 reservations, 4 walk-ins) and 25 checked out. Notable: 2 VIP arrivals (Mr. Mehta - Platinum, Ms. Iyer - Gold). Night audit completed successfully with no discrepancies."
And the report is available as PDF and email

Scenario: Weekly revenue report with insights
Given the revenue data for the week ending March 5, 2026 is available
When the weekly report is generated
Then the narrative highlights:
- Week-over-week revenue change with percentage
- Best performing day and worst performing day with reasons
- Channel performance summary (direct vs OTA split)
- Recommendation: "Consider increasing rates for weekend of March 14-15 based on demand forecast showing 88% predicted occupancy"

US-013-09: AI Concierge Chatbot​

As a Guest, I want to interact with an AI chatbot to get answers about hotel services, local recommendations, and make service requests, So that I can get instant assistance without calling the front desk.

Priority: P2 | Points: 13 | Sprint: 5 | Status: Built

Implementation Status​

Chatbot built with FAQ knowledge base covering: hotel amenities, check-in/out times, restaurant hours, Wi-Fi details, local attractions, transportation. Supports basic service requests (extra towels, room cleaning). Integrated with the booking engine as a chat widget. Handoff to human agent available when chatbot cannot resolve. Does not yet integrate with PMS for guest-specific queries (e.g., "What is my folio balance?").

Acceptance Criteria​

Scenario: Guest asks about restaurant hours
Given a guest accesses the chatbot via the booking engine
When the guest asks "What time does the restaurant open for breakfast?"
Then the chatbot responds: "Good morning! Our restaurant 'Saffron' serves breakfast from 7:00 AM to 10:30 AM. Would you like to know about our breakfast menu or make a reservation?"
And suggests follow-up options as quick-reply buttons

Scenario: Guest makes a service request
Given a checked-in guest asks "Can I get extra towels in room 405?"
When the chatbot processes the request
Then the chatbot confirms: "I've requested extra towels for room 405. Our housekeeping team will deliver them within 15 minutes. Is there anything else I can help with?"
And a service request is created in the housekeeping system for room 405
And the request is tagged with source "AI_CONCIERGE"

Scenario: Chatbot escalates to human agent
Given a guest asks "I want to dispute a charge on my bill"
When the chatbot cannot resolve billing disputes
Then the chatbot responds: "I understand you have a billing concern. Let me connect you with our front desk team who can help resolve this right away."
And the conversation is transferred to a human agent with full chat history
And the guest is notified of the transfer

US-013-10: Dynamic Pricing UI & Approval​

As a Revenue Manager, I want to review AI-generated pricing recommendations in a dedicated dashboard and accept, modify, or reject them before they are applied, So that I maintain control over pricing strategy while leveraging AI insights.

Priority: P1 | Points: 8 | Sprint: 2 | Status: Not Started

Implementation Status​

Not started. The dynamic pricing engine (US-013-02) generates recommendations but there is no UI for the revenue manager to review and act on them. Needs: recommendation list view with filters, bulk accept/reject, rate comparison (current vs recommended vs competitor), impact simulation, and audit trail of decisions.

Acceptance Criteria​

Scenario: Review pricing recommendations dashboard
Given the AI engine has generated 45 rate recommendations for the next 15 days
When the revenue manager opens the dynamic pricing dashboard
Then recommendations are displayed in a grid:
| Date | Room Type | Current (INR) | Recommended (INR) | Change | Reason |
| 2026-03-10 | Deluxe King | 5,000 | 5,800 | +16% | High demand forecast|
| 2026-03-10 | Suite | 12,000 | 13,500 | +12.5% | Event in city |
| 2026-03-11 | Deluxe King | 5,000 | 4,500 | -10% | Low demand forecast |
And each row can be individually accepted, modified, or rejected
And bulk actions allow accepting all recommendations for a date range

Scenario: Simulate revenue impact before accepting
Given the revenue manager selects 10 recommendations to review
When they click "Simulate Impact"
Then the system calculates:
| Metric | Current Rates | Recommended Rates | Difference |
| Projected Revenue| INR 15,00,000 | INR 17,25,000 | +INR 2,25,000|
| Projected Occ | 72% | 68% | -4% |
| Projected RevPAR | INR 3,600 | INR 3,910 | +8.6% |
And the revenue manager can decide based on the projected impact

US-013-11: ML Model Training Pipeline​

As a AI/ML Module Lead, I want to have an automated pipeline that ingests historical data, trains forecasting and pricing models, and deploys updated models, So that AI predictions improve over time as more data is collected.

Priority: P1 | Points: 13 | Sprint: 1 | Status: Partial

Implementation Status​

Data extraction queries for historical reservations, revenue, and occupancy exist. Feature engineering scripts (day of week, month, holiday flags, event proximity) are partially built. Model training (Prophet for forecasting, gradient boosting for pricing) is scaffolded but not tested with real data. Model serving infrastructure (ONNX Runtime or TensorFlow Serving) not configured. Model versioning and A/B testing framework not built.

Acceptance Criteria​

Scenario: Train demand forecasting model
Given 18 months of historical booking and occupancy data is available
When the training pipeline is triggered (scheduled weekly or on-demand)
Then the pipeline:
1. Extracts booking data, cancellation data, and occupancy records
2. Engineers features: day_of_week, month, holiday_flag, event_proximity, weather
3. Trains a Prophet model with Indian holiday calendar
4. Evaluates on held-out test data (last 30 days)
5. Reports MAPE, RMSE, and R-squared metrics
6. If MAPE < 15%, deploys the new model version
7. If MAPE >= 15%, retains the current model and alerts the team
And model version history is maintained with metrics for comparison

Scenario: Retrain after data drift detection
Given the current model was trained on pre-monsoon data
And monsoon season causes different booking patterns
When data drift is detected (prediction error increases by > 5% over 2 weeks)
Then an automatic retraining is triggered with the latest 12 months of data
And the new model incorporates monsoon seasonality patterns
And the revenue manager is notified of the model update

Document generated: 2026-03-05 | Epic Owner: AI/ML Module Lead | Review Cycle: Bi-weekly