An online education provider cut legacy migration effort by 55–60% with AI-assisted modernization

Share this content:
Client:
Confidential client
HQ in Baltimore, MD, USA
100+ employees

A Baltimore-based provider of affordable online college courses accepted for credit by partner institutions

Download PDF
Industries:
No items found.
Partners:
No items found.
Services:

Summary

An online higher education provider with more than 100 employees relied on a legacy ColdFusion application that had no functional or technical documentation. Maintenance effort was rising, ColdFusion expertise was growing scarce, and enhancements were taking longer to deliver. The client's leadership decided to modernize the application to Next.js with zero disruption to users, and it engaged Marlabs to accelerate the work with AI.

Two engineers and two quality assurance (QA) specialists used Claude Code, Anthropic's agentic coding tool, to decode the codebase, plan each feature's migration, and build more than 1,000 automated tests. A person reviewed and approved the AI's output at every stage. In 2.5 months, the client moved 7 of its 17 features to user acceptance testing (UAT) with zero database changes and cut effort per feature by 55–60%.

Challenge

The client's core application ran on ColdFusion, and nobody had documented how it worked. Without functional specifications or technical records, there wasn't a reliable reference for how the application behaved, and every change started with someone reading through legacy code to understand what it did. As ColdFusion expertise became harder to find, maintenance effort climbed and enhancement cycles slowed.

Leadership wanted to move the application to Next.js without disrupting the people who depended on it. To do that, the client needed a governed way to understand the undocumented code and plan the migration before rebuilding anything. It also needed to rebuild features quickly and back each one with automated tests so that quality held steady as each feature moved to the new stack.

Solution

Marlabs paired two engineers and two QA specialists with Claude Code to rebuild the application one feature at a time. The work followed the AI Fluency 4D Framework from Anthropic, and a person reviewed and approved the AI's output before anything moved to the next stage. A manual feedback loop improved the AI's results over time as the team progressed through four phases.

Code Discovery and Documentation

Marlabs used Claude Code to interpret the undocumented ColdFusion codebase and trace how each part of the application worked. From that analysis, the team created the application's documentation from zero. Engineers reviewed what the AI produced and built a feature inventory that defined the 17 features in scope for the migration.

Migration Specs and Planning

For each feature, Claude Code drafted a migration specification and a plan for rebuilding it in Next.js. The team reviewed and approved every spec and plan before the build began. That checkpoint kept people accountable for design decisions and gave the engineers and QA specialists an approved definition of each feature before they wrote any code.

Next.js Build and Test Automation

Our team worked with Claude Code to rebuild each feature in Next.js from its approved spec. The team also created more than 1,000 automated tests that span API, user interface (UI), and unit testing as well as Playwright end-to-end testing. That test suite gave the team a dependable way to verify each rebuilt feature before it moved to UAT.

Governed Rollout and Continuous Learning

Marlabs released completed features behind feature flags, which let the client introduce each one without disrupting users. The rollout required zero database changes, and business operations continued without interruption. Reviewers' corrections fed back to the AI through the manual feedback loop to improve each iteration, and the team turned those lessons into reusable AI guardrails for future work.

Results

In 2.5 months, a team of two engineers and two QA specialists helped the client move 7 of its 17 features onto a modern Next.js stack and into UAT. Compared with a traditional migration, the client cut effort per feature by 55–60%. Each feature now takes about 7–11 person-days instead of the 15–24 person-days a traditional approach would have required.

An application that once had no functional or technical records now has documentation the team created from zero. More than 1,000 automated API, UI, unit, and Playwright end-to-end tests also protect quality as the remaining features move forward. Feature-flag releases and zero database changes kept the business running throughout the migration.

Because a person reviewed the AI's output at every stage, people stayed accountable for quality from discovery through release. The reusable AI guardrails and delivery model the team established now give the client a repeatable approach for its future modernization work.

Impact

The client modernized its legacy application faster and with less effort while keeping people in control of every decision:

  • A 55–60% reduction in effort per feature (from about 15–24 to about 7–11 person-days)
  • Progress to UAT on 7 of 17 features in 2.5 months with a four-person team
  • More than 1,000 automated API, UI, unit, and Playwright end-to-end tests
  • Documentation created from zero for a previously undocumented application
  • Uninterrupted operations through feature-flag releases and zero database changes
  • Reusable AI guardrails and a repeatable delivery model for future modernization