Cleaner Walkthrough (plán)
The cleaner walkthrough is a multi-step WhatsApp conversation cleaners use to receive their day's plán (schedule), confirm each cleaning, submit photos, and report issues. It's the cleaner-facing version of the dashboard.
Triggering the plán
A cleaner messages the bot with the word plán (Slovak) or plan (English). The bot replies with a list of their scheduled cleanings for the day (or the next day if they ask later in the evening).
Example reply:
Tvoj plán na dnes (Pondelok 19. mája):
1. Castle&River Luxe-Vydrica
Check-out: 11:00 — guest: Johanna
PIN: 847291
2. Pristavna
Check-out: 12:00 — guest: Marcus
PIN: 219485
3. (no further cleanings)
Odpovedz s číslom úlohy aby si začala. Napríklad "1" pre Vydricu.
Walking through a cleaning
The cleaner replies 1. The bot:
- Marks the cleaning as in-progress.
- Sends the first checklist step (e.g. "Step 1: Strip the beds. When done, send 📷 Foto").
- Waits for a photo OR a free-text status.
- On each step, validates the response, asks for the next photo.
- After the last step, marks the cleaning done; the corresponding task auto-resolves.
After #151:
- Photos are accepted without the literal
📷 Fototap — just send the photo and it's recognised. - The next step is prefetched in the background so there's no perceived delay between steps.
After #212:
- Free-text replies and photo reports outside the strict checklist flow are routed through LLM intent classification. Previously they were silently dropped; now they're either matched to the right step, escalated to ops as a question, or filed as a
cleaning_issuetask.
Language handling
The walkthrough is sent in the cleaner's language (teammates.language). After #182, the scaffolding (button labels, system prompts) and the cleaner-facing labels are both in the same language — previously the scaffolding was hardcoded Slovak even for cleaners with language: 'uk', producing mixed messages.
Dashboard-assigned cleanings appearing in plán
After #210, cleanings assigned to a cleaner via the dashboard (rather than auto-routed from the cleaner pool) now appear in the cleaner's plán. Before the fix, dashboard-assigned cleanings were silently invisible to the cleaner — Marina had 5 SCHEDULED tasks but plán only showed 4, with 3 silently dropped.
Cleaner reports a problem
If during a cleaning the cleaner finds an issue (broken appliance, missing supplies, damage), she can:
- Photo + caption describing the issue → routed through LLM intent classification → filed as a
cleaning_issuetask assigned to the host. - Free text in cleaner language → same classification path.
- Tap a
Problémbutton if the walkthrough offers it → opens a structured problem-report sub-flow.
After #212, all three paths work; before, only the structured button worked.
Admin-reassignment regression
After #171, the assign_cleaner task action respects the May-16 unassignment fix — previously a re-assignment from the dashboard could clobber a manual unassignment.
Related issues
- #151 — prefetch next item + accept photos without
📷 Foto. - #171 —
assign_cleanerhonours May-16 unassignment. - #182 — walkthrough sends consistent language end-to-end.
- #210 — dashboard-assigned cleanings appear in
plán. - #212 — free-text + photo reports via LLM intent classification.
- See also:
docs/cleaner-walkthrough-rollout-playbook.mdfor the rollout history.