Product documentation

How Pikapon works

Pikapon is a cleaning coordination platform for short-stay rental units. It connects hosts (property managers) with their cleaning staff through structured task checklists, photo proof, real-time progress tracking, and automated scheduling.

Airbnb & vacation rentals No cleaner account needed Works offline iCal booking sync Photo proof Time tracking
Overview

What is Pikapon?

Pikapon manages the cleaning lifecycle for short-term rental units — from scheduling and cleaner assignment through task completion with optional photo proof, to approval and billing. It is designed for hosts who manage one or more units and coordinate cleaning staff.

Core concepts

1
Units & task templates
Each unit has a permanent structure of rooms, sections (views), and recurring tasks (todos). This template is reused for every cleaning — you define it once.
2
Cleanings
A cleaning is a scheduled instance of a unit being cleaned. It has a date, assigned cleaners, and a copy of the current task list. Cleanings can be created manually or imported automatically from a booking calendar.
3
Progress & state
Every cleaning moves through a defined set of states — from scheduled through in-progress, completed, ready for review, and finally approved. Each transition is recorded with a timestamp and actor.
4
Billing
Work sessions are tracked automatically per cleaner per cleaning. Hosts review hours, adjust if needed, and mark sessions as paid from within the app.

Key capabilities

🏠
Multi-unit
Manage any number of units from a single team workspace.
📅
Auto-scheduling
Cleanings are created automatically when new bookings appear in the connected calendar.
📸
Photo proof
Any task can require a photo before it's marked complete.
📵
Offline support
Task checks and photos are queued locally and sync when connectivity returns.
📡
Real-time updates
Hosts see task completions live as cleaners work through the list.
🌿
Seasonal tasks
Tasks can be marked summer-only or winter-only and are filtered accordingly.
Roles

Who's involved

Pikapon has two primary roles: hosts, who configure and manage everything, and cleaners, who access and complete assigned cleanings. Cleaners come in two variants — named (email-based) or anonymous (link/QR-based).

🏠
Host
Unit manager / Airbnb owner
Creates and manages units, schedules cleanings, assigns cleaners, monitors progress in real time, and approves completed work. Hosts are authenticated members of a team workspace.
  • Full read/write access to their team's units and cleanings
  • Creates cleanings manually or via iCal booking sync
  • Assigns cleaners by email or shareable link
  • Monitors live progress and sees photo proof
  • Approves cleanings and manages cleaner billing
✉️
Named cleaner
Email-invited, individually tracked
You have an account in the system. You receive a personal invite email for each assigned cleaning. You can accept or decline. Your sessions and billing are tracked by name.
  • You receive an email invite with a direct link to your cleaning
  • You authenticate via a one-time email link — no password needed
  • You receive email notifications (reminders, approval)
  • You can decline an assignment via the link
  • Your work sessions and billing are tracked under your name
📱
Anonymous cleaner
No account — link or QR access only
You don't need an email or account. Access the cleaning via a shareable link or QR code. Pikapon identifies you by your device and city (e.g. "Safari on iPhone · Berlin").
  • Access via link or QR code — no registration
  • You are identified by device type and city only — no IP stored
  • You can check tasks and upload photos same as named cleaners
  • You do not receive email notifications
Workflow

A cleaning, step by step

The following describes the full lifecycle of a cleaning — from initial creation to approval and payment.

1
A cleaning is created
The host creates a cleaning by selecting a unit and setting a date and time. Alternatively, cleanings are created automatically when a new booking appears in the connected iCal calendar feed.
🗓️ iCal sync runs every 5 minutes — new bookings appear automatically
2
Cleaners are assigned
The host assigns one or more cleaners by entering their email address (named cleaner) or by generating a shareable link or QR code (anonymous).
3
Cleaner accesses the checklist
Named cleaners receive an invite email with a direct link. Anonymous cleaners open the link or scan the QR code. Either way, the full task list loads on your device — no app installation required.
📵 Checks and photos work without a network connection and sync automatically on reconnect
4
Cleaner works through the tasks
Tasks are grouped by room. You check each task off. If a task requires photo proof, a photo must be taken before the task can be marked complete. Your first task check automatically starts a work session and moves the cleaning to "in progress."
5
Cleaning completes automatically
When all active tasks are checked, the cleaning transitions to "completed" and all work session timers stop. You are then prompted to tap "Mark as ready" to notify the host.
✉️ Host receives an email notification when the cleaner marks ready
6
Host reviews and approves
The cleaning report shows every completed task, attached photos, assigned cleaners, and work session durations. The host approves the cleaning and marks payment sessions as paid.

What hosts see

The host dashboard shows all units and their upcoming cleanings. Opening any cleaning shows a live report — progress is updated in real time as cleaners complete tasks.

🗂️
Unit overview
All units listed with their next upcoming cleaning, current status, and assigned cleaners at a glance.
📊
Live cleaning report
Open any cleaning to see real-time progress: tasks checked, photos uploaded, time tracked per cleaner.
👁
Seen indicator
The cleaning report records when each cleaner first opened their link — named cleaners via their invite email, anonymous cleaners via the shared link or QR code.
📋
Activity feed
A chronological log of all events across the team: task completions, state changes, approvals, and assignments.
State machine

Cleaning status

Every cleaning moves through a defined set of statuses. Most transitions happen automatically — a few require an explicit action. Every transition is logged with a timestamp and actor.

Scheduled
Date confirmed
In progress
Work started
Completed
All tasks checked
Ready
Cleaner confirmed
Approved
Accepted by host
ℹ️
Completed means every task has been checked off — this happens automatically. Ready is an optional extra step where the cleaner taps "Mark as ready" to explicitly signal the host. A host can review and approve a cleaning at either the completed or the ready stage.
In progress — automatic
Triggered by the cleaner's first task check. The work timer starts at this point. No manual action needed.
Completed — automatic
Triggered when all active tasks are checked. All work session timers stop. The cleaner can then optionally mark as ready.
🏁
Ready — optional
The cleaner taps "Mark as ready" to notify the host. This is optional — a host can approve a completed cleaning without waiting for it.
Cancelled — any stage
A host can cancel a cleaning from any status. The full transition history is preserved in the audit log.

Overdue notifications

If a scheduled cleaning hasn't been started by the expected time, the host receives an automatic notification. This catches cases where a cleaner forgot or lost access.

Cleaner reminders

Named cleaners can be reminded automatically (enabled per cleaning via the reminders toggle) or the host can send a manual reminder at any time from the cleaning detail page.

ℹ️
Every status transition is stored in an audit log with the timestamp, the actor (host, cleaner, or system), and optional metadata. This history cannot be modified.
Unit status

Unit status

Separate from cleaning status, each unit also carries its own status — a summary of whether it's ready to receive guests. This status updates automatically as cleanings progress.

🧹
Cleaning needed
The unit has a past or upcoming checkout with no cleaning scheduled, or the previous cleaning was not approved. The unit is not considered ready.
📅
Cleaning scheduled
A cleaning is scheduled or currently in progress for this unit. Work is underway — the unit is not yet ready for the next guest.
Ready for guests
The cleaning for this unit has been approved by the host. The unit is confirmed clean and ready to receive the next guest.

How unit status connects to cleaning status

A unit reaches Ready for guests only after a cleaning is Approved by the host — not just completed or marked ready by the cleaner. Approving a cleaning is the explicit host confirmation that triggers the unit status update. Until approval, the unit is shown as cleaning scheduled (or cleaning needed if no cleaning exists). This gives hosts a clear, at-a-glance view of which units are ready and which still need attention.

🏠
Host manual
For Hosts

How to set up units, schedule cleanings, assign cleaners, monitor progress in real time, and review completed work.

For hosts

Setting up a unit

Every unit in Pikapon has a permanent structure of rooms, sections, and tasks. You define this once — it becomes the checklist template reused for every cleaning at that unit.

Step by step

1
Create the unit
Give the unit a name (e.g. "Mitte Apartment") and set the cleaner language — the language cleaners will see the interface in and the language tasks will be translated into.
2
Add rooms
Rooms are the top-level structure of your checklist — Kitchen, Living Room, Bedroom, Bathroom, etc. Each room becomes a collapsible group on the cleaner's task list.
3
Add sections within rooms (optional)
Sections let you subdivide a room into named views — for example a Bedroom might have sections "Bed area" and "En-suite." Useful for larger spaces or fine-grained tracking.
4
Add tasks to each room or section
Tasks are the individual items cleaners tick off: "Change bed linen", "Wipe down surfaces", "Empty bins", etc. You can reorder them by drag-and-drop.
5
Configure each task
For each task, set the season (all year, summer only, or winter only) and toggle photo proof on or off. Tasks with photo proof cannot be checked without a photo attached.
📸 Photo proof is a blocking requirement — the cleaner cannot mark the task done without uploading a photo

What to know

♻️
Reused for every cleaning
The room and task structure is a template. Each new cleaning gets a fresh copy of the current task list — changes to the template take effect on future cleanings only, not ones already created.
🌿
Seasonal tasks
Mark tasks as summer-only or winter-only. Set the unit's active season and only the relevant tasks appear in the checklist — no need to maintain two separate templates.
🌍
Tasks translated automatically
You write tasks in any language. Pikapon translates them into the unit's cleaner language using AI — cleaners see their tasks in their own language without any extra work from you.
📸
Photo checklists
Toggle "photo required" on any task. The cleaner must upload a photo before the task can be ticked off. All photos appear in the cleaning report alongside the task they document.
For hosts

Host features

Beyond unit setup, hosts have full control over cleaning scheduling, cleaner assignment, monitoring, and billing.

📅
Schedule cleanings
Create cleanings manually by selecting a date and time, or connect a booking calendar and let Pikapon create them automatically on each checkout date.
🔗
Assign by email or link
Enter a cleaner's email for a named, tracked assignment. Or generate a shareable link or QR code for anonymous access — no account required.
Review & approval
The cleaning report shows every task, photo, cleaner, and session duration. Approve when satisfied.
💶
Billing management
Review billable hours per cleaner per job. Override if needed. Mark sessions as paid and maintain a full payment history.
👥
Team members
Invite co-hosts to the team workspace. Team members share access to all units and cleanings.
Booking calendar sync

Automatic scheduling from your calendar

Pikapon connects to any iCal-compatible booking calendar and creates cleanings automatically when new reservations appear. The feed is checked every 5 minutes.

How it works

1
Paste your calendar URL
Every booking platform provides an iCal export link. Paste it into the unit settings in Pikapon — this is a one-time setup.
2
Pikapon polls the feed
The calendar is fetched every 5 minutes. New reservations are detected and matched against existing cleanings by a unique event ID.
3
Cleaning is created or updated
A cleaning is created on the checkout date with the guest name and booking reference pre-filled. If the booking is later modified or cancelled, the cleaning is updated accordingly.
🔒 Guest information is visible to hosts only — cleaners never see booking details

Supported platforms

Airbnb
Hospitable
Guesty
Lodgify
Hostaway
Any iCal feed

What gets imported

Guest name, reservation code, checkout date (used as the cleaning date), and the next check-in time. The reference text shown to the host is locale-aware (e.g. "Guest · CODE" or a date-range fallback).

ℹ️
If a booking is cancelled in your calendar, Pikapon cancels the associated cleaning automatically. No manual cleanup is needed.
Time tracking & billing

Cleaner time tracking

Work sessions are tracked automatically per cleaner, per cleaning. Time starts on the first task check and stops when the cleaning completes. Hosts review, adjust, and mark sessions as paid from within the app.

How sessions work

Session starts automatically
The moment a cleaner checks their first task, a work session is created and the clock starts. No manual "clock in" required.
Session ends automatically
When the last task is checked, all active sessions for that cleaning are closed with an end timestamp.
✏️
Duration can be overridden
Hosts can manually set the billable duration for any session. This overrides the tracked time for billing purposes without altering the session record.
💶
Mark as paid
Each session shows the billable hours at the cleaner's hourly rate. Hosts mark sessions paid — the record is kept permanently.
📐
Rounding to 15-minute increments
Elapsed time is rounded up to the nearest 15 minutes when calculating the billable amount.
🔒
Rate snapshotted at session start
The hourly rate and currency are captured when the session is created. Changing a rate later does not affect existing session records.
👤
Per-cleaner billing view
A dedicated cleaner profile page shows all sessions, total hours, amounts, and payment status across all cleanings.
💱
Currency support
Each team has a default currency. Individual cleaner hourly rates are set per user and snapshotted at the start of each session.
🧹
Cleaner manual
For Cleaners

How to access your assigned cleaning, work through the checklist, upload photo proof, and mark your work ready for review.

For cleaners

The cleaner experience

The cleaner interface is intentionally minimal. It consists of a task list grouped by room, with a progress indicator. No account setup or app installation is required for anonymous cleaners.

Getting started

1
Receive a link
If you're a named cleaner, you receive an email with a direct link to your assigned cleaning. For anonymous access, the host provides you with a URL or QR code.
2
Open in a browser
No installation required. The cleaning checklist loads in the browser on any device. Tasks are grouped by room, with a progress bar at the top.
3
Check off tasks
Tap a task to mark it done. If photo proof is required, a camera interface appears — the task cannot be marked complete without a photo.
4
Mark as ready
After all tasks are checked, tap "Mark as ready." This sends a notification to the host and moves the cleaning to the ready-for-review state.

Guest information is not shown to you

The guest name, reservation code, and any booking details are restricted to host-facing views only. You see the task list and unit name — nothing else.

🌍
Tasks translated into your language
Task content is automatically translated into your language using AI — you always see tasks in a language you understand. The app interface itself is available in English, German, Spanish, and Japanese.
📉
Decline an assignment
You can decline your assignment via a link in the invite email. The host is notified immediately.
👁
Seen tracking
When you open your invite link for the first time, the timestamp is recorded and visible to the host in the cleaning report.
Offline mode

Works without a connection

Units often have poor or no signal. Pikapon queues task checks and photo uploads locally on the device and syncs them automatically when connectivity is restored. The cleaner experience is identical whether online or offline.

📵
Task checks work offline
Every tap is saved to the device immediately. The checklist behaves the same with or without a network connection.
📷
Photos are queued offline
Photos captured without a connection are stored on the device and uploaded automatically when signal returns.
🔁
Automatic sync
The sync queue processes items in order (first in, first out) as soon as connectivity is detected. No action is required from you.

Sync behaviour

The sync queue classifies failures into two categories:

Error typeBehaviour
Permission error (4xx) Item is marked as permanently failed and removed from the queue. It is not retried.
Server / network error (5xx) Item remains in the queue as pending and is retried on the next sync cycle.
ℹ️
Optimistic UI — the checklist reflects each check immediately, even before the sync completes. If a sync fails permanently, the UI is reverted.
Photo proof

Photo proof per task

Any task in a unit can be configured to require a photo before it can be marked complete. This creates a visual record of the cleaning that is stored alongside the task in the cleaning report.

1
Take the photo
When you tap a task that requires a photo, a camera interface appears. Capture or upload a photo — it is then attached to that task entry.
2
Photo appears in the cleaning report
The host sees each photo alongside the task it documents. Photos are available in the cleaning report as long as the cleaning record exists.
🔒
Blocking requirement
A task with photo required cannot be marked complete without a photo. The cleaner has no way to skip it.
📵
Works offline
Photos captured without a connection are stored on device and uploaded when signal returns — same as task checks.
☁️
Stored securely
Photos are uploaded to ImageKit (image CDN) and linked to the specific task entry in the cleaning record.
🕐
Timestamped
Each photo is associated with a check timestamp, providing a verifiable record of when each task was completed.
Notifications

Email notifications

Pikapon sends email notifications at key points in the cleaning lifecycle. Each notification kind can be individually controlled — some are per-cleaning opt-in, others are always triggered by the relevant event.

For cleaners

✉️
Cleaning invite
Sent when you're assigned to a cleaning. Contains a direct link to the cleaning and the scheduled time.
🔔
Reminder
Sent if the cleaning hasn't been started by a certain point. Opt-in per cleaning via the send reminders toggle.
Approved
Sent to you when the host approves your cleaning — confirmation that your work has been accepted.
📅
Schedule changed
Sent if the host changes the cleaning date or time after you've been assigned.

For hosts

🏁
Ready for review
Sent when a cleaner marks the cleaning as ready. Prompts you to open the report and approve.
🚫
Cleaner declined
Sent when a named cleaner declines their assignment via the decline link in the invite email.
⚠️
Not started / overdue
Sent if a scheduled cleaning has not been started by the expected time — so nothing falls through the cracks.
🔕
Notification controls
A master notifications enabled toggle exists per cleaning. Reminders and update emails are separate opt-in flags.
ℹ️
All emails are queued in a database outbox and delivered asynchronously every 5 minutes by a background worker. Delivery failures are retried automatically with backoff.