Camellia goes silent on resident questions

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

The answer

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.

1. Clara handles it→Done
2. Clara asks the team→Team replies→Clara relays
3. Full handoff→A person owns it

Your calls

What decides the outcome (no settings)
SituationOutcomeWho receives
Clara can answer or act, including booking a tourClara handles itNobody needed
Clara lacks a fact or policyAsks the team, relays the replyProperty contact, else company team email
A person must act, or the caller asks for oneFull handoffSame
Nobody on file (Situs today)Engineering alert plus an honest reply to the renterEngineering

The only config left is who receives. It already exists (company level, property can override), matching Gera's architecture page.

New tour rule: anyone who has not moved in can tour, signed or not. Incoming residents can check times and book a tour.
Plan, in this order: investigation, harness, code
  1. Deep investigation (done above).
  2. Test harness. No fix ships before it.
  3. Code.

Step 0: the harness (first PR, about 300 lines)

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.

Then 9 cleanup PRs

One concern each, 300 lines or less, live everywhere on merge, no switches.

#Change
1Forward always asks the owner chain (delete the "autonomous" branch)
2Canned reply only when a notice was recorded
3Forward goes through the engine (Gera's lane, via the bridge)
4Remove the short-circuits from follow-up nags and reminders
5Fold the separate "autonomous team note" into the ask
6Prompt and guest-card flags
7Voice lane (transfer-or-message routing stays)
8Safety checks, collections and bench profiles
9Delete 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.

What we found in production (read-only)
CompanyOld setting storedWho receives an ask
JP&CoCamellia = "autonomous"; Yale = "coworker"Team mailbox
Western SlopeOnly the company line = "autonomous"; its 89 homes have noneLeasing mailbox
SitusNoneNobody (no owner or team email on the company or any of 52 properties)
Test properties5 rowsTest 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.

What happened at Unit 515

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.)

  1. Resident conversations have no tour tool, so Clara forwarded to the property team.
  2. The forward reached no one.
  3. A safety check swapped her reply for "I've noted that for the property team."
  4. The resident asked "Is this confirmed?" and got "connect directly with the property team."

Only PropFlow's internal alert saw it. The tour was booked by hand.

Camellia alerts: wire like Western Slope

Read from production, 2026-10-06. Only one real setting differs for team and observer email.

SettingWestern SlopeCamellia
Company copy on every Clara and staff email (observerBcc)On, hello@ listedMissing
Copy on team notices (staffObserverBcc)OnOn
Team notice inbox (company escalation email)Leasing inboxCamellia inbox
Team-notify engine, handoff modeOn, autonomousOn, autonomous
Team notices send modeNot stored (now Live)Live, stored
Escalation copy to hello@ (property row)NoneSet

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).

Engineering detail
PropFlow Docs