Travel & Hospitality · Machine Learning
Increasing RevPAR by 23% across 14 properties through ML-driven dynamic pricing
A regional hotel group operating 14 properties across the US was managing room rates manually — a revenue manager updating rates in a spreadsheet twice a day, pushed to 17 OTAs and the direct booking engine by hand. Competitor rate changes, demand signals, and local event calendars were not being acted on fast enough. We built an ML-driven dynamic pricing engine that updates rates every 4 hours across all channels automatically, increased RevPAR by 23%, and eliminated 6 hours of daily manual rate management work.
Business Context
The rates were being set by a spreadsheet
updated twice a day.
The group had a single revenue manager responsible for all 14 properties. The process: pull occupancy reports from the PMS each morning and evening, check a handful of competitor rates manually on OTA sites, update a master rate spreadsheet, then push rates to each channel via the channel manager — a process taking 3 hours each cycle, 6 hours per day total. The system had no awareness of local events, no demand forecasting, and no competitor rate monitoring beyond what the revenue manager could check manually. Rates were effectively static between updates.
What the manual process was costing in revenue
- 6 hrs
- daily revenue manager time on manual rate updates
- 8 hrs
- average lag between competitor rate change and response
- 18%
- estimated RevPAR gap vs. comp set
Two 3-hour cycles per day across 14 properties and 17 distribution channels
Competitor moves between manual check cycles went unmatched for hours
Internal benchmarking against 3 comparable regional groups using automated pricing
The rate parity problem compounded the revenue loss. With 17 OTA connections managed manually, rate parity violations were common — a rate pushed to one channel would not propagate correctly to others, triggering OTA penalties and suppressing search ranking on the affected platforms. The revenue manager was spending a significant portion of each cycle correcting parity errors rather than optimising rates.
The group had evaluated enterprise revenue management platforms — tools like IDeaS and Duetto — but at $8,000–$15,000 per property per year, the cost for 14 properties was prohibitive. They needed the intelligence of an enterprise RMS at a fraction of the cost, built on top of their existing PMS and channel manager rather than replacing them.
Scope of Work
What we were asked to build
Demand forecasting model
Property-level demand forecasting using 3 years of historical occupancy, booking pace, cancellation patterns, and length-of-stay data. Model incorporates local event calendar signals, school holiday calendars, and macroeconomic seasonality. Forecasts generated at 90-day rolling horizon, updated nightly.
Competitor rate intelligence layer
Automated competitor rate monitoring across the comp set for each property — scraping OTA rate pages every 4 hours for 5 defined competitors per property. Rate positioning logic adjusts recommendations based on comp set position, occupancy pace, and days-to-arrival.
Dynamic pricing engine and rate recommendation API
ML pricing engine combining demand forecast, comp set position, current occupancy pace, and configurable revenue manager rules to generate rate recommendations per room type per property. Recommendations pushed automatically to the channel manager via API — no manual intervention required for standard rate updates.
Revenue manager dashboard and override interface
Web dashboard giving the revenue manager full visibility into forecast, comp set rates, current recommendations, and channel parity status across all 14 properties. Manual override capability for any property or date range. Alert system for parity violations and anomalous demand signals.
Constraints we worked within
- PMS and channel manager could not be replaced — all integrations had to be additive via existing APIs
- Rate recommendations required revenue manager approval workflow for the first 60 days before full automation
- Competitor rate scraping had to comply with OTA terms of service — used publicly visible rate pages only
- Some properties had thin historical data (2 properties opened in 2022) — required cold-start model handling
Explicitly not in scope
- Food and beverage or ancillary revenue optimisation
- Group and corporate rate negotiation
- Loyalty programme pricing or member rate management
- OTA contract renegotiation or distribution strategy advisory
System Architecture
One pricing engine. 14 properties. 17 channels. Rates updated every 4 hours.
How We Worked
6 months. Revenue manager in the loop throughout. Full automation in month 5.
Data Integration & Model Foundation
PMS historical data extraction and cleaning across all 14 properties. Identified 3 properties with data quality issues — missing rate codes and duplicate reservation records — requiring remediation before training. Competitor set defined with revenue manager for each property. Demand forecasting model trained on clean properties first.
Pricing Engine & Channel Integration
Dynamic pricing engine built and connected to channel manager API. Rate recommendation logic configured with revenue manager — 40+ business rules codified covering minimum rates, rate fences, length-of-stay restrictions, and blackout dates. Dashboard built and handed to revenue manager for daily use.
Supervised Automation — Approval Workflow
Engine running in recommendation mode — revenue manager reviewing and approving each rate push. Approval rate was 91% in week one, rising to 97% by end of month. The 3% of overrides informed rule refinements. Revenue manager reported saving 4 of the 6 daily hours immediately, using freed time for group rate strategy.
Full Automation & Performance Tuning
Moved to fully automated rate pushing with revenue manager monitoring via dashboard. Alert thresholds configured for anomalous recommendations. RevPAR tracking against comp set baseline established. Month 6 results confirmed 23% RevPAR improvement vs. same-period prior year, adjusted for market-wide demand changes.
Working rhythm
- CadenceTwo-week sprints, weekly revenue manager reviews
- Decision ownerVP of Operations and Revenue Manager
- Primary metricRevPAR vs. prior year and vs. comp set
- Escalation SLA24 hours with written recommendation
Results
Measured at 90 days post full automation.
increase in RevPAR across all 14 properties
Was: estimated 18% RevPAR gap vs. comp set using manual pricing
RevPAR improvement measured against same-period prior year, adjusted for a 4% market-wide demand increase in the same period. The engine's ability to respond to competitor moves within 4 hours — vs. 8 hours previously — was the single largest driver of improvement.
of daily revenue manager time recovered
Was: 6 hours/day on manual rate updates across 14 properties
Revenue manager now spends recovered time on group rate strategy, OTA relationship management, and longer-horizon demand planning — work that was previously crowded out entirely by manual rate operations.
reduction in rate parity violations
Was: frequent parity violations triggering OTA penalties and search ranking suppression
Automated rate pushing via channel manager API eliminated the manual propagation errors that caused parity violations. The remaining 6% of violations are driven by OTA-side processing delays, not rate management errors.
rate update frequency, down from twice-daily manual cycles
Was: rates updated twice per day — 8-hour average lag on competitor moves
The engine evaluates demand signals, comp set rates, and occupancy pace every 4 hours and pushes updated rates automatically. During high-demand periods around local events, the revenue manager can trigger on-demand rate refreshes from the dashboard.
What This Means for You
Manual rate management is a solved problem. Any hotel group managing rates across multiple properties and OTA channels without automated pricing intelligence is leaving measurable revenue on the table every day.
- 01Your revenue manager spends more time on rate administration than on revenue strategy
- 02Competitor rate changes go unmatched for hours because your monitoring is manual
- 03Rate parity violations are a recurring operational problem across your distribution channels
This engagement was scoped as an additive intelligence layer on top of the existing PMS and channel manager — no platform replacement, no disruption to live operations. The revenue manager was in the loop throughout, with full automation only after 60 days of supervised operation confirmed the engine's recommendations were sound.
See how we approach Machine Learning for travel and hospitality