A Baltimore-based provider of affordable online college courses accepted for credit by partner institutions
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%.
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.
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.
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.
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.
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.
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.
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.
The client modernized its legacy application faster and with less effort while keeping people in control of every decision: