Architecture of the Week
Multi-Model Validation Pipelines
Single-model AI systems are brittle. One model generates, the same model validates, quality drifts over time.
The pattern that's working: different models for generation and validation. Claude for long-form content generation, GPT for structured validation against criteria, local models for domain-specific fact-checking.
Why this works: models have different strengths and failure modes. Claude excels at coherent long-form writing but can hallucinate details. GPT is better at structured analysis and criteria matching. Using them in sequence creates natural error correction.
Implementation: the generation model's output feeds the validation model with a specific criteria checklist. The validation model returns pass/fail with specific failure reasons. Failed outputs trigger regeneration with that failure context, not a human handoff.
The tradeoff is real: higher API costs and more latency. But a validation failure caught at the model level costs a fraction of the client-relationship damage a bad output does once it's left the building. Where it pays for itself: any workflow where a wrong answer is expensive to walk back.
Quick Hits
The supervision layer is the product. Most operators build the agents and skip the layer that knows when an agent is wrong. Checks, routing, a human on the high-stakes calls: that's what separates an AI operation you can put in front of clients from an expensive demo.
A prompt is production logic. If a config change to your codebase gets a test, a change to the instruction driving an autonomous agent deserves one too. Version your prompts, and give each one a set of edge cases it has to pass before it ships.
Confidence is not correctness. The output that reads cleanest is often the one to distrust most. A model's fluency has nothing to do with whether it's right, so any workflow where a wrong answer is costly needs a check that doesn't care how confident the answer sounds.
Model-agnostic beats model-maximal. The edge isn't running the newest model. It's building so you can swap models when one degrades, goes dark, or gets repriced overnight. Design around the task, not the provider.
From the Frontier
Here's a pattern worth sitting with. The team that builds Claude Code spends most of its engineering effort removing things.
Boris Cherny, who created the tool, has said they've rewritten it from scratch around five times, and every rewrite made it simpler, not more complex. They tried the sophisticated moves everyone reaches for: RAG, vector embeddings, an indexed codebase to feed the model context. They threw it out. Plain agentic search, the model running grep however many times it needs, beat the fancy version by a lot, with no index drifting out of sync and no security liability. Their memory system, after all the clever architectures got whiteboarded, is a plain text file read into context.
The lesson for operators: the people closest to the frontier are stripping their setups down while everyone else piles on. More context, more tools, more memory, more plugins feels like diligence. Most of the time it's the thing quietly rotting your system.
This isn't an argument for building nothing. A second model that catches the first one's mistakes earns its place. The supervision layer earns its place. The point is that every addition is a tax, and most of what gets bolted onto an AI setup was never made to justify the cost. Add the piece that pays for itself. Strip the rest.
Map before you build. Then build less than you think you need.
Tony