Most AI coding tools use a single model in a single conversation. You describe what you want, it writes the code, you copy it into your project. It’s convenient for small tasks, but it breaks down the moment your project has any real complexity.
The problem isn’t intelligence. The problem is that a single agent reviewing its own work has the same blind spots that produced the work in the first place.
The principle
In any well-run engineering team, the person who writes the code is not the person who reviews it. This isn’t about distrust — it’s about cognitive diversity. A reviewer brings a different perspective, catches assumptions the author took for granted, and asks questions the author didn’t think to ask.
Maestro enforces this structurally. The Architect agent designs the system and reviews every pull request. The Coder agents write the code and submit PRs. The Architect never writes code. The Coders never approve their own work.
Why it matters for AI
AI models are remarkably consistent — which is exactly the problem when it comes to self-review. If a model makes a subtle architectural mistake in generation, it will almost certainly miss the same mistake in review. The same patterns of thought that produced the error will evaluate the error.
By assigning different roles to different agents — potentially even different models — you get genuine diversity of perspective. An Architect running Claude might catch issues that a Coder running ChatGPT wouldn’t, and vice versa.
What we’ve observed
In practice, the Architect rejects roughly 15-20% of initial PR submissions. The most common reasons: incomplete error handling, inconsistent naming conventions, and missing edge cases in tests. These are exactly the kinds of issues that self-review misses.
The rejection rate isn’t a sign of failure — it’s a sign the system is working. Every rejected PR that gets resubmitted and approved is a bug that didn’t make it to production.