AI Auto-Assignment
Automatically assigns cleaning jobs to the right staff member based on skills, proximity, workload, and — now — declared working hours and time off.
How the AI Picks a Cleaner
When a turnover task is created and no primary cleaner is assigned, the AI evaluates all available staff:
1. Availability Calendar
Staff marked as unavailable are excluded immediately. Now, the AI checks not just whether a staff member is off for the day, but whether the job falls within their declared working hours. If someone's shift ends at 3 PM and a task is scheduled for 4 PM, they'll be skipped — just like they would be on a day off.
Set a staff member's working hours and days in Operations → Availability. Select the team member, then configure their weekly schedule, including which days they work and the hours they're available each day.
Note: Staff who haven't set up a schedule yet are treated the same way as before — they remain eligible for assignments regardless of time of day. Nothing changes for them until a schedule is configured.
[Screenshot: Availability editor showing a weekly schedule grid with working hours set per day]
2. Skill-Based Routing
If a property requires specific skills (deep clean, laundry, pet cleanup), only qualified staff are considered. Tag skills under Settings → Team → [Staff Member] → Skills.
3. Proximity Matching
The system calculates distance between staff and the property. Closer staff are preferred.
4. Workload Caps
Each staff member has a daily limit (default: 5 hours). If adding this task exceeds the cap, they are skipped. Adjust in Settings → Team → [Staff Member] → Daily Limit.
5. Current Task Load
Between equally qualified cleaners, the one with fewer tasks that day gets the assignment.
When No One Can Be Assigned
If the AI can't find an available cleaner, the task won't be silently left unassigned — the Operations dashboard will tell you exactly what blocked it. You'll see one of these reasons next to the unassigned task:
- Day off — the staff member doesn't work on that day of the week
- Outside working hours — the task falls before or after their declared shift
- Time off — the staff member has a one-off period of leave covering that time
[Screenshot: Operations dashboard showing a blocked assignment with reason "Outside working hours"]
This means you can quickly see who was considered, why they were skipped, and make a manual assignment if needed.
What Happens After Assignment
- Task assigned on the dashboard
- SMS sent with task details
- Staff reply "1" to accept or "2" to decline
- If declined or no response, task moves to the offer cascade
Overriding the AI
You can always manually assign from the dashboard. Click the task, select Assign, pick a staff member.
Setting Up Staff Availability
Follow these steps to configure working hours for a team member:
- Go to Operations → Availability in the left navigation.
- If you're a manager, use the team member selector at the top to choose whose schedule you're editing. Staff members see their own schedule by default.
- Under Weekly Schedule, toggle on each day the person works. For each active day, set their start and end times.
- Make sure the Timezone shown matches where the staff member is located. The hours you set are in their local time.
- To block out a specific period (holiday, sick leave, etc.), scroll to Time Off, click Add Time Off, and enter the start and end dates.
- Click Save when you're done.
[Screenshot: Availability editor with a weekly schedule configured Monday–Friday, 8 AM–5 PM, and a time-off entry for a future week]
Tip: You don't have to configure everyone at once. Staff without a schedule continue to receive assignments as normal. Add schedules whenever it makes sense for your team.
Key Features
- Hour-level availability — working hours are checked down to the time of day, not just the day. A 9 AM checkout job won't go to someone whose shift starts at noon.
- One-off time off — add leave periods for holidays or sick days without changing the weekly schedule.
- Clear block reasons — when no one is available, the dashboard explains exactly why each candidate was skipped.
- Per-person timezones — each staff member's schedule is evaluated in their own local time, so distributed teams work correctly.
- Unconfigured staff unaffected — staff without a schedule set up are not impacted. The AI treats them exactly as it did before.
- Manager editing — owners, admins, team leads, and supervisors can edit any team member's availability. Staff can edit only their own.
Tips & Best Practices
- Set the timezone first. Before entering hours, confirm the timezone shown on the availability page matches where the staff member actually works. Hours are meaningless without the right timezone.
- Use time off for exceptions. Weekly schedules handle the regular pattern. Use the Time Off section for one-off absences rather than editing the weekly schedule each time.
- Check the dashboard when assignments fail. If a task goes unassigned, the Operations dashboard will show you why. Use that information to decide whether to adjust a schedule or make a manual assignment.
- Don't block yourself accidentally. If you save a schedule with no working hours configured, the system treats the person as available by default — so there's no risk of accidentally removing someone from all assignments by leaving days blank.
Common Questions
Will existing assignments change now that availability schedules are live? No. Staff who don't have a schedule configured are treated exactly as before — nothing about their assignments changes until you actively set up a schedule for them.
What if I need to assign someone outside their normal hours? Manual assignment always works, regardless of declared availability. Go to the task on the dashboard, click Assign, and pick the staff member directly. Availability schedules only affect automatic assignment.
A staff member shows as "off" on the roster, but they're actually working today — what happened? The roster now reflects the schedule the staff member has declared, not just whether they have tasks. If their schedule shows them as off today, check Operations → Availability and update their working hours or add an availability exception for that day.
Scheduling & Dispatch
This guide is also relevant for: