Stop treating LLM engagement as a metric since most of it is A developer argues that treating LLM engagement as a metric is flawed because most of it is noise, and that AI agents should move from UI scraping to deterministic protocols such as APIs with strict JSON schemas, verifiable gates, and zero-trust execution. The piece emphasizes that the real bottleneck for autonomous systems is infrastructure cleanliness, not model intelligence, and that winners will focus on hardened guardrails and verifiable contracts. Stop treating LLM engagement as a metric since most of it is This isn't just a social media annoyance; it's a fundamental architectural problem for anyone building an AI workflow. When we build LLM agents that have to scrape bloated, noise-heavy UIs to get things done, we're basically making the agent scroll through spam. It's slow, it's brittle, and it leads to massive context overload and hallucinations. Moving from UI scraping to deterministic protocols If you're doing a deep dive into agent deployment, you'll realize that relying on visual clicking or raw HTML scraping is a recipe for failure. To actually ship production-ready software, we need to shift toward structured execution. Here is a practical tutorial on how I'm structuring my agentic layers to avoid this "noise" trap: 1. Ditch the UI for APIs: Stop telling your agent to "find the button and click it." Instead, wrap your target service in a clean API with a strict JSON schema. 2. Implement Verifiable Gates: Use a validation layer to ensure the agent's output matches a required format before it ever hits a database. 3. Zero-Trust Execution: Never give an agent raw access. Use isolated sandboxes and stateless execution environments. For example, instead of a vague prompt, I use a structured tool definition to keep the agent on track: { "tool": "update user record", "parameters": { "type": "object", "properties": { "user id": { "type": "string", "pattern": "^u 0-9 {8}$" }, "update field": { "type": "string", "enum": "email", "status", "tier" }, "new value": { "type": "string" } }, "required": "user id", "update field", "new value" } } By using a regex pattern like ^u 0-9 {8}$ for the user id , I'm filtering out the noise at the schema level. If the agent hallucinates a random string, the system rejects it immediately without wasting tokens or risking a database error. The infrastructure bottleneck The real challenge for autonomous systems isn't "can the model think?" but "is the environment clean enough to act in?" When agents move from just answering questions to executing side-effects—like making a payment or updating a production config—the bottleneck is the infrastructure. We need hardened guardrails, not just better prompts. If you're spending your time chasing "likes" from bot accounts on social media, you're ignoring the actual engineering work. The winners in this space will be the ones who aggressively filter out the static and build on deterministic, verifiable contracts. Focus on the underlying foundation, not the surface-level clutter. Next Claude Code and MCP make Brilliant. → /en/threads/8987/