Maintenance Flow — QA Script

Goal: an issue gets reported, the maintenance person prices it, the price is either auto-approved or sent to the owner, the work is completed with photos + receipts, and the owner's invoice is created automatically.

Setup (once)

You need two brand-new email addresses:

  1. Company account — sign up fresh, choose Cleaning Company or Property Manager.
  2. Maintenance account — do NOT sign up; the company invites it (My Team → Add Team Member → role Maintenance), then accept from that inbox.

Then, as the company: Clients → Add Client with repair approval threshold = 250 → add a property under that client → Give Owner Portal Access (use any third inbox you have) and accept it.

Use two browser windows (regular + incognito) so you can watch the company and the maintenance person at the same time.

Run A — under the limit (should never involve the owner)

#WhoDo thisMust happen
1CompanyMaintenance Requests → New Request on that propertyShows Reported + the owner's $250 authority line. No price field anywhere.
2CompanyDispatch → assign the maintenance account, pick a dateCard shows Waiting on estimate; job + email reach the maintenance account
3MaintenanceMaintenance Jobs → open job → estimate $150 → Send EstimateInstantly approved automatically; upload + Mark Complete controls unlock; owner is NOT emailed
4MaintenanceUpload 1 before photo, 1 after photo, 1 receipt → final cost $165 → Mark CompleteSuccess names an invoice number; request = Resolved; work order = completed
5CompanyInvoicesNew invoice for that client, $165 (final cost, not the estimate), with the receipt attached
6CompanyRe-open the requestAlready-billed; no way to bill it twice

Run B — over the limit (owner must approve)

#WhoDo thisMust happen
1CompanyNew request on the same property → dispatch to maintenanceWaiting on estimate
2MaintenanceEstimate $900 → Send Estimate"With the property owner — hold off"; completion stays locked
3OwnerApproval email → Owner Portal → ApproveMaintenance unlocks; company sees who approved and when
4MaintenanceComplete it with photos/receipt + final costInvoice created as in Run A

Then repeat once and hit Decline instead: maintenance must see "do not carry out the work" and must not be able to complete it.

Quick variations (5 min)

Change the client's settings and re-submit one estimate each time:

SettingEstimateExpected
Threshold 250$250 exactlyAuto-approved
Threshold 250$250.01Owner approval
Threshold blank / 0$10Owner approval
"Always require approval" ON$50Owner approval (toggle beats the threshold)
Property with no clientanyProceeds internally, no owner invoice

Also confirm

  • The maintenance account sees only its own jobs — never other properties' requests
  • A regular cleaner cannot quote or complete a maintenance job
  • The company can never type a repair price anywhere in the flow

Log for each run: property, threshold, estimate, who approved, final cost, invoice number. A completed job on a client property with no invoice number is 🔴 Critical.