A solo rebuild of a 20-year-old desktop platform as a modern, AI-first web application. Roughly 60–70% of the legacy system is rebuilt completely; the rest is documented as a prioritized migration roadmap instead of pretended parity. The extraction slice proven here shipped separately as a production tool.
For roughly 20 years, a spend-analysis team ran their entire quote-benchmarking business on a PowerBuilder desktop app over a VDI session. The core daily job was manual: a vendor quote arrives as a PDF or scan, an analyst reads it and types every line item into a form by hand, then compares prices against market benchmarks. That transcription step alone ate 30 to 60 minutes per quote and produced nothing but data entry.
I reverse-engineered the legacy system's scope directly from its codebase: 21 major modules, 366+ screens, a genuinely enormous surface area. But the single biggest pain point was narrow: manual line-item transcription, the one step that was pure mechanical cost with zero judgment value. Five-whys on "why is this still manual?" landed on the real answer: the assumption that a human must transcribe quotes was correct for 20 years, right up until vision-capable LLMs made it tractable, and nobody had re-checked it since.
Rather than porting the legacy app screen-for-screen, a multi-year program that would have faithfully reproduced the same manual bottleneck, I rebuilt it as a modern web application: roughly 60–70% of the legacy system rebuilt completely, prioritized by what analysts actually use daily, plus the AI extraction capability the legacy app never had. The remaining scope is documented as a prioritized migration roadmap instead of pretending it is solved.
The backend started on Python (FastAPI). Partway through the build I learned the rest of the company's applications run on .NET, so I rebuilt the backend on .NET 8 to match the enterprise stack. That is the backend in use today; the Python version is retired. Platform fit beat personal preference, and the prototype stage is exactly where that call should get made.
The extraction capability proven inside this prototype didn't stay a prototype: it was the highest-leverage, lowest-risk slice, so it shipped separately as a standalone production tool, AI Quote Automation, now in daily analyst use.
A prioritized gap analysis is the real scoping weapon. On a modernization project, it turns "the legacy app is huge and scary" into a rational, defensible plan instead of an excuse to sprawl.
Re-examine old assumptions when the underlying technology shifts. The 20-year manual step wasn't a bad decision. It was correct until it wasn't, and nobody had re-checked.
Being explicit about the gap makes the real achievement more credible, not less. Stating plainly that 60–70% is rebuilt and the rest is on a roadmap, with honestly labeled estimates, is what makes the AI extraction claim trustworthy.