Resort group revenue cockpit
The PMS has no API, so the team rebuilt its KPIs by hand every morning. Reports now load themselves before 9am.
Screens



Real interface. Fictitious or anonymized data. Client name withheld.
Context
A resort group running several properties on Oracle Opera Cloud. Revenue managers report occupancy, ADR and pick-up to group management every morning.
The problem
The hotel PMS offers no API. Every morning, the revenue team rebuilt the same occupancy, ADR and pick-up figures by hand from exported reports.
The constraint
The PMS offers no API. Scheduled reports sent by e-mail are the only dependable source of data, and the cockpit has to know when they did not arrive.
What we built
- Month-to-date and on-the-books KPIs for each property, with a three-month forward view
- A monthly pick-up report against budget, last year and year to date, broken down by market, channel, room type, lead time and country, all tying back to the same totals
- A daily data feed from scheduled PMS reports, with its status shown on screen so nobody presents stale figures
- Role-based access, and the same overview on a phone
How it works
Opera sends its scheduled reports by e-mail. Power Automate collects each one and posts it to a secured webhook. The data lands in Supabase, is checked, and feeds the cockpit. The status of the daily feed is shown on screen, so nobody presents stale figures.
What changed
The revenue team stopped rebuilding the same figures by hand each morning. The reports load before 9am, and the feed status says whether the numbers are current.
Related capabilities
- Hospitality data analytics
- Business automation
- The Business Cockpit
- BuildHow a build runs: scoping workshop, three sessions, a system in production.
- RunWhat happens after launch: hosting, monitoring, fixes and new features.
Other systems we have built.
19 systems across hospitality, industry and services.

City hotel group cockpit
Each morning, management knows where the month will land against budget, from one set of figures reconciled with accounting.
Constraint. Hotels reported on separate timetables and group figures were assembled afterwards.

Stop sales cockpit
Closures by room type, channel and date in one grid, with every change logged and sent to partners automatically.
Constraint. A closure must reach every channel and partner, and each change needs an audit trail.

Group quotation engine
Group requests used to be priced by hand in Excel. They are now qualified against capacity and forecast, then quoted from the rate grid.
Constraint. Group requests were priced by hand in Excel, with no check against capacity or forecast.