Back to Blog
April 11, 20262 min read

Legacy Migration with AI Agents: Real Numbers, Not Marketing

A PHP → Kotlin migration pilot for a fintech company: 33 hours instead of 280–400. An honest breakdown of where the agent gives you ×8–12 and where it doesn't speed things up at all.

AILegacyMigration

Legacy Migration with AI Agents: Real Numbers, Not Marketing

I just finished a PHP → Kotlin migration pilot for a fintech company. 24 modules, full scope. Here are the numbers — without the "100× faster" rounding and other marketing.

Fact: 33 hours instead of 280–400.

That's ×8–12 in effort. Breakdown: 67 hours of AI agents (Claude Code working autonomously), 13 hours of operator time (prompting, architectural decisions), 20 hours of a senior reviewer (two rounds of code review). Total human contribution: 33 hours. Counting AI hours too: 100.

The classic estimate for the same scope: 280–400 hours with 1–2 developers over 3–4 months.

What's Important to Understand

The ×8–12 speedup is for migration — for generation-from-scratch, where the agent writes new code from a spec and reference patterns. This is the most favorable scenario for AI: lots of repeating structure, clear rules, a well-defined input (PHP code) and output (Kotlin code).

For refactoring into someone else's style (taking working Kotlin and rewriting it to fit the client's architectural conventions) the speedup is more modest — ×3–4.5. Because every change has to preserve the wire contract, and wire-format edge cases aren't caught by static review — only by an actual run.

For post-QA fixes — ×4–10. The agent parses an Allure report in minutes, localizes the bug, and writes the fix + test in 15–45 minutes. In the classic flow, one such iteration is half a day to a day (including waiting on the reviewer).

What Doesn't Speed Up

Architectural decisions. Choosing "how to handle errors — Either or Raise" is a human decision. The agent will execute any choice, but a human has to make it.

Wire-format edge cases. Small discrepancies between PHP and Kotlin serialization (field order, null vs missing, date format) only surface on the staging environment. The agent fixes them fast, but it doesn't predict them.

The initial skill extraction. A week studying the reference repos and creating 15 skills is manual work. But it's done once.

Want to learn more about AI and automation?