The Primitives Problem: Why Most AI Projects Never Leave the Lab
Studies keep showing the same thing: enterprise AI projects fail at rates that should alarm anyone investing in them. The explanations usually point to data quality, skills gaps, or unclear business value. Those are real, but I think they’re symptoms of a deeper issue.
Many organizations don’t understand the primitives.
They know they want to “use AI.” They might even know what outcome they’re after. But they don’t understand the building blocks well enough to architect a path from here to there. They don’t understand context windows, retrieval strategies, agent orchestration patterns, tool integration, or how these components interact under load. They’re trying to build complex systems without understanding the materials.
And everything is moving. Every few months, significant capability improvements require new approaches. Guardrails that were necessary six months ago might be unnecessary now — or new ones might be needed that didn’t exist before. That’s not a flaw. That’s the nature of a rapidly maturing technology. But without a methodical approach, every shift breaks something.
This is where I think the gap really lives. It’s not that organizations need to become AI experts overnight. It’s that they need a systematic way to navigate complexity when the ground is shifting under their feet. They need mental models. They need to be able to diagram their systems, map dependencies, identify gaps, and build incrementally on a foundation that holds even as components change.
That’s not an AI skill. That’s an architecture skill.
The organizations that figure this out — that approach AI projects with the same architectural discipline they’d bring to any complex system — are going to be the ones whose projects actually make it to production. Not because they picked the right model, but because they started with the right foundation.
I’ve been building production AI systems for the last several months using exactly this approach. Not because I set out to prove a point, but because it’s the only way I know how to build things that work. Decompose the problem. Define the components. Document the interfaces. Build modular. Iterate.
It’s working. And I don’t think it’s a coincidence.