Build an AI Support Agent That Knows When to Say No
Build a governed AI support agent by wrapping your model in three layers: a policy check that blocks unapproved actions before the AI answers, a guardrail scan that catches leaks and false claims in the drafted reply before it ships, and an escalation rule that hands off to a human with full context when either layer trips. You can build this in a weekend with free-tier tools, the same core architecture OpenAI used to make its new agent, Presence, resolve 75% of its own support tickets.
OpenAI's newest AI employee already handles three out of every four support tickets it sees. Yours can too, and you do not need OpenAI's budget to build it.
It is a Tuesday night in Manchester. Owen runs Birchwood Home, a seven-person shop that ships side tables and reading lamps across the UK. A customer messages the support chat: my lamp arrived cracked, I want a full refund plus the return postage, tonight.
The chatbot Owen bought off a marketplace does not check anything. It sees the word refund. It sees a frustrated customer. It says yes.
Owen finds out three weeks later, when the numbers in his refund ledger stop adding up.
That is not a chatbot problem. That is a missing layer problem. A chatbot answers. An agent decides. Nobody ever told Owen's bot where the line was.
What is an AI agent policy layer, and why does your support bot need one?
A policy layer is a set of rules that sits between your AI model and your customer, checking every message before it goes out: what the agent is allowed to approve, what needs a human, and what it should never say. Without one, the model is the entire system. With one, the model is just the part that writes sentences, while the policy layer decides whether those sentences are allowed to ship.
Most small business chatbots skip this. They wire a model straight to a chat widget and call it done. It works fine for "what are your opening hours." It falls apart the moment a customer asks for a refund over your limit, brings up a competitor's price, or types in a card number by mistake. The model will happily keep going. It does not know it is not supposed to.
Why now: OpenAI just proved this at enterprise scale
On 22 July 2026, OpenAI launched Presence, a product for deploying AI agents that "can answer questions, resolve issues, use company systems, take approved actions, and escalate to people when needed." OpenAI now runs its own English-language phone support line on it.
Here is the catch: Presence is not for you. It is a limited, enterprise-only rollout, deployed with OpenAI's own engineers, not something a seven-person shop can sign up for. But the architecture behind it is not a secret. Sweta Kumari, who runs the YouTube channel Agentic Data Lab, rebuilt the same core system over a weekend using entirely free-tier tools and posted the walkthrough days after the launch. That is the version worth studying. Not because it is OpenAI's, but because it fits your budget.
Isn't this just a chatbot with extra steps?
No, and the difference matters more than the terminology. A chatbot is a single call: message in, reply out. An agent, built this way, is a small state machine. Every customer message moves through checkpoints, in order: identity check, intent read, policy check, draft a reply, guardrail scan, decide whether to escalate, then either send the reply or open a ticket. Every one of those steps can read what happened before it and change what happens next.
That routing is the entire point. If the policy check fails, the message never reaches a human-facing reply, it goes straight to a person. If the guardrail scan fails, the system does not ship a bad answer, it asks the model to try again. If confidence is low twice in a row, it escalates on its own. None of that is possible when a prompt is the whole system. A prompt is an instruction. It is not a safety mechanism, and it never was.

How to build a governed AI support agent for your small business
You do not need OpenAI's engineering team for this. The free-stack rebuild uses LangGraph to wire the steps together, Groq's free-tier Llama 3.3 70B as the model that actually talks to customers, and Claude Haiku, a few cents a day, as a second model that only grades conversations after they end. Here is the build, in order.
- Give the agent a memory, not just a prompt. Before you write a single response rule, define a state object: session ID, the customer's message, what the model thinks the customer wants, whether a policy was violated, the confidence score, the escalation reason, if any, and the final reply. Every step in the pipeline reads and writes to this one object. Without it, you have a pile of disconnected function calls. With it, you have a workflow that remembers what already happened.
- Write your policies as data, not code. Put your rules in a plain config file, not buried in the prompt: "never approve a refund over £75 without a human," "never mention named competitors," "never discuss pricing changes before they are announced." A refund threshold changes far more often than your code should. When the policy check reads a message and a rule fires, the conversation routes straight to a human, before the model ever gets to draft an answer.
- Let the model draft, then check the output too. The policy layer filters what comes in. A separate guardrail layer checks what goes out, because a perfectly innocent question can still produce a risky answer. In the free-stack rebuild, the guardrail scans every drafted reply for personal data it should not be repeating, competitor names, hallucination-flavoured phrases like "I believe" or "probably," and unfinished sentences. Fail the scan twice and the conversation escalates automatically.
- Set the four reasons a human takes over. Pick them in advance so nobody has to argue about it mid-ticket: a policy violation, a guardrail that keeps failing, confidence that stays low, or a customer who flatly asks for a person. Wire all four into one escalation check.
- Hand off with the whole story, not a cold ticket. When the agent escalates, it should open a ticket that already contains the reason, a priority, and the full conversation so far. The point of automating support is not to dump confusion on a human faster. A member of staff picking up that ticket should never have to ask the customer to repeat themselves.
- Grade every conversation after it ends. Once a session closes, send the transcript to a second, cheaper model and ask it three questions: was the issue actually resolved, did the agent follow policy, and how accurate was the answer. Store the score. This is how you move from "it feels like it's working" to a number you can track week over week.
- Let a weekly job suggest fixes, but keep a human in charge of approving them. Once a week, pull the failures, the guardrail trips, and the low-scoring sessions, and ask a model to propose three specific policy or knowledge-base fixes. Do not let the agent apply its own suggestions. Read them, approve the ones that make sense, and only then update the policy file. That single approval step is what keeps a self-improving agent from quietly rewriting its own rules.
Put a simple dashboard on top of it, even a basic one, showing total sessions, how often it escalates, how many policy violations fired, and the average grading score. That dashboard is the difference between running a demo and running a system you can actually manage.
| Layer | What it stops | Where it lives |
|---|---|---|
| Policy check | The agent approving something it never should (a refund over your limit, an unapproved discount) | A config file you edit, no code changes needed |
| Guardrail scan | A reply that leaks personal data, names a competitor, or reads as a confident guess | Runs on the model's draft, before it is sent |
| Escalation check | Any of the above, or a customer who just wants a person | Opens a ticket with full context, no cold handoffs |
| Session grading + weekly review | The agent repeating the same mistake next month | A cheap second model grades, a human approves fixes |
What a small business gets that a marketplace chatbot cannot give it
A £20-a-month chatbot answers questions. It does not know when to stop. The system above costs closer to a weekend of setup and a few dollars a month in API calls, mostly for the evaluation model, since the primary model runs on Groq's free tier. What you get in return is not a smarter bot. It is a bot that knows its own limits, logs its own mistakes, and gets a little more precise every week without you touching a single prompt by hand.
What you have after this
A week in, you have a support agent that stops itself before it approves a refund it should not, and hands off cleanly when it is out of its depth. A month in, you have a log of every policy trip and guardrail catch, which tells you exactly where your actual policies are unclear, not where you guessed they might be. Six months in, you have an agent whose policy file has been quietly tightened a dozen times by a human reading its own weekly report, and a support inbox that only gets the tickets that genuinely need a person.
Same team. Same ticket volume. A completely different machine underneath it.
What is an AI agent policy layer?
It is a set of rules, usually a simple config file, that checks a customer's message before your AI model is allowed to respond. It decides what the agent can approve on its own, such as a small refund, and what must go straight to a human, such as a refund over a set limit or a request involving a competitor.
How is a governed AI support agent different from a normal chatbot?
A chatbot is one call: a message goes in, a reply comes out, with nothing checking either end. A governed agent runs the message through a state machine with checkpoints, a policy check before the model answers and a guardrail scan after it drafts a reply, so a bad or risky answer never reaches the customer unfiltered.
Do I need OpenAI Presence to build something like this?
No. Presence is an enterprise-only product deployed with OpenAI's own engineers and is not self-serve. The same core architecture, policy checks, guardrails, human handoff, and a self-grading loop, can be built with free or low-cost tools like LangGraph, Groq's free-tier Llama models, and a cheap evaluator model such as Claude Haiku.
How much does it cost to run a governed AI support agent for a small business?
The reference build uses Groq's free tier for the primary model that talks to customers, and a small paid model such as Claude Haiku only for grading conversations after they end, which typically runs to a few dollars a month at small business volumes. The bigger cost is the time to set up the policy file and wire the escalation rules once.
How does the agent get better over time without me rewriting prompts?
A weekly job reviews the past week's policy violations, guardrail failures, and low-graded conversations, and proposes specific fixes to the policy file or knowledge base. A human reviews and approves each suggestion before it goes live, so the agent improves under supervision instead of silently rewriting its own rules.
Find your first high-payback workflow.
See the SprintSources
Find your first high-payback workflow.
Book a free conversation or start with the fixed-fee Sprint.
Keep reading
Build an AI Agent That Treats a One-Star Review Differently Than a Five-Star One
To build an AI agent that responds to customer reviews automatically, do not build one path for every review. Build a graph: a rule that reads each review,…
Back-office AIAsk AI Where Your Business Is Losing Money
Give an AI agent like Claude a plain description of your business plus exports from the systems that touch money and time (your bank, invoicing, booking,…
AI agentsStop Your AI From Guessing: Get Grilled Before You Build
Before you let an AI agent build or automate anything, make it interview you first. This week the habit went viral under the name "grilling," after…