When a safety guard blocks a drafted reply, the draft is kept for audit but today it renders like a real sent message (the “[BOOKING-GUARD-BLOCKED…]” bubble on Noa's thread). These are three treatments for how the conversations page should show it instead. All three use the real exchange from Aug 14. The draft was never sent in any of them — the question is only how visible the audit trail is.
Option A — System event row (collapsed by default)
The blocked draft leaves the message flow entirely. In its place: a centered pill, like the existing day/channel dividers. Click to expand the draft and the guard's reason.
Fri, Aug 14 · Tour · SMS
Yes this is a virtual tour so expecting phone call
09:00 AM
Blocked draft — never sent
Got it! Your tour is virtual, so the property manager will give you a call at 9:00 AM. Just make sure you're available at the number on file. Looking forward to it!
Why: booking-confirmation guard — the reply claimed a scheduled time without a booking action behind it this turn. Clara sent the message below instead.
I'm not able to book or hold a time from here, so nothing is scheduled yet — I don't want to give you a time that isn't real. I've passed this to the property team and they'll confirm one with you.
09:01 AM
Option B — Ghost bubble (visible, unmistakably dead)
The draft stays in place but is visually killed: dashed outline, faded strike-through text, and an explicit “blocked — never sent” tag. Zero clicks to see everything; the trade-off is the dead draft still occupies the thread.
Fri, Aug 14 · Tour · SMS
Yes this is a virtual tour so expecting phone call
09:00 AM
⛨ Blocked by booking guard — never sent
Got it! Your tour is virtual, so the property manager will give you a call at 9:00 AM. Just make sure you're available at the number on file. Looking forward to it!
Replaced by the message below.
I'm not able to book or hold a time from here, so nothing is scheduled yet — I don't want to give you a time that isn't real. I've passed this to the property team and they'll confirm one with you.
09:01 AM
Option C — Badge on the sent message (audit tucked behind it)
The thread shows only what the tenant actually experienced. The sent replacement carries a small “guard rewrote this reply” note; clicking it unfolds the blocked draft and reason right under the message. Cleanest read for PMs; audit is one click away and attached to the message it explains.
Fri, Aug 14 · Tour · SMS
Yes this is a virtual tour so expecting phone call
09:00 AM
I'm not able to book or hold a time from here, so nothing is scheduled yet — I don't want to give you a time that isn't real. I've passed this to the property team and they'll confirm one with you.
09:01 AM
Blocked draft — never sentGot it! Your tour is virtual, so the property manager will give you a call at 9:00 AM. Just make sure you're available at the number on file. Looking forward to it!
Guard Booking-confirmation guard — claimed a scheduled time with no booking action this turn.
Pick one
C
Badge on the sent messageRecommended
The thread reads exactly as the tenant experienced it — nothing internal in the flow. The audit trail hangs off the message it explains, so triage still takes one click. Best default for PM-facing screens.
A
System event row
Also keeps the flow clean, and makes the block itself a visible event in the timeline (good if you want PMs to notice guards firing). Slightly noisier than C.
B
Ghost bubble
Full transparency with zero interaction, but dead drafts stay in the thread — on a chatty conversation with several blocks this gets heavy.