Home / Blog / AI in Architecture

Where AI Helps in Architecture Work (and Where It Still Can't)

Ask five architecture vendors what their AI does and you'll get five versions of the same sentence: it understands your architecture, it helps you design faster, it catches problems before they become incidents. None of that is false, exactly, but none of it tells you anything you can act on. The useful question isn't whether AI helps. It's which specific tasks it helps with, by how much, and which tasks it should stay out of entirely. This is an attempt at that second, less flattering list.

An inventory, not a pitch

We build Mooodels, and Mooodels has AI features in it, so it would be easy to write the version of this article that leads with capability and buries the caveats in a closing paragraph nobody reads. We're doing the opposite on purpose. Architecture work has real consequences — a wrong dependency map leads to a bad retirement decision, a missed coupling issue turns into a three-week outage, a plausible-looking but incorrect answer to "what talks to this system" gets repeated in a steering committee slide and then treated as fact for a year. If we're going to put AI in front of that kind of work, the honest version of the pitch has to include where it stops being trustworthy.

So this is organized the way we'd want it organized if someone else had written it: what AI is actually good at right now, with enough specificity that you could check the claim yourself, and then what still requires a human, including the uncomfortable case where the human requirement is precisely the expertise AI was supposed to be saving you from exercising.

What AI is actually good at right now

Four things, consistently, across the kind of architecture work we see: drafting a first-pass model from a description, executing mechanical bulk changes stated in plain language, answering scoped factual questions against a real model, and flagging patterns that are worth a second look without claiming to have judged them. Each of these has a common shape — there's a correct or checkable answer, the input is bounded, and the AI's job is to produce a proposal or a result that a human can verify quickly rather than construct slowly.

Turning a blank canvas into a first draft

The single highest-leverage thing AI does in Mooodels is also the least glamorous: it turns a blank model into a populated one. Describe an architecture in a sentence or two — "model an online permit platform with an API gateway, identity provider, async processing, and a PostgreSQL database" — and instead of staring at an empty canvas deciding where to start, you're looking at a first-pass model with those components already present, roughly connected, and ready to be corrected.

The value here isn't that the AI understood your organization's permit platform — it didn't, it pattern-matched a common shape of system from a short description. The value is that editing is a fundamentally easier cognitive task than originating. Most architects can tell you within thirty seconds that a proposed model is missing a message queue, has the identity provider connected to the wrong component, or is using synchronous calls where the description implied asynchronous processing. Almost nobody can produce that same model from a blank page in thirty seconds. AI is good at getting you to the point where you're a reviewer, not a first-draft author, and reviewing is faster and more reliable than authoring, especially under time pressure.

This is worth being precise about because it's easy to oversell: the model that comes out of a one-sentence description is a sketch, not a design. It won't know your organization uses a specific identity provider, that PostgreSQL is your standard but this particular workload actually needs something else, or that "async processing" in your shop means a specific queueing product with specific governance rules attached. What it reliably gets right is structure — the kind of component this system needs and how those components typically relate to each other. What it reliably gets wrong or leaves generic is anything that depends on institutional context the description didn't include. That's an acceptable trade, because structure is the expensive part to produce from nothing, and institutional specifics are the part a human corrects in minutes once there's something concrete on screen to correct.

Bulk mechanical changes described in plain language

The second place AI earns its keep is executing a change that is conceptually simple but tedious to perform by hand across a model of any size. "Replace direct database access from the portal with an API" is a one-sentence instruction that, in a model with a few dozen relationships, might touch five or six elements: remove a direct relationship, insert an API component, redirect the relationship through it, and possibly flag the two or three other components that were also reaching into that database directly and now look inconsistent by comparison.

Doing that by hand isn't hard, it's just slow and easy to do incompletely — you fix the relationship you were thinking about and miss the second one three screens away that has the same problem. Describing it in plain language and getting a proposed patch back is faster and, because the AI is working against the actual model rather than your memory of it, less likely to miss an instance.

Instruction: "Replace direct database access from the portal with an API"

Proposed patch (ModelPatch, pending approval):
  - remove: relationship Portal -> PermitDB (direct, type: uses)
  + add:    element PermitAPI (type: API)
  + add:    relationship Portal -> PermitAPI (type: uses)
  + add:    relationship PermitAPI -> PermitDB (type: uses)
  ~ flag:   relationship ReportingJob -> PermitDB (direct, type: uses)
            "same pattern found elsewhere — include in this change?"

Status: awaiting human approval. No changes applied.

Two things matter about that example beyond the convenience. First, it's a proposal, not an edit — the model doesn't change until a human approves the patch, which means a misreading of the instruction costs you a rejected patch, not a corrupted model. Second, the useful part isn't the mechanical rewrite itself, which a determined person could do with careful search; it's the flag on the reporting job, which surfaces a second instance of the same pattern the human might not have been thinking about. That's the AI doing something closer to "apply this consistently across everything that matches" than "understand why this change matters," and that distinction is exactly why it's reliable here — consistency is a mechanical property, and mechanical properties are what AI over a real model is good at checking.

Answering scoped factual questions against a real model

"Which applications depend on Salesforce" and "what crosses the Restricted security boundary" are questions with a single correct answer, provided the model is accurate — they're graph queries dressed up as natural language. Answering them correctly doesn't require judgment; it requires reading the model correctly and returning what's actually there. This is squarely in AI's comfort zone, for the same reason a well-written SQL query is reliable: the question is bounded, the source of truth is fixed, and there's no ambiguity about what a correct answer looks like.

What makes this genuinely useful rather than a parlor trick is that it removes the translation step between "a question in an architect's head" and "a query someone knows how to write." Not everyone who needs to know what depends on Salesforce is comfortable writing a traversal query or knows the model's schema well enough to. Letting them ask in plain language and get an answer grounded in the actual model — with the option to inspect exactly which relationships produced that answer — is a real productivity gain, and a low-risk one, because a wrong answer here is usually caught the moment someone who knows the domain reads it and says "that's missing the batch job."

The honest caveat: the answer is only as complete as the model. If a dependency was never modelled — the classic case is a nightly batch job nobody thought to represent as a relationship — no amount of AI sophistication recovers it, because the AI is querying what's there, not what's true in the world. This isn't a limitation of the AI specifically; it's a limitation of any query against incomplete data, and it's worth stating plainly rather than letting "AI answered it" imply a completeness guarantee the underlying model can't back up.

Spotting patterns worth a human look

The fourth thing, and the one most prone to being oversold elsewhere, is pattern flagging: probable duplicate components, a component with an unusually high number of inbound dependencies, a single application sitting on a path with no redundancy that a lot of other things quietly depend on. AI is decent at surfacing these because they're statistical and structural properties of the graph — count relationships, compare naming and typing similarity, look for single points of failure implied by the topology.

The important word is flagging. "This component has eleven inbound dependencies and no documented owner, which is unusual for this model" is a useful sentence. "This component is excessively coupled and should be split" is a judgment call dressed up as a finding, and it's a step further than the pattern-detection actually supports. Eleven inbound dependencies might be exactly right for a shared identity provider and a real problem for a line-of-business application — the AI can count the dependencies reliably; it can't tell you which of those two situations you're in without knowing what the component is for, and that's a determination that belongs to whoever owns the domain, not to a count.

Where an AI suggestion enters the workflow, and where a human decision gates it Plain-language request AI reads the real model Proposed ModelPatch Human review business risk, timing, precedent, plausibility Rejected / sent back for revision Applied to the model
Every AI proposal in Mooodels — a first-pass model, a bulk edit, a refactor suggestion — arrives as a patch. The model only changes after a human decision, which is where business risk, timing, and plausibility actually get judged.

Where the line actually sits

Laid out side by side, the pattern is consistent enough to be a rule of thumb rather than a coincidence: AI is reliable wherever there's a checkable answer and unreliable wherever the right answer depends on context the model can't contain.

Good fit for AIStill needs a human
First-pass model from a descriptionDeciding whether the first pass reflects how this organization actually builds things
Bulk mechanical edits stated in plain languageDeciding whether the edit should happen now, or at all
Scoped factual queries against the modelJudging whether the model is complete enough for the answer to be trusted
Flagging statistical patterns — coupling, duplication, single points of failureDeciding whether a flagged pattern is actually a problem here
Deterministic rule checking (pass/fail)Deciding what the right fix is, and whether it's worth the disruption
Explaining why a rule failedWeighing that explanation against business risk, precedent, and consequences

Where it still can't, and probably never will

The tasks above share a structure: bounded input, checkable output, low cost of being wrong because a human reviews the result before anything takes effect. The tasks below don't share that structure, and that's not a temporary gap waiting on a better model — it's a difference in what kind of problem they are.

Business risk tradeoffs

An AI reviewing a solution can tell you that the portal has a single point of failure in its authentication path. It cannot tell you whether that's an acceptable risk. That depends on what the portal does, who uses it, what the cost of an hour of downtime actually is this quarter, whether there's a compensating control elsewhere that isn't represented in the model, and whether the organization has bigger fish to fry this planning cycle. None of that is retrievable from the architecture model, because none of it is architectural information — it's business context that lives in budgets, incident history, and conversations that never got written down anywhere a tool could read them. An AI can surface the technical fact. Weighing the technical fact against the business reality is, and will stay, a human call.

Timing and sequencing decisions

Knowing that a legacy system should eventually be retired is often obvious. Knowing when is a different problem entirely, and it's one where being technically correct and being right are not the same thing. Retire it before the replacement is fully load-tested and you've traded a known slow system for an unknown fragile one. Retire it before the three downstream teams still quietly depending on its batch export have migrated, and you've created an outage, not solved one. Sequencing a change against everything else already in flight — other migrations competing for the same people's time, a freeze period nobody put in the model, a vendor contract that happens to expire in a way that makes March a much better month than January — is a scheduling and organizational-politics problem wearing architecture clothing. The model can tell you what depends on what. It has no way to know what else is happening in the organization at the same time, and that's usually the thing that actually determines when.

Genuinely novel design decisions

AI is strongest exactly where there's a common, well-represented pattern to draw on — which is most of the time, because most systems are recognizable variations on familiar shapes. It's weakest at the moment a design problem has no clear precedent: a genuinely new integration approach, a novel way of partitioning a domain that doesn't map cleanly onto any pattern already well-represented in what the AI has seen, a tradeoff between two unusual constraints that don't normally appear together. In that situation, an AI assistant will still produce an answer — that's what it does — but the answer is more likely to be a plausible-sounding blend of familiar patterns than a genuinely reasoned response to the actual novelty of the problem. The tell is usually that the suggestion feels slightly too smooth, like it's solving a more common problem than the one you actually described. Recognizing that gap requires knowing the domain well enough to notice when a proposal has quietly substituted a familiar problem for your unfamiliar one, which is exactly the expertise a novel design decision needs and exactly what makes this case hard to hand off.

Knowing when a confident-sounding suggestion is actually wrong

This is the hardest one, and it's worth stating plainly rather than softening it: an AI assistant does not signal uncertainty in proportion to how uncertain it should be. A suggestion that's dead wrong can read exactly as fluently and confidently as one that's correct — the tone doesn't degrade to warn you. "Merge these two components, they look like duplicates" can be right, or it can be a case where two components share a name and a rough shape but exist for regulatory reasons that require them to stay separate, and the sentence reporting either conclusion looks identical.

Catching that requires the same domain expertise the AI feature exists to save you from applying line by line. You have to already know enough about why those two components aren't actually duplicates to recognize that the confident merge suggestion is wrong — which means the safety net here isn't a better AI, it's a reviewer who doesn't need the AI's help on this particular question in the first place. That's not a flaw specific to Mooodels' implementation; it's close to a structural property of using AI for judgment-adjacent work anywhere. The practical implication is uncomfortable but simple: AI assistance is most valuable to people who already have enough expertise to catch it when it's wrong, and least safe for people who are relying on it precisely because they don't have that expertise yet. That inverts the usual pitch for this kind of tool, and it's true anyway.

The honest version: AI review output is a set of things worth a second look, not a verdict. Treat a duplicate flag, a coupling warning, or a proposed merge as a question the tool is asking you, not an answer it's giving you.

Why the pass/fail line stays mechanical

One design choice in Mooodels is a direct response to the problem above: architecture rules — the deterministic checks, like "every Tier-1 application must have an owner" or "public-facing services must route through the approved gateway" — are never AI-judged. The check itself is a query against the model: either the rule holds or it doesn't, and that evaluation is entirely mechanical, entirely reproducible, and entirely independent of anything an AI model does.

AI's role around a rule violation is explanation and remediation, not adjudication: it can explain in plain language why a given element failed a check, and it can propose a patch that would fix it. But whether the rule passed is decided by the same deterministic logic every time, for the same reason a linter's pass/fail state shouldn't depend on which day you ran it. If rule evaluation were AI-judged, two runs against the identical model could disagree, and the moment a governance check can waver, nobody can rely on it — which defeats the entire point of having deterministic governance in the first place. Keeping the pass/fail boundary mechanical and pushing AI to the softer, explanatory layer around it is what makes it safe to let AI anywhere near a governance workflow at all.

What this means for how you actually work

None of the limitations above are reasons to avoid AI in architecture work — they're reasons to be specific about which part of the work you're handing off. The pattern that holds up across every example here is the same one: let AI do the parts with a checkable answer and a low cost of being wrong before review, and keep the parts that require judging consequences, timing, novelty, or plausibility as decisions a person makes, informed by what the AI surfaced rather than replaced by it.

In practice that looks less like a philosophy and more like a habit: read the first-pass model instead of accepting it, read the proposed patch's diff instead of approving on the summary line, ask why a flagged coupling issue is being flagged instead of scheduling the refactor it implies, and stay especially skeptical of any AI output that arrives with no hedging at all, because that confidence is a property of how fluently the answer was written, not a property of how likely it is to be right. Mooodels is built so that every one of those AI outputs — the first-pass model, the bulk edit, the pattern flag, the rule explanation — arrives as something to review rather than something already applied. That's not a limitation bolted on to manage risk. It's a reasonably accurate map of where the tool's judgment actually ends and where yours has to start.

See the model this article describes, working in a real editor.

Try the live demo