← Back to Blog

Every Layer Is Waste

Why we keep simplifying our architecture

Our build pipeline started at 8 steps. Today it's 5. Next month it might be 3.

The Original Pipeline

  1. User describes app in Slack
  2. Gemini AI rewrites the prompt (architect layer)
  3. Sanitizer validates dependencies
  4. Verifier checks the output
  5. OpenCode CLI generates code
  6. Watchdog monitors for timeouts
  7. Push to GitHub
  8. Deploy to Coolify

Every layer was added for a reason. The architect catches bad prompts. The sanitizer fixes dependency conflicts. The verifier ensures the output is deployable.

But every layer is also a failure point. And every layer adds latency.

The Realization

When we swapped Gemini for Claude on the code generation step, something interesting happened: Claude didn't need the architect. It didn't corrupt URLs. It didn't hallucinate package names. It followed the CLAUDE.md rules file and just... built the app correctly.

So we removed the architect. And the sanitizer. And the verifier. And the watchdog.

8 steps became 5:

  1. User describes app
  2. Clone golden template
  3. Claude transforms it
  4. Push to GitHub
  5. Deploy

Same result. Fewer moving parts. Faster builds. Fewer bugs.

The Principle

Every abstraction layer you add is technical debt you're pre-paying. If the underlying system improves enough, those layers become pure overhead.

Review your stack regularly. Ask: "If I removed this layer, what would break?" If the answer is "nothing, because the thing it was protecting against no longer happens" — delete it.

Ready to build?

$25K fixed. One week. You own the code.

Get Started →