Here's the scenario that keeps me up at night about AI-driven texting. A contact replies "STOP" to your campaign. Two seconds later they send a second message — maybe a typo, maybe frustration: "stop texting me you idiots." Your AI reply agent, reading that as a conversation to be handled, drafts a warm, helpful response: "So sorry for the trouble! What can I help you with?" And it sends.
You just texted a person who unambiguously opted out. Twice. With a bot. That's the kind of thing that turns into a screenshot in a demand letter.
Full disclosure: I work for ReadySMS, and we ship an AI reply agent. So I have every incentive to tell you AI replies are safe and wonderful. I'm going to tell you something narrower and more useful instead: an AI reply agent is only as compliant as the enforcement layer sitting between the model and the carrier. If your opt-out and quiet-hours logic lives inside the AI's prompt, you don't have a guardrail. You have a suggestion.
Why the AI is the wrong place to enforce compliance
Large language models are pattern completers. They're extraordinary at sounding human and terrible at hard rules. You can put "never reply to someone who has opted out" in the system prompt, and it will follow that instruction most of the time — which is exactly the problem. Compliance isn't a "most of the time" domain.
Consider what an inbound message actually looks like in the wild:
STOP— obvious.Stop please— still obvious to a human, sometimes missed by keyword matching.pls dont text me anymore— no keyword at all, clear intent.STOP sending these but keep my appointment reminder— genuinely ambiguous.I said STOP(arriving after the agent already replied once) — the worst case.
If your only defense is the model's judgment, you're relying on a probabilistic system to make a legal decision under TCPA, where a single unwanted text carries $500–$1,500 in statutory exposure. That's not a risk profile you want a temperature-0.7 sampler owning.
The fix is architectural: opt-out state and quiet-hours state are checked deterministically, at send time, no matter what the AI produced. The AI writes the words. A separate layer decides whether those words are allowed to leave the building.
The three signals that must override the AI, always
There are exactly three things that should be able to veto an AI-drafted reply, and none of them should be negotiable by the model:
1. Opt-out state. The moment STOP, UNSUBSCRIBE, CANCEL, END, QUIT (and common misspellings/phrasings) hit the inbound, the contact is suppressed. In ReadySMS, this is automatic STOP handling — the opt-out is honored and it propagates so the contact can't be messaged again across campaigns. Critically, that suppression applies to AI-generated sends too. The agent doesn't get a special pass because it's "just being helpful."
2. Quiet hours. TCPA restricts marketing sends outside roughly 8am–9pm in the recipient's local time. An AI agent responding to an inbound at 11:40pm doesn't know or care about the clock. The send layer does — it holds the message until the permitted window based on the recipient's area. (If you've ever fired a 9am blast that hit a third of your list at 6am, you already know why this has to be timezone-aware, not just server-time.)
3. Consent scope. This one is subtler. An opted-in contact who consented to appointment reminders has not consented to a chatty AI upselling them a promotion. The classic version of this trap is the recall-vs-marketing consent line in healthcare, but it applies to every vertical. The AI can respond within the scope the contact agreed to. It cannot expand that scope on its own.
The one exception: a STOP does not kill a genuine two-way reply
Honesty time, because this is where a lot of compliance advice gets sloppy. Not every inbound is an opt-out, and not every opt-out means "never speak to me again in any context."
If a contact texts you "STOP," they're out of your marketing program. Full stop. But if that same contact later texts you first — "hey are you open Saturday?" — they've initiated a conversation, and a helpful reply to a question they asked is a very different legal animal than a promotional broadcast. Transactional, contact-initiated replies operate under different rules than marketing sends do.
The reason this matters for AI: your enforcement layer needs to distinguish the direction of initiation. A well-built system tracks whether the current message is a reply to your outbound (subject to the opt-out suppression) or a new inbound the contact started. The AI agent should be allowed to answer a customer question. It should never be allowed to re-engage someone who opted out with anything resembling a promotion. Blurring those two is how you end up with a "consent" that trigger links and vague opt-ins can't actually support — a mistake I've written about in the context of GHL trigger-link consent.
What "modes" should mean on an AI reply agent
Our AI reply agent runs in one of three modes, and the mode you pick is itself a compliance decision:
| Mode | What the AI does | Who should use it |
|---|---|---|
| Off | Nothing. Replies are all human. | Highest-scrutiny work (healthcare, legal, anything with PHI) until you trust the setup |
| Suggest | Drafts a reply, a human approves and sends | Most teams starting out — you get speed with a person on the veto |
| Auto | Sends without human review | Only once your suppression + quiet-hours logic is proven and your consent scope is tight |
Notice that Suggest mode is, by itself, a partial guardrail — a human reads the draft before it goes out and catches the "sorry for the trouble!" reply to an opt-out. But do not rely on the human as your only backstop. People miss things at 2x volume on a Friday afternoon. The deterministic opt-out/quiet-hours check should stop that message even if the human clicks send by accident.
The upgrade path I'd actually recommend: start in Suggest, watch the drafts for a couple of weeks, confirm the layer below is catching opt-outs (send yourself a STOP and watch what happens to the queued AI reply), then consider Auto for narrow, well-scoped conversations.
A worked example of the guardrail firing
Say you're running abandoned-cart recovery and you've enabled the AI agent in Auto for inbound questions. Contact flow:
- 10:15pm local — Contact abandons cart, gets your automated recovery text (held to their timezone, sent earlier in the day — fine).
- 11:52pm — Contact replies: "is this still 20% off?"
- AI drafts: "Yep! Code SAVE20, expires tonight — want the link?"
- Send layer check: message is a reply to a contact-initiated question → allowed as a service response, BUT it contains promotional content and it's outside quiet hours → held until 8am local.
- 12:01am — Same contact texts "actually never mind, stop."
- Send layer check: the queued 8am send is now cancelled — the contact opted out before it went; suppression propagates.
The AI never saw step 6 coming. It doesn't have to. The layer beneath it did the right thing regardless of what the model wanted to say. That's the whole point.
Where the AI ends and your responsibility begins
I'll be blunt about the limits, because the alternative is the kind of overpromise that gets everyone in trouble.
An enforcement layer reduces risk. It does not make you immune. You are still responsible for:
- Collecting real consent in the first place (keyword or web opt-in with clear disclosure — not a trigger-link click).
- Registering your 10DLC campaign for the use case you actually send, including AI-driven conversational traffic.
- Scrubbing high-risk lists — an AI agent replying to a known TCPA litigator is a fast way to fund someone's lawsuit, which is why litigator scrubbing at $0.005/contact is cheap insurance before you turn any automation on.
The AI reply agent is a productivity feature. The compliance stack — automatic STOP handling, quiet-hours enforcement, DNC/litigator scrubbing, consent attestation — is what makes it safe to point at real contacts. On ReadySMS, both live in the same platform, and the enforcement runs on the send path where the AI can't route around it (with two-way sync back into GoHighLevel so your team sees the whole thread).
The practical takeaway
If you're enabling any AI-driven two-way SMS — ours or anyone's — ask one question: when a contact opts out mid-conversation, what physically stops the next AI reply from sending? If the answer is "the prompt tells it not to," you have a gap. If the answer is "a deterministic check on the send path, independent of the model," you have a guardrail.
Test it yourself before you trust it. Enable the agent in Suggest mode, text your own number a STOP mid-thread, and watch what happens to the queued reply. If it dies, you're in good shape. If it doesn't, don't go to Auto.
You can turn the agent on inside your account and leave it in Suggest as long as you like — the 2,500 free credits are enough to run the STOP test end to end and see the suppression fire before a single real contact is involved.