Your question: did the new notification refactor miss Camellia? Yes. The fix is to use Western Slope's framework everywhere.
2026-10-06 · Camellia, Western Slope, Situs · Proposed — pending review
AnswerYour callsCamellia alerts
Yes, the refactor missed it. For Camellia resident and "other" questions, Clara has no honest reply and no one to tell. Fix: every situation ends in one of three outcomes, decided by what happened in the conversation. No per-property handoff setting.
| Situation | Outcome | Who receives |
|---|---|---|
| Clara can answer or act, including booking a tour | Clara handles it | Nobody needed |
| Clara lacks a fact or policy | Asks the team, relays the reply | Property contact, else company team email |
| A person must act, or the caller asks for one | Full handoff | Same |
| Nobody on file (Situs today) | Engineering alert plus an honest reply to the renter | Engineering |
The only config left is who receives. It already exists (company level, property can override), matching Gera's architecture page.
Extends the existing team-notify end-to-end harness, which runs the real decision code with nothing live. Grid: company (Camellia, Western Slope, Situs, test) × conversation kind (prospect, maintenance, incoming resident, current resident, vendor, other) × channel (text, email, voice) × situation (Clara can / can't, ask the team / caller wants a human), about 216 cells. Each cell checks:
It starts red on today's code, on purpose: Camellia resident and "other" turns (forward to nobody), incoming-resident tour request (no tool), Situs (nobody told), Western Slope company line on non-leasing. Four planted-wrong-outcome controls must also go red.
One concern each, 300 lines or less, live everywhere on merge, no switches.
| # | Change |
|---|---|
| 1 | Forward always asks the owner chain (delete the "autonomous" branch) |
| 2 | Canned reply only when a notice was recorded |
| 3 | Forward goes through the engine (Gera's lane, via the bridge) |
| 4 | Remove the short-circuits from follow-up nags and reminders |
| 5 | Fold the separate "autonomous team note" into the ask |
| 6 | Prompt and guest-card flags |
| 7 | Voice lane (transfer-or-message routing stays) |
| 8 | Safety checks, collections and bench profiles |
| 9 | Delete the setting, the script and the 12 stored values |
Risk: Camellia's leasing lane moves from "team note" to "ask and relay". Camellia staff have never replied to Clara, so the no-reply path (one reminder, then an honest reply to the renter) must hold. The harness covers it.
| Company | Old setting stored | Who receives an ask |
|---|---|---|
| JP&Co | Camellia = "autonomous"; Yale = "coworker" | Team mailbox |
| Western Slope | Only the company line = "autonomous"; its 89 homes have none | Leasing mailbox |
| Situs | None | Nobody (no owner or team email on the company or any of 52 properties) |
| Test properties | 5 rows | Test inboxes |
12 stored values in total, 3 at real customers. Only an admin script writes it. About 40 places in the code read it (texting, email, voice, forwards, follow-up nags, collections, safety checks). The new notification engine never reads it; it decides from what happened (forward used, caller asked for a person, message left, thread already owned by a person). The forward tool still bypasses the engine.
A future tenant at Unit 515 texted asking for a tour on Oct 13 at 1 PM. (AppFolio could not confirm whether they signed; they are a future tenant, no staff countersign pending.)
Only PropFlow's internal alert saw it. The tour was booked by hand.
Read from production, 2026-10-06. Only one real setting differs for team and observer email.
| Setting | Western Slope | Camellia |
|---|---|---|
| Company copy on every Clara and staff email (observerBcc) | On, hello@ listed | Missing |
| Copy on team notices (staffObserverBcc) | On | On |
| Team notice inbox (company escalation email) | Leasing inbox | Camellia inbox |
| Team-notify engine, handoff mode | On, autonomous | On, autonomous |
| Team notices send mode | Not stored (now Live) | Live, stored |
| Escalation copy to hello@ (property row) | None | Set |
Proposed write (needs Fede's go): set settings.observerBcc = {enabled: true, emails: [hello@propflowai.co]} on ORG#org_jpco via scripts/notifications/set-observer-bcc.ts (company-wide, with the real-org bypass and authorization text).
handoff-mode.ts:113/119: explicit property value wins before the leasing-only check.handle-forward-to-property-manager.ts:840, 2272-2297, 484-489: no-page result and its text.open-matter.ts:1554: maintenance mode check.conversation-manager.ts:2593-2618, 15385, 15623: canned-line rewrite.incoming-resident.ts:61: grants only key-pickup tools.src/lib/team-notify/decide.ts:83: the engine's decision point.scripts/team-notify-e2e/.