Before designing an AI system, make the problem explicit.
A client says: "We need an AI agent for customer service."
Five minutes later, someone has drawn:
User → Agent → LLM → RAG → CRM → Human
It looks like architecture. But it isn't. It is a solution to a problem nobody has properly defined yet.
That distinction matters more than ever in AI architecture. Producing a plausible architecture is now easy. Any LLM can generate one in seconds. Any. Yet, understanding what we should actually build is still hard. That is why I think AI architects should sometimes start with a diagram that is not an architecture diagram at all.
Start with a problem mind map.
The problem comes before the architecture
The idea of problem-first design is not new. Increasingly, AI design guidance emphasizes understanding the problem, defining success criteria, and choosing a solution only after the problem space is clear.
But there is an awkward gap between saying, "Define the problem first." and actually doing it.
- What does the problem definition look like?
- Where do you capture it?
- How do you review it with stakeholders?
- How do you make uncertainty visible?
And, most importantly, How does that problem definition survive when you move into architecture?
A problem mind map can provide a concrete answer. It is not another requirements document. It is not another checklist. It is a visual model of the problem space.
Problem space before solution space
I find it useful to think of AI architecture as a progression between two spaces.
Problem space
What are we dealing with?
- Decisions
- Data
- Policies
- Actors
- Systems
- Constraints
- Risks
- Unknowns
Solution space
What should we build?
- Workflows
- Agents
- Tools
- Integrations
- Guardrails
- Human-in-the-loop controls
- Architecture
The mistake is not drawing architecture diagrams. The mistake is jumping directly to them. A problem mind map gives you a place to explore the problem before you commit to a solution.
What is a problem mind map?
A problem mind map is a visual inventory of the problem space. It answers a deceptively simple question:
What exactly are we dealing with, and what touches it?
That makes it different from the diagrams we normally use to design systems.
- Workflow diagrams describe what needs to happen.
- Sequence diagrams describe who interacts with whom, and when.
- Architecture diagrams describe how the system is assembled.
A problem mind map describes the territory those designs are supposed to address.
It captures things such as:
- decisions
- data
- policies
- actors
- existing systems
- constraints
- risks
- open questions
And there is a useful discipline behind it: Use nouns before verbs.
You are not designing the system yet. You are establishing the vocabulary of the problem.
Start with a credit decision
Imagine you are asked to design an AI system that helps decide whether a customer should receive credit. The natural temptation is to start discussing agents, models, retrieval, integrations, and automation. Instead, put the actual problem at the center:
Decide whether to grant credit
Then map what surrounds it.
Here is the complete example used to generate the mind map above:
credit_decision { # Credit decision
n1: circle label:"Decide whether to grant credit"
n2: rectangle label:"Decisions"
n3: rectangle label:"Data"
n4: rectangle label:"Policies"
n5: rectangle label:"Actors"
n6: rectangle label:"Risks"
n7: rectangle label:"Constraints"
n8: rectangle label:"Open questions"
n9: rectangle label:"Approve / decline"
n10: rectangle label:"Amount & rate"
n11: rectangle label:"Human review"
n12: rectangle label:"Client history"
n13: rectangle label:"Income & contracts"
n14: rectangle label:"External score"
n15: rectangle label:"Thresholds"
n16: rectangle label:"Exceptions"
n17: rectangle label:"Regulations"
n18: rectangle label:"Who has authority?"
n19: rectangle label:"Customer"
n20: rectangle label:"Credit officer"
n21: rectangle label:"Supervisor"
n22: rectangle label:"Compliance"
n23: rectangle label:"Hallucination"
n24: rectangle label:"Bias"
n25: rectangle label:"Privacy"
n26: rectangle label:"Liability"
n27: rectangle label:"Audit trail"
n28: rectangle label:"Explainability"
n29: rectangle label:"GDPR"
n30: rectangle label:"Where do thresholds live?"
n31: rectangle label:"Dispute: who answers?"
n32: rectangle label:"Review margin?"
n1.handle(right) -> n2.handle(left)
n1.handle(bottom) -> n3.handle(top)
n1.handle(top) -> n4.handle(bottom)
n1.handle(left) -> n5.handle(right)
n1.handle(right) -> n6.handle(top)
n1.handle(bottom) -> n7.handle(left)
n1.handle(top) -> n8.handle(right)
n2.handle(right) -> n9.handle(left)
n2.handle(bottom) -> n10.handle(top)
n2.handle(top) -> n11.handle(bottom)
n3.handle(right) -> n12.handle(left)
n3.handle(bottom) -> n13.handle(top)
n3.handle(top) -> n14.handle(bottom)
n4.handle(right) -> n15.handle(left)
n4.handle(bottom) -> n16.handle(top)
n4.handle(top) -> n17.handle(bottom)
n4.handle(left) -> n18.handle(right)
n5.handle(right) -> n19.handle(left)
n5.handle(bottom) -> n20.handle(top)
n5.handle(top) -> n21.handle(bottom)
n5.handle(left) -> n22.handle(right)
n6.handle(right) -> n23.handle(left)
n6.handle(bottom) -> n24.handle(top)
n6.handle(top) -> n25.handle(bottom)
n6.handle(left) -> n26.handle(right)
n7.handle(right) -> n27.handle(left)
n7.handle(bottom) -> n28.handle(top)
n7.handle(top) -> n29.handle(bottom)
n8.handle(right) -> n30.handle(left)
n8.handle(bottom) -> n31.handle(top)
n8.handle(top) -> n32.handle(bottom)
}
Notice what is deliberately missing.
There is no Agent, no LLM, no RAG, no MCP, no architecture. And that is the point.
The map is not trying to answer: "How should we build the system?"
It is trying to answer: "What exactly are we trying to solve?"
Five steps to build a problem mind map
1. Put the problem at the center
This is the most important decision. Do not put the technology at the center.
Avoid "AI agent for claims", or "Automated customer service". Those are solutions disguised as problems. Instead, describe the outcome, decision, or business problem:
- Decide whether to grant credit
- Resolve customer support requests
- Reduce misrouted tickets by 30%
The difference is subtle, but important. Once a technology is at the center, the map tends to become a justification for that technology. A problem-centered map keeps the solution open.
2. Map what touches the problem
Now establish the vocabulary.
A useful starting point is:
- Decisions — What must be decided?
- Data — What information exists?
- Policies — What governs the decisions?
- Actors — Who is involved?
- Systems — What already exists?
Use one concept per node. Instead of writing: "The agent should retrieve customer information from the CRM.", write:
- Customer
- CRM
- Client history
That's mapping the territory before deciding how to navigate it. This step often creates the first useful information:
- The "knowledge" branch may be thin.
- Policies may be scattered across multiple sources.
- Nobody may agree on who actually owns a decision.
That is not a problem with the map. That is the map doing its job.
3. Map what can kill the solution
Real systems do not operate on the happy path. So add the things that constrain the design or could make it fail.
Constraints
What cannot be ignored?
- Regulations
- Auditability
- Explainability
- Human approval
- Privacy
- Latency
Risks
What could go wrong?
- Hallucination
- Bias
- Incorrect decisions
- Data leakage
- Liability
This is where the problem map becomes particularly useful for AI architecture. A risk can become a guardrail. A constraint can become a design boundary. A compliance requirement can become a checkpoint. The map is beginning to create the raw material for the architecture.
4. Give uncertainty a place on the diagram
This may be the most valuable part of the exercise. Architecture diagrams tend to have an unfortunate property: everything looks certain.
A box is a box. A connection is a connection. A component is a component.
But early in an AI project, there are things we simply do not know yet. So make uncertainty explicit. Create an Open questions branch.
For example:
- Who owns the credit policy?
- Where do thresholds live?
- Which source is authoritative?
- Who answers a dispute?
- What is the review margin?
This changes the conversation. Instead of pretending the architecture is ready, you can say: These are the questions we need to answer before the architecture is ready.
And sometimes those questions reveal that the project is not primarily an AI problem at all. Maybe the real problem is fragmented knowledge. Maybe decision ownership is unclear. Maybe there is no reliable source of truth. Maybe the process itself has never been properly defined.
In other words, the problem map can reveal that you are solving the wrong problem. And that is a very valuable discovery to make before building anything.
5. Let the architecture emerge from the map
Only now should you start designing the system. The mind map becomes useful beyond brainstorming because its branches can be traced into the design.
| Problem map | Architecture consequence |
|---|---|
| Decisions | Agent scope and success criteria |
| Data | Data requirements and integrations |
| Policies | Knowledge sources and retrieval |
| Actors | Permissions and human interaction |
| Systems | Tools and system integrations |
| Risks | Guardrails and human-in-the-loop gates |
| Constraints | Non-functional requirements |
| Open questions | Decisions that must be resolved |
The transformation is not automatic. It is a reasoning step. But the map gives you something valuable: traceability. Every major component in the architecture should be explainable from something discovered in the problem space.
If you find an architecture component that has no reason to exist in the problem map, ask: Why is this here?
And if the problem map contains an important branch with no architectural consequence, ask: Where is this being addressed?
A simple discipline emerges: Nothing invented. Nothing forgotten.
From problem to architecture
This is where I think the relationship between different diagram types becomes particularly interesting. A problem mind map is not a replacement for an architecture diagram. It comes before it.
Think of the progression as:
What is the problem?
What needs to happen?
Who interacts with whom, and when?
What should we build?
Each representation answers a different question. Together, they create a continuous reasoning chain from problem definition to system design. The key is not to force one diagram to do everything. The key is to use each diagram for the question it is good at answering.
When a mind map will not help
Not every problem needs one. If:
- the problem is already well understood,
- the boundaries are agreed,
- the vocabulary is shared,
- the stakeholders agree on what needs to be built,
then drawing a mind map may simply slow you down. The map would just be procrastination with better typography.
Use it when the problem space is uncertain, cross-functional, politically ambiguous, knowledge-heavy, or likely to expose hidden dependencies.
And do not let it become a wish list. If every node becomes a feature request, you have left problem definition and entered requirements gathering. A problem mind map is a thinking tool, not a canonical representation of reality.
Two architects may map the same problem differently. That is fine. The value is in the structured conversation it creates.
The real value is not the picture
A good problem mind map makes visible things that are easy to miss when everyone is eager to start designing:
- what decisions matter,
- what information matters,
- what knowledge is required,
- who is involved,
- what systems already exist,
- what can go wrong,
- what constrains the design,
- and what you still do not know.
That last one matters.
A traditional architecture says: "Here is the system."
A problem map can also say: "Here is what we know, what we believe, and what is still unresolved."
That makes the map more than a brainstorming exercise. It becomes a way to expose uncertainty before uncertainty becomes rework.
Why this matters even more with AI
There is a paradox in AI architecture. The better AI gets at producing solutions, the easier it becomes to skip problem definition. Ask an LLM to design a support agent and it will probably give you something plausible. Ask it for a multi-agent architecture and it will happily provide one. The output may even be technically sophisticated.
But sophistication is not the same thing as relevance. The scarce skill is increasingly not, "Can I design an architecture?" It is, "Do I know which architecture should exist?" That is why the problem space deserves an explicit model.
A continuous model from problem to system
This is also where a diagramming tool can become more than a place to draw boxes. If the problem is represented as structured data, it does not have to die on a whiteboard. The same model can evolve as your understanding evolves. The problem definition can lead to the workflow. The workflow can lead to the sequence. The sequence can lead to the architecture. The artifact does not necessarily get thrown away at each stage.
The thinking carries forward. That is the idea behind FlowZap: Map the problem. Model the behavior. Design the system. In that order.
Final thought
The best AI architecture is not the one with the smartest components. It is the one that solves the right problem. So before you draw the system, try drawing the problem. You may discover that you need an agent. You may discover that you need a workflow. You may discover that you need better data or a clearer source of truth. Or you may discover that you should not build anything yet.
That is exactly the kind of discovery an architect should make before the boxes appear.
Sources
- Vercel — Building agentic AI apps: a problem-first approach: https://vercel.com/i/building-agentic-ai-applications-with-a-problem-first-approach
- DistilledPatterns — Problem-First Framing: https://distilledpatterns.org/patterns/problem-first-framing/
- Ratium — Before the Agent: Agentic AI Decision-Problem Design: https://www.ratium.ai/articles/before-the-agent-agentic-ai-decision-problem
- Ability.ai — AI system design: moving from vibe coding to production: https://www.ability.ai/blog/ai-system-design-production-framework
- Microsoft Engineering Playbook — Envisioning and Problem Formulation: https://microsoft.github.io/code-with-engineering-playbook/ml-and-ai-projects/envisioning-and-problem-formulation/
- Manning — Machine Learning System Design, Chapter 2: "Is there a problem?": https://livebook.manning.com/book/machine-learning-system-design/chapter-2/v-13
- DevHexLab — Mind Mapping for Developers: https://devhexlab.com/articles/mind-mapping-for-developers
- Martin Uke — Mind Map Software Architecture: https://martinuke0.github.io/posts/2025-12-12-mind-map-software-architecture-the-versatile-framework-useful-in-99-of-real-world-cases
- ThinkPalm — AI Mind Mapping: https://thinkpalm.com/blogs/what-is-ai-mind-mapping-benefits-techniques-and-applications-for-modern-ai-teams/
- Medium — Use Mind Maps to Bring Clarity to Software Architecture and Project Planning: https://medium.com/@3jacksonsmith/use-mind-maps-to-bring-clarity-to-software-architecture-and-project-planning-2546b4e333dd
- ACM — DSL-maps: from requirements to design of domain-specific languages: https://dl.acm.org/doi/10.1145/2970276.2970328
- Microsoft Architecture — A Language for Software Architecture: https://msdn.microsoft.com/en-us/architecture/aa699449.aspx
- FlowZap — Capabilities manifest: https://flowzap.xyz/.well-known/capabilities.json
- FlowZap MCP: https://www.npmjs.com/package/flowzap-mcp
- FlowZap Code: https://flowzap.xyz/flowzap-code
- FlowZap LLM context: https://flowzap.xyz/llms.txt
- FlowZap: https://flowzap.xyz
- FlowZap OpenAPI: https://flowzap.xyz/.well-known/openapi.json
