# KlenaPro > KlenaPro is a multi-tenant SaaS platform for motels, hotels, and BnB properties to manage daily housekeeping operations, cleaner timesheets, payroll estimation, and cleaning productivity. It turns each day's room list into an assigned, trackable set of cleaning jobs and gives managers real-time visibility into who is cleaning what, how long it takes, and what it costs. KlenaPro (trading name; formerly styled "Kleana") is built for small-to-mid accommodation businesses such as motels and motor inns. It is a web app and installable PWA (works offline for on-the-floor cleaning). A representative customer is Quantum Lodge Motor Inn in Hamilton, New Zealand. ## What the app does - **Daily housekeeping board**: Each property has a fixed set of rooms. Every day, rooms are given an operational status that determines the cleaning job required. Status can be imported from a CSV export or set manually by a manager. - **Room cleaning statuses**: - *Departing* (guest checked out) → full departure clean. - *Due–Priority* (due + departing) → full clean flagged as priority. - *In-house* (guest still staying) → a short 15-minute service clean. - *Clear/none* → no clean needed. CSV rows that are "due only" (no departure) are ignored. - **Cleaning time estimates**: Standard departure clean is broken into Bedroom, Bathroom, Kitchen, and Lounge sub-tasks (~40 minutes standard room, ~52 minutes for two-bedroom units). In-house service is a single 15-minute task. Estimates drive both productivity metrics and payroll. - **Room stripping**: Full/departure cleans require the room to be "stripped" (linen, towels, and rubbish removed) before cleaning can start. A cleaner who strips a room earns a 5-minute payroll/productivity credit; a manager stripping is record-only. - **Multi-worker cleaning**: Multiple cleaners can assist on one room with independent work sessions. Completed sub-tasks credit the person who actually did them; a partial release makes remaining tasks available to other cleaners. - **Work lifecycle & rules**: A cleaner must have an active started session to tick checklist items. Only one active task at a time per cleaner. Paid breaks and unpaid lunch are tracked. Managers can log record-only cleaning time that is excluded from cleaner payroll and productivity. - **Timesheets & payroll**: Tracks clock-in/out, break/lunch, and per-room time, producing exportable timesheets and payroll estimates. Cleaners can be hourly, salary, or contract. - **Scheduled recurring tasks**: Managers can create one-off or recurring maintenance/checklist tasks assigned to all, one, or some managers, with shared completion and Yours/All filtering. Selected-room checklists persist across recurrences. - **Maintenance notifications**: Email notifications (via Resend) for maintenance items. - **CSV import**: Import a daily room-status export at /api/csv/upload to populate the day's cleaning board. ## Roles - **Cleaner**: Views assigned rooms, strips and cleans rooms, ticks checklists, takes breaks/lunch, sees their own roster and timers. - **Manager / Owner**: Manages rooms, cleaners, and other managers; sets room statuses; views timesheets, payroll, and productivity; handles billing; can clean as record-only. ## Identity & authentication - **Each property gets its own unique Property ID** — a short code made from letters in the property name plus digits (for example, QN861022) — which is used to log in. - Email + password authentication with JWT stored in an httpOnly cookie (XSS-safe), with a Bearer-token fallback for API use. - The unique login identity is **email + Property ID**. Because each property has its own ID, the same email can be used across more than one property; the Property ID selects which account is used at login. ## Billing & subscriptions (Stripe) - Each property gets a free trial, then a weekly subscription priced per active cleaner and per room. - **Price locking**: The rate a property pays locks when a trial converts to a paid subscription. Trials float on current pricing; a property that fully lapses past a 7-day grace window and later reactivates gets the current rate. - **Discounts**: A percentage discount can be applied for a set number of months or ongoing; discounts affect the actual Stripe charge and are shown in revenue estimates, with an "ends in N days" indicator for time-limited promos. - **Non-payment handling**: A past-due subscription has a 7-day writable grace period with a countdown, after which the tenant becomes read-only (all data still viewable) until payment resumes. A property can also be disabled (read-only) directly. ## Terms & Conditions - Versioned Terms & Conditions must be accepted at signup and re-accepted whenever they are updated. Acceptance records the version/revision, timestamp, and user/property context. Terms are a template intended for qualified NZ legal review before production use. ## Technology - Frontend: React (PWA with offline cleaning support). Backend: FastAPI (Python). Database: MongoDB. Payments: Stripe. Email: Resend. Scheduled jobs: platform cron. ## Contact - Support phone: +64 027 452 4519