Blocked, not held.
Fair-housing language never reaches your approval queue. It is refused on the way out, which is a different and stronger promise than being flagged for review.
Why refusal rather than review
Because a queue is something people get through.
Picture the realistic case: seven in the morning, one thumb, eleven drafts, the school run in ten minutes. A message that reads like a normal, friendly, helpful sentence gets a yes. That is not carelessness: it is what a queue is for. Any design that relies on somebody catching the bad one while doing that is a design that will eventually send it.
So there is no button. A blocked draft is not shown to you as a decision to make, because making it correctly a thousand times in a row is not something anybody does.
What is checked
Steering on a protected class, in any direction and however gently phrased. The check does not care whether the sentence was well-intentioned, and it does not care whether the model wrote it or you did: a fair-housing line does not become sendable because a human typed it, so the check runs on dictated messages too.
It runs on the output. Not as an instruction in a prompt, which is a request; as a check on the finished text, which is a control.
What it does not do
It does not read a lead’s incoming messages for you and decide what they meant. If a lead asks a question that cannot be answered without steering, that arrives with you.
It does not train you, and it is not a compliance programme. It cannot know your brokerage’s policy, your state’s rules, or what your broker will want in writing. What it gives you is: nothing of that shape goes out under your licence through this product, and there is a record of every time something was refused.
The record
Every block is written to the event log with the rule that fired and the text that fired it, in order, append-only. That is the thing you can hand somebody who asks.