Over the past months, I have experimented extensively with using AI in software and system architecture. One pattern became increasingly clear:
We try to use AI like a compiler.
We assume that if we specify enough, the AI should be able to generate an entire system.

But this approach fails consistently.
Not because AI is “too dumb” — but because we are using the wrong model.

In this article, I explain why full specification does not work with AI and which architectural model does.


1. The Core Problem: Full Specification Is a Waterfall Mindset

Many AI experiments fail because we try to describe an entire system upfront:

  • Requirements
  • ADRs
  • Interfaces
  • Data models
  • Components
  • Non-functional requirements
  • Compliance considerations

The hope:
“If everything is defined, the AI can generate it.”

The problem:
AI cannot maintain global system coherence across hundreds of artifacts.

Even large context windows do not solve this, because:

  • Abstraction levels get mixed
  • Invariants get lost
  • Cross-cutting concerns drift
  • Decisions are not propagated consistently

In short:
Full specification overwhelms AI — and humans as well.


2. AI Needs a High-Level System Map, Not a Detail Bible

What actually works is a system map:

  • Domains
  • Responsibilities
  • Data flows
  • Use cases
  • Boundaries between subsystems

This overview is abstract, not detailed.
It serves as orientation, not as a construction plan.

Why this matters:
AI can only work effectively when it knows where it is within the system.
Without this orientation, coherence breaks down.


3. Architecture Emerges Through Layering, Not Through Full Text

Classical architecture works because it is iterative:

  1. High-level structure
  2. Identify components
  3. Define interfaces
  4. Refine components
  5. Implement

AI needs the same process.
It cannot go from “0 → 100”, but it is excellent at “80 → 100”.

This means:
We must layer architecture so AI can work locally.


4. The Crucial Step: One AI per Component

Once components and their interfaces are clear, something interesting happens:

  • Each component has a clear context
  • The AI only needs to maintain local invariants
  • The interface acts as a contract
  • The implementation space becomes constrained
  • Consistency emerges naturally

This mirrors how real engineering teams work:
small units, clear boundaries, local autonomy.

With AI, the same model works — only faster.


5. Why This Model Works Better Than Full Specification

Because it leverages AI’s strengths and avoids its weaknesses:

Problem with Full SpecificationSolution in the Component Model
AI loses global coherenceAI works locally, with clear boundaries
Abstraction levels get mixedEach level has its own prompts/agents
Changes do not propagate cleanlyInterfaces enforce consistency
Context window overloadEach AI sees only its relevant context
Architectural decisions blurDecisions remain with the human

In short:
We design systems in a way AI can understand.


6. What Remains Human?

Even with this model, three things remain irreplaceable:

  • Architectural decisions (trade-offs, priorities, values)
  • Responsibility (compliance, security, liability)
  • System coherence (the meta-level across all components)

AI can implement.
AI can refine.
AI can accelerate.

But AI cannot decide what should be built — only how fast.


Conclusion

The problem is not that AI cannot generate systems.
The problem is that we try to force AI into a model that barely works for humans: full specification.

The right approach is different:

  • abstract system overview
  • iterative refinement
  • clear components
  • explicit interfaces
  • one AI per component

This creates a process that works for both humans and AI — combining the strengths of both.