· Avoid a Rewrite  · 4 min read

The rebuild that never happened

A B2B SaaS founder was facing a $250,000+ platform rebuild. Before committing, they asked for a second set of eyes. What we found changed the picture entirely.

A founder reached out to me a while back with a decision hanging over them. Their platform had been built by an agency. The agency was gone. A new development team had come in, looked at the codebase, and come back with a verdict: the system was fundamentally broken and needed to be rebuilt from scratch.

They had a quote. Six figures. A timeline of nine to twelve months. A pitch about how the new version would be cleaner, faster, more maintainable.

The founder wasn’t technical. They had no way to evaluate whether any of this was true. What they knew was that their product had paying customers, a working roadmap, and no appetite for standing still for a year while their team rebuilt something they already had. But they also knew they couldn’t keep operating a system their developers refused to maintain.

Before signing off on the rebuild, they asked if I’d take a look.

What the review found

The codebase had a reputation problem, and some of it was earned. The original agency had built the platform using a heavily abstract, schema-driven approach. Controllers and UI components were generated at runtime through reflection. It was technically ambitious, and in certain areas genuinely clever. It was also extremely hard to navigate if you hadn’t built it yourself.

The maintenance team’s frustration was real. Changes that should have taken days were taking weeks. The indirection made it difficult to understand where behaviour actually lived, which made every modification feel risky. Features were being started and quietly abandoned. The team had concluded that the complexity was baked in and irreversible.

That conclusion, though understandable, wasn’t accurate.

The core domain logic was sound. The data model was reasonable. The parts of the system that handled the actual business problems the product existed to solve were not broken — they were just surrounded by layers of abstraction that made them difficult to reach and harder to trust.

A rebuild would have thrown away the working parts along with the frustrating ones. It would have cost the best part of a year to recreate, at significant expense, something the founder already owned.

What happened instead

The work that followed wasn’t a rewrite. It was a structured effort to make the existing system workable.

The first priority was understanding and documenting how the architecture actually functioned — not to validate it, but to give the development team a reliable map. A significant portion of their difficulty came not from the complexity itself, but from operating without any guide to it.

From there, the highest-friction areas were tackled incrementally. Places where the system was being extended in ways it wasn’t designed to support were corrected. Infrastructure that had accumulated beyond what the product actually needed was simplified. The team learned to navigate the architecture rather than fight it.

The hosting infrastructure turned out to be carrying significant unnecessary overhead. By the time the stabilisation work was complete, monthly infrastructure costs had dropped by around eighty percent.

The outcome

Feature delivery, which had stretched to months for even modest changes, returned to a pace of weeks. The rebuild conversation stopped. Not because the question was suppressed, but because the team no longer felt the urgency that had been driving it.

The founder avoided somewhere between $250,000 and $400,000 in rebuild costs, plus a year of near-zero feature delivery during what would have been a commercially important period.

What this kind of judgment is actually worth

A developer looking at an unfamiliar codebase will reach for the tools they trust. If the system doesn’t match their mental model of how software should be structured, a rebuild can seem like the rational response. Sometimes it is. Often it isn’t.

The difference usually comes down to whether anyone in the room has seen enough of these situations to distinguish between complexity that is genuinely destructive and complexity that is simply unfamiliar. That distinction is not something you can look up. It comes from having been in similar positions before.

This is what experienced technical oversight provides — not just the ability to build things, but the judgment to know when not to.

    Share:
    More articles

    Related Posts

    View All Posts »