Libardo Lambrano

Marketing Analytics & Commercial Strategy Leader · Hospitality & Travel · AI-Driven Insights & Automation

Hotel demand analytics · work sample

Synthetic demonstration data — not real market figures

Modelled position as of — · 50 markets · — stay months

libardo@syndikomm.com LinkedIn Orlando, FL · open to relocation

Market Demand Pacing

This is a demonstration built on synthetic data. It shows how fifty hotel markets would be read against the same point last year, across every stay month still wholly ahead — the tool a commercial team uses to catch softening demand while there is still time to price against it. The method, the pipeline and the design are real; the numbers are modelled, so the page can be shared freely.

The question

A hotel commercial team needs to know, months ahead, whether demand is running behind last year — while there is still room to move rate, shift channel mix or chase group business.

Timing is the whole value. A stay month twelve weeks out can still be priced against; the same month two weeks out can only be reported on.

Amadeus will send the raw daily numbers to anyone who asks. Turning fifty separate market files into one read a team can act on is the work.

The data

Fifty markets × fourteen stay months × six demand segments at a single as-of date: the structure of an Amadeus Hospitality — Destination Insights: Market Daily Occupancy export, which is what the working version of this report reads.

The figures on this page are generated, not measured. They are modelled on how that export behaves; a real one was used to establish the structure and nothing else. Amadeus supplies the export on request; its figures are Amadeus's and are not republished here. Swapping the synthetic file for the real one is a single command, and nothing else on the page changes.

How it was built

Python (pandas, openpyxl) reduces fifty daily workbooks to one monthly dataset — commercial teams plan in months, not days. On the working version, every monthly figure is reconciled against the export's own subtotal rows before it is allowed on the page.

The numbers here went through that same pipeline, but they came out of a generator rather than an export. Nothing on this page is a measurement of any real market.

The result is a single self-contained HTML file. No server, no build step, nothing leaving the browser. Re-pointing it at another dataset is one command, and the page relabels its own date ranges from whatever it is given — which is how one page serves both the real export and this synthetic stand-in.

The judgment calls

Three defaults here are arguments, not conveniences. Sold rather than Totals, because unsold group block inflates far-out demand. The window opens the month after the as-of date: the current month blends nights already stayed with nights on the books, and leaving it in overstated the portfolio's gain by more than half.

And every cell carries a signed number: red-to-green is the convention a commercial team reads fastest, but it fails colour-blind viewers, so the sign never rests on hue alone.

Pacing by market and stay month

Each cell is one market's demand for one stay month. Click a market to expand its detail underneath.

Portfolio trend by stay month

Where the book stands, month by month

Occupancy on the books across every market in the current selection, weighted by market size, against the same point last year. The steep slope is the booking window, not falling demand. At portfolio level the two lines usually sit close together, which is the point: the gap that matters is easier to read month by month on the right, and market by market in the grid above.

Portfolio occupancy on the books by stay month versus same time last year

Monthly gap against last year

The same variance in estimated room nights, so months can be compared and added. Bars above the line are ahead of last year, below it behind, on the same colour scale as the grid.

Variance against same time last year in room nights, by stay month

—

Booking curve

Occupancy on the books for each future stay month, against the same point last year. The downward slope is the booking window, not falling demand.

Occupancy on the books by stay month versus same time last year

What the demand is made of

Occupancy split by segment. Unsold block is group inventory held but not yet bought — it grows with distance and is why Totals overstates far-out demand.

Occupancy by demand segment and stay month

Read this before acting on it

Built by Libardo Lambrano as a work sample — marketing analytics and commercial strategy for hotels and travel, in English and Spanish. Open to commercial analytics, revenue strategy and insights roles, including Latin America and Caribbean portfolios and bilingual mandates. libardo@syndikomm.com · linkedin.com/in/libardo-lambrano

Synthetic data, generated for this demonstration — modelled to the structure of a hotel market daily-occupancy export, dated — for realism. No real market figures appear on this page. The working version of the report runs on an Amadeus Hospitality market export, supplied on request; those figures are Amadeus's and are not republished here, and no employer or otherwise confidential data is used. A red-to-blue colour scale is in the controls above for anyone who finds red and green hard to tell apart.