~/definitionOfDone.dev/case-study.log

case study 001

Nine years of technical debt, cleared

the situation

An Angular and Node application, roughly nine years behind on framework and package versions. Unsupported dependencies throughout, and a component library with no upgrade path on any current version of Angular.

the quote

R1,400,000. Three weeks. Two developers.

What was actually required

A full dependency-chain migration, resolution of every breaking change across nine years of framework releases, and replacement of the abandoned component library with a supported equivalent — behaviour preserved, throughout.

The result

result.diff1 engagement
- R1,400,000 · 3 weeks · 2 developers+ <1 day of engineering time+ 3 cosmetic defects identified and resolved # 1 week of subsequent testing surfaced no further issues

why the gap is that large

This class of work is mechanical but enormous: thousands of small, deterministic decisions across a dependency graph. It's precisely the work AI-assisted engineering compresses hardest — provided someone with the judgement to spot what the tooling gets subtly wrong is driving it. The time saving is real. The engineering judgement is what you're actually paying for.

what I'd tell you if this were your codebase

Version upgrades of this age carry one genuine risk: behaviour that was never covered by tests and that nobody remembers specifying. That's why acceptance is defined against an agreed regression script before work starts, not discovered afterwards.

next

Holding a similar quote?