# How does automatic cleaner assignment work in Lemon.cy?

Source: https://lemon.cy/learn/how-automatic-cleaner-assignment-works/  
Publisher: Lemon.cy (Red Tribe Media Ltd, Limassol, Cyprus)  
Updated: 2026-09-10 · Verified against production: 2026-09-10

**Short answer:** Each property has an ordered cleaner list. When a checkout appears, Lemon creates the job, waits until two weeks before checkout, then offers it to the first cleaner on Telegram, WhatsApp, SMS or email. An offer expires after 60 minutes (10 for urgent jobs) and moves to the next cleaner. 92% of offers are accepted, median 37 minutes.

## From checkout to confirmed cleaner

1. **A checkout appears** in a connected calendar (or arrives from a PMS). Lemon creates a `checkout` cleaning job at the property's checkout time — 11:00 by default, configurable per property.
2. **The job waits.** Offers do not go out the moment a booking is made months ahead. The default assignment lead is two weeks before checkout (`assignmentLeadValue: 2 weeks`); until then the job is `on_hold`. Hosts can activate it early by hand.
3. **The cascade starts.** Lemon offers the job to the first cleaner in the property's priority list, on whatever channel that cleaner uses. The message carries the property, address, date, time, job type and a link.
4. **The cleaner answers from the link.** Yes confirms the job and sends a confirmation with the schedule link. No, or silence for 60 minutes (`normalJobTimeoutMinutes`; 10 for urgent jobs), moves the offer to the next cleaner.
5. **If nobody accepts**, the job goes to `waiting_for_cleaners`, the host is told (`all_cleaners_declined`), and the host can assign someone directly or broadcast.

## Two modes

- **Cascade** — one cleaner at a time in priority order. Predictable, good for teams where one person "owns" a property.
- **Broadcast** — the offer goes to several cleaners at once and the first to accept wins; the others are told the job is taken. Good for larger pools and urgent jobs.

## Guards inside assignment

- A cleaner cannot be double-booked: Lemon checks overlapping jobs against the cleaner's "simultaneous jobs" capacity before offering.
- Availability rules per cleaner (weekdays, date ranges, blocked windows) are respected.
- Assignment starts through a compare-and-swap in the database, so two servers cannot both start offering the same job.
- A cleaner who cancels after accepting is tracked, and a minimum cancellation notice can be enforced.

## Numbers from production

Since February 2026: 533 jobs created, 360 offers accepted, 32 declined (92% acceptance), median 37 minutes from offer to acceptance. Source: [feed integrity report](/data/ical-feed-integrity/), lifetime section.

## Related

- [Cascade assignment](https://lemon.cy/glossary/cascade-assignment/)
- [Broadcast assignment](https://lemon.cy/glossary/broadcast-assignment/)
- [What happens when a cleaner declines a job or doesn't answer?](https://lemon.cy/learn/what-happens-when-a-cleaner-declines-or-does-not-answer/)
- [Do cleaners need to install an app or create an account?](https://lemon.cy/learn/do-cleaners-need-an-app-or-account/)
- [Checkout-driven scheduling](https://lemon.cy/glossary/checkout-driven-scheduling/)
