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.
For GMs, spa managers, and reception leads
Pilot See the console on a calendar with your servicesWeek, 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 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 demoReception books, edits, and reschedules in the same view — therapists print their day before the first guest.
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.
Click the empty 14:00 cell — the wizard opens at 14:00 with the room and provider locked.
Therapist, room, and equipment validated as one — the same rule the public flow runs.
Mark for rescheduling, comp the booking, add internal notes — without opening a second screen.
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.
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.
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.
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.
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 demoAll open charges per guest in one view. Settle, post to PMS folio, done.
Therapist add-ons, room-service drinks, comps — added inline on the guest profile.
Mews, Opera Cloud, Cloudbeds, Previo via the integration hub. RoomRaccoon shipping next.
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.
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.
Qualified for this service, on shift this hour, no overlapping booking, no absence registered, matches any gender preference set by the guest.
Supports this service category, contains the required equipment, not occupied by another booking that overlaps the same window.
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.
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.
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.
At least one therapist is trained to deliver this exact service.
That therapist is working at this time of day on this day of the week.
That therapist has no other booking touching this slot, including the buffer.
No vacation, sick day, or admin absence covers this date for that therapist.
A room that supports this service category is free for the slot.
That room physically contains the equipment the service requires.
The required equipment item is not committed to another room for the same window.
The slot starts on a quarter-hour boundary, not 14:07 or 14:23.
Service duration plus the configured turnover buffer fits inside the slot.
The slot starts after now — past slots are removed from the picker in real time.
If the guest asked for a female or male therapist, only matching therapists count.
On the night clocks change, the slot picker shows each hour once — no duplicates, no gaps.
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.
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.
Pick a new slot inline, atomic check runs, booking moves — fewer clicks than a phone callback.
Mark, charge, or comp — every decision writes to the audit log with the user and timestamp.
Pending refunds in one list. Approve or deny without a separate finance ticket.
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.
Utilization, revenue, and commission per therapist. Filter by date range. Export PDF for payroll.
Booking volume, revenue, top providers, top clients, and a trend chart per service.
Capacity versus booked minutes across the day. Spot the underused rooms before ownership does.
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.
Therapists shown in-session with the service name and the minute they finish.
Room occupancy live — including the turnover gap before the next booking starts.
The page updates on its own. Reception does not press F5; the GM does not refresh a stale tab.
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.
Counters by role — reception, therapist, admin — plus pending invitations and last snapshot.
Send invitation, toggle roles, suspend, reactivate, trigger password reset — without a CSV export round-trip.
Soft-delete keeps the history; the audit log records who changed what, and when.
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.
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.
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.
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 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.
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.
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 demoPilot terms — free setup, paid monthly, case-study and logo rights expected.