Willows End-to-End Sweep — Aug 23
Fede asked for a full test round of every channel ("there's lots of bugs") plus the finish of the lease automation. Four test lanes ran against the Willows test property only: scripted voice calls, email/SMS, the web app, and a full data audit. This page is the consolidated result: every bug, who owns the fix, and what's already live. Camellia was never touched.
The day's headline
The first fully-autonomous lease send happened today. Approved applicant → lease prepared in AppFolio → sent for signature → applicant's inbox, zero human steps, with the finalize/countersign actions structurally blocked throughout. The signing email and Clara's congratulations (with the portal link) are both verified delivered. The remaining polish — real dollar amounts pulled from data instead of a browser robot's typing — is the no-hands API that merged tonight, with its last two field names being captured now.
Bugs found, ranked — and their fix status
| # | What happens (plain English) | Severity | Fix status |
|---|---|---|---|
| 1 | Clara goes silent on a lease question. An approved applicant texted "I have questions about my lease" — the message arrived, got escalated to a human, and the applicant heard nothing at all. The proposed quick fix was rejected in review because it didn't explain the real cause (the silent path it patched was email-only; this was a text). | SEVERE | Deferred honestly — real cause being traced before any live-agent change (tracked) |
| 2 | Tour "reschedule" reschedules nothing. "Move my Saturday tour to Monday" → "Got it, I'll make that change" → no booking tool ever called; caller leaves believing it's done. | SEVERE | Fix built in lab; ships to the Willows-only agent fleet (Fede's ruling: Camellia frozen until he tests) |
| 3 | Clara states a lease status she can't know. Told an applicant "your lease is being prepared and sent" with no data source. Root cause found: the saved lease info was stored on a record the phone/text channels can't naturally reach. | SEVERE | Storage being moved to the person's record + wired into calls (zero added latency) |
| 4 | Recent conversations don't appear in the conversations list — a call from 9 minutes earlier was invisible on page 1 under every filter, and even phone-number search missed it. Cause found at the database-index level: the "recent" index sorts by record ID, not time. | SEVERE | Root cause documented; needs its own fix (ticketed) |
| 5 | A caller can be transferred to their own phone number. A test-property debug redirect for unrecognized callers catches real callers too — Fede was transferred to himself. And when a transfer isn't answered, the call just ends with no fallback. | HIGH | Fix built in lab with regression tests; ships with the Willows train |
| 6 | Approvers couldn't see who a message goes to — the review card showed "Email" but never the address; one congrats was approved with no email on file at all. | HIGH | FIXED — card now shows the resolved recipient; approve goes inert when it's empty |
| 7 | The prospect page showed stale lease state ("Ready to send the lease" while the real lease was already out for signing). | HIGH | FIXED — page now shows real signing status, sent date, and the same portal link the applicant got |
| 8 | Wrong and fake data planted on the property: a fake door code ("buzz 0000") served to callers as real, a $200 admin fee and other charges contradicting Fede's ruled fee table, and pages cloned from Camellia describing a different building. | HIGH | CLEANED — live in production; Clara now answers only from sourced facts |
| 9 | Duplicate resident records: the same applicant had two occupancy rows (one a stray from a test-run bug), and the "find this person's lease" lookup returned the wrong, lease-less one. | HIGH | Duplicate-prevention guard in review; stray record removal sequenced (AppFolio side first, then database) |
| 10 | She promises follow-ups that never get logged — "I'll flag that for the team" (breed rules, 2-bedroom waitlist) without ever firing the team-notification tool; plus contradictory answers about whether the team will reach out. | MEDIUM | Fix in the Willows train |
| 11 | Spanish switch lag: the first reply after a caller switches into Spanish comes back in English and repeats an old question. (Switching back to English is instant.) | MEDIUM | Fix in the Willows train |
| 12 | Raw system IDs in the conversations "From" column, "Unit unknown" noise, staff shown as prospects, unlabeled repeat callers, phone search failing on the on-screen number format. | MEDIUM | Mostly FIXED/in review (three PRs from Fede's own session); search normalization ticketed |
What passed cleanly (worth knowing)
No fee-dumping on a fees question; honest refusal to promise a text mid-call; accurate pet fees; no invented Saturday slots on the current config; no internal-notes leakage; review gate and approval flow working; both of today's calls correctly recorded in the database (the list bug is display-side, not data loss).
The lease automation, tonight's state
| Piece | State |
|---|---|
| Autonomous lease prepare + send (browser-driven proof) | DONE — real lease out for signing to the test applicant |
| Congratulations email with signing-portal link | DONE — delivered; link answers from saved state on any channel (retrieval wiring in progress) |
| No-hands API (terms from application data, blank-money guard, execution actions blocked) | MERGED — two field names being captured now via the live lease regeneration |
| Lease v2 with real dollar amounts (replaces the blank-rent v1) | RUNNING — v1 canceled cleanly, regeneration in progress |
| Change requests ("can I move my start date?") → review queue → regenerate | DESIGNED + roadmapped; the cancel→regenerate→resend path is proven mechanics |
| Screening | ANSWERED — optional paid add-on, never required for approval; tomorrow's clean pass uses real application + manual approve, faking nothing |
One honest discovery about today's "approved" state
The applicant's approved status was planted directly in the database by a test harness — the real AppFolio-application → approval → sync path has never been exercised end to end. That's the whole point of tomorrow's clean pass: inquiry → tour → real application → real approval → lease → signature, every step through the actual machinery.
All findings trace to saved transcripts, screenshots, and read-only database queries from 2026-08-23. Voice scenarios ran as text simulations against the live agent brains (no real calls placed, no cost); the email lane's live round-trips were still completing at publish time and will be appended. Camellia: untouched by every lane, per standing order.