An Agent on a Leash, or why my AI agent doesn't make business decisions A developer is building an LLM-powered support agent designed to be trustworthy by enforcing a strict separation between AI interpretation and software-enforced policy. The system uses a deterministic validation gate that classifies actions by risk, allowing AI assistance for low-risk tasks but requiring human approval or manual execution for high-risk ones. The project is open source and evolves through public experimentation. This post kicks off an ongoing experiment: building an LLM-powered support agent you can actually trust, one decision at a time. Everything described here ships in the companion repo reliable-ai-support code as of this post: tag , which grows as the series does. Where I mention future topics, read them as current intentions, not contracts — the whole point of building in public is that the plan bends to what actually works. post-001 Picture this: It's 2 AM. A customer messages our support channel, frustrated because their recent order never arrived. They want a refund, or at minimum, an explanation. They've been emailing back and forth for three days with no resolution. A support agent is assigned. But it's 2 AM. There's no one on call. So... does the AI just handle it? That's the question I couldn't let go of — the one this whole series exists to answer. The fantasy is seductive. Build an LLM-powered agent, give it access to the right tools, and let it handle issues end-to-end. It markets itself: "AI-powered 24/7 customer support " Users love it. Everyone wins. Except... what happens when the AI decides to process a refund to the wrong person? What happens when it accesses data it shouldn't? What happens when it "hallucinates" an order ID and tries to charge it? The first thing I had to accept when designing this system: an LLM's confidence is not a reliability metric. It's a correlation metric. And correlation alone isn't enough. LLMs are great at understanding intent, surfacing information, writing responses. The problem is what happens when you hand them the keys to the kingdom. So I built a table. A boundary that says "up to here, and no further." | Decision Type | Who Decides | The Reasoning | |---|---|---| | Intent interpretation | The AI | Translating "I want a refund" into a structured request the system can work with | Refund eligibility | Software | Business rules: "Was the order delivered? Was it paid for? Is it within the return window?" — these are yes/no facts, not opinions | | Retrieval targets | The AI | Finding the right knowledge base article, the right order, the right customer history. The tools it searches with are plain software — the AI picks targets, software owns the tooling | Refund execution | Software | Actually moving money, calling the payment gateway, updating inventory — this has real financial consequences | | Policy exceptions | Software | "Can we make an exception?" is a question for a rule engine, not for the AI to guess at | The AI interprets intent. The software enforces policy. That's the split, and it's the thesis of everything that follows. If you remember one picture from this series, make it this one: php flowchart LR A User input -- B Intent classification