Handoff to Smith for the "stop duplicate work-order created texts" change. Read from AppFolio's own logs at Western Slope, Oct 27–28.
2026-10-28 · Western Slope + Situs · Handoff — Fede asked for it · from session 004
AppFolio texts a resident only when the resident submitted the request through the portal. A work order typed in on the manager side, by staff or by Clara, triggers nothing from AppFolio: no text to the resident, no text or email to the office. So the fix must skip Clara's "work order created" text only for portal submissions, not for every work order that comes from AppFolio.
| Entered how | AppFolio texts resident | AppFolio texts/emails office primary contact | Clara's text today | Result |
|---|---|---|---|---|
| Resident, online portal (Maintenance Performer) | yes "Your maintenance request has been submitted. Your maintenance request number is #6137-1 …" from "System" | yes "WO #6137-1 - NORMAL - …" to Ryan Dyer | "Work order created" on sync | duplicate |
| Staff, manager-side form (Jonathan) | no | no | "Work order created" on sync | only notice the resident gets |
| Clara, manager-side form (from a call) | no | no | "Your work order number is N" (held when Supervised) | nothing if the hold lapses |
| WO | Resident | Entered by | AppFolio Actions Log on creation | Resident's AppFolio text log | Clara |
|---|---|---|---|---|---|
| 6137 | Jennifer B. | resident, portal, 6:01 PM Oct 27 | "Submitted online using Maintenance Performer"; text + email to primary contact Ryan Dyer, by System | System text 6:01 PM Oct 27: "Your maintenance request has been submitted … #6137-1" | "Work order created" text (the duplicate) |
| 6136 | Shari L. | Clara, 5:14 PM Oct 27 | "Created – Clara Propflow". Vendor assigned by a person 8:06 AM Oct 28; AppFolio texted and emailed the vendor then | nothing since Oct 23 | "Your work order number is 6136" held since 5:14 PM Oct 27, lapses 24 h later |
| 6138 | Nancy V. | Jonathan, 8:13 AM Oct 28 | "Created – Jonathan Balding", nothing else | nothing in October (her July and August portal requests did get System texts) | "Work order COUR-6138 created", 8:16 AM, auto-approved |
| 6139 | Laura M. | Jonathan, 8:13 AM | "Created", nothing else | nothing | "Work order MORS-6139 created", 8:16 AM |
| 6140 | Jennifer Z. | Jonathan, 8:16 AM | "Created", nothing else | nothing | "Work order COUR-6140 created", 8:22 AM |
| 6141 | (no unit) | Ryan, 8:36 AM | "Created"; assignment email Ryan sent himself | n/a | none |
| 6134 | vacant | Jonathan, Oct 27 | "Created", "Assigned", "Scheduled", no notices | n/a | none |
Read with GET-only page loads on the robot's warm session (no login, no clicks). Work-order pages: Actions Log, Emails and Texts sections. Tenant pages: the Texts block, which is where AppFolio's "System" resident texts show up; they do not appear on the work-order page.
Skip Clara's "work order created" text for every work order whose source is AppFolio.
Breaks: Nancy and Jennifer Z. today would have heard nothing. Staff enter work orders by hand all day.
Skip it only when AppFolio's Actions Log for that work order says "Submitted online using Maintenance Performer" (or the resident-portal equivalent). Every other AppFolio work order keeps Clara's text, because nothing else tells the resident.
The sync already reads the work-order page; the Actions Log line is on it. Normalise it at the sync boundary into our own field (e.g. submittedByResident: true), never an AppFolio string in core code.