Hospitality in the Canary Islands faces a particular challenge that is not felt with the same intensity anywhere else in Spain: seasonality is pronounced, variable and shaped by very local factors. A group with three hotels — two in the south of Gran Canaria and one on Lanzarote — came to us with a specific problem: its food & beverage (F&B) purchasing relied on the purchasing manager's instinct and an Excel spreadsheet updated every Monday morning. The result: product waste in high season and stock-outs in unexpectedly busy weeks.
The hotel group handled between 1,200 and 2,800 room nights a week depending on the season, with a food offering that included buffet, à la carte and event catering. The purchasing manager had twelve years in the industry and sound judgement, but complexity had grown: new customer segments (Nordic travellers, Spanish families, corporate incentive groups), an expanded menu and higher quality expectations.
The problem was not just Excel. It was the absence of a systematic model bringing together every relevant variable: forecast occupancy, guest mix by origin, local events, weather and historical consumption by category. The spreadsheet captured forecast occupancy from the PMS (Property Management System) and nothing else.
In high season, waste of fresh produce (vegetables, fish, dairy) accounted for 8–12% of the weekly purchasing bill. In weeks with unexpected events (the Las Palmas Carnival, Tenerife's Semana Grande), the kitchen ran short of key ingredients, which hit guest ratings directly and drove up the cost of emergency purchases at higher prices.
We proposed a two-layer solution. The first was a time-series model built with Prophet (developed by Meta) to capture the business's overall seasonality: the annual trend, weekly patterns and public holiday effects. Prophet is particularly good with data that has multiple seasonalities and irregular events, which is exactly the case for Canary Islands hospitality.
The second layer was an XGBoost model trained on Prophet's residuals and enriched with exogenous variables: historical weather data (temperature and rainfall in Las Palmas and Arrecife, drawn from the AEMET API), occupancy rates from the Protel PMS by room type, guest origin (main source market), and a hand-built calendar of the 23 key local dates identified for the Canary Islands.
The first step was to extract historical consumption from the client's purchasing system, which held records going back to 2019. The data was in Excel with an inconsistent structure: different units of measure for the same product over time, supplier changes that altered product reference names, and weeks with no data owing to temporary closures (COVID, refurbishments).
We carried out an intensive cleansing and normalisation process: standardising units (kg, litres, units), reconciling product references, imputing missing weeks and detecting outliers using Isolation Forest. The result was a clean 260-week time series per product category, ready for training.
We built the exogenous variables, connected the AEMET API to obtain historical temperature data and created the Canary Islands events calendar. We trained Prophet with seasonality parameters tuned to the domain (strong weekly seasonality, and annual seasonality with two peaks: summer and Christmas–New Year).
For XGBoost, we used season-based cross-validation (walk-forward validation), with 2019–2023 data for training and 2024 for testing. The final MAE (mean absolute error) was 6.2% for high-volume categories (meat, vegetables, drinks) and 11.4% for more volatile ones (fresh fish, seafood).
We deployed the model on AWS Lambda, running automatically every Sunday at 22:00 and producing a consumption forecast by category for the following 14 days. Results are written to a PostgreSQL database and displayed in a Power BI dashboard available to the purchasing manager and operations management.
The dashboard includes forecast consumption vs current stock (with stock-out alerts), forecast vs actual for the last four weeks, and a calendar view of upcoming events that affect the forecast.
After six months in operation, we measured the results against the same period the previous year, controlling for occupancy (both periods had similar occupancy levels):
Working in the Canary Islands means understanding nuances that generic models miss. Easter in the Canaries is shorter than on the mainland, and its effect on tourist demand is more muted than at mainland beach destinations. The Las Palmas de Gran Canaria Carnival (the third largest in the world) creates a very specific spike in demand on Gran Canaria but has virtually no effect on Lanzarote. The surf season in the north of Fuerteventura attracts a guest segment whose consumption patterns differ from those of traditional family tourism.
Another key lesson concerned PMS data quality. Protel is a mature system, but data consistency depends heavily on each hotel's internal procedures. We found misclassified bookings, guest segments that were inconsistent across the three properties, and historical occupancy figures distorted by duplicate entries. Before the model could be trained, we had to build a PMS data validation pipeline running in parallel.
Finally, quarterly retraining is essential. The model is not static: consumption patterns evolve with the guest profile, the food offering and market conditions. We set up an automatic retraining process every three months, with the purchasing manager manually validating the results before each new version goes into production.
If you want to improve your F&B purchasing with AI and cut food waste, we can help you design a solution tailored to your PMS and your data.
Get in touchLet's talk
Tell us about your project and we will propose the most suitable solution, with no obligation.