Skip to content

One reporting dashboard, built on the hotel’s live booking data.

A 150-room resort hotel in Brazil was building six separate AI tools that didn’t share any data. We built one dashboard that reads the hotel’s booking system directly and refreshes every morning.

BookingsPayrollBank CSVMonthly reportDaily emailStaff toolsCalculated firstAI explainsHUB
  • 1,206days of booking history loaded
  • 0.05%largest gap from the hotel’s own monthly revenue report, over 19 months
  • 4 of 6planned tools rebuilt in about three weeks
  • Dailyrefresh at 6:30 am, with nobody touching it

Before the build.

The hotel’s team was building six separate tools on an outside AI platform, with costs heading towards about AUD $20,000 a year. The tools didn’t talk to each other. Staff exported spreadsheets from the booking system and uploaded them by hand to get a monthly report.

Nobody could see occupancy, revenue and receivables in one place without rebuilding the numbers first.

What we built.

  1. A live link to the booking system

    The dashboard reads the hotel’s property management system directly, and never writes to it. More than three years of history were loaded on the first run.

  2. The monthly report, rebuilt

    The report staff used to assemble by hand is now produced from the booking data.

  3. Payroll and the income statement

    The accountant uploads the payroll file. The system reads the figures, shows where each one came from and waits for a person to confirm.

  4. Front desk tools

    Quotes with real availability sent by WhatsApp, guest receipts, a daily arrivals and departures sheet, and bank reconciliation from a CSV.

  5. AI that can’t make up numbers

    The code works out every figure first. The AI only explains those figures, and the prompt forbids any number it wasn’t given.

  6. Tools requested in plain words

    Staff describe a tool they need in Portuguese. The system asks one question at a time and writes the specification.

What changed.

  • Within 0.05% of the hotel’s own monthly revenue figures across 19 months, with room capacity matching exactly.
  • A 26% error caught. A published average daily rate of R$942 was really R$745. A test now blocks the mistake that caused it.
  • Receivables of R$746,000, not R$12.4 million, once the booking data was read properly. A simple sum of the raw records gives the wrong answer.
  • 259 days of missing payment data were found and fixed during the first load.

Where it stands.

This dashboard was built as a working prototype for the hotel’s team and runs every day on their live data. It isn’t a finished client engagement, so the hotel isn’t named.

JavaScriptVercel serverless functionsProperty management system API (read-only)GitHub ActionsxAI Grok