ES EN
Back to blog
Nightfill blog

Five prices for the same bed, and only one of them moved

Our engine rewrites five lead-time bands every morning. Across 32 runs only the near-term ones moved: 0% to -8%. The tally was 19 deepen, 13 hold, 0 lift.

Published September 19, 2026 · 6 min read
Two colleagues brainstorm ideas on a whiteboard during a creative strategy session.
Photo: Walls.io / Pexels

One price is an average of five different decisions

Most 20 to 80 bed properties I talk to have one dorm rate, a weekend bump, and a high-season rate somebody set by hand in January. That is not one price. It is an average of at least five different situations, and an average is wrong in both directions at once.

A bed for a night 30 days out and the same bed at four in the afternoon today are not the same product. The first has thirty more chances to sell. The second has none: at midnight it is worth zero and it does not carry over to tomorrow. If both go out at the same price, one of them is wrong, and usually both are.

What we actually run

At Maka, our hostel in Oaxaca, the engine keeps five lead-time bands and rewrites all of them every morning: same-day, 1 to 3 days, 4 to 7 days, 8 to 21 days, and 22 to 45 days out. It only ever creates and deletes rates whose name starts with AUTO --. Everything you made by hand survives by construction, not by the code's good intentions.

The record I am quoting is 32 runs between 14 August and 5 September 2026. That is 22 distinct calendar dates, not 32: four days were run more than once while I was tuning the formula between runs. I mention it because "32 daily pricing decisions" would read better and would be false.

Only the near bands moved

The discount the engine learned over that window sits on the two near-term bands, L0 and L1 in the state file. It went from 0% to -8%, in 3-point steps, one step a day. The learned cap starts at 8 points and can widen to 25. It never had to.

What it looks at to decide is specific: yesterday's bed-night pickup at 0 to 3 days of lead time against the trailing 7-day average, and tonight's occupancy against a seasonal target (75% in low season, 90% in high). From that it lowers, holds or lifts, always in 3-point steps. Tonight-occupancy across the window ran between 11% and 47%.

The tally is the uncomfortable part

Out of 32 runs: 19 deepen, 13 hold, 0 lift.

The upward path exists in the code and never fired. That is not a bug: in low season occupancy never came close to the 75% target, so there was never a reason to lift. But the practical result is worth looking at straight. A lead-time ladder that only knows how to go down is not a ladder. It is a permanent sale with extra steps.

If you split your rates by lead time and the only band you ever touch is the last-minute one, you did not build a price structure. You built a nightly discount with a better name. The split on its own creates no upward pressure. It just gives you a smaller place to discount in.

And it did not fill the beds

Here is the number that made me stop. Days with the discount at -8% averaged 33.7% occupancy across 23 logged days. Days with the discount at 0% averaged 42.0% across 5. A gap of 8.3 points, against the discount.

The caveats go in whole, because without them the number lies: two regimes only, badly unequal samples (23 days against 5), no day-of-week control, no seasonal control, and all of it inside low season. This is not a regression. It is a directional signal, and the code's own comment calls it exactly that.

What it was good enough for: when the cap had sat pinned at 8 points for seven straight days and the logic went to widen it, the accumulated evidence blocked the widening. The engine held price instead of digging further. That decision is what I take from the window, not a gain.

What this means for your property

Splitting by lead time is worth doing because it localises the question. Before the split, "should I drop the price?" was one question about your entire rate, and you answered it from the feel of the common room. After the split it is five questions, and four of them usually answer themselves: leave it alone.

Three bands, not five, if you are doing this by hand

Five bands make sense when something rewrites all of them every morning. By hand they become work you will abandon in three weeks. Start with three:

  • Tonight and tomorrow. The perishable bed. This is where a discount makes sense, and where it gets out of hand fastest.
  • 2 to 7 days. The traveller who has decided on the city and is still choosing the bed.
  • 8 days and out. Inventory that still has time. It rarely deserves a discount.

Review once a week, on the same weekday. Change one band at a time. And measure pickup inside that band, not total occupancy: total occupancy moves for reasons that have nothing to do with what you touched, and it will hand you credit or blame for other people's weather.

Two guards before you split anything

First, protected dates. In our engine the blackout windows (Day of the Dead, its ramp-up week, Guelaguetza) are clipped out of every date range before anything is written, and a band that falls entirely inside a protected window is skipped outright. Without that, a discount learned in a dead September ends up written onto the best nights of your year, which is precisely when the mistake is most expensive.

Second, the floors. No bed ever goes below 55% of base price. Every price has to leave a minimum net per bed even on the worst channel with promotions stacked. And the anchor price may not undercut the cheapest competitor we track by more than 12 MXN: if the market falls through, we do not follow it down. The last-minute band is the one pushing hardest toward the floor, so it is the one that most needs a hard one.

What the split actually buys

It does not buy revenue on its own. Nightfill is independently operated, results vary by property, market and season, and what I have just described is one property in one low season.

What it buys is somewhere to put evidence. With a single rate, every change mixes with everything else and you never learn anything. With bands, each band accumulates its own history: what moved, when, and what happened to that band's bookings in the days after. The first time that history tells you not to drop the price, it has already paid for the work of splitting.

If this sounds like your property, see the three Nightfill tiers and start a free 14-day pilot on your own data: view pricing.

revenue-managementpricingantelacionocupacionautomatizacionoaxaca