Rorix Technologies Logo
Software Development20 min read

How to Add AI to Existing Software: What Your System Will Let You Do

How to add AI to existing software: the four insertion points, whether your system can emit what a model needs, shadow mode, and when to modernize first.

AILegacy SystemsArchitectureIntegration
How to Add AI to Existing Software: What Your System Will Let You Do

Most guidance on adding AI to software assumes you get to choose. You survey the use cases, pick the one with the best payback, and build toward it.

That is not the position you are in with a system that already exists, already has users, and cannot stop. Your architecture has already eliminated most of the options before the first meeting. What you can add is determined by what your system can already emit, where it has seams you can insert into safely, and how much of it you are permitted to change.

So the useful first question is not "which AI capability should we add." It is "what will this system let us do." Survey that honestly and the shortlist usually writes itself, often down to one or two options. Skip it and you will spend a quarter discovering the answer through failed integration work.

This guide is the survey. It is written for the person who will own the retrofit rather than approve it: where AI can enter an existing system, what your data layer has to be able to produce, the failure modes that are specific to retrofits, and the point at which the honest answer is that the platform has to change first.

If you are choosing what to build rather than where to put it, our guide to AI-enabled business systems covers the payback question, and AI agents for business operations covers how much autonomy to hand over. This one assumes those are settled and the constraint is the codebase.

In this guide, you'll learn:

  • The 4 places AI can enter an existing system, ordered by blast radius
  • Whether your system can emit what a model actually needs
  • The retrofit failure modes the ML literature named a decade ago
  • A 6-step sequence that starts with a survey rather than a model
  • How to run it in shadow mode before it touches anything
  • The signals that mean modernization is the real first project

Quick Answer: What Your Existing System Lets You Add

If your system...You can realistically addYou cannot yet add
Has an event log or CDC streamForecasting, anomaly detection, scoring on historyNothing much is off the table
Only stores current stateClassification and extraction on the current recordAnything that needs to learn from what changed
Has clean internal APIsPredictions written back into the workflow
Has logic locked in the UI layerA read-only surface beside the systemAnything that has to act inside the workflow
Disagrees with another system about the same factNothing trustworthyAll of it, until that is resolved

The last row is the one teams argue with and the one that holds. A model trained on data that two systems disagree about does not produce a slightly worse prediction. It produces a confident one that nobody can validate.

Why Retrofitting AI Is a Different Problem From Building With It

Greenfield AI work is a design problem. You choose the data model, the event structure, and the boundaries, and the intelligence is a component you plan for.

Retrofitting is an archaeology problem followed by a surgery problem. The data model was chosen years ago for transactional correctness rather than for learning from. The boundaries may not exist as boundaries. And the surgery happens on a system carrying live traffic and users who depend on today's behavior not changing without warning.

Three consequences follow, and they set the whole approach:

  • You inherit the data you have, not the data you want. Feature engineering on a retrofit is mostly reconstruction, and reconstruction is bounded by what was recorded at the time.
  • The seams determine the scope. Where your system already has a clean boundary, insertion is cheap. Where it does not, you are proposing a refactor with an AI feature attached, and it should be budgeted as one.
  • Existing behavior is a constraint, not a baseline to improve. Users have built habits on the current behavior. Changing it is a product decision with a rollout plan, not a deployment.

The 4 Places AI Can Enter an Existing System

Ordered by blast radius, smallest first. Almost every successful retrofit starts at one and stays there longer than the team expected.

Four AI insertion points in an existing system ordered by blast radius: read-side surface, beside an existing write with approval, replacing an existing rule, and a new surface alongside the system

1. The Read Side, Where Nothing Is Written

Summaries, search, classification, and scoring displayed to a user who then decides. No writes, so the worst failure is a wrong suggestion someone ignores. This is where to start, not because it is the most valuable, but because it is the only insertion point where you can be wrong cheaply while you learn what the model actually does on your data.

It is also the fastest place to discover that your data is not what you assumed, which is worth the entire exercise on its own.

2. Beside an Existing Write, Behind Approval

The model proposes a value into the existing workflow and a person accepts, edits, or rejects. Your write path does not change; a suggestion appears next to it. This is the highest-value insertion point for most operational systems because it sits exactly where work happens, and the approval control doubles as labeled training data.

The engineering requirement is that your write path can accept a value from somewhere other than the form, which is a smaller change than it sounds in a well-layered system and a large one in a system where validation lives in the controller.

3. Replacing an Existing Rule

You already have a threshold, a routing table, or a heuristic somebody hardcoded in 2019. Replacing it with a model is attractive because the integration point already exists and the behavior is already someone's responsibility.

The trap is that the rule is often load-bearing in ways nobody documented. Downstream systems, reports, and human habits have all calibrated to its exact behavior. Replace it only after you can enumerate who consumes it, which is harder than it sounds and is the point of the next section.

4. A New Surface Alongside the System

A separate tool that reads from your system and writes nothing back, or writes through a narrow, well-defined API. This is the right answer when the core cannot be safely modified, and it buys real time. Its cost is that it starts a second system, and the second system will eventually want its own data, its own auth, and its own team. Choose it deliberately, not by default.

Can Your System Emit What a Model Needs?

This is the survey. Run it before scoping anything, because the answers eliminate options faster than any prioritization exercise.

Do you have event history or only current state? The single most decisive question. A row that says this order is shipped supports classification of that order. It does not support learning why orders get delayed, because the history of what happened and when was overwritten. If you have an append-only log, change data capture, or an audit table with enough fidelity, you have a training set. If you have current state only, you have a reconstruction project first, and the event sourcing patterns worth adopting are the same ones that would have prevented the problem.

Can the data be read without going through the UI? If the only way to produce a report is a screen a person exports, your integration surface is a person. Anything you build will inherit that bottleneck.

Are your write paths idempotent and callable? A model writing a suggestion is another caller on a path built for one client. Retries, duplicate suppression, and validation at the boundary all matter more once something non-human is calling, which is the same discipline described in our message queue pattern for ERP integration.

Do two systems disagree about the same fact? MuleSoft's 2026 Connectivity Benchmark, a survey of 1,050 IT leaders reported by CIO Dive, found the average organization runs 957 applications with only 27% connected, and 96% of IT leaders saying agentic AI's long-term effectiveness depends on data integration. If your customer record differs between two systems, the model will learn one version and act in a world running the other. Fixing that is covered in our guides to consolidating fragmented business systems and API integration strategy.

How fresh does the input have to be? A nightly batch is fine for a weekly forecast and useless for a decision made at the moment of a scan. Where the answer is seconds, you need a real-time data path before you need a model.

The Retrofit Failure Modes the ML Literature Already Named

Adding a model to a working system creates a specific class of problem, and the canonical description of it is a decade old. Sculley and colleagues at Google published Hidden Technical Debt in Machine Learning Systems at NeurIPS 2015, arguing that "it is dangerous to think of these quick wins as coming for free" and that real-world ML systems commonly incur massive ongoing maintenance costs. Four of the risks it names are exactly the ones a retrofit walks into.

Four retrofit failure modes from the ML technical debt literature: entanglement, undeclared consumers, hidden feedback loops, and boundary erosion

Entanglement. Model inputs are not independent. Change one feature, or change a source system that feeds one, and behavior shifts everywhere. In a retrofit this is worse than greenfield, because the inputs are existing production fields that other teams change for their own reasons without knowing a model now depends on them.

Undeclared consumers. Once a prediction is visible, things start depending on it: a report, a downstream job, a person's routine. None of them announced themselves. You then cannot change the model without breaking something you did not know existed, which is precisely the trap that makes the "replace an existing rule" insertion point risky.

Hidden feedback loops. The model influences behavior, which changes the data, which trains the next model. A scoring feature that reorders a work queue changes which items get worked, and therefore which outcomes are ever observed. In an operational system this can close a loop within days.

Boundary erosion. The clean separation between your system and the model degrades as glue code accumulates, until the model is no longer a component you can remove. Deciding upfront how you would take it out again is the cheapest defense.

The practical mitigation for all four is the same: an explicit contract at the boundary. Declare what the model reads, what it emits, and who is allowed to consume the output, then treat changes to that contract as versioned changes rather than tuning.

How to Add AI to an Existing System in 6 Steps

Six steps to retrofit AI into existing software: survey what the system emits, pick the smallest insertion point, define the boundary contract, reconstruct the data, run in shadow mode, then release behind approval

Step 1. Survey What the System Can Emit

Run the questions in the section above and write down the answers. This is a two-day exercise for most systems and it constrains everything downstream. Teams that skip it choose a use case first and then spend a quarter discovering their data cannot support it.

Step 2. Pick the Smallest Insertion Point That Tests the Value

Start at the read side unless there is a specific reason not to. The goal of the first release is to learn what the model does on your real data, and you can learn that without writing anything.

Step 3. Define the Boundary Contract Before the Model

What the model reads, what it emits, its latency budget, its failure behavior, and who may consume its output. Write it down and version it. This is the artifact that prevents entanglement and undeclared consumers from becoming your problem in month six.

Step 4. Reconstruct the Data You Need, Honestly

Backfill from logs, audit tables, or change data capture where you can, and be explicit about what cannot be reconstructed. Where history has genuinely been overwritten, the correct move is often to start recording it now and revisit the model in two quarters, which is a real answer rather than a failure.

Step 5. Run It in Shadow Mode Against Production Traffic

Covered in detail below. Do not skip it, and do not shorten it because the demo looked convincing.

Step 6. Release Behind Approval, Then Widen on Evidence

Ship it proposing rather than acting, with an accept, edit, and reject that captures a reason. Compare against the baseline you recorded in Step 1 and widen the scope only when the accept rate justifies it. This mirrors the autonomy discipline in our AI agents guide, and it applies to any model that writes.

Run It in Shadow Mode Before It Touches Anything

Shadow mode means the model runs on real production traffic and its output goes nowhere. It is logged and compared against what the existing system or person actually did, and nobody sees it.

It is the highest-value step in a retrofit and the one most often cut for time. Three things it tells you that no offline evaluation will:

  • Whether your feature pipeline works in production, with real latency, real nulls, and real edge cases rather than the clean extract you trained on. Training and serving skew is where most retrofits actually fail, and it is invisible offline.
  • What the disagreement rate is between the model and the current behavior, which is the single best predictor of how disruptive the rollout will be. A model that agrees 99% of the time is a quiet release; one that disagrees 30% of the time is a change management project regardless of who is right.
  • Where it is confidently wrong, on your data, in cases you did not think to construct.

Run it long enough to cover a normal business cycle, including a month end if your domain has one. The cost is compute and patience. The alternative is discovering all three in front of users.

When the Honest Answer Is to Modernize First

Sometimes the survey comes back and the answer is that this system cannot support what you want, and no amount of clever integration changes that. It is worth saying plainly, because the alternative is spending an AI budget on a platform that will not carry it.

The scale of this problem is not a small-company embarrassment. The US Government Accountability Office's 2025 review of federal legacy systems found that about 80% of the federal government's annual IT spending, over $100 billion, goes to operations and maintenance of existing systems. Of the 11 most critical legacy systems it examined, eight run outdated programming languages, four depend on unsupported hardware or software, and seven carry known cybersecurity vulnerabilities. They range from 23 to 60 years old, and only three of the 11 had modernization plans containing all the key success elements.

These are the signals that modernization is the real first project:

  • The only way to get data out is a screen export or a direct read against a production database nobody wants touched
  • Business logic lives in the UI layer, so there is no boundary to insert a prediction into
  • No event history exists and none can be reconstructed, because writes overwrite in place
  • The platform runs on a framework version that no longer receives security updates
  • Two systems disagree about core records and neither is agreed to be authoritative
  • Any change requires a coordinated release across several teams, so nothing ships in under a quarter

Three or more of those and the AI project is really a legacy modernization project with an AI goal attached. That is not bad news, since the modernization has its own payback and the AI work gets dramatically cheaper afterward. It is only bad news if you find out in month five.

The middle path exists and is often correct: modernize the one slice the AI needs. Extract the entity, give it an event log and a clean API, and leave the rest of the monolith alone. Our architecture builder will sketch what that slice looks like.

How Rorix Retrofits AI Into Existing Platforms

Rorix Technologies works mostly on systems that already exist and carry real traffic, which is where the retrofit constraints above come from.

  • The survey comes first: we tell you what your system can support before anyone scopes a model, including when the answer is less than you hoped.
  • Smallest insertion point first: read side, then proposal behind approval, then wider. The boundary contract is written before the model, because entanglement is much cheaper to prevent than to unwind.
  • Slice modernization over rewrites: extracting the one entity the AI needs, with an event log and a clean API, rather than proposing a rebuild you did not ask for.
  • A named team that stays: 16 engineers averaging 11 years of production experience, 27 platforms delivered, and a 5.0 Clutch rating across the US, UK, Canada, Australia, and New Zealand.
  • Honest boundaries: we build application software; infrastructure and DevOps stay with you. If the answer is a better pipeline rather than a model, we would rather say so and quote the smaller engagement.

Book a free consultation and we will run the survey against your system and tell you what it will actually let you add.

The System You Have Is the Constraint, Not the Model You Want

Retrofits fail on data access and boundaries far more often than on model quality, and both of those are knowable in a couple of days rather than a couple of quarters.

Survey what your system can emit. Pick the smallest insertion point that tests the value. Write the boundary contract before the model exists, run it in shadow mode against real traffic, and release it proposing rather than acting.

And if the survey says the platform cannot carry it, treat that as the project rather than an obstacle to route around. The teams that get retrofits working are usually the ones who were willing to hear that first.

Want the survey run against your system? Talk to our engineers about what it stores, what it emits, and where its seams are, and we will tell you which of the four insertion points is open to you today.

Frequently Asked Questions

How do you add AI to existing software?

Start by surveying what the system can emit rather than by choosing a use case. Establish whether you have event history or only current state, whether data is reachable without going through the UI, and whether your write paths can accept a value from a non-human caller. Then pick the smallest insertion point, define the boundary contract, run it in shadow mode, and release it behind human approval.

Where should AI be inserted into an existing application?

There are four places, ordered by blast radius: the read side where nothing is written, beside an existing write behind an approval control, replacing an existing rule, and a new surface alongside the system. Start at the read side, because it is the only one where being wrong costs nothing while you learn how the model behaves on your real data.

Can you add AI to a legacy system without rewriting it?

Often yes, if the system can expose its data through something other than a screen and has at least one clean boundary to insert into. Where it cannot, the usual middle path is to modernize only the slice the AI needs, extracting that entity with an event log and a proper API while leaving the rest alone.

What data do you need to add AI to an existing system?

Timestamped history of what changed, not just current state, plus one agreed source of truth per fact and programmatic access to both. Systems that overwrite in place can support classification and extraction on the current record, but not anything that has to learn from what happened over time until history is recorded or reconstructed.

What is shadow mode and why does it matter for a retrofit?

Shadow mode runs the model on real production traffic while its output goes nowhere except a log, where it is compared against what the system or a person actually did. It is the only way to catch training and serving skew, measure the disagreement rate against current behavior before users feel it, and find the confidently wrong cases on your own data.

What are the biggest risks when retrofitting AI into a working system?

The ones named in the ML technical debt literature: entanglement, where changing one input shifts behavior everywhere; undeclared consumers, where reports and routines start depending on a prediction without saying so; hidden feedback loops, where the model changes the data it will next be trained on; and boundary erosion, where glue code makes the model impossible to remove. An explicit, versioned boundary contract mitigates all four.

How do we know if we should modernize before adding AI?

Look for these signals: data is only reachable through a screen export, business logic lives in the UI layer, no event history exists or can be reconstructed, the framework no longer receives security updates, two systems disagree about core records, or any change needs a coordinated multi-team release. Three or more and the AI project is a modernization project with an AI goal attached.

How long does it take to add AI to an existing application?

The survey is usually two days. A read-side feature on a system with reachable data is typically weeks, and a proposal-behind-approval feature is longer mostly because of the write path work rather than the model. Where history has to be reconstructed or a slice modernized first, that is a separate project with its own timeline and its own payback.

Ready to Transform Your Warehouse?

Get a free, detailed estimate for your custom WMS solution

Written by

Founder & Director, Rorix Technologies

Renish co-founded Rorix Technologies and drives the engineering and delivery culture across the organization. Beyond engineering, he leads the company's sales, finance, and HR operations, building the infrastructure that lets the team focus on shipping quality software. With deep hands-on expertise in architecture and team building, he ensures every project lands on time to the quality standards clients demand.

View full profile

Related articles