Shaping Shoulder-Season Demand With Predictive Signals
Discounting is what you do when you have run out of time. Predictive signals buy that time back. Here is how to spend it, week by week.
Field Notes · Data & Analytics
A cancellation score is only worth building if someone does something different on Tuesday because of it.

Casita 7 was booked 94 days out, through an online travel agency, on the flexible rate. Two adults, no special requests. The guest never opened the pre-arrival email. Nineteen days before arrival, the lodge dropped its rate for those dates by $30 a night in a shoulder-season promotion. Six days before arrival, the booking was cancelled. The casita stayed empty for both nights.
None of those signals means much on its own. Plenty of flexible OTA bookings made three months out turn up happily. Together, though, they form a pattern, and finding patterns is what models do well. The trouble is that a model which spots the pattern six days out is useless. By then there’s nothing left to do.
This walk-through follows the five decisions that determine whether a cancellation model earns its keep. It uses a hypothetical collection of 24 desert casitas, modeled on the kind of operation we work with.
“Will this booking cancel?” sounds like one question. It’s really several.
Which outcome. Cancellations, no-shows and date changes have different causes and call for different responses. Label them separately, even if you only model cancellations at first.
When. A score calculated once, at booking, ages badly. Score again at fixed checkpoints, say 60, 30, 21, 14 and 7 days before arrival. Each checkpoint brings new information, such as whether the guest has opened their messages or whether your price has moved. Each one also has its own set of actions that are still possible.
Conditional on what. At each checkpoint, the label is “cancels between now and arrival, given that the booking is still active now.” Mixing checkpoints into one training set without that condition teaches the model things that aren’t true.
In lodge and tour data, a short list of features does most of the work:
| Feature | Why it carries signal | Usual source |
|---|---|---|
| Lead time at booking | Long-lead bookings are often tentative | Reservation system |
| Rate plan and deposit | Free cancellation makes “just in case” bookings cheap | Reservation system |
| Booking channel | Channels differ in how easily guests hold several options | Channel manager |
| Party and stay pattern | Solo weekday stays behave differently from family weekends | Reservation system |
| Modifications so far | An earlier date change means plans are still moving | Reservation system |
| Pre-arrival engagement | Opening the welcome email or asking about dinner signals commitment | Messaging platform |
| Payment events | A failed card authorization is a strong, early flag | Payment provider |
| Price change since booking | A lower current price invites cancel-and-rebook | Rate history |
| Destination signals | Large events, smoke forecasts, road closures | Calendars and feeds |
| Repeat guest | Past stays strongly predict arrival | CRM |
Two warnings apply.
Leakage. Fields like “refund issued,” “cancellation email sent” or a “last modified” timestamp that the cancellation itself updates exist because the booking cancelled. They make a model look brilliant in testing and useless in production. Use only what was known at the checkpoint.
Proxies. Leave out characteristics that stand in for who a guest is, such as nationality or home ZIP code. They raise fairness problems, and once behavior is in the model they rarely add much.
Those features live in four or five systems that seldom share a clean booking ID. Joining them reliably is usually the largest piece of work in the project, and it’s where our travel data engineering work tends to start.
Regularized logistic regression or gradient-boosted trees will both do the job. A few thousand bookings across two seasons is enough for either. The choice of model matters far less than two other habits:
Ranking metrics tell you whether risky bookings score higher than safe ones. They don’t tell you whether a score of 0.30 means 30%, and decisions run on probabilities. Here’s what a calibration check looks like for one test season:
| Score band | Bookings | Predicted cancellations | Actual cancellations |
|---|---|---|---|
| Under 0.10 | 412 | 21 | 24 |
| 0.10–0.25 | 268 | 46 | 41 |
| 0.25–0.50 | 131 | 47 | 52 |
| 0.50 and above | 39 | 25 | 23 |
| All | 850 | 139 | 140 |
That’s close enough to plan on. If predicted and actual drift apart by more than about 20% in any band for two months running, recalibrate before anyone acts on the scores.
Take a Thursday night in late September. All 24 casitas are booked, and the cancellation probabilities for that night add up to 3.1. The average rate is $240. Walking a guest, meaning moving them to a comparable property nearby, covering the difference and adding a goodwill credit, costs an estimated $400.
The k-th extra booking is worth the nightly rate times the probability of at least k cancellations, minus the walk cost times the probability of fewer than k. A Poisson approximation with a mean of 3.1 gives:
| Extra booking | Chance a casita frees up | Expected revenue | Expected walk cost | Net |
|---|---|---|---|---|
| 1st | 95.5% | $229 | $18 | +$211 |
| 2nd | 81.5% | $196 | $74 | +$122 |
| 3rd | 59.9% | $144 | $161 | −$17 |
So stop at two. The calculation assumes the extra bookings are non-refundable and that late cancellations would otherwise go unsold. The Poisson approximation slightly overstates the chance of zero cancellations, which errs on the cautious side. If your honest walk cost is closer to $1,000, the second extra booking only just breaks even, and one is the right number.
Most small lodges won’t, and they don’t need to. The score can drive a ladder of gentler actions, here at the 21-day checkpoint:
| Score at 21 days | Action | Cost | Owner |
|---|---|---|---|
| Under 0.10 | Standard pre-arrival message | None | Automated |
| 0.10–0.25 | Pre-arrival message with a one-tap “change dates” link | None | Automated |
| 0.25–0.50 | Personal note from reservations, offering a move to a shoulder week | About 5 minutes | Reservations |
| 0.50 and above | Personal note or call; open the date to the waitlist and shoulder packages | About 10 minutes plus a decision | Revenue lead |
That last row connects cancellation risk to shoulder-season demand shaping. A date that’s likely to open up is a date you can start marketing quietly.
For tour operators, the costly question usually isn’t an empty seat. It’s whether a departure still runs. Take a small-group walk that needs four travelers to go ahead. Five solo travelers are booked, with cancellation scores of 0.10, 0.15, 0.20, 0.35 and 0.40. They add up to only 1.2 expected cancellations, which sounds safe. But the departure fails if just two people cancel, and the exact probability of that is 35%.
A one-in-three chance of falling below the minimum, seen 21 days out, is something you can act on. You can push the date harder through your channels, offer the seats to a waitlist, or set a consolidation date and offer travelers the next day’s departure now, while they can still adjust. Merging departures at 21 days costs a polite email. Cancelling at 3 days costs refunds, a guide’s day and probably a review.
This is the reframe that matters most. For a shoulder-season lodge, the chance of reselling a cancelled night falls steeply as arrival approaches. Here are illustrative figures: about 70% with 30 or more days’ notice, 50% at 15 to 29 days, 30% at 7 to 14 days, and 12% inside a week.
Move one two-night cancellation from five days’ notice to twenty and the expected resale value rises from 12% to 50% of $480, a gain of about $182. You haven’t saved the booking. You’ve saved the nights.
So the reconfirmation message for a high-score booking shouldn’t make the guest feel guilty. It should make changing plans easy: “Plans shifted? Move or cancel your dates in one tap.” It sounds backwards, and it works. In our pilot with a small collection of desert lodges, a warm reconfirmation went out 21 days ahead to medium- and high-risk bookings, and released rooms went straight to the waitlist. Seven in ten late cancellations were flagged at least 14 days before they happened, and the share of late-cancelled room-nights resold before arrival rose from 24% to 57%. The goal was never fewer cancellations. It was more nights resold. The desert lodge collection case study covers that pattern alongside the shoulder-season packages built around it.
A cancellation model is a living system, not a one-time project:
In Nova’s Signals module, cancellation risk is rescored at each checkpoint and delivered as the action ladder above rather than as a raw number. Watching for drift, recalibrating and retraining are part of what managed AI operations covers. For most hotels and lodges, that upkeep matters more than the first version of the model.
Before building anything, pull two seasons of bookings and calculate the cancellation rate in twelve cells: three lead-time bands (0–14, 15–60 and over 60 days) by two rate types (flexible and non-refundable) by two channels (direct and OTA). Then record how many days’ notice each cancellation gave.
If the riskiest cell cancels at less than twice the rate of the safest, a model won’t add much yet. Work on making early cancellation easy. If the gap is four times or more, the signal is worth modeling, and the notice-days column is your baseline for proving it worked.
Questions
A few thousand bookings across at least two seasons is usually enough for a useful, calibrated model, as long as each cancellation is recorded with its date. With fewer than that, a simple table of cancellation rates by lead time, rate plan and channel often captures most of the value.
No. A score is an internal planning tool. It should change how your team prepares, not how a guest is treated or priced. It should never rely on characteristics such as nationality or home ZIP code as stand-ins for who a guest is.
Keep reading
Discounting is what you do when you have run out of time. Predictive signals buy that time back. Here is how to spend it, week by week.
A preference profile is a promise about what you will do with what a traveler tells you. Here is a design that keeps the promise small, visible and useful.
Ask a booking desk where the week goes and you will hear 'email.' Log it in ten-minute blocks and the answer gets more specific, and much more fixable.
Bring the problem this article describes to a 45-minute discovery call. We will tell you honestly whether AI is the right tool for it yet.