"Let's just rewrite it" is one of the most expensive sentences in software, and it gets said far more often than it's actually the right call. A codebase that feels slow, fragile or embarrassing to work in doesn't automatically mean it's broken beyond repair — it often means specific, identifiable parts of it have rotted while the rest is still doing its job fine.
The audit we do before recommending anything is deliberately narrow: where does this system actually fail — performance under real load, specific bugs, security gaps, a genuine inability to add new features — versus where does it just feel unpleasant to work in. Those are different problems with different fixes, and conflating them is how a two-week refactor turns into a year-long rewrite that quietly doubles in scope.
Slow doesn't always mean "wrong architecture" — sometimes it means three unindexed database queries that a day of targeted work would fix. "We can't add features" doesn't always mean "start over" — sometimes it means one particular module has become a bottleneck and can be isolated and rebuilt while everything around it keeps running. Even genuinely dated code, if it's stable and well-understood, is often cheaper to incrementally modernize than to replace outright, because a rewrite throws away every edge case the old system quietly learned to handle over years of production use.
A rewrite is the right call less often than it's requested — usually when the underlying architecture actively fights every new requirement, when the technology is genuinely unsupportable (end-of-life language versions, abandoned frameworks), or when the system is small enough that a rewrite's risk is low and its benefit is high. Outside of those cases, targeted modernization almost always beats a from-scratch rebuild on cost, risk and time to value.
The audit itself is a small, fixed-scope engagement — not a sales pitch for a bigger project. Sometimes it concludes that a rewrite genuinely is the right answer, and we say so. More often it finds a shorter path to the same outcome, and that's the answer that actually serves the business, even if it's a less exciting one to sell.