Why Western Slope never heard from Dora Gomez, and the one-layer fix.
2026-10-27 · all customers · Shipped 2026-10-28/29 — live, no switch, proven on a real call Oct 29 · hub: Clara as a coworker, v3
8 of 47 caller messages at real customers in 30 days never reached a person (17%). Clara told the caller the office would get it; nothing was sent.
All rows Oct 5–27, re-checked by a second pass. 6 of 8: wording check; 2: "no number" (one had given it).
caller ──► Clara writes the note
│
call end: model #2 rewrites it
│
checker: banned word "she" ✗ ✗ ✗
│
nothing sent · backup disarmed
Slack: "note left for the office"caller ──► Clara writes the note
│
row: pending
│
call end ──► send it, fixed template
│
delivered (provider id on row)
else: sweep retries, then HELD
Slack / page / tool read the row| Option | What it is | Call |
|---|---|---|
| A. One layer | Clara's own note from the call, sent under a minimal slip template; the rewrite-and-police step is deleted. | Recommended |
| B. Hold on failure | Keep the rewrite; failures held for a reviewer. | Still two layers |
| C. Keep today | Fix the sweep only. | Still drops |
Two rulings to revisit:
Voice first, then texts and emails.
Spot-check sheet: seven real calls, old email next to new email (Oct 29).
| PR | What | Merged UTC |
|---|---|---|
| #23078 | Harness + one TEAMNOTICE row per message, swept until delivered or held | Oct 28 (earlier) |
| #23372 | One model call writes the whole note from facts (name, role, unit, company from our records, caller's words); code adds only the link and "Clara". No headless sentence, no "Called <time>" line | Oct 29 15:1xZ, live 16:01Z |
| #23377 | "I'll get that straight to them" counts as a promise to pass it on (no wrong skip) | Oct 29 02:38Z |
| #23496 | Blank line after the who line (Fede, from the spot-check sheet) | Oct 29 ~17:0xZ, live 17:32Z |
| #23262 | A question Clara fully answered on the call sends no office note | Oct 28 20:34Z |
| #23079 | The phone slip: one model call writes what the caller wants and the topic; code writes who, the number once, the call time; wording never blocks delivery | Oct 28 22:26Z |
| #23242 | The conversation page and Slack card say what really happened to the note | Oct 28 23:06Z |
| #23291 | Slip and card name the caller the same way, company from our records; VENDOR CALLED card | Armed, in queue |
| #23331 | Card strip keeps the caller's own ask | Armed, in queue |
| #23341 | The slip's want line keeps its subject | Armed, in queue |
Live proof, Willows test line, Oct 28 5:40 PM MT (conversation conv_voice_e3e53a2f-2c6f-4a9f-88ea-dcf9ca9e3792, notice tn_eb1fd8dc-358d-4a43-b248-232ee9631d03, delivered 20 s after hang-up, SendGrid MYHWCY7FRSybtHRqUZDu7g):
Subject: Marcus — general callback Marcus wants to know what services the property management team offers… Callback number: (970) 310-3966
Subject: Pat R. — Security deposit refund Pat Rivera (resident). moved out of Unit 2B at the end of September and hasn't received the security deposit refund yet. Wants the office to follow up on it. Callback number: (970) 555-0142 Called Wed, Oct 28, 5:40 PM MDT
No call time on the old note, and 8 of 47 messages in 30 days dropped by the wording checker (latest: Camellia tub touch-up voicemail Oct 28 21:45Z, recovered by hand 21:54Z). On the new slip the lowercase second line is defect #23341 (fixed, in queue); the number appears once; nothing can be dropped by wording any more.
Subject: Pat R. — Security deposit refund Pat Rivera (resident). moved out of Unit 2B at the end of September and hasn't received the security deposit refund yet. Wants the office to follow up on it. Callback number: (970) 555-0142 Called Wed, Oct 28, 5:40 PM MDT See the conversation Clara
Subject: Pat R. — Security deposit refund Pat R., resident, unit 2B. They say they moved out of unit 2B at the end of September and have not received their security deposit refund. They want the office to follow up on the status of that refund. Callback number: (970) 555-0142 See the conversation Clara
Evidence: conversation conv_voice_5ba9e54f-0cb2-40d2-bbca-12d96cebb378, notice row tn_dd5025f6-9e65-48ea-beca-b62bc321b402, email received 2026-10-29T17:34:18Z in the Willows test inbox; production page card shows the full subject. Since-live check at real customers (Oct 28 23:39Z to Oct 29 03:30Z): 13 calls, 3 notes delivered, 9 correctly silent, 1 judgment call (caller withdrew), 0 dropped. Spot-check sheet: seven real calls, old next to new.
On the call Clara already writes the note. Then at call end a second model rewrites it into one sentence, a checker polices that sentence (banned words such as "she", one sentence only, 28 words, grounding), and when the rewrite fails three times the engine sends nothing. The backup sweep is disarmed on the way out, and the ops card is a model's guess from the transcript.
Subject: Dora Gomez — Gomez called to ask about qualifying for one of the properties… Property: not identified yet Dora called. The office was closed (after hours). Dora Gomez called to ask about qualifying for one of the properties. She has a couple of questions about qualification and would like to speak with someone over the phone. Callback number confirmed as the number she is calling from, ending in one two nine one. Can someone call Dora back? (970) 201-1291
Subject: Dora Gomez — does she qualify? Call back (970) 201-1291 Dora Gomez (new prospect, not on file) wants to know if she qualifies for one of your rentals and has a couple of questions. Please call her: (970) 201-1291. Left Oct 27, 5:07 PM (after hours). — and for a resident/applicant — Maxwell R. (applicant, unit 515, Camellia) wants an update on his application. Call back (…) …
pending. Its only end states are delivered (provider id on the row), held (a visible hold, on Slack and the conversation page) or declined (a named product rule, shown on the conversation page). One sweep retries anything not delivered, bounded, then holds it. A retry of the same event re-attempts a row that is not delivered. Call end never disarms the backup.A caller with no dialable number gets a note anyway, with "number withheld". One of the two Oct 8 "no number" losses had said and confirmed her number on the call; the engine refused anyway. Two more silent branches from the second pass: a transfer that went to voicemail counts as "handed to a person" (4 of the 8 losses), and a backstop logs "nothing was lost" seconds before the call-end step refuses the note.
Extends the existing scripts/team-notify-replay (no new harness dir; registered on the Atlas). Fixtures: the 8 real lost messages, scrubbed; ~30 delivered ones that must stay delivered; one synthetic fixture per silent branch (16 found) with its fault injected: model throws, model returns banned words, function dies after the row write, SendGrid fails, thread write fails, no team email. The one existing test that expects zero notices when the model throws is flipped to "known gap". Mutation control: re-enable the gate, suite goes red. Runs on the subscription; the hermetic fault-injection subset runs in CI.
| Invariant | Checked by |
|---|---|
| Every captured message ends delivered, held or declined; no other state exists | Replay every fixture, assert the end state |
| A model outage or a wording failure never changes delivery | Throwing model → still delivered |
| A row not delivered after N minutes is retried, then held | Die after row write → sweep sends in one tick |
| Nothing says "delivered" without provider evidence | Refused row cannot render "note left" |
| Every end state is readable on the conversation page | One thread row per message, any state |
| # | PR | Proof |
|---|---|---|
| 1 | Harness: delivery suite, fixtures, mutation control | Red run on main listing every failing invariant |
| 2 | Send path: the captured note under the fixed template; rewrite-and-police removed from the voice path | Incident fixture green; replay of the 11 wording failures produces an email each |
| 3 | One record: row at capture, states, one sweep, idempotency re-attempts, call end never disarms | Die-after-write and failed-send fixtures green |
| 4 | Honest surfaces: tool result, Slack card, conversation page read the row | Production screenshot of a held and a delivered note |
| 5 | Texts and emails: the person's message goes when Clara's turn fails (after the Oct 25 yes) | Fixtures from the Oct 25 harness |
Then a real call on the Willows line, a message left, the email opened, the row and the page checked. Live everywhere on merge (fix; Fede 2026-09-30).
| Date | PR | Added | Fede's words |
|---|---|---|---|
| Oct 3 | ask | "One sentence… call back number is this. And that's it." | that |
| Oct 3 | builder prompt | Session 003's own spec: one sentence, 20 words, banned words, a backup email on failure | none |
| Oct 4 | #16162 | 28-word cap, he/she ban, 2 retries (builder's addition) | none; his own example sentence that day used "her" |
| Oct 4 | #16403 | Failed check = no email; the e2e test flipped from "1 notice" to "0 notices" | Shown an ugly backup email ("Pat H. said: …"), asked "Did I ask for that?", offered A keep it / B retry, alert, send nothing: "No, I don't want a fallback." Inference: he rejected the format, not delivery. "Send their words plainly" was never offered. |
| Oct 5 | #16482 | Call-end backup email silenced too | none; reviewer said "get a line from Fede"; nobody did |
| Oct 5 | #16532 | Second model "grounding" check | none |
Rule added: a wording check grades a message, never blocks it. A caller's message always reaches the office; "no email" only when there is no message. A session offering Fede A/B on a customer-facing drop must include "send it plainly" as an option.