Skip to content
All case studies
Web & MobileNDA10 min read

Hotel Operations & Housekeeping SaaS

A real-time operations platform where housekeeping, maintenance and the front desk finally see the same hotel — serving 1,000+ properties on one live operational layer.

Anonymized under NDA — no client names or screenshots. The engineering is real.

A hospitality SaaS serving city business hotels, long-stay serviced apartments and destination resorts — properties that coordinated housekeeping, maintenance and the front desk with spreadsheets, radios and paper registers. I worked full-stack on the platform that replaced that: reservation events flow in from the property's PMS and become orchestrated work, rooms move through a live status lifecycle on every device at once, cleaning plans assign themselves each morning, and frontline apps keep working in basement-grade connectivity. The platform now serves 1,000+ hotels.

1,000+

Hotels served by the real-time ops backend

90%

Daily tasks generated automatically

Platform-reported figure — PMS events drive the work

96%

Attendance reliability after rollout

From manual paper registers

95%

Sync reliability in low-signal zones

Basements, villas, remote resort corners

Role
Full Stack Engineer
Timeline
2019 – 2022
Type
Agency client · Hospitality SaaS (France)
Scope
Four-app ecosystem, offline sync, real-time room status, PMS integration, RBAC and dashboards

Stack

React NativeReactreact-hook-formNode.jsExpressREST APIsRBAC & audit trailsCloud object storageBackground sync queuesETL & analytics viewsSSO

Chapter 01

Where it started

Hotels run on a paper-and-radio operating system. The PMS knows who checks out at 11; housekeeping finds out from a printed sheet; maintenance hears about the broken AC when a guest complains at the desk; and the housekeeping manager spends the first hour of every morning hand-assigning rooms to attendants.

Between those silos live the failures guests actually feel — the room that wasn't ready at check-in, the 'clean' room with a burnt-out bulb, the do-not-disturb sign that quietly wrecked the afternoon plan. Nobody could answer 'is room 412 ready?' without walking there or raising someone on the radio, so the front desk and housekeeping spent their day reconciling three versions of reality.

The portfolio made it harder: city business hotels, long-stay serviced apartments and destination resorts each drifted toward their own informal process, so service quality varied property by property, and leadership had no comparable live view across any of them.

And the people doing the work spend their shift in exactly the parts of a building where connectivity dies — basement laundries, concrete stairwells, standalone villas at the edge of a resort. Any workflow that assumed a network connection broke precisely where the work happened.

The platform had to make one live source of truth out of all of it: reservations flowing in from the PMS, room states changing on housekeepers' phones in elevators, tickets spawning from guest requests, and dashboards telling managers what today actually looks like.

Chapter 02

What I built

The system first, then the people it serves, then the build log of how it came together.

The system

Client

  • Four React Native apps: Attendance, Inspection, Maintenance, Runner
  • React web dashboard for supervisors, managers and front desk
  • Offline storage with queued background sync
  • react-hook-form driven checklists and forms

Core

  • Node/Express APIs — room & task state machines
  • Real-time status fan-out to every connected client
  • PMS sync layer — reservation events become work
  • Guest-request routing: ETAs, escalations, SLAs
  • RBAC and audit trails on every transition

Services & data

  • Cloud object storage for photos, checklists and confirmations
  • Analytics views and ETL jobs feeding dashboards
  • Push notifications to staff devices
  • Single sign-on across properties and apps

Each app handles its workflow independently, but every action lands in the same operational layer, so management sees one live picture.

A React web dashboard serves supervisors, managers and the front desk; four focused React Native apps serve the people in the corridors. Both talk to Node/Express APIs that own the room and task state machines, fanning every status change out to connected clients in real time. A sync layer normalizes inbound PMS events into one canonical reservation model, object storage holds photo evidence, and analytics jobs pre-aggregate the dashboards. Every state change flows through the API — so the live board, the mobile apps and the PMS never disagree for long.

Who uses it

Housekeeper

  • Work a personal daily run, ordered by priority and floor
  • Update room status in one tap — including offline
  • Complete checklists with photo evidence
  • Have DND rooms re-slot automatically in the run

Supervisor

  • Watch the live room-status board across floors and zones
  • Review the auto-generated plan and override by drag-and-drop
  • Run inspection queues with pass/fail and follow-up tasks
  • Re-plan mid-day for callouts and room moves

Maintenance technician

  • Pick up tickets fed by staff reports and guest requests
  • Follow preventive schedules on rooms and assets
  • See per-asset history — every fix in one place
  • Attach photo confirmations to closed jobs

Manager / front desk

  • See room readiness at a glance for arrivals
  • Track guest requests against ETAs and SLAs
  • Compare properties on the same live data
  • Read operational reports without compiling them

Admin

  • Configure multiple properties from one platform
  • Manage roles and permissions across all four apps
  • Monitor PMS integration and sync health

The build log

  1. 01

    Process mapping before code: shadowing housekeeping teams, inspectors, maintenance staff and runners across property types, and mapping every action — from punch-ins to a faulty AC to VIP arrival prep — into four core journeys.

  2. 02

    The room is a state machine — dirty, in-progress, cleaned, inspected, do-not-disturb, out-of-order — where every transition is owned by a role, timestamped for audit, and broadcast live to every connected device.

  3. 03

    PMS integration turns reservations into work automatically: checkouts spawn departure cleans, stay-overs spawn refresh cleans, room moves re-prioritize the queue. Staff never feed the system; the system feeds them.

  4. 04

    Auto-generated daily cleaning plans built from workload credits per room type, floor zones and checkout priorities — with drag-and-drop manual override, because supervisors trust automation they can correct.

  5. 05

    Offline-first frontline apps: a modular four-app ecosystem (Attendance, Inspection, Maintenance, Runner), each shaped for one job, with local action queues that sync and reconcile safely when the signal returns.

  6. 06

    Guest requests become trackable tasks with owners, SLAs and escalation timers; preventive-maintenance schedules live on rooms and assets; and real-time dashboards — backed by analytics views, ETL jobs and payload optimization — give leadership one live picture across every property.

Chapter 03

Turning points

The moments that shaped the build, and the roads not taken.

The front desk promises rooms to arriving guests based on what housekeeping has actually finished — a stale board sells a dirty room.
Challenge
Room states change hundreds of times a day from phones all over the building, and every stakeholder — supervisor board, front-desk view, attendant app — must reflect each change within seconds, including after devices drop off the network.
Approach
Every transition writes through the API and fans out to connected clients scoped per property, so all views update in real time. Clients re-sync state on reconnect rather than trusting their last snapshot, and the audit trail records actor and timestamp per transition, making the board's history as trustworthy as its present.
Result
Front desk, housekeeping and management stopped reconciling three versions of reality — room readiness became something you look up, not something you call the floor to confirm.
The people updating room status spend their shift in the exact parts of a building where connectivity is worst.
Challenge
Attendants had to start, update and complete rooms with no signal — then have everything reconcile correctly when the connection returned, even if a supervisor had reassigned work in the meantime.
Approach
The frontline apps are offline-first: actions append to a local queue with their timestamps and sync in order on reconnect. The server arbitrates conflicts by role and recency — a supervisor's reassignment beats a stale queued update, and any rejected action returns to the attendant as a visible correction rather than a silent loss.
Result
Work continued uninterrupted through dead zones at 95% sync reliability, and the sync layer — not the housekeeper — absorbed the complexity. Adoption held because the app never made the network the user's problem.
Supervisors were spending up to an hour every morning hand-writing assignment sheets that a single early checkout could invalidate.
Challenge
A fair daily plan balances workload credits per room type, minimizes floor-hopping, prioritizes departures before stay-overs, and absorbs mid-day disruptions — DND signs, room moves, sick attendants — without starting over.
Approach
The engine scores and distributes rooms across the on-shift team using per-room-type credits and zone grouping, orders each attendant's run by checkout priority, and re-plans incrementally when reality changes — a DND room slides later in the run, a reassignment rebalances only the affected attendants. Supervisors adjust anything by drag-and-drop, and every change is visible and attributable.
Result
Plan-building went from up to an hour of morning admin to a review-and-adjust pass measured in minutes, and workloads evened out enough that fairness complaints stopped being a daily conversation.
Guest messages ('extra towels', 'the AC is rattling') arrived through the desk, but the work they implied lived with housekeeping or maintenance — and anything passed along verbally got lost between shifts.
Challenge
Make guest requests un-losable: every ask needs an owner, a deadline and a trail, across teams and shift changes.
Approach
Guest requests feed the task engine: a request becomes a task with a category, a space, an owner and an SLA timer; maintenance issues attach to the asset's history; and completion closes the loop so the desk can confirm back to the guest. Escalations fire on breached timers instead of relying on someone remembering.
Result
Requests stopped depending on memory and shift overlap — 'we never got to it' disappeared as a failure mode, and guest touchpoints stayed fast even on peak-occupancy days.

Forks in the road

System of record

Took this road

PMS events drive the platform

Not this one

Manual data entry alongside the PMS

Hotels already live in their PMS — asking staff to maintain a second system guarantees drift and abandonment. Treating PMS events as the trigger for everything (cleans, priorities, staffing) meant the platform stayed correct without anyone feeding it.

Mobile connectivity

Took this road

Offline-first with a local action queue

Not this one

An always-online app

Housekeepers work in elevators, basements and concrete stairwells — exactly where Wi-Fi dies. An app that errors without signal gets abandoned by lunchtime. Queuing actions locally and reconciling on reconnect made the network an implementation detail instead of a job blocker.

Plan generation

Took this road

Rules and workload credits with manual override

Not this one

A machine-learning scheduler

Assignment fairness has to be explainable to the people being assigned. Credits per room type, zone grouping and checkout priority produce plans a supervisor can read, defend and adjust — and the drag-and-drop override is what earned the feature daily use instead of distrust.

Room status

Took this road

An owned state machine with audited transitions

Not this one

A free-form status field

'Who marked this room clean, and when?' is the first question in every dispute. Owned transitions with timestamps turned arguments into lookups, and made downstream automation — inspection queues, front-desk readiness — safe to build.

Product shape

Took this road

Four focused apps on one shared layer

Not this one

One app that does everything

A housekeeper, an inspector, a technician and a runner each get a tool shaped for their job, while the shared layer keeps leadership's view unified. Smaller apps also meant smaller, safer releases.

Chapter 04

Did it work?

What changed, what shipped, and the notes I kept for next time.

Paper & radio vs. one operational layer

Paper & radio vs. one operational layer
DimensionBeforePlatform
Room statusPrinted sheets and radio calls, no live stateLive room lifecycle visible to every team, audited per transition
Morning cleaning planUp to an hour of hand-assignmentAuto-generated from credits, zones and checkouts; minutes to review
MaintenanceIssues scattered across chats and callsTicketing plus preventive schedules with parts and contractors
AttendanceManual paper registersDigital punch-ins with cross-property rosters, 96% reliability
Guest requestsVerbal relays, lost between shiftsTasks with owners, SLAs and escalation timers
Low-signal areasDigital workflows simply brokeOffline queue with background sync, 95% reliability

Shipped and standing

  • Reservation events became work orders automatically — checkouts, stay-overs and room moves spawn correctly prioritized tasks without anyone typing them in (the platform reports ~90% of daily tasks are system-generated).
  • The live board eliminated the reconciliation ritual between front desk and housekeeping — room readiness became a lookup instead of a phone call.
  • Morning plan-building collapsed from up to an hour of supervisor admin to a minutes-long review, with workload fairness built into the engine.
  • Offline-first mobile kept the floor working through dead zones at 95% sync reliability — which is what made staff adoption stick.
  • Attendance reliability crossed 96%, making daily staffing predictable for the first time.
  • Preventive maintenance and SLA-tracked guest requests cut 'lost' work sharply — the platform reports an ~80% reduction in follow-up errors within a property's first month.

Notes to self

  • Note 01

    In operations software, the integration is the product. The platform's value lived in how faithfully it turned PMS events into work — everything visible was downstream of that sync layer being right.

  • Note 02

    Offline isn't an edge case for deskless workers; it's the baseline. Designing the queue-and-reconcile path first shaped the whole mobile architecture.

  • Note 03

    Automation earns trust through override. The auto-planner succeeded because supervisors could always see, explain and correct it — the drag-and-drop was as important as the algorithm.

  • Note 04

    Several small apps on one data layer beat one big app: each team gets a sharper tool, and management still sees a single picture.