Critical Propulsion
← Back to Insights
AI & AgentsCritical Propulsion7 min read

Agents Can't Do Brownfield. Yes, They Can.

Everyone says AI agents only work on greenfield. That your legacy monolith is too complex, too fragile, too undocumented. They're wrong, but the approach has to change. Agents don't replace your monolith. They reverse-engineer it, rationalize it, and build around it.

Somewhere in your ten-year-old monolith is an admin screen three people open once a quarter. There's an integration with a system that was decommissioned years ago. And there's probably an error handler for a failure mode that hasn't fired since the last CEO transition.

The problem is that nobody currently on the team knows which parts of the codebase are which anymore.

That's the real problem with brownfield. It was never that agents can't handle old code.

80%
of enterprise software features are rarely or never used

Pendo Feature Adoption Report, 2019

$2.41T
annual cost of technical debt in the US alone

CISQ, Consortium for IT Software Quality, 2022

79%
of legacy modernization projects fail, averaging $1.5M lost per attempt

Wakefield Research, commissioned by vFunction, 2022

A lot of that $2.41 trillion isn't about the difficulty of writing code. It comes from trying to make decisions about systems that nobody fully understands anymore. The people who built them moved on. The documentation drifted out of date. Years of patches, workarounds, integrations, and exceptions piled up.

So when modernization finally comes around, teams end up making decisions with an incomplete picture of what the system actually does.

This is one of the places where agents are genuinely useful. They don't understand the business the way the engineer who spent ten years working in the application did. But they can trace call chains, map dependencies, catalog endpoints, and document behavior at a scale that would take a human team months to work through manually.

That isn't business understanding. It's telemetry. And once you have it, you can make much better decisions about what stays, what gets rebuilt, and what can simply disappear.

What the Objections Get Wrong

"It's too fragile to touch."

It probably is. But modernization doesn't have to begin by tearing into the monolith.

The existing system can keep running while new services are built alongside it. Traffic moves over incrementally as those services prove themselves. You're not rewriting the old application in place and hoping nothing breaks. You're slowly reducing how much work it has to do.

Eventually, parts of it just go quiet.

"The data model is unmaintainable."

That may also be true. You still don't need to redesign the entire thing before you can start.

Put a clean API boundary around the existing data layer, then use agents to reverse-engineer how the schema behaves today. Look at what actually gets queried, what relationships the application depends on, and where the weird exceptions live.

The entity diagram from 2014 can be useful historical context. It shouldn't be the source of truth if the running system is telling you something different.

The 79% failure rate above also points to another problem: sequencing.

A lot of modernization programs have historically been built around some version of the big-bang rewrite. Understand the old system, rebuild the whole thing, test it, then choose a date when everyone crosses their fingers and flips over to the new one.

Human teams struggled with that approach. Giving the same plan to an agent-driven team doesn't fix it. You may have changed who, or what, is doing the engineering work, but the sequencing problem is still there.

You Don't Know What's Actually Running

Here's the uncomfortable part: you probably don't know everything your legacy application does anymore.

Most organizations don't.

The Standish Group's most-cited breakdown, drawn from a 2002 study of four internal applications, puts rough numbers on the same problem: 7% of features get used "always," 13% "often," 16% "occasionally," and 64% "rarely or never." Treat that last figure as directional, not precise. It's an old, narrow study. But it lines up with the 80% figure above from Pendo's much larger and more recent look at the same question.

The problem is that you don't know which part of your own system falls into that 64 to 80%.

And that matters. If you modernize without knowing what the application is actually doing in production, you're making decisions based on documentation, institutional memory, and assumptions. Some of those will be right. Some won't.

On a system that runs the business, the mistakes get expensive quickly.

An agent can help build a much more objective picture. Trace execution paths. Instrument database queries. See which endpoints actually receive traffic. Compare the application people describe in meetings with the application that is really running.

Once you have that picture, the modernization plan gets a lot more concrete.

The Process, Start to Finish

The work breaks down into six steps. The first three are about understanding what you actually have. The next three are about replacing it without betting the company on one giant cutover.

01
Map it.
Agents crawl the codebase and catalog dependencies, call chains, API endpoints, and database tables, including how those tables are actually queried. You end up with a dependency graph of the application as it exists today, rather than the architecture diagram someone drew in 2017.
02
Rationalize it.
Now compare that map with production telemetry. Which endpoints get called? Which queries execute? Which features still have active users? This is where the living 20 to 36% begins to separate from the dead 64 to 80%. And instead of spending months on a manual audit, much of that work can happen in days.
03
Specify it.
For the parts that are still alive, agents create structured specs covering inputs, outputs, error states, and integration points. Senior engineers review them, correct them, and fill in the business context the system itself can't provide. That spec becomes the contract the replacement has to meet. It also gives the agents something concrete to build and test against.
04
Build the facade.
Put an API gateway in front of the monolith. At first, every request still ends up in the legacy system underneath it, so very little has actually changed. That routing layer gives you a controlled place to start replacing behavior. It follows Martin Fowler's strangler fig pattern from 2004: wrap the legacy system in new services that take over its responsibilities one piece at a time. Every major cloud provider recommends it. Agents don't make the pattern new. They make a lot of the work involved in executing it faster.
05
Extract the service.
Start with something the rationalization work identified as high-value and relatively low-risk. Agents build the new microservice against the spec, test its behavior against the existing system, and deploy it behind the facade. Then move traffic over gradually. If something goes wrong, move it back.
06
Let it go dormant.
As the new service proves itself, the corresponding legacy endpoint gets less and less traffic until eventually it gets none. And this is where the economics of the approach start to change. Nobody needs to rebuild the 64 to 80% of the application that users had already abandoned. If it isn't needed, leave it alone. Once you know nothing depends on it anymore, remove it.

The six steps don't eliminate the hard decisions.

Someone still has to decide what gets extracted first, what gets abandoned, where the domain boundaries should sit, and how much production risk is acceptable at each step. Agents can give that person dramatically better information, but they can't make those calls on their own.

That still requires senior engineers who understand the business and know what happens when they get a decision wrong.

Lift and Shift vs. Wrap and Modernize

Lift and ShiftWrap and Modernize
Before actingTry to understand the whole monolithLet agents map it for telemetry, in days
ScopeRewrite everything, including the 64% nobody usesRebuild only the 20 to 36% that's actually used
CutoverOne go or no-go dateIncremental traffic shift, reversible at every step
Timeline12 to 18 months, integration testing at the endWeeks-long extraction cycles, verified continuously
BasisTrust the documentationGenerate specs from observed behavior
Success metricFeature parityBusiness outcomes

Our Greenfield vs. Brownfield piece laid the groundwork for this argument. When Agents Fail covered why human oversight isn't optional. And Spec-Driven Development showed why agents perform better when they have a rigorous spec to work against.

Brownfield modernization is where those ideas start to come together.

The running system gives you the evidence. Agents turn that evidence into a map and a first version of the spec. Senior engineers correct it and make the calls that require business judgment. Then agents can do a large amount of the extraction and implementation work against something much more reliable than an old architecture diagram and a collection of tribal knowledge.

Which raises a pretty useful question:

What would change about your modernization plan if you actually knew which 64% of the system nobody uses?

Who This Is For (and Who It Isn't)

This IS for You If:
  • You're carrying a monolith nobody wants to touch, and modernization keeps stalling before it starts
  • Your last rewrite attempt burned a year of budget and shipped nothing you could point to
  • You want a modernization plan built on what the system actually does, not what the documentation says it does
This Is NOT for You If:
  • You're looking for a single go or no-go cutover date
  • Feature parity is your finish line, not a smaller, working system
  • You don't have senior engineering judgment in-house to make the extraction calls agents can't make
ShareLinkedInX

Your Monolith Isn't a Roadblock. It's a Starting Point.

Critical Propulsion runs agent-driven legacy analysis that shows you what your application actually does, so you can decide what needs to be modernized, what can stay where it is, and what you can stop paying to maintain.