Ashish · field notes
All notes
← back to the system map
LiveRevenue & Distribution2 min read

Performance dashboard

One parquet store, one dashboard, and I can see the whole portfolio's occupancy, ADR, and revenue against last year.

Numbers scattered across a PMS, legacy exports, and spreadsheets are not a view. I wanted one place to see actuals and year-over-year for every property without opening ten systems.

How it works

Python reads the shared parquet store, fed by the nightly PMS ingest and the legacy archive, normalizes it, and renders a static dashboard published to Cloudflare. Year-over-year uses day-of-week alignment, not calendar date, so a Sunday compares to a Sunday and a holiday sellout does not corrupt the prior-year ADR.

Live and refreshed nightly by the same pipeline that builds the flash. The known gap is early-year months where the PMS export carries only one trailing month, filled once a one-time historical export lands.

A performance dashboard is the analyst deliverable an owner never has time to build weekly. Here it rebuilds itself every night. I moved from producing the view to just reading it, which is the whole point of one owner plus agents.

Got an idea? Tell me →More field notes