AI Occupancy Forecasting for Hotels with LightGBM

Hotel revenue managers often rely on intuition, leading to revenue losses of up to 15%. We replace intuition with a data-driven forecast built on [LightGBM](https://lightgbm.readthedocs.io/) and custom features. An error in occupancy prediction results in an overcrowded restaurant or idle staff—we s

AI Development Areas

Frequently Asked Questions

Latest works

  • image_web-applications_feedme_466_0.webp
    Development of a web application for FEEDME
    1285
  • image_ecommerce_furnoro_435_0.webp
    Development of an online store for the company FURNORO
    1241
  • image_logo-advance_0.webp
    B2B Advance company logo design
    696
  • image_crm_enviok_479_0.webp
    Development of a web application for Enviok
    982
  • image_logo-aider_0.webp
    AIDER company logo development
    919
  • image_crm_chasseurs_493_0.webp
    CRM development for Chasseurs
    1033

Hotel revenue managers often rely on intuition, leading to revenue losses of up to 15%. We replace intuition with a data-driven forecast built on LightGBM and custom features. An error in occupancy prediction results in an overcrowded restaurant or idle staff—we solve this through granular analysis of OTB, pickup, and cancellations. Our team has 10+ years of experience in AI/ML and 30+ implemented projects in hospitality. We guarantee MAPE <5% at a 14-day horizon after model stabilization.

System Architecture for Hotel Occupancy Forecasting

On-the-books (OTB) Base — AI System Development

The current booking portfolio is the starting point. On a date 30 days out, OTB predicts final occupancy with 70–80% accuracy based solely on existing bookings.

Pickup Forecast

How many more bookings will come in from now until arrival. The pickup pattern is specific to each hotel and segment. We use historical pickup curves weighted by segment.

def pickup_forecast(arrival_date, current_reservations, pickup_curves): """ For each segment: historical pickup by day to arrival Example: business segment books on average 7 days ahead, leisure 30 """ days_until_arrival = (arrival_date - today).days expected_pickup = {} for segment, curve in pickup_curves.items(): expected_pickup[segment] = curve.predict(days_until_arrival, current_reservations[segment]) return sum(expected_pickup.values()) 

Cancellation Correction

Not all bookings materialize. Cancellations depend on lead time, rate type (non-refundable — 0%), and channel (OTA vs direct). No-show adds another 2–5%. The model predicts cancellation rate by segment using historical data and lead time. According to a study by Hospitality Technology, accurate cancellation forecasting reduces losses by up to 10%. We add the feature cancellation_exposure—the share of bookings with a high cancel rate—improving accuracy by 5–7%.

Segment Lead time 30+ days Lead time 7-14 days
OTA 30–40% 10–15%
Direct 15–20% 5–8%
Corporate 5–10% 2–3%

Feature Engineering

Feature engineering example ```python occupancy_features = { 'rooms_on_books': current_reservations, 'otb_vs_last_year_same_date': otb / last_year_otb, 'pace_index': otb_growth_rate, 'cancellation_exposure': high_cancel_rate_bookings, 'occupancy_same_date_last_year': historical_occupancy, 'occupancy_avg_dow_last_4w': avg_occupancy_day_of_week, 'convention_center_events': events_score, 'sports_events': sports_score, 'concerts': concert_score, 'graduation_season': graduation_flag, 'month': month, 'week_number': week_of_year, 'is_holiday': holiday_flag, 'school_holidays': school_holiday, 'competitor_sold_out': compset_availability_index, 'market_demand_index': str_market_demand } ```

These features allow the model to account for both internal trends (OTB, pickup) and external factors (events, market). The importance of each feature is evaluated via SHAP values, yielding an interpretable forecast.

Models by Horizon

Horizon Features MAPE Model
1–14 days OTB + pickup + cancellation <5% LightGBM
14–60 days OTB + events + seasonality 8–12% XGBoost + event embed
60–365 days Seasonal decomp + macro 15–25% Prophet + trend

LightGBM on short-term achieves the best accuracy due to its ability to capture nonlinear interactions between OTB features. Compared to ARIMA, LightGBM reduces MAPE by half at a 14-day horizon. For medium-term forecasts, we use XGBoost with event embedding; for long-term, Prophet with seasonal decomposition.

How PMS Integration Improves Forecast Accuracy?

Automatic import of bookings from PMS every 4 hours allows real-time forecast recalculation. When a group booking occurs, the system triggers a pickup forecast recalculation. The revenue management dashboard updates automatically, providing an operational occupancy picture. This reduces forecast error by 10–15% compared to manual updates once per day.

We also integrate STR (Smith Travel Research) data for competitor set comparison. The Market Penetration Index (MPI) allows adjusting the forecast for market share.

Accuracy metrics: D-1 forecast MAPE < 5%, D-7 forecast MAPE < 8%, D-30 forecast MAPE < 12%.

Segmented Hotel Forecast

Overall occupancy is not enough. We need a breakdown by guest segment and room type.

Guest Segments

  • Transient leisure (FIT): highest price, price-sensitive
  • Corporate: fixed rates, predictable pattern
  • Groups & Meetings: booked well in advance, high volume
  • OTA vs. Direct: different commission and client type

Room Type

  • Standard / Deluxe / Suite: different price, different demand elasticity
  • Single vs. Double: occupancy patterns differ

A segmented forecast enables dynamic pricing for each segment, increasing RevPAR by 5–8%. The additional revenue averages 1–2 million rubles per month for a 200-room hotel.

Operational Planning

Staffing

Housekeeping: occupied_rooms × checkout_stayover_mix × min_per_room / 60 F&B: expected_guests × meal_plan_pct × meals_per_time_slot Front Desk: check-ins_per_hour / optimal_agent_load 

Accurate occupancy forecasts optimize staffing and procurement costs. For example, at 80% occupancy, housekeeping needs 12 people; at 50% — 8. Staffing savings can reach 200,000 to 500,000 rubles per month.

Procurement

Breakfast forecast → product purchase 2–3 days ahead. Amenities ordered weekly based on forecast.

Maintenance Scheduling

Predicted low occupancy → schedule technical room work without revenue loss.

Why Segmented Forecast Generates More Profit?

Segmented forecast enables dynamic pricing for each segment. For instance, if the leisure segment shows high pickup, we can raise prices on standard rooms. The leisure segment often books closer to the date and is willing to pay more when occupancy is high. The segmented approach allows raising prices on standard rooms without affecting corporate blocks. Our experience shows RevPAR growth of 5–8% after implementing a segmented forecast. Order the development of an hotel occupancy forecasting system to achieve similar results.

How We Build the Model: Step-by-Step Process

  1. Analyze PMS data and identify biases.
  2. Feature engineering: OTB, pickup, events, competition.
  3. Train LightGBM with time-based cross-validation.
  4. A/B test with current forecast on historical data.
  5. Deploy model on Kubernetes via MLflow.
  6. Monitor accuracy and automatically retrain on data drift.
  7. Continuous monitoring and weekly retraining.

Scope of Work and Timelines

Included:

  • PMS data analysis and bias identification
  • Feature engineering: OTB, pickup, events, competition
  • LightGBM/XGBoost training and validation
  • Revenue management dashboard
  • Model and ETL documentation
  • Staff training
  • 3 months post-deployment support

Basic occupancy forecast with LightGBM and OTB features — 4–5 weeks. Segmented system with event calendar and operational planning — 3–4 months. Cost is calculated individually after data audit. Contact us for a preliminary assessment. Get a consultation on a pilot project.