Maintenance and recurring tasks
One-off maintenance requests vs scheduled recurring work, and how each is verified.
On this page
Two modules cover the operational work of keeping a property running. Maintenance handles one-off requests (a tenant reports a leaking tap). Recurring tasks handle scheduled work (quarterly fire-alarm inspection, monthly cleaning visit).
Maintenance requests
A maintenance request starts with someone — usually a tenant, sometimes a manager — flagging an issue.
The flow
- Report: A tenant submits via the public portal, or a team member opens Maintenance → New request and records it on their behalf.
- Triage: The request appears in the maintenance inbox with a status of New. A coordinator assigns it to a vendor or in-house tech, sets priority, and picks an SLA.
- Schedule: The assignee picks a visit window. Tenant gets notified.
- Resolve: The technician marks the work done, attaches before/after photos, records parts used.
- Verify: The coordinator confirms the fix, the tenant signs off (optional but recommended).
- Close: If parts/labour cost money, a linked expense is created automatically. The request is archived.
The default approval workflow
Once the technician finishes, the request moves through a four-step approval chain (customizable in Settings → Workflows → Maintenance):
- Operator Action — the technician marks the work complete and attaches completion proof (photos/videos).
- PM Review — the Property Manager reviews the work, attaches the invoices, and enters the total cost (decimals accepted, e.g. 1,250.75).
- Accountant Review — the accountant verifies the invoices against the cost, optionally attaches an accounting statement, and approves or returns the request to an earlier step with a note.
- PM Confirmation — the Property Manager confirms the statement matches what was uploaded. Completing this step closes the request, and the total cost feeds the expense record.
Any reviewer can Return the request to any earlier step with a reason — the assignee of that step is notified and the history timeline records the round-trip.
[!info] Workspaces created before this flow shipped keep their original three-step workflow until an admin clicks Reset to Defaults in the workflow editor. In-flight requests always finish on the workflow they started with.
Documents and the audit trail
Every upload appears in three places on the request page, each with a different job:
- Task history (timeline) — each completed step's entry lists what was uploaded there, prefixed with the slot name (e.g. "Invoices · march.pdf"). Reviewers see earlier steps' files immediately — the accountant sees the PM's invoices before approving.
- Workflow documents — the live, organized view: one row per step's upload slot for the current cycle. When a step was returned and re-completed, the superseded files stay available under Previous versions — so you can see exactly what changed across decline rounds.
- Evidence & notes — the permanent record, grouped by cycle (
CYCLE #1,CYCLE #2, …). Reopening a request starts a new cycle; earlier cycles' evidence stays here.
Deleting media (admins)
Admins can permanently delete any uploaded file or note — including on closed requests (e.g. removing a wrong or sensitive upload). Use the trash icon on an evidence tile or a workflow document. Deletion removes the file from the request, the document archive, and storage, and cannot be undone.
Notifications
Each step transition fires inbox notifications to the relevant roles. The default workflow notifies the assignee on assignment and the coordinator on completion. Workspace admins can adjust which role gets notified at each step — see Workflows and approvals.
[!info] On the Free plan, maintenance requests are capped at 10 lifetime. Hit the cap and you'll be prompted to upgrade. Paid plans are unlimited.
Recurring tasks
A recurring task template describes work that needs to happen on a schedule: "Inspect the fire alarms in Al-Olaya Tower every 90 days." The template auto-generates an actual task instance each time the schedule fires, assigned to whomever the template says.
Setting up a template
Open Recurring → New template:
- Name and category (Inspection, Cleaning, Maintenance, Compliance, etc.).
- Property and unit (or property-wide).
- Schedule: every N days/weeks/months, or on specific weekdays, or on a fixed day-of-month.
- Default assignee (a team member or a vendor contact).
- Optional checklist of subtasks.
Save. The first instance generates at the next scheduled date.
When an instance generates
Each generated task lands in the assignee's task list. They work through the checklist, attach photos, record any expenses incurred (e.g. a replacement part), and mark Complete. The recurrence rolls forward automatically.
What the Complete step asks for — which documents to attach and which fields to fill — is driven by your recurring-task workflow (Settings → Configuration → Workflows → Recurring task), not a fixed form: a workspace admin can add attachment slots or input fields to the operator step and they appear when completing. Whatever's captured shows in the task's Workflow documents, and any later review/approval steps (PM, GM) are approved or returned the same way as maintenance.
The Free plan caps recurring task templates at 10. Paid plans are unlimited.
Maintenance vs recurring — when to use which
| Use case | Module |
|---|---|
| Leaky tap reported by a tenant | Maintenance request |
| Quarterly fire-alarm test | Recurring template |
| Mid-tenancy spot inspection scheduled by you | Recurring template (one-off occurrence is fine) |
| Damage flagged at move-out | Maintenance request |
| Annual property tax filing reminder | Recurring template (Compliance category) |
[!tip] If the work is reactive (someone reported a problem), it's a maintenance request. If it's calendar-driven (will happen on the same day regardless of complaints), it's a recurring task.
Roles and permissions
By default, the Maintenance role can view, assign, and resolve requests. The Admin role can do everything plus delete and edit templates. You can adjust this — see Roles and permissions.