Messy input is on us

The operating principle for how Clara turns whatever a property hands us — rambling policies, typos, tribal knowledge — into short, right-sized answers on every channel. Set by Fede, 2026-08-28.

2026-08-28 night · Principle ADOPTED · nine approaches measured · LIVE-CALL ROUND COMPLETE — winner below, awaiting Fede’s pick

TL;DR — revised after Fede's namespacing challenge (Aug 28, late night)

The 10,000-foot view

Messy property notesPropFlow DB · per property
Auto-cleanerAI rewrite · no fact ever dropped
One clean copy per propertystored in our DB
Voice · dedicated agentknowledge slot, loaded up front✓ tested live — fastest
Voice · shared agentkeeps per-call injection⚠ namespacing unsolved
SMS · Email · Telegramclean copy injected per message✓ same mechanism as today

Live data — today’s availability, tour slots, the caller’s own context — is always injected fresh, never stored in a document. Mid-call lookup is rejected: one real call stalled 12 seconds before speaking.

"We should be able to survive in the real world with messy policies, typos, long explanations — and have a way to cut the noise — not rely on clients having perfect policies to fit different channels like voice and text." — Fede. The burden of messy reality is PropFlow's, never the client's. Corollary, also his: tune how the agent behaves; don't over-engineer; don't guess — check how the industry solves this.

Live-call round result (Aug 28 night) — the winner, and your call

The recommendation, one line: put each property’s facts in the phone platform’s own knowledge slot, all loaded up front (no mid-call lookup), auto-rewritten answer-first by the distiller — it was the fastest setup to the first spoken word on real calls, including worst-case, and it’s the scalable one.

Six setups, three real phone calls each on the test line, multi-turn with real tool use (booking a tour, checking availability). Speed = time until Clara’s first sentence starts, from the platform’s own turn metrics. Today’s production setup pastes all facts into the instructions; “knowledge slot” moves them into the platform’s dedicated store.

SetupTypical start of speechWorst case (p90)Avg words/reply
WINNER — auto-cleaned facts in the knowledge slot, all loaded up front1.47s — fastest1.84s — fastest34.6
Test copy of today’s production setup1.56s1.86s33.2
Raw messy facts in the knowledge slot, loaded up front1.59s2.00s31.9
Raw messy facts, looked up mid-call1.64s2.04s35.5
Auto-cleaned facts, looked up mid-call2.58s12.1s — disqualifying stall35.3
Live production line (reference)1.89s2.14s36.8

Due diligence — what the round tested, what it did not, and the gates

Two of Fede's questions from reading this page were the right challenges, answered here plainly.

“How does the winner actually work?” When a call starts, the platform pastes the property’s cleaned document into the model’s context — once, up front, nothing fetched mid-call. It is the same shape as today’s injection, but the platform owns it, it lives outside our 67,000-character instructions (the platform’s own guidance: shorter instructions start speech sooner), and on real calls it measured slightly faster to the first word than today’s setup. There is no lookup step to stall — that’s the whole trick, and why the rejected retrieval flavor (which does look things up mid-call) produced the 12-second stall.

“Why did average words per reply stay the same?” Because that average counts every reply in the call — greetings, collecting a name, confirming the tour — and those are near-identical in every setup, drowning the one verbose defect. And in full-context mode the model still sees the details tier of the cleaned doc, so on the utilities-cost question it still recited it. Moving the knowledge changes where facts live and how fast speech starts; it does not by itself change how much of them Clara says. That is the behavior dial — a separate, already-scoped iteration on this same harness.

Tested (live, real calls)NOT tested — gates before adoption
Single-property agent with the property’s own doc; speed to first word incl. tail; multi-turn with a real booking tool; fact contracts; the sync mechanics (content-hash naming, read-back verification, indexing); clone wiring (three platform-settings traps found and fixed)Multi-property namespacing on shared agents — Camellia and Yale answer on ONE agent today; a static per-agent doc cannot tell their callers apart. Gate: choose dedicate-an-agent-per-property vs keep-injection-on-shared-agents, then a cross-property leakage test on the harness.
 Sample size — 3 calls per setup; ~0.1s differences are noise. Gate: a bigger call sample on the chosen configuration.
 The rambling cure — words/reply flat across all setups. Gate: the answer-behavior dial passes on the harness before the conciseness claim is made to anyone.
 Operational failure modes — a doc update racing an active call; sync failing halfway; platform-side changes to KB behavior. Gate: covered in the sync workflow’s read-back + drift checks before first live property.

Nothing has shipped. All 21 round calls ran against throwaway clones on the test line, which is verified restored to its normal routing. The winner is validated as an architecture for the dedicated-agent case only — exactly what option B gates.

What's already known (measured or verified — not opinion)

Final standings (all nine approaches measured, 2026-08-28 evening)

What the industry actually does (researched 2026-08-28, sourced)

Converged recommendation (simple, all testable on the existing harness)

Decision discipline

Related: voice-verbosity-report-2026-08-28 · effort-sweep-email-sms-2026-08-27. This page will gain the research findings and the matrix verdict, then the chosen mechanism.

PropFlow Docs