cleanQRcleaning by guest choice

In hotels and guesthouses, rooms on multi-night stays are cleaned to a fixed plan whether the guest wants it or not. cleanQR gives the guest a QR code in the room and housekeeping a clear morning overview.

Who it is for and what it does

cleanQR is our own product for hotels, guesthouses and other accommodation with regular room cleaning. The guest scans the QR code in the room and picks full cleaning, eco cleaning or privacy in the browser – no app, no login.

Through the same code they report a problem (the hotel gets an e-mail), find the room board (Wi-Fi, breakfast, check-out, parking) and service offers. After a skipped cleaning they see an estimate of the water, energy and CO₂ saved.

Housekeeping opens a shared overview without an account (optionally with a PIN) or prints the morning list. Reception can change any choice. One account = one property, any number of rooms.

What it does

  • Guest picks the cleaning level: full, eco, privacy; the hotel customises the cleaning types
  • Problem reports with e-mail alerts to several addresses
  • Room board and service offers or promotions
  • Real-time housekeeping overview without an account, optional PIN, printable daily list
  • Protection: unique room code, daily cutoff, choice bound to the device, change limit, code regeneration, optional room PIN
  • QR codes printed to PDF in several layouts, own logo and brand colour
  • Water, energy and CO₂ savings estimate for the guest, analytics of choice trends
  • Guest and admin interface in Czech and English, 30-day trial, Stripe subscription, Google sign-in

How it is built

  • Backend: Node.js and Express, Microsoft SQL Server via Sequelize, helmet and rate limiting, scheduled jobs (daily cutoff)
  • Hotel admin: Next.js and React with Ant Design, charts (Recharts), PDF with QR codes generated in the browser
  • Guest form: a separate lightweight Next.js app that opens after scanning the code, nothing to install
  • Payments: Stripe (subscriptions, customer portal); e-mail via SendGrid; files in S3; Sentry monitoring; runs in Docker
  • Marketing site cleanqr.app: TanStack Start with server-side rendering, deployed on Cloudflare

How long it took

  1. End of February 2026

    First backend commit: rooms, codes, cleaning choice, sign-in.

  2. March 2026

    Hotel admin and guest form. Within a few weeks the first usable version with a trial period.

  3. Spring–summer 2026

    Room board, problem reports, QR printing, code protection and PIN, Stripe payments, product video.

  4. September–October 2026

    Google sign-in, marketing consent in the profile, Slovak version of the site. The cleanQR base became the starting point for Zonno.

  5. As of October 2026

    Around 180 commits across three repositories (backend, admin, guest form). Development continues.

Facts come from the product repositories' history and cleanqr.app; we do not publish customer counts.

What we learned

  • What matters most is what the guest can do without an app or login – so the form runs in the browser and print materials are part of the product.
  • QR code protection (cutoff, device binding, code regeneration) was added as hotels asked; having it from the start would have saved one round of rework.
  • One price per property without counting rooms simplified the website, registration and invoicing.

Want something similar for your company?

Development at a rate per month of work, smaller jobs proportionally less, the code is yours, running is optional.

Software development subscription