For years, the forecast that underpins much of our Revenue & Profit Operating System ran on historical averages. It was reliable. It got the job done. But it required revenue managers to hand-tune parameters at the property level, and over time the gap between what that approach could deliver and what our customers needed kept widening. At the same time, AI was moving fast enough that standing still wasn't an option. We knew we needed to design a new forecast that delivered on what customers actually needed, removed the need for manual intervention, and kept pace with what AI could now do. That's exactly the kind of challenge Duetto doesn't back down from.
And we just shipped it.
Our new forecast is powered by an AI/ML model that learns from each property's actual booking history as well as exogenous signals. Instead of relying on static averages that someone has to manually configure and maintain, it draws on a rich set of signals: pickup pace, seasonal patterns, competitive dynamics, local events, same-time-last-year benchmarks, lead time, length of stay, and more. Each hotel gets its own model, trained on its own data, tuned to its own booking behavior. No manual intervention required.
The result is a forecast that is more accurate than our legacy system, and more accurate than the manual tuning that humans had to do on top of it.
Watch Sabrina Jackson, our VP of Product Management, go over the new forecast.
Inside Duetto, this was known as the "not-do project" for a long time, and honestly, for good reason. Our forecast system touches nearly every part of the application. Revenue managers see it in Forecast & Budget Builder when they're planning the months ahead, and again in Manage Rates where demand shapes pricing decisions. I often describe it as tentacles running through the entire platform.
Rebuilding something that deeply embedded is expensive and risky. It required our best engineers, data scientists, and ML platform specialists working in concert. Our approach was staged and deliberate. First, we decoupled the legacy forecast from the rest of the platform. While that decoupling was underway, our data science team ran a parallel series of experiments to develop a model optimized specifically for forecast accuracy. Once we had a model we believed in, we productionized it in shadow mode.
Shadow mode lets us run the new forecast against real production data without surfacing it to customers. We could measure both model quality and service reliability before anyone saw a single number.
That validation step is non-negotiable for us. Only after clearing that bar did we go live.
We measure forecast quality using two industry-standard metrics, sMAPE and WAPE. sMAPE, or Symmetric Mean Absolute Percentage Error, measures how far a forecast deviates from actuals as a percentage, and it handles both over-forecasting and under-forecasting fairly. WAPE, Weighted Absolute Percentage Error, does something similar but weights the errors by volume, so a miss on a high-demand night counts more than a miss on a quiet Tuesday.
Across our beta customers, we're seeing a 12% improvement in sMAPE and an 8% improvement in WAPE compared to the legacy forecast.
We also evaluate how actuals deviate from forecasts at the monthly aggregate level. Our customers are landing between 1 and 6 percent forecast error at the monthly aggregate level within a 30-day window. That's well within the 5 percent benchmark that revenue managers across the industry expect, and many of our properties are beating it.
These performance improvements average to 95.22% forecast accuracy across all customer portfolios. Some customers using the latest forecast updates have also seen up to 99% accuracy. (April 2026–September 9).
What might matter more than the accuracy gains is what's producing them. The legacy forecast was built on a narrow foundation: historical averages, manually constructed. This model draws on a fundamentally wider range of signals, and it does so without anyone touching a dial.
We're already incorporating endogenous data like cumulative bookings, arrival patterns, and historical pickup. On the exogenous side, we're pulling in event data from PredictHQ and events logged directly in the application, with weather data, travel trends, and marketing campaign signals on the roadmap.
We also shipped something I've been pushing for a long time: forecast explainability. Every individual forecast for every stay date now comes with its own driver waterfall chart (seen below).
It shows not just what the forecast is, but what's driving it and by how much. For revenue managers who need to trust the number before they act on it, that transparency changes the conversation entirely.
One more technical detail worth noting. Our demand forecast optimizes for the most accurate prediction of actual bookings, and our constrainer layer optimizes for revenue.
It's a dynamic revenue optimizer that prioritizes higher-value bookings. These are two distinct objectives working together, and that distinction is core to how we think about the full forecasting pipeline.
The new forecast is live with a third of Duetto customers and we're onboarding properties on a rolling schedule over the coming weeks.
This is not a one-and-done release. We operate in an agile environment, so improvements ship continuously. Bigger and better models are already in development, and our data engineering team is expanding the signals we can bring in. The next major milestone is rolling out our group pipeline forecast to give customers a complete demand picture across both transient and group business. After that, we move into true revenue optimization, where the forecast doesn't just predict demand but recommends strategy. That's the future we're building toward, and we're moving fast.
The new forecast is gradually rolling out to customers across the Duetto platform, powering forecasting, budgeting, and pricing decisions throughout the Revenue & Profit Operating System.