For GMs, spa managers, and reception leads

Pilot See the console on a calendar with your services

One console for reception, therapists, and the floor.

Week, day, and list calendar. Walk-in wizard. Hotel-guest settlement to the PMS folio. Printable agenda. Live floor view. The day runs from a single screen — not five tabs and a paper printout.

Thirty minutes with Maciej, the founder. Written proposal in three business days.

Week, day, list views Walk-in wizard PMS folio settlement Print agenda + live floor
Reception console Week view — Mon Apr 14
MTWTFSS
Massage 60′
Facial 45′
Couples 90′
Massage 90′
Manicure 30′
Massage 60′
Couples 90′
3 therapists 2 rooms · 1 suite Live
Calendar

Three views. One source of truth.

Week for the team, day for the shift, list for the print-out. Click an empty slot — the wizard opens pre-filled. Click a booking — the sidebar opens with the full history. No page reloads.

Book my private demo
Week view
Massage Facial Couples
091011121314
Spa room 1
Massage 60′
Facial 45′
Massage 90′
Spa room 2
Manicure
Massage 60′
Facial 60′
Couples suite
Couples 90′
Couples 90′

Reception books, edits, and reschedules in the same view — therapists print their day before the first guest.

Booking wizard

Walk-ins. Phone bookings. Comps.

Reception books for the guest standing at the desk through the same wizard the public uses. Atomic check across therapist, room, and equipment — no shortcut around it. The guest does not wait for confirmation.

Pre-filled from the calendar

Click the empty 14:00 cell — the wizard opens at 14:00 with the room and provider locked.

Same atomic check

Therapist, room, and equipment validated as one — the same rule the public flow runs.

Notes inline, comp bookings one click

Mark for rescheduling, comp the booking, add internal notes — without opening a second screen.

Mobile capture

From the room, in four taps.

The guest does not download an app, does not create an account, does not call reception. QR on the door → magic link → 6-digit SMS auto-fill → folio charge. Same flow at 10:30 PM as at the desk during business hours.

01 — Scan

Room QR opens the booking page in the guest's language.

The QR carries the room number. The booking page opens pre-filtered to your spa's catalog, in the guest's phone language (English, Polish, German, Arabic). No app store detour.

02 — Verify

6-digit SMS auto-fills on iOS and Android.

Phone number entry triggers an SMS. iOS auto-fill and Android Smart Lock surface the code as a suggestion above the keyboard. One tap accepts. No app, no password.

03 — Charge to room

Folio settlement is the default — card if the guest prefers.

In hotel mode, the default payment is the room folio. The integration hub posts the line item to Mews or Opera Cloud at confirmation. Apple Pay, Google Pay, and card remain available for non-resident bookings.

Hotel guests

Settlement that posts to the PMS folio.

Reception sees every open spa charge per in-house guest in one screen, settles at checkout, and posts the line items to the PMS folio through the integration hub. The guest does not see two invoices.

Book my private demo

One-screen settlement

All open charges per guest in one view. Settle, post to PMS folio, done.

Manual charges

Therapist add-ons, room-service drinks, comps — added inline on the guest profile.

Live with four PMS

Mews, Opera Cloud, Cloudbeds, Previo via the integration hub. RoomRaccoon shipping next.

The algorithm

Twelve invariants. One database transaction.

Every booking — guest, walk-in, reschedule — runs the same atomic check across four resources and twelve rules. PostgreSQL row-level locks (FOR UPDATE) prevent the race where two phones tap Confirm in the same second. Off by default is not an option.

Four resources, one transaction

Therapist. Room. Equipment. Schedule.

Generic booking software validates one resource — the staff calendar. Spa software has to validate four. The Moroccan Bath needs a qualified therapist, the bath suite, the bath tub itself, and the slot has to fit inside the therapist's shift. Miss any of them and you have an angry guest standing at reception.

01 / 04
Therapist

Qualified for this service, on shift this hour, no overlapping booking, no absence registered, matches any gender preference set by the guest.

02 / 04
Room

Supports this service category, contains the required equipment, not occupied by another booking that overlaps the same window.

03 / 04
Equipment

Free for the full duration. One LED Facial Panel, one Moroccan Bath Tub, one Sauna and Steam Cabin — the same physical item cannot be in two rooms at once.

04 / 04
Schedule

Slot starts on a 15-minute boundary, is in the future, fits the service duration plus buffer, and does not push past the therapist's shift end — even by a minute.

Twelve rules per booking

The full check, in plain English.

A booking is valid only if every single one of these is true. If any one is false, the slot is hidden from the picker — not silently saved for staff to clean up later.

  1. 01 Qualified therapist

    At least one therapist is trained to deliver this exact service.

  2. 02 On the schedule today

    That therapist is working at this time of day on this day of the week.

  3. 03 No overlapping booking

    That therapist has no other booking touching this slot, including the buffer.

  4. 04 No absence registered

    No vacation, sick day, or admin absence covers this date for that therapist.

  5. 05 Room available

    A room that supports this service category is free for the slot.

  6. 06 Room equipment present

    That room physically contains the equipment the service requires.

  7. 07 Equipment free

    The required equipment item is not committed to another room for the same window.

  8. 08 Clean 15-minute start

    The slot starts on a quarter-hour boundary, not 14:07 or 14:23.

  9. 09 Fits with buffer

    Service duration plus the configured turnover buffer fits inside the slot.

  10. 10 In the future

    The slot starts after now — past slots are removed from the picker in real time.

  11. 11 Gender preference

    If the guest asked for a female or male therapist, only matching therapists count.

  12. 12 Daylight saving safe

    On the night clocks change, the slot picker shows each hour once — no duplicates, no gaps.

The race condition

PostgreSQL FOR UPDATE — only one phone wins.

Two guests on two phones can stare at the same slot and tap Confirm in the same second. The engine wraps the four-resource check and the booking insert in a single PostgreSQL transaction with SELECT … FOR UPDATE row-level locks. The first transaction acquires the locks, finishes the validation, writes the booking. The second transaction blocks, then re-reads the now-occupied state and fails the check cleanly. No double-booking, no time-of-check-to-time-of-use gap.

Tested under contention with two simultaneous bookings. One wins. The other gets a clear slot-just-taken message.

Urgent actions

Walk in. Fix the day's mess in one queue.

Bookings flagged for rescheduling, no-shows awaiting a decision, refund-pending payments — all in one queue. The reschedule helper picks a new slot inline, runs the atomic check, saves. No hunting through tabs.

Reschedule helper

Pick a new slot inline, atomic check runs, booking moves — fewer clicks than a phone callback.

No-show decisions

Mark, charge, or comp — every decision writes to the audit log with the user and timestamp.

Refund queue

Pending refunds in one list. Approve or deny without a separate finance ticket.

Reports

Provider. Service. Room. One-click PDF.

Three operator reports the GM actually reads — utilization per therapist, revenue per service, capacity per room. Date-range filter, current month by default, PDF export ready for payroll and ownership.

Provider report

Utilization, revenue, and commission per therapist. Filter by date range. Export PDF for payroll.

Service report

Booking volume, revenue, top providers, top clients, and a trend chart per service.

Room report

Capacity versus booked minutes across the day. Spot the underused rooms before ownership does.

Live floor view

Therapists and rooms in real time.

Reception keeps the live view open on a second monitor during peak hours. The GM glances at it from a phone between meetings. Same instance, same login — no separate dashboard product.

Who is with a client

Therapists shown in-session with the service name and the minute they finish.

Rooms in use

Room occupancy live — including the turnover gap before the next booking starts.

Auto-refresh, no reload

The page updates on its own. Reception does not press F5; the GM does not refresh a stale tab.

Admin dashboard

Walk in. See what changed overnight.

Tile-based counters surface staff by role, pending invitations, and the last configuration snapshot. The manager opens one screen and knows the state of the operation before the first guest checks in.

Staff at a glance

Counters by role — reception, therapist, admin — plus pending invitations and last snapshot.

One-click changes

Send invitation, toggle roles, suspend, reactivate, trigger password reset — without a CSV export round-trip.

Audit-safe deletes

Soft-delete keeps the history; the audit log records who changed what, and when.

Compliance posture

Built for GDPR + UAE PDPL + UAE labor law.

Guest data lives in your dedicated PostgreSQL database, not a shared multi-tenant table. Encryption at rest, audit log on every state change, configurable retention, and UAE labor rules baked into the scheduler — not a postscript.

Data residency

GDPR + UAE PDPL — your data, your domain.

Every property runs on a dedicated Google Cloud project with its own PostgreSQL database. No shared tables. Data subject access requests, deletion, and export are one-screen operations in the admin. EU-resident guests get GDPR rights; UAE-resident guests get PDPL rights — same engine, same audit trail.

PII at rest

AES-256-GCM on every guest record.

Names, phones, emails, and notes are encrypted at the column level with AES-256-GCM. Keys live in Google Cloud KMS — staff never see them, ops never touch them. A leaked database snapshot is ciphertext, not a customer list.

Audit log

Every state change. Every user. Every timestamp.

Booking, reschedule, cancellation, deadline override, refund, role change, configuration edit — each writes a row to an immutable audit log with user, timestamp, before/after state. Ownership sees who waived fees, who deleted records, who reassigned a therapist.

UAE labor compliance

5h max shift. 60-min break. Baked into the scheduler.

UAE labor law caps continuous work at five hours and mandates a 60-minute break before the next block. The scheduler reads a per-property LaborRulesConfig — bookings that would breach the rule are refused at the same atomic step as a double-booking. Compliance is not an after-the-fact report.

Frequently asked

Operations — what GMs ask first

Yes. Fully responsive. Reception runs it on a desk monitor; therapists and GMs use tablets and phones. Inputs are 16px+ so iOS doesn't auto-zoom.

Admin sends an email invitation from the staff page. The recipient sets a password and is in within minutes. Tokens expire on their own. No CSV import, no support ticket.

Yes. Role-based access — therapist role sees their own schedule; reception and admin see the full calendar. The audit log records every state change.

Mews, Opera Cloud, Cloudbeds, and Previo are live via the integration hub. RoomRaccoon is shipping next. Full PMS map at /integrations/.

Every booking runs four resource validations (therapist, room, equipment, schedule) and twelve invariants inside a single PostgreSQL transaction with SELECT FOR UPDATE row-level locks. Two guests tapping Confirm in the same second — only one wins. The other gets a clear slot-just-taken message. Tested under contention; no double-bookings escape.

Yes. The LaborRulesConfig per property holds the 5-hour max-shift and 60-minute mandatory break. Bookings that would breach the rule are refused at the same atomic step as a double-booking — not flagged in a weekly report after the fact. Configurable per market — properties outside UAE can disable or adjust the rule.

See the console on a calendar mirroring your operation.

We configure a private demo on a live instance with your services, therapists, and rooms — then walk through the calendar, the wizard, hotel-guest settlement, and the urgent queue. Not slides. Thirty minutes with Maciej, the founder. Written proposal in three business days.

Book my private demo

Pilot terms — free setup, paid monthly, case-study and logo rights expected.