Housekeeping board & credits integration
I read our real cleaning-credit config and the daily board straight from the housekeeping app's API, instead of clicking through ten admin panels.
Housekeeping runs on Flexkeeping. To feed the trackers, the efficiency index, and the credit audits, I needed our actual configured cleaning credits and each day's board, per hotel. Doing that through the admin UI for ten properties every day is a non-starter.
How it works
A per-hotel read integration hits the Flexkeeping board API plus its Superset analytics. Auth is the in-app JWT access token and a Superset token, and every call is scoped to one property with an x-id-facility header. Python and Playwright drive it. It reads the credit table (minutes per room per clean type), the automated-cleaning schemas (the rule engine that decides which clean fires today), and today's board, then writes a daily assignments file the dashboards consume.
- Credits are stored per room, not per room type, so I derive each property's real minutes empirically.
- Two credit layers coexist: the simple status base credits and the cleaning-type credits the board actually bills.
- Capture is hardened against a Cloudflare Turnstile wall by attaching real headed Chrome over CDP instead of running headless.
It's live across all ten hotels. It's the sensor under the housekeeping copilot and the labor-utilization work. Next is sourcing the room list from the PMS directly instead of scraping the board.
Every credit audit that used to need a person walking the admin screens now runs itself. That's exactly how the exception rate keeps dropping.