Skip to main content

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 spreadsheetupdated 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

Two 3-hour cycles per day across 14 properties and 17 distribution channels

8 hrs
average lag between competitor rate change and response

Competitor moves between manual check cycles went unmatched for hours

18%
estimated RevPAR gap vs. comp set

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

01

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.

02

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.

03

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.

04

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.

Primary pricing pipeline
Supporting intelligence and control layer

How We Worked

6 months. Revenue manager in the loop throughout. Full automation in month 5.

Month 1–2

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.

Month 3

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.

Month 4

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.

Month 5–6

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.

0%

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.

0hrs

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.

0%

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.

0hrs

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.

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.

Tell us what you're building.

"They don't force us to go their way; instead, they follow our way of thinking."

★★★★★Marek StrzelczykHead of New Products & IT, GS1 Polska

What happens next

  • We respond to every inquiry within 1 business day.
  • A 30-minute discovery call — no templates, no sales scripts.
  • An honest assessment of fit. We'll tell you early if we're not the right partner.