The challenge
Atlas Voyages sells safari packages and lodge stays across Southern and East Africa, through its website and a network of trade agents. Pricing was a spreadsheet exercise done twice a year: a rate card per lodge per season, set in January, adjusted in June. Between those dates, the price never moved, no matter what demand did.
The cost of static pricing showed at both ends. Peak weeks sold out months early, which means they were priced too low. Shoulder weeks sat at 40% occupancy while the rate card held firm. The commercial team could see the problem in the numbers but had no mechanism to act on it, and the ageing booking system offered no way to change prices without republishing the whole rate card to agents.
The approach
We built this in two deliberate stages: first a booking engine that could accept a price from anywhere, then the pricing model itself. Getting the plumbing right first meant the model could start simple and improve without touching the booking flow. And because trust decides whether a pricing model survives contact with a commercial team, every price came with guardrails the team set themselves.
- Rebuilt the booking flow first, with price as a live input rather than a published rate card
- Trained demand models on five years of booking history, seasonality, and lead-time patterns
- Set floor and ceiling prices per lodge, controlled by the commercial team, never the model
- Ran the model in shadow mode for two months, logging its prices next to real ones
- Rolled out lodge by lodge, comparing revenue against matched control properties
What we built
The platform is a booking engine for web and trade agents, backed by a pricing service that scores demand for every lodge and date nightly and serves prices in under 140 milliseconds at booking time. The model weighs lead time, pace of bookings against history, seasonality, and remaining inventory. The commercial team sees why a price moved, not just that it did.
- A rebuilt booking engine for direct and trade channels, with live availability and instant confirmation
- A demand model per lodge that reprices nightly within commercial guardrails
- An explanation view showing the drivers behind every price change
- Floor, ceiling, and override controls so the commercial team always has the last word
- An agent portal where trade partners see live prices instead of stale rate cards
- Weekly model retraining with performance tracked against holdout properties
5 yrs
of booking history behind the demand model
2 months
of shadow-mode validation before any live price
38
lodges repricing nightly
The outcome
Across the first full season, revenue per booking rose 18% against the prior year. Peak weeks stopped selling out in February because prices rose to meet demand, capturing value that used to be left on the table. Shoulder-season occupancy climbed 9 points as the model shaded prices down early enough for agents to sell the gap weeks.
The commercial team, initially the most sceptical audience in the building, now runs its weekly trading meeting from the pricing dashboards. Overrides happen, and they are logged and fed back into the model. Atlas has extended the engagement to bring flight and transfer add-ons into the same engine, and the January rate-card ritual is gone for good.




