Hiring & Outsourcing

Software project rescue: what to do when a build is failing

A failing project is usually recoverable, but not by pushing the same team harder or by ordering a rewrite on instinct. The sequence that works is: secure your access, get an independent audit of what exists, then decide what to keep based on evidence.

Hiring & OutsourcingUpdated September 21, 2026By the BBR engineering team

Short answer: stop adding features, get administrative control of the repository, hosting, domains and store accounts, and commission an independent code audit before deciding anything else. Most troubled projects turn out to need stabilization and a partial rewrite of one weak area, not a fresh start. A full rewrite is justified only when the audit finds specific, structural reasons for it.

Signs a project is failing

One of these on its own is a bad month. Several together, persisting for more than a few weeks, mean the project will not recover without a change.

What you can see without reading code

  • No working software to open. Progress is reported in percentages, screenshots or slides, and there is no staging link you can use yourself.
  • "90% done" for weeks. The remaining 10% never shrinks, which usually means the hard parts were postponed.
  • Deadlines move without a revised plan. Each slip is explained; none comes with a new date that is then met.
  • Fixes break other things. Every release reintroduces old bugs, a sign that there are no automated tests and the code is tightly tangled.
  • The team has changed and nobody said so. New names appear in messages, and answers about earlier decisions become vague.
  • Replies slow down and get shorter. Questions about progress are answered with questions about payment.
  • Invoices arrive on time; demos do not.
  • You are asked to pay ahead of the schedule to "unblock" work.

What a technical look reveals

  • You do not have access to the repository, or it was last updated weeks ago while work was supposedly continuing.
  • The code lives in the vendor's accounts, and so do hosting, the domain or the app store listing.
  • Nobody can explain how to deploy the product, or deployment means one person copying files by hand.
  • There is a single environment: changes are tested on the live product.
  • Secrets such as API keys and database passwords are written into the code.
  • There are no database backups, or nobody has ever tried restoring one.

If you recognize the first list but cannot check the second, that gap is the first thing to fix.

Week one: secure access and stabilize

Do this before any confrontation with the current vendor and before choosing a new one. The aim is that whatever happens next, the product and its data remain under your control. Stay within what you own and what your contract allows; if there is any doubt about either, ask a lawyer first.

AssetWhat to obtainWhy it matters
Source code repositoryOwner or admin rights in an organization your company controls; a full clone with history stored somewhere separateWithout the code there is nothing to rescue
Hosting and cloud accountsAccount ownership or admin access; billing in your nameWhoever pays the bill can switch the product off
DatabaseA recent backup that you hold, and confirmation that it restoresUser data is usually the hardest thing to recreate
Domain registrar and DNSThe registrar account in your company's name; note the renewal dateLosing the domain takes email and the product with it
Apple Developer and Google Play accountsAccount holder role with your company; if the app is published under the vendor's account, request an app transferStore listings, reviews and subscribers are attached to the account
App signing keys and certificatesAndroid upload keystore and passwords, iOS certificates and provisioning profiles, push notification keysWithout them, shipping an update can range from awkward to impossible
Third-party servicesOwner access to payments, email and SMS, analytics, maps, authentication, error monitoring, AI APIsEach holds data and configuration the product depends on
Secrets and environment configurationThe production environment variables, stored in a password manager your company ownsThe code does not run without them
Design filesOwnership of the design workspace, or exported source filesRebuilding screens from screenshots is slow
Documentation and historyExports of the task tracker, specifications and chat decisionsIt is the only record of why things were built as they were

Once you hold admin rights, add your own administrator before removing anyone, and do not revoke the old team's access until you have decided how the relationship will end. After the handover is complete, rotate every password, key and token they could see.

In the same week, freeze features. Only fixes for problems that harm live users should go out. New work on an unstable base makes the audit harder and the eventual bill larger.

Week two: the code audit

An audit is an independent engineer or team reading the code, building it, running it and reporting what they found. Independence matters: the current vendor has reasons to say everything is fine, and a prospective new vendor has reasons to say everything must be rebuilt. Ask for findings with evidence, such as file references and reproduction steps, so that a third party could check the conclusions.

What a good audit examines

AreaQuestions it answers
Build and runCan a new developer get the product running from the repository and the documentation? How long does it take?
Completeness against scopeWhich agreed features work, which partly work, which do not exist? This is often the first honest progress figure the founder has seen.
Architecture and structureIs the code organized in a way that another team would recognize? Is business logic separated from interface code, or scattered through it?
Data modelDo the database tables reflect the business correctly? Are there constraints, migrations and indexes? Mistakes here are the most expensive to fix later.
SecurityHow are authentication, authorization, secrets, input validation and personal data handled? Can one user read another's data?
DependenciesAre frameworks and libraries current, supported and appropriately licensed? Is anything abandoned?
TestsAre there automated tests, do they run, and do they cover the workflows that matter?
Deployment and operationsIs there a repeatable deployment, separate staging and production, backups, logging and error monitoring?
PerformanceAre there obvious problems at current usage, such as slow queries or screens that load everything at once?
Store and platform complianceFor mobile apps: will the next submission pass current store requirements, such as target API level, privacy declarations and billing rules?
Third-party and IP hygieneIs there copied code, a purchased template or a vendor-owned framework that limits what you can do with the product?

What you should receive

  • A written report in plain language, with a technical appendix
  • Findings ranked by severity: critical, important, minor
  • A feature-by-feature status against the original scope
  • A recommendation: fix, partial rewrite or full rewrite, with reasons
  • An effort estimate for the recommended route and for at least one alternative
  • A list of what could not be assessed and why

Pay for the audit as a separate, fixed-fee piece of work. It keeps the auditor's incentives clean, and the report is yours to take to any team. How a fixed-fee assessment fits with the pricing of the work that follows is explained in choosing between fixed price and time and materials.

Fix, partial rewrite or full rewrite

This is a decision about economics, not pride or blame. The question is which route reaches a stable, maintainable product for the least total cost and risk.

CriterionFix what existsPartial rewriteFull rewrite
Technology stackCommon and currentCommon; one layer outdated or badly chosenObsolete, obscure, or a platform that cannot do what the product needs
Data modelSoundMostly sound; one area wrongWrong at the core, with everything built on top of it
StructureRecognizable, if untidyGood in places; one module tangledNo separation of concerns anywhere; every change breaks something else
Builds and runsYesYes, with effortNobody can produce a working build
Security findingsIsolated and fixableConcentrated in one area, such as authenticationThroughout
Share of scope that worksMost of itAbout half, with the rest blocked by one weak areaLittle, or it demonstrates well and fails in real use
Live users and dataYes; continuity mattersYes; replace parts behind a stable interfaceNone or few, or the data can be migrated cleanly
Estimated cost to stabilizeWell below the cost of rebuildingBelow rebuilding once the weak part is replacedClose to or above the cost of rebuilding

Decision rules

  • Default to fixing. Working code that users rely on contains knowledge that a rewrite has to rediscover, one bug at a time.
  • Rewrite the part, not the whole, when the problems cluster: a backend that is sound behind a mobile app that is not, or the reverse. Replace the weak part and keep the rest.
  • Rewrite fully when the audit finds structural reasons in at least two of: stack, data model, structure, security. Reuse everything that is not code: designs, specifications, content, data and what you have learned about users.
  • Be wary of a rewrite recommendation with no specifics. "The code is a mess" is an opinion. "User passwords are stored unhashed, there are no foreign keys, and the payment logic is duplicated in four places" is a finding.
  • Be equally wary of sunk cost. What you have already spent is not a reason to keep code that will cost more to repair than to replace.

If you do rewrite, write the scope this time with priorities and testable criteria. The software project brief template is a starting point, and the audit's feature status list gives you most of the content.

Dealing with the previous vendor

How you handle this affects how much you recover. The practical aim is a complete handover, not a verdict on who was at fault.

  1. Read the contract first. Look for IP assignment, what happens on termination, notice periods and payment for work in progress. The guide to development contract clauses explains what each should say. If the wording is unclear or the sums are significant, involve a lawyer before you send anything.
  2. Keep communication written, factual and calm. Accusations produce defensiveness and delay. A specific list of what you need produces results more often.
  3. Separate the handover from the dispute. You can request the repository, credentials and documentation now and leave disagreements about quality or refunds for afterwards.
  4. Settle what is fairly owed. If delivered work is unpaid, paying it, possibly against simultaneous handover, is usually faster and cheaper than a standoff. Offering a few paid hours for a handover call is often money well spent.
  5. Send a handover checklist. Repository with full history, environment configuration, signing keys, third-party accounts, design sources, database backup, deployment notes and a list of known issues.
  6. Verify before you close. Have your new team confirm that the product builds and deploys from what was handed over. Then rotate credentials and remove access.
  7. If the vendor has disappeared or refuses, gather what is already in your name, recover what you can from installed apps, servers you control and backups, and take legal advice on the rest.

Sometimes the right outcome is that the original vendor stays. If the audit shows sound code and the real problem was scope or management, a reset with a revised plan, visible milestones and an independent reviewer can cost less than a transition.

How to avoid repeating it

Failed projects rarely fail for purely technical reasons. The audit report usually points back to a handful of structural gaps, and each has a simple countermeasure.

  • Repository, hosting, domains and store accounts are in your company's name from the first day, with the vendor given access
  • Code is pushed to your repository continuously, not delivered at the end
  • The scope has priorities and acceptance criteria that can be tested
  • Payments follow deliverables you can open on a staging environment
  • There is a demo of working software every one to two weeks
  • A written update each week covers what was done, what is next, what is blocked and the budget used
  • An independent engineer reviews the code at a midpoint milestone, not only when trouble starts
  • Deployment, environments and backups are documented as deliverables
  • The contract covers IP assignment, termination and handover, and a lawyer has read it
  • One person on your side can make product decisions within a day

When choosing the next team, ask how they approach code they did not write, and listen for a process instead of a verdict. The questions worth asking a development agency cover ownership, handover and what happens if you part ways. Budget for the period after the rescue too; the guide to ongoing app maintenance costs gives planning figures.

How BBR approaches a takeover

BBR can join or take over existing codebases. The engagement starts with a fixed-fee assessment that produces a written plan, as described on the how we work page, and you are free to take that plan elsewhere. The work that follows depends on the findings: a defined stabilization project under custom software development, or continuing development and maintenance as a monthly product engineering engagement. If the stack is outside what BBR works in, we will say so at the start instead of learning on your budget.

Questions

Frequently asked
questions.

Should I rewrite the project from scratch?

Only when an audit gives specific reasons: a platform that cannot do what the product needs, a data model that is wrong at its core, no usable structure, or security problems throughout. Rewrites are slower and more expensive than they first appear because the old code contains many small decisions nobody wrote down. If the product has users and mostly works, fixing it or rewriting the worst part is usually the better economic choice.

How long does a code audit take?

For a typical MVP-sized product, a web or mobile app with a backend, a useful audit takes roughly three to ten working days, depending on the size of the codebase, whether it can be built and run, and how many platforms are involved. The output should be a written report with findings ranked by severity and a recommendation with an effort estimate, not a verbal opinion.

What if the previous developer will not hand over the code?

First check what your contract says about ownership and handover, and what you have paid for. Make requests in writing and stay factual. If money is owed for work that was delivered, settling it is often the quickest route to the repository. If the vendor still refuses, speak to a lawyer before taking any other step. In the meantime, secure everything that is in your own name, such as the domain, store accounts and payment accounts. This is general information, not legal advice.

Can a new team take over code written by someone else?

Yes, and it is routine when the stack is a common one and the code can be built and run. The new team needs a period to read the code, set up environments and make a few small changes before it can estimate reliably. Expect the first weeks to be slower than you would like. Takeover becomes difficult when the stack is obscure, there is no working build, or the code depends on a platform that belongs to the previous vendor.

Does BBR take over existing projects?

Yes. BBR can join or take over an existing codebase, starting with a fixed-fee assessment that results in a written plan. The technologies BBR works in are JavaScript and TypeScript, React, Next.js, Node.js, PostgreSQL, React Native with Expo, and Capacitor. If your project is built in something else, such as Flutter or fully native Swift or Kotlin, a team that specializes in that stack is a better choice for an audit.

Your next move

Stuck with an unfinished build?
Start with an assessment.

Tell us what exists, what stack it uses and where it is stuck. BBR can review an existing codebase for a fixed fee and give you a written plan before you commit to anything further.

Request a code review