Software Project Rescue: $2,500–$20,000 Build Costs

Matt Brody11 min read
A small-business owner in her forties and an operations manager in his fifties review a laptop and a spread of project

Start with the recovery bill, not another rewrite pitch

My non-AI build ranges run from $2,500–$20,000, with delivery in 1–6 weeks depending on scope. For software project rescue, that isn't a quote to repair any broken application. It's the starting envelope for a defined recovery build after I establish what can stay.

Here's the arithmetic I'd put in front of you before discussing a new stack:

Recovery investment = scoped build + migration work outside that scope.

Ongoing cost = hosting + API usage + maintenance + any subscriptions you still need.

I separate those because a cheap development quote can hide an expensive move. Rebuilding screens doesn't automatically include cleaning customer records, transferring attachments, or running two systems during the switch.

My published build ranges are:

Build scopeFixed-price rangeDelivery window
Simple: focused CRUD app or basic dashboard$2,500–$10,0001–2 weeks
Medium: multiple features, integrations, user roles$5,000–$15,0002–4 weeks
Advanced: real-time features, multi-tenancy, complex rules$10,000–$20,0004–6 weeks

These are scope bands, not separate charges to add together. For AI features within these defined build scopes, I use a 1.25 pricing multiplier, making the overall envelope $2,500–$25,000; I wouldn't add them to a rescue unless they solve a defined business requirement. That's my pricing heuristic, not a general rule for what AI costs. I wouldn't apply it blindly to retrieval over customer data, background processing, audit logs, model/provider fallbacks, evals, or PII constraints—I'd scope those requirements first.

A replacement I built shows the payback calculation clearly. The business was spending about $30,000 a year on Kixie, while limited customization and clunky workflows kept getting in the way.

I built a custom power dialer in React for $10,000. It supports single-lead calling or up to 10 simultaneous lines, unlimited users, rep-assigned lead lists, SMS templates, voicemail drops, analytics, and Zapier webhooks for follow-ups and updates to other systems.

The arithmetic: $30,000 ÷ 12 = $2,500 in monthly licensing; $10,000 ÷ $2,500 = about four months to pay back the build against the replaced licensing. It shipped in weeks, was owned outright, and carried zero monthly licensing fees. That doesn't mean hosting or communications usage disappears.

That was a replacement, not a repair of inherited code. The relevant lesson for software project rescue is narrower: I could name the operational problem and the bill being removed. My breakdown of alternatives to Kixie covers that own-versus-rent decision.

If your existing product has no subscription bill to eliminate, I wouldn't invent that payback. I'd compare the remaining recovery cost with the cost of delays, manual work, and a credible alternative.

Three facts decide whether the old code earns its place

The money you've already paid is gone. I wouldn't authorize another payment just to make the first one feel less painful.

For software project rescue, I price what remains—not the percentage somebody says is finished. “It's 90% done” means nothing without a working deployment and tests against the jobs your staff need to do.

Can I reproduce and release it?

I need the source control repository, setup instructions, dependency versions, and access to the deployment accounts. Then I need to build the application in a separate staging environment.

If it only runs on the previous developer's laptop, there's recovery work before feature work. A working production site is useful evidence, but it isn't proof that another developer can safely change it.

Can I trust the data and permissions?

I check whether records remain consistent, whether users can access only what they're allowed to access, and whether backups can actually be restored.

A dated interface doesn't justify throwing away a sound Postgres database. Cross-customer data exposure, on the other hand, is a release blocker—not a cosmetic bug to put behind the next feature request.

Can I isolate the failure?

A broken export with otherwise working workflows is a different job from an application where billing, permissions, and customer records all depend on contradictory rules.

Here's the salvage test I'd use:

DecisionEvidence I'd wantWhat I'd preserve or change
KeepRequired workflows pass; deployment is repeatable; permissions holdWorking features, data, and supported dependencies
FixFailure is reproducible and bounded; surrounding behavior can be testedRepair the failing component and add regression tests
Replace one partA module blocks progress but has clear inputs and outputsSwap that module while retaining the rest
RebuildRequired behavior can't be supported safely without changing the foundationRebuild the smallest usable product, with a data transition plan

Old code isn't automatically bad code. Untested assumptions are the problem.

I'd keep the existing product when its core workflows work, its dependencies remain supportable, and fixing the remaining gaps costs less than replacing those workflows and moving the data. A developer preferring Next.js over your current framework isn't a business case for a rewrite.

Show a four-row salvage decision matrix with the row labels Keep, Fix, Replace One Part, and Rebuild

Software project rescue pricing: separate build, migration, and running costs

A software project rescue quote should tell you what gets delivered and what you'll keep paying afterward.

I wouldn't accept “everything included” without a written boundary. That phrase falls apart quickly when the first incomplete data export arrives.

Cost lineWhat I'd specifyHow I'd treat it in the budget
BuildRepairs, replacement modules, roles, workflows, acceptance testsFixed quote within the applicable scope band
MigrationRecord types, files, cleanup rules, rehearsal, reconciliation, cutoverExplicitly included or separately identified before signing
HostingApp runtime, database, storage, backups, stagingRecurring operating cost based on the selected setup
APIsCalls, messages, email, payments, other integrationsUsage-based or provider-specific charges, separate from labor
MaintenanceMonitoring, dependency updates, incident response, later changesWritten responsibilities and commercial terms
OverlapOld subscriptions or infrastructure kept during transitionTemporary cost until the agreed shutdown point

I don't have your storage volume, call traffic, or support requirements, so I won't make up a monthly operating total. “You own the code” removes a particular kind of dependency; it doesn't remove infrastructure bills.

For example, a system using Twilio needs a communications usage budget. A system using Stripe needs payment behavior tested, including failures and repeated events. Neither belongs in a vague “integrations included” promise.

A paid assessment can be reasonable when it produces evidence. Elevate Innovations publishes a $1,500 code audit delivered in five business days, including dependency review, an architecture map, and a prioritized roadmap. Brival publishes code and SDLC audits starting at $5,000, scaling with complexity and platform count.

Those are their audit prices, not my recovery build prices. The distinction matters: a report and a repaired application are different deliverables.

I object to months of billed “discovery” that end in a slide deck without a usable scope. A bounded assessment should leave you able to choose repair, replacement, or stopping—even if somebody else does the work.

My breakdown of the inputs behind a build estimate explains how features, roles, and integrations affect the range. For a rescue, I also need to know which of those already work.

Make the first release safe before making it bigger

The cheapest software project rescue isn't necessarily the one with the fewest changed files. It's the one that gets a needed workflow running without creating a second failure during the move.

I'd stage the recovery around observable exit conditions.

Stage 1: Preserve what exists

Before edits, I'd capture the repository, deployment configuration, database backup, and an inventory of connected services. I'd verify the backup in a separate environment and record the current release.

I wouldn't shut off the old vendor account just because the relationship has deteriorated. Losing access before securing exports and credentials can turn a repair into reconstruction.

Stage 2: Define the smallest useful recovery

I'd name the blocked business workflow and its pass conditions. For example, an explicitly hypothetical requirement might be: an authorized employee creates a customer record, assigns it, and exports the result without exposing another team's records.

That's testable. “Finish the CRM” isn't.

I'd separate release blockers from annoyances and later features. This is where scope gets cheaper: fewer workflows, fewer exceptions, and no attempt to copy every screen just because it exists.

Stage 3: Repair in staging, including repeated events

I'd fix or replace the chosen component in staging, then test the full workflow and its failure paths.

Webhooks deserve their own checks. Providers can retry delivery, and a recovery can accidentally leave both old and new handlers active. Depending on the workflow, that can trigger duplicate follow-ups or duplicate updates.

I'd check event identifiers, duplicate handling, retry behavior, and which system owns each action during the switch. API rate limits also belong in testing, especially when a migration moves far more records than normal daily use.

Stage 4: Rehearse the data move and cutover

I'd run a migration rehearsal, compare record counts and important totals, inspect relationships and files, and document exceptions. Counts alone aren't enough: the same number of records can still contain the wrong assignments.

Then I'd define the switch, the stop conditions, and the rollback path. If the new system accepts writes after launch, rollback needs a plan for those new records—not just a button that points traffic backward.

For your involvement, I'd plan a scoping call, a short weekly review, and a final test pass with the person who knows the workflow. You'll also need to supply access and make scope decisions; I won't pretend those happen without you.

The delivery windows above apply to agreed build scopes. Missing credentials, disputed ownership, or unusable exports have to be resolved before I can defend a go-live date.

Show a horizontal four-stage software recovery plan labeled Preserve, Scope, Repair and Test, and Rehearse and Switch

Compare the next deliverable, not the next hourly rate

When an owner has already paid for disappointing software, the next low quote can look like relief. I would compare what that money proves.

PathWhen I'd consider itMain trade-off
Keep the current developerThey can reproduce failures, show working releases, and accept written completion testsExisting context helps, but promises aren't evidence
Bring in an independent assessorOwnership or technical condition is unclearYou pay for clarity before paying for implementation
Commission a fixed-scope rescueThe failure and acceptance conditions can be boundedNew requests need a scope decision rather than an open tab
Replace with established SaaSStandard workflows fit and migration is manageableSubscription costs and platform limits remain
Rebuild the required workflowThe current foundation can't support the job safelyData movement, parallel running, and cutover still need funding

Hourly billing isn't inherently dishonest. Open-ended hourly billing without release gates rewards slow work, because another week becomes another invoice whether the owner gets anything usable or not.

An offshore quote deserves the same scrutiny as a U.S. agency quote: repository access, named deliverables, tests, and handover. A cheap rate doesn't rescue an undefined scope, and staffing five people on a two-person job doesn't make the work safer.

I wouldn't take this on if you need a permanent embedded developer managing a constantly changing backlog. I sell bounded builds; that staffing need is a different service. I'd also tell you to keep a working subscription when the replacement cost and migration effort don't pay back.

My hiring red flags for small-business software projects are useful here, especially if the last vendor kept control of the accounts.

For my agreed scope, fixed price means overruns are my problem, not yours. New scope is a separate decision, not a surprise invoice hidden inside the original work.

Require a handover another developer can actually use

A software project rescue hasn't fixed vendor lock-in if you finish with a different person holding the keys.

The code for my work lives in your own repository from day one. You own everything I build at every moment, and any developer can take over; handoff documentation makes that practical rather than merely contractual.

For inherited software, I'd verify your rights to the existing code separately. Having a ZIP file doesn't settle ownership or third-party licensing.

Here's the handover checklist I'd put in the scope:

  • Ownership and access: company-controlled repository, hosting, domain, database, and service accounts; appropriate administrator access.
  • Build instructions: required versions, installation steps, environment variable names, and local startup steps. Secrets belong in secure storage, not documentation or source control.
  • System map: application components, data stores, integrations, scheduled jobs, and webhook destinations.
  • Data package: schema, export procedure, backup schedule, restore instructions, and migration reconciliation results.
  • Release procedure: staging and production steps, deployment permissions, smoke tests, and rollback instructions.
  • Acceptance evidence: completed workflow tests, permission checks, known defects, and deliberately deferred features.
  • Operating costs: hosting and API accounts, billing owners, usage alerts, and subscriptions that can now be canceled.
  • Support boundary: who monitors failures, who handles security updates, and how later work gets quoted.

I'd also rotate credentials exposed during the old arrangement and remove access that's no longer needed. Account ownership isn't useful if a former contractor remains the only person receiving recovery emails.

The wider guide to what to ask before you hire a developer covers the engagement questions behind this checklist. For a rescue, I'd make these actual deliverables, not assurances offered on a sales call.

Settle the keep-or-rebuild question before funding it

My software project rescue decision starts with the repository, one reproducible failure, a sample export, and a description of what your staff need to finish. From there, I can distinguish a bounded repair from a replacement—and identify what still isn't known.

The free project estimator at free project estimator gives you an initial scope range, not a certification that the inherited code is sound. Unlike calculators that hide the number to harvest emails, it shows the range on screen before asking who you are.

If I were explaining the decision to a partner, I'd put it this way: “I don't want to pay for the same software twice. I want to know what we can keep and what it'll cost to make it work.”

Use the estimator to settle that starting budget: answer five questions in about ninety seconds, see the range before any form, then submit your project details for a fixed quote back within one business day, with the scope and assumptions stated.

Want a real number for your own project?

Answer a few questions and get an instant price range and timeline. No call required, no obligation.

Get your instant estimateTalk through your software project with Matt

Frequently asked questions

How much does software project rescue cost?
My published non-AI build ranges are $2,500–$10,000 for simple scopes, $5,000–$15,000 for medium scopes, and $10,000–$20,000 for advanced scopes. A rescue quote depends on what can be retained, what must change, and whether migration is included. Hosting, API usage, and maintenance need separate operating budgets.
Should I fix my existing software or rebuild it?
I'd keep the existing product when its required workflows work, its dependencies remain supportable, and its remaining failures can be isolated and tested. I'd consider replacing a module before rebuilding everything. A full rebuild needs evidence that the existing foundation can't safely support the required behavior, plus a funded data transition plan.
What should I get from my old software developer before switching?
I'd request the complete repository and history, company-controlled service accounts, deployment instructions, database backups, a data export, and a list of integrations and scheduled jobs. I'd also verify code ownership and third-party licenses. Credentials should transfer securely, with unnecessary access removed afterward.
How long does it take to rescue a failed software project?
My defined build scopes have delivery windows of 1–2 weeks for simple work, 2–4 weeks for medium work, and 4–6 weeks for advanced work. Those aren't blanket timelines for an unknown inherited application. Missing access, data cleanup, and unresolved ownership can prevent me from committing to a go-live date.
Is a code audit worth paying for before a software rescue?
I'd pay for an audit when the application's condition or repair feasibility is unclear and the findings will change the spending decision. It should produce reproducible findings, a prioritized scope, and a keep-or-replace recommendation. An audit is not the same deliverable as working software.

What would software built for your business look like?

Replacing a subscription, fixing software that fell short, or adding AI to your workflow? Talk through the scope with Matt.

Part of these guides

Matt Brody

Founder, BuiltInWeeks

I build custom software for small and mid-sized businesses — the kind you own outright instead of renting by the seat. Fixed price, delivered in weeks, source code handed over at the end.

Keep reading