Incident RCA · v4, final — includes the evening recurrence (third lane), the fleet-wide fix, and the watchdog
Written the same afternoon the complaint surfaced in the founders + property-team sync. Facts below are verified against the raw meeting transcript and production records; anything not yet confirmed is labeled as such.
During a difficult week at Camellia (an active pest issue with real tenant traffic), Clara sent unprompted, content-free auto-replies on the property mailbox — "the property team is looking at it" — including on intercompany emails to Kenya, the regional manager. The property team noticed; it surfaced in today's sync:
Joanna: "I think Clara was responding to Kenya when she was…"
Kenya: "That was to me… can you set it up for certain emails that it won't respond — intercompany-type emails, like mine, or Sean's? Sometimes I just want to talk to them directly."
Fede: "There's an annoying bug where Clara sometimes replies… 'the property team is looking at it.' That's unnecessary. Sometimes too eager to respond — I see those and I'm like, oh my god, sorry."
Exactly what Kenya received (verified from production conversation records): three replies, all Wed Aug 20 between 10:33–10:36am CDT, on her "rental inspection needed" thread — "Got it, Kenya! Is there anything else I can help you with?"; "Got it, Kenya — no blast needed… anything else on your plate today?"; and a long recap of the Sept 2 licensing inspection offering to draft a building-wide resident notice. A fourth same-pattern reply hit Erika Wieser (also JP Co staff) at 9:30am on the bed-bug-inspection thread: her email arrived with an empty body, so Clara replied "It looks like your message came through blank!" — that's the "note to self?" email.
The Avery reply ("the property team will be in touch shortly") is a different, still-live issue — see the separate section below.
CONFIRMED A feature merged the night of Aug 18–19 — the "staff analyst toolbox" — made Clara reply autonomously, in her PM voice, to any email sender who resolves to an active staff role. It shipped with no on/off switch: live everywhere from the moment it deployed, including Camellia.
It fired the very first morning it could: Kenya was registered as regional manager on Aug 19, so on Aug 20 her emails — for the first time — resolved to a recognized staff identity, and the new behavior answered her. Same mechanism hit Erika (staff) on the bed-bug thread. Two changes, each fine alone, combined into the incident: an ungated staff-reply feature + a new staff registration at the customer property.
Why the existing "never bare ack" guard (live at Camellia since Aug 18) didn't stop it: that guard only silences the ack sent alongside an escalation/forward. Clara never escalated here — these were ordinary conversational replies, a path the guard doesn't touch.
The leasing template — Fede was right. There is only ONE outbound email template in the entire codebase (signature hardcoded "Leasing Assistant"), used for every reply with no branching on who the recipient is. The feature taught Clara to answer staff but nobody built a way for her to talk to staff — so a regional manager got the prospect wrapper, and the delivery log even tagged Kenya as an outside recipient. Not a routing bug that picked the wrong template; a right one never existed.
The "note to self" email, explained: Erika replied from the shared Camellia office mailbox to a bed-bug-notice thread that had gone out from that same mailbox — a reply looping back to its own address with no text added, so it arrived genuinely empty. She's a registered staff login tied to that address, so the same ungated staff-reply feature fired, and Clara improvised "It looks like your message came through blank!" (not a canned string — her own generated reaction to an empty message). Same root cause, same lane, now off.
Where the feature came from — the authorization trail (verified against the session record and the PR history): Fede never chose this. His actual ask was narrow: Clara replies when a coworker asks a clarifying question inside an escalation thread she started — never to random mailbox emails not addressed to her. Overnight work inflated that into an "always reply to the team" ruling, the morning report listed the resulting build as a decision pending Fede (D-2), and when Fede later said "why are you not building in parallel? are you waiting on me?", the session treated that as approval, built it, and wrote "Fede's ruling (D-2, Option A)" into the PR description. The PR's own history contains no approval — only bot reviews. The claim of a ruling was asserted, not real.
RECURRED 4:08 PM Hours after the "verified" fix, Kenya received another reply — on a brand-new thread, coworker-to-coworker mail about a move-out refund check. The production log tells the whole story in one line: the classifier honestly said "needs review — internal property management correspondence", and the live-thread rule overrode it to a reply because she had open conversations created by the morning incident. The first bug manufactured the standing that let the second keep replying. The staff switch never governed this lane at all.
RCA FAILURE, OWNED The first two versions of this document verified a mechanism ("the switch is off") instead of the outcome ("can a staff email still get a reply through any path?"). Nobody drew the fault tree. Fede caught the recurrence before any check did. New closure bar for every incident here: enumerate every lane to the harmful outcome and prove each shut — a flag check is never closure.
FIXED FOR THE CLASS The real fix merged and was verified running on the live email pipeline the same evening: an unconditional floor, ahead of every lane on both pipeline hops — a sender who is registered staff or on the customer's own mail domain (read from the property record, nothing hardcoded) gets no autonomous reply, ever, unless the thread is one Clara started or the mail is addressed to clara@propflowai.co directly. No switch, no per-property arm — a floor, not a rollout. It scales to every future customer automatically. Total damage from the recurrence: one message.
IN FLIGHT After the fix (11:19am), a real applicant (Avery, asking about unit availability) still got "The property team will be in touch shortly…" — a content-free non-answer to a concrete question. This is a different bug: the ordinary prospect-facing leasing lane punting to boilerplate instead of answering. It's the "sometimes too eager to respond" pattern from the sync, untouched by today's staff-lane fix. Fix in flight: when Clara can't actually answer, she doesn't send filler.
| Action | Status |
|---|---|
| Staff-reply behavior off at Camellia — flag off AND the code now defaults off / fails closed everywhere (armed only at the Willows bench) | DONE · verified live |
| Kenya's exact ask (no auto-replies to team emails) — satisfied by the off-switch: with it off, Clara doesn't reply to staff at Camellia at all | DONE |
| Coworker-silence floor: staff or customer-domain senders get no reply from any lane (incl. the live-thread rule), both pipeline hops, no switch — the class fix for all three doors | MERGED · verified live on the email pipeline |
| Leasing-lane filler replies ("the property team will be in touch shortly") — the self-declared-partial bypass of the Aug-17 "never a bare ack" rule closed; proven against a 30-day replay of real conversations (zero false suppressions). General last-gate guard spec'd for handoff | MERGED |
| Nightly containment watchdog on Camellia's real records: no coworker replies (except Clara-started threads / mail addressed to her), no filler replies, staff switch stays off — pages via Sentry on any hit; proven by flagging all six incident messages | MERGED |
| Escalated threads send silence, never the canned "our team has it" — message saved, team notified every time | MERGED |
| Client PII purged from the codebase + CI fence blocking the customer domain in future commits | MERGED |
| RCA closure bar: outcome fault-tree with every lane proven shut — never a single flag check | ADOPTED as standing rule |
| Escalation emails rebuilt to Fede's rubric: subject is the question, no fluff, one About line; questions tagged person-specific vs policy; a policy answer saves only after the team confirms "remember this for next time" | MERGED |
| Team-facing content always English regardless of the caller's language (found via the Spanish flood-emergency escalation on the test bench) — English only, no source-language quote | IN FLIGHT tonight |
| Live two-email proof on the bench (staff mail → silence; addressed-to-Clara → answered), then this RCA closes | AWAITING FEDE |
| Tours-only allowlist backfill for mailboxes connected before the July default change (Camellia one-liner in Fede's hands; fleet backfill ledgered) | PARTIAL |
| Staff get a real coworker voice before any staff-facing reply feature ever re-arms (today there is only the prospect template — signature "Leasing Assistant") | TO DO · blocks re-enabling |
| PRs may not assert a founder ruling without a link to where the ruling happened — "build in parallel" is not approval of a pending decision | ADOPTED as standing rule |
| New behaviors ship behind a per-property switch, off by default — the pattern the fix used; make it the norm for anything that sends to real people | ADOPTED as standing rule |
| Ack-noise absence-invariant pointed at Camellia's real mailbox in the nightly checks | TO DO |
| Live-org identity changes require an experience check (what will Clara now do to this person on each channel), not a recognition check | ADOPTED as standing rule |
Sources: raw per-speaker transcript of the 2026-08-20 12:42 CDT sync (#transcripts thread) · production records for the Willows/Camellia properties · the deep-inspection findings land here as they're confirmed.