AI legacy modernization: senior AI pods that migrate old code
Senior AI pods that use LLMs to read, document and migrate legacy systems, with tests that prove behavior is unchanged and engineers who review every change.
By the Ryz Labs team · Updated October 2026
Ryz modernizes legacy systems with dedicated AI pod teams of senior engineers who use LLMs to speed up code analysis, documentation and migration, and who review every change before it ships. The pod works in your repos and cloud, alongside your team, and proves each migrated piece behaves like the old one with characterization tests and parallel runs. Every engineer comes from the top 1% of the tens of thousands we interview, on US business hours.
What we build
LLMs are good at reading old code, explaining it, drafting tests and producing first-pass translations. They are not good at knowing which undocumented behavior your business depends on. Our pods use AI for speed and senior engineers for judgment. Typical deliverables:
- Codebase maps. LLM-assisted inventories of programs, call graphs, data flows, batch jobs and dead code, checked by engineers and kept in your repo as documentation.
- Business rule extraction. Plain-English descriptions of the rules buried in COBOL paragraphs, stored procedures or VB6 forms, reviewed with the people who know the business.
- Characterization tests. Tests that capture what the current system actually does, including its quirks, built before any code changes so the migration has a safety net.
- Code migration. LLM-drafted, engineer-reviewed translation from COBOL, PL/I, VB6, classic ASP, .NET Framework, old Java or AngularJS to Java, C#, modern .NET, Python, TypeScript or React.
- Framework and version upgrades. Java 8 to 17 or 21, .NET Framework to modern .NET, Python 2 to 3, Spring and Angular major versions, using deterministic tools such as OpenRewrite where they exist and LLMs for the long tail.
- Strangler-fig decomposition. Routing one capability at a time from the old system to a new service behind a facade, so you never depend on a big-bang cutover.
- Data migration. Moving data from DB2, Oracle or flat files to Postgres or cloud warehouses, with change data capture, reconciliation reports and rollback plans.
- Developer assistants for legacy code. Retrieval over your legacy codebase and docs so engineers can ask what a program does and where a field is written.
How an engagement works
- Talk. We review the system's size, languages, interfaces, batch schedule, test coverage, what must not change and the reason for modernizing: cost, risk, hiring or speed.
- Match. We propose a pod scoped to your stack: typically a tech lead, senior engineers who know both the source and target platforms, an AI engineer who builds the migration tooling and a QA engineer, with names and a price.
- Join. The pod works in your repos, CI and standups, with weekly demos of migrated modules passing their tests.
- Grow. You add people to move faster across modules, or your team takes over the remaining migration with the tooling and patterns the pod built.
Week 1 is access and inventory: getting the code, build and test environments running, and starting an LLM-assisted map of the system. Month 1 usually brings a validated system map, a migration plan by module and a first module migrated with characterization tests. Month 3 is a repeatable cadence: modules moving through test, review and parallel run, with reconciliation reports your team signs off on. Timelines depend heavily on scope and the state of the existing code and environments.
The stack our teams work in
| Layer | Tools we use | Notes |
|---|
| LLMs | Anthropic Claude and OpenAI GPT models, via AWS Bedrock or Azure OpenAI | Run in your tenancy so source code stays under your controls. |
| Coding agents | Claude Code, GitHub Copilot, custom migration scripts | Agents draft; engineers review every diff. |
| Deterministic refactoring | OpenRewrite, .NET Upgrade Assistant, language parsers and AST tools | Preferred over LLMs wherever a rule-based recipe exists. |
| Cloud modernization tooling | AWS Transform, AWS Mainframe Modernization, Azure migration tooling | Useful accelerators; we evaluate them against your code. |
| Target platforms | Java and Spring Boot, C# and .NET, Python, TypeScript, React, Postgres | Chosen with your team's skills in mind. |
| Testing and data | JUnit, xUnit, pytest, Playwright, Debezium, custom reconciliation jobs | Old and new outputs compared record by record. |
| Delivery | GitHub Actions, Azure DevOps, Terraform, Kubernetes | Feature flags and routing for gradual cutover. |
How we keep migrated systems correct
Modernization projects fail when the new system is subtly different from the old one and nobody notices until month-end. AI raises the speed and the risk. Our pods guard against these failure modes:
- Plausible but wrong translations. LLM output compiles and reads well while changing behavior. Every generated change goes through characterization tests and a senior engineer's code review. Nothing merges on model output alone.
- Numeric differences. COBOL packed decimals and fixed-point arithmetic do not map cleanly to floating point. We use decimal types, test rounding on boundary values and reconcile totals against the old system.
- Hidden behavior. Date handling, character encodings such as EBCDIC, sort orders and implicit truncation often carry business meaning. Characterization tests capture them before they get "fixed" by accident.
- Batch and integration side effects. Legacy jobs write files other systems consume. We map every interface and run old and new side by side, comparing outputs, before switching consumers.
- Big-bang cutovers. We migrate in slices behind routing and feature flags, with a rollback path for each slice.
- Losing the knowledge. If the only documentation is the old code, the new system needs better. Extracted business rules and system maps live in your repo and are reviewed by your subject-matter experts.
- Code exposure. Source code is sensitive. Model calls run through your Bedrock or Azure OpenAI tenancy under your data policies.
For financial institutions weighing this work, see our guide to AI legacy modernization for financial institutions. For modernization without the AI angle, see legacy application modernization. Examples of production systems our pods have shipped are on the case studies page.
Team shapes and cost
Typical Ryz cost is $7,000 to $15,000 per engineer per month. Mid-level engineers run $7,000 to $10,000, seniors $10,000 to $15,000 and leads $15,000+, quoted per team.
- Assessment pod: tech lead + 2 senior engineers. $15,000+ plus $20,000 to $30,000 is roughly $35,000 to $45,000+ per month. Good for mapping the system, extracting rules and migrating a first module.
- Migration pod: about 7 engineers, including a tech lead, source-platform and target-platform engineers, an AI tooling engineer and QA. At senior rates, 7 × $10,000 to $15,000 is about $70,000 to $105,000 per month, plus the lead premium. Good for a steady module-by-module migration.
- Senior engineers on your team. One to three seniors at $10,000 to $45,000 per month, when your team leads the migration and needs hands that know the old and new platforms.
Project cost is team size × duration × monthly rate. A migration pod at about $90,000 per month for six months is roughly $540,000. Quotes are scoped per team, and you get a plan, a price and the names of the people before you start.
Dedicated team or staff augmentation?
Choose an AI pod team or a dedicated development team when you want one group to own a scoped migration with clear milestones. Choose staff augmentation when your engineers lead the work and need senior Java developers, .NET developers or AI engineers working on your team.
When Ryz isn't the right fit
If you need a board-level transformation program or a strategy engagement, a large consultancy fits better. If you want a proprietary automated conversion product with a fixed per-line price, talk to a platform vendor. If you need follow-the-sun coverage on European or Asian hours, use a global network.
Related
FAQ
How much does AI legacy modernization cost?
Typical Ryz cost is $7,000 to $15,000 per engineer per month. An assessment pod of a lead and two seniors is roughly $35,000 to $45,000+ per month. Total cost is team size × duration × monthly rate, and you get a scoped plan, price and names before you start.
How fast can a modernization project start?
After the scoping call we propose a team. Most of the timeline depends on scope and your onboarding, especially access to source code, build environments and test data.
Can AI convert our COBOL to Java automatically?
AI can draft much of the translation and speed up analysis, but it cannot be trusted alone. Correctness comes from characterization tests, parallel runs and engineers reviewing every change.
Does our source code get sent to a model provider?
Our pods run model calls through AWS Bedrock or Azure OpenAI in your own tenancy, under your data policies, so you control where the code is processed.
Do we have to rewrite everything at once?
No. We migrate in slices with a strangler-fig approach, routing one capability at a time to the new system, with a rollback path for each slice.
Questions we didn't answer? Email info@ryzlabs.com.