Deposit questions: email routes, voice answers

Accepted 2026-08-03 — Option A (Fede: "we should def be able to answer basic questions like deposits")  ·  2026-08-03  ·  Root-cause investigation of an escalated Camellia conversation

What happened

A website prospect (Jayson Edwards, studio, move-in Aug 9) asked email Clara: “Could you give me a rough estimate on what the deposit would look like?” Clara escalated to the property team instead of answering — even though Camellia's knowledge base has a flat $300 security deposit on file (verified in prod DynamoDB pricingDetails.securityDeposit).

The escalation was not a bug and not a hallucination: Clara followed RULE 7.0 in clara-leasing.ts exactly as written. The problem is the rule itself — and that voice Clara follows the opposite rule.

How we got here

2026-03-13get_property_details split into focused tools. The new get_pricing_details returns the security deposit but its description never mentions it (“parking, pet deposit/rent, admin fee, application fee”) — a latent tool-routing gap from day one.
2026-05-27PR #1545 (anti-over-escalation, RULE 7.4) lists “an applicant-specific deposit amount” under WHAT STILL ESCALATES.
2026-07-19INJECT-4: voice calls get a {{pricing_fees}} block injected at call start, including “Security deposit: $300”.
2026-07-21PR #4283 adds RULE 7.0 ALWAYS-ROUTE to the text/email prompt: “what's my deposit?”, “how much upfront?” → never quote a figure, always forward to the team. Motivation: a red eval sweep where Haiku ad-hoc answered fair-housing-sensitive asks (deposit assistance, vouchers, credit minimums).
2026-07-22PR #4316 locks the voice design the opposite way: deposit amounts are quotable; only absent refund terms defer to the team. Verified live the same day.
2026-08-03The Jayson conversation hits the contradiction on the email side.

The contradiction today

ChannelProspect asks “what's the deposit?”Source
VoiceQuotes “$300” (defers refund terms only) leasing-context-injection.ts, PR #4316
Email / SMSAlways escalates to the property team clara-leasing.ts RULE 7.0, PR #4283

Same property, same $300 flat deposit on file, same question — opposite behavior, shipped one day apart.

Why the email rule overshot

PR #4283's target was legitimate: deposit assistance is a source-of-income / protected-class topic (Denver/CO), and credit/income eligibility is genuinely applicant-specific. But the rule as written also captures the plain “what's the deposit amount?” ask — which, at a property with a flat published deposit, is ordinary pricing data Clara already quotes on voice. The fix PR was aimed at Haiku's eval-bridge behavior, but CLARA_CONCERNS_RULES ships to production for every model and channel.

Escalation cost: the team gets a ticket for a $300 number; the prospect waits for a human on something Clara knew.

Decision — pick one

Option A — Align email/SMS with the voice design RECOMMENDED

Narrow RULE 7.0's deposit clause: when the property has pricingDetails.securityDeposit on file, quote it as the standard deposit (“the standard deposit is $300; the final amount is confirmed with your application”) and defer refund terms unless on file. Keep ALWAYS-ROUTE for deposit assistance, vouchers, credit/income eligibility, and any “what will my deposit be after screening?” follow-up. Also add “security deposit” to the get_pricing_details tool description so the lookup fires.

Option B — Align voice with email: all deposit-amount asks route

Remove the security-deposit line from the voice {{pricing_fees}} injection and route deposit-amount asks on every channel.

Option C — Leave as is; document the split as intentional

Accept that written channels are conservatively routed while voice quotes the amount.

Appendix — evidence

PropFlow Docs