An unfinished software project is rescued by assessment before action. Score five dimensions - working software, code and build quality, data, requirements clarity, and access and knowledge - then decide whether to resume, rebuild the weak parts, or retire the project. Rescues fail when a new team continues coding before anyone establishes what actually runs, what can be rebuilt from source, and who owns the accounts.
Most stalled projects contain more usable work than the sponsor believes and less finished work than the last status report claimed; a two-to-three week assessment tells you which parts are which.
What problem does this solve?
Stalled projects rarely announce themselves either. Status reports stay green until the demo, milestones slip by two weeks at a time, and the sponsor discovers late that the screens shown in review were front-end mock-ups over an unfinished back end. By the time the project stops moving, three things are usually true at once: a large part of the budget is spent, the original developers are unavailable or disengaged, and nobody in the organisation can state precisely what works. That last point is the real problem - decisions are being made about a system whose actual condition is unknown.
The evidence is almost always mixed. A stalled project typically contains a reasonable data model and some genuinely finished modules alongside features that exist only as empty routes, a build that runs on one developer's machine, no automated tests, dependencies two major versions behind, credentials committed into the repository, and a deployment performed by copying files. Meanwhile the requirement itself may have drifted: the process the software was meant to support has changed, or a packaged product now covers eighty per cent of it. Judging the project by its code alone answers the wrong question.
The reliable warning signs, in rough order of severity, are: nobody can build the application from the repository on a clean machine; there is no environment other than production; test data and real data live in the same place; the scope exists only as a slide deck with no acceptance criteria; progress is reported as a percentage rather than as working features; a single individual holds all the accounts; and the plan for the remaining work is described as 'two more weeks' for the third consecutive month. Two or more of these together mean the schedule is fiction, and continuing to fund it without an assessment simply buys more of the same.
How the solution works
Stop the build, run an assessment, then choose a path. The assessment scores five dimensions with evidence rather than opinion: working software (what genuinely runs, demonstrated end to end), code and build (repository history, reproducible build on a clean machine, dependency and end-of-life status, security exposure), data (schema quality, real data volumes, export path), requirements (scope clarity, acceptance criteria, whether the process still matches), and access and knowledge (who holds domains, cloud accounts, repositories, keys and licences, and what documentation exists). Each dimension gets a 0-5 score and a short justification, and the pattern of scores - not the total - points at the path.
Three paths follow. Resume when the build reproduces, the data model is sound and the remaining scope can be written as acceptance criteria; the work then becomes a normal project with a fixed backlog. Rebuild the core when the data model or integrations are worth keeping but the application layer cannot be maintained - salvage what is proven and re-implement the rest behind the same interfaces. Stop and replace when the platform is out of support, the requirement has changed materially, or a packaged product covers it. Whichever path is chosen, custody comes first: source, data, domains, cloud accounts, keys and licences move into your organisation's name before further money is spent. When Swedish Technology can help: we run the scored assessment as a fixed-scope first phase, take custody, and can complete the build with a named team through our outsourcing model or hand the plan to your own developers.
- 1Intake (trigger) Collect what exists: repository or code archive, the original scope or tender document, contracts and invoices, demo environments, credentials your staff hold, and the last three status reports. Agree a build freeze so the assessment measures a stable state.
- 2Inventory (capture) Map environments, services, third-party dependencies, integrations and accounts. Build the access register - domains, DNS, cloud tenants, repositories, CI, app stores, licences, API keys - and mark each as held, uncertain or lost.
- 3Evidence gathering (processing) Attempt a clean-machine build from source; run the application against a copy of the data; walk the database schema; check dependency versions against end-of-life dates; review authentication, secrets handling and logging; test whether a restore works.
- 4Scoring and gap analysis (integration) Score the five dimensions with the evidence attached, then map the original scope against demonstrable features to produce an honest completion percentage and a gap list, separated into must-have, deferrable and no-longer-needed.
- 5Decision and stabilisation (action) Recommend resume, rebuild-core or replace with ranged effort. Immediately stabilise regardless of path: custody transfer, independent backup with a tested restore, secrets rotated, a non-production environment created and basic monitoring added.
- 6Completion plan and reporting (reporting) Deliver a backlog with acceptance criteria, a milestone plan tied to demonstrable working software, a risk register, and reporting that measures progress by accepted features rather than percentages.
Reference architecture
The assessment looks at five layers. Weakness in the lower layers is expensive to fix and often decides the path; weakness in the upper layers is usually just remaining work.
| Layer | What it contains |
|---|---|
| Custody and access | Domains, DNS, cloud tenants and billing, repositories and history, CI, signing keys, app-store accounts, licences and API keys. If this layer is not yours, nothing above it is safe to invest in. |
| Data model and data | Schema clarity and normalisation, referential integrity, real versus test data, volumes, migration scripts and an export path in an open format. A sound data model is the most reusable asset in a failed project. |
| Platform and dependencies | Language, framework and database versions against vendor support dates, third-party libraries and licences, container and runtime baselines. Out-of-support components turn 'resume' into 'rebuild'. |
| Application and integrations | Module completeness, code structure, tests, error handling, and the state of interfaces to ERP, payment, messaging or identity systems - often the most under-estimated remaining work. |
| Delivery discipline | Reproducible builds, environments, deployment method, monitoring, backup and restore, issue tracking and documentation. This is what makes the remaining work predictable. |
Deployment options: Assessment work is done against a copy of the environment, never against production. Rebuilt or completed systems are deployed where policy requires - UAE-region cloud, on-premise or air-gapped - with environments separated and backups under your own billing.
Key capabilities
Scored project assessment
Five dimensions scored with evidence, an honest completion percentage and a resume / rebuild / retire recommendation you can take to a board.
availableClean-machine build verification
Proof that the application can - or cannot - be rebuilt from the repository, which is the single most decisive test in a rescue.
availableCustody and access recovery
Source, data, domains, cloud accounts, keys and licences in your organisation's name before further investment.
availableData model salvage and migration
Reusable data preserved and migrated even when the application layer is replaced, so history is not lost.
custom developmentBacklog with acceptance criteria
Remaining scope written as testable criteria and milestones, so progress is measured in accepted features rather than percentages.
availableCompletion delivery
A named team finishes the build in iterations with demonstrable software at each milestone and documentation as a deliverable.
custom developmentSecurity review before go-live
Secrets, authentication, logging and exposure reviewed before a rescued system carries real users - see SAIF cybersecurity.
availableIntegrations
Rescues touch the same set of external systems; the direction column shows what has to move or be re-established during the rescue.
| System | Integration point & data exchanged | Direction |
|---|---|---|
| Source control and CI/CD | Repository transfer with history into your organisation, pipeline reconstruction, secrets removed from code and moved to a managed store. → Emergency Software Vendor Takeover: How It Works | inbound (control to you) |
| Cloud, hosting and domains | Tenant and billing ownership, environment separation (production, test, development), DNS and certificate automation under your account. → Our Software Vendor Disappeared: What Should We Do? | inbound (control to you) |
| ERP and finance systems | Unfinished interfaces to Odoo, SAP or Oracle re-specified and completed, with contract-level field mappings and error handling defined before coding resumes. → Failed ERP Implementation Rescue (Odoo, SAP, Oracle) | bi-directional |
| Identity providers | Replacing home-grown authentication with the organisation's SSO where possible, which usually removes a large share of the security findings. | inbound |
| Document and workflow platforms | Assessment reports, runbooks and acceptance evidence stored in your systems - see document management. | outbound (data to you) |
Industry use cases
Government entity
A permit portal was delivered as screens over an incomplete back end; the data model and forms were salvaged, the workflow engine re-implemented, and acceptance criteria added before the remaining budget was released.
Construction group
A site-progress application stalled when the developer left. A clean-machine build failed, so the rescue rebuilt the application layer around the existing database and integrations.
Retail chain
A loyalty back end was assessed as resume-able: build reproduced, schema sound, remaining work was reporting and an ERP interface, which was completed in eight weeks.
Logistics operator
A half-built warehouse module was retired in favour of extending an existing WMS after the assessment showed the requirement had changed - see Octopus WMS.
Facility management company
A mobile inspection app was recovered from an archive, rebuilt for current OS versions and published from the client's own developer accounts.
UAE & GCC considerations
In the UAE and GCC, stalled projects often sit inside a procurement structure with milestone payments, performance guarantees and audit obligations, so the assessment has to produce evidence that survives review - what was delivered, what was accepted, what remains, and on what basis the recommendation was made. Data residency rules mean assessment copies and rebuilt environments stay in-region or on-premise, and for classified systems the work is done inside the client's network with no external code hosting. Bilingual delivery is normal: acceptance criteria and user documentation in Arabic and English, and interfaces that handle Arabic text and right-to-left layout correctly, which is a frequent gap in half-finished work. Where a supplier's trade licence has lapsed or the team has left the country, custody recovery through providers becomes the first task rather than a formality, and the assessment records it as such for the entity's own audit trail.
Implementation approach
- 1Week 0 - intake and freeze Gather code, scope documents, contracts and credentials; freeze further development so the assessment measures a stable state; agree who decides on the recommendation.
- 2Week 1 - custody and inventory Build the access register, secure anything expiring, take an independent copy of code and data, and verify a restore before anything is modified.
- 3Week 1-2 - evidence Clean-machine build attempt, run against copied data, schema walk-through, dependency and end-of-life check, security review, feature-by-feature demonstration.
- 4Week 2-3 - scoring and options Score the five dimensions with evidence, produce the gap list against original scope, and write the resume / rebuild-core / replace recommendation with ranged effort for each.
- 5Week 3 - decision gate A single meeting with the sponsor, IT and procurement to choose the path, agree the budget envelope and confirm what will not be built.
- 6Week 3-4 - stabilise Environment separation, backups, monitoring, secrets rotated, dependencies patched where safe, and a build pipeline so future work is reproducible.
- 7Week 4 onward - completion in iterations Two-week iterations, each ending with working software demonstrated against acceptance criteria; documentation and runbooks written as the work proceeds, not at the end.
- 8Hand-over Repositories, accounts, documentation and training delivered to your team, or ongoing maintenance under an agreed service arrangement.
Security & deployment
Half-finished systems concentrate security debt: credentials committed to repositories, shared administrator logins, test data taken from production, no audit logging, dependencies well past their support dates, and debug endpoints left open. Rescue work therefore includes a baseline review before any user traffic is trusted - rotate every secret that was ever in source control or a chat message, separate environments so production data stops being a test fixture, put authentication behind the organisation's identity provider, patch the dependency stack in a controlled order, and enable logging that can support an investigation. NIST SP 800-218 (Secure Software Development Framework) is a practical checklist for the build pipeline, and ISO/IEC 27001 provides the access-control and supplier expectations that procurement usually needs to see. On-premise and air-gapped deployments follow the same steps with local mirrors and manual media handling.
Limitations & prerequisites
- An assessment describes condition and options; it cannot recover schedule or budget already spent, and it will sometimes conclude that the honest answer is to stop.
- If the repository is incomplete or the build cannot be reproduced, effort estimates for completion widen considerably - reconstruction work is difficult to price until it is attempted.
- Requirements that were never written down cannot be verified. Where the original scope exists only as slides or conversations, part of the rescue is re-specification, which takes calendar time and stakeholder availability.
- Salvaging a data model is only worthwhile if the data itself is usable; poor data quality, mixed test and production records or missing history can outweigh the value of the schema.
- Out-of-support platforms, expired third-party licences or abandoned libraries can make 'resume' impossible regardless of code quality.
- Completion estimates depend on the availability of your own subject-matter experts for acceptance decisions; rescues stall a second time when nobody on the business side can sign off features.
- We do not provide legal opinions on contractual disputes with the previous supplier; we provide the technical evidence your counsel and procurement team need.
Decision table: resume, rebuild the core, or stop
Read this by row. A pattern of signals in one column - not a single bad finding - indicates the path.
| Signal | Resume with existing code | Rebuild the core, keep the rest | Stop and replace |
|---|---|---|---|
| Clean-machine build from repository | Succeeds | Succeeds partially or needs work | Impossible or source incomplete |
| Data model quality | Sound and documented | Sound, worth preserving | Unusable or requirement changed |
| Platform support status | In vendor support | Application layer old, data layer fine | Core platform out of support |
| Requirements clarity | Writable as acceptance criteria | Partly clear, needs re-specification | Process has changed materially |
| Remaining scope vs. spent budget | Small remainder, credible | Significant, but foundations reusable | Remainder approaches a fresh build |
| Security findings | Fixable in the existing code | Concentrated in the application layer | Structural, e.g. no auth model at all |
| Packaged alternative | None that fits the process | Partial fit, integration still needed | Product covers most of the requirement |
| Typical outcome | Completion project, weeks | Mixed project, months | New project or product implementation |
The middle column is the most common result in practice, and the least often proposed - salvaging the data model and integrations while re-implementing the application layer usually beats both extremes.
FAQ
Ask for a demonstration of each claimed feature end to end against real data, and attempt a build from the repository on a machine nobody has touched. Percentage complete is an opinion; a working feature and a reproducible build are facts. In most stalled projects the demonstrable figure is well below the reported one, mainly because integration and non-functional work sits at the end.
Drivers are codebase size, number of services and environments, number of integrations, how much access you already hold, whether documentation exists, and whether the data has to be examined in detail. A single application with repository access is a short fixed-scope engagement; a multi-service system with lost accounts and ERP interfaces is larger.
Typically two to three weeks including the clean-machine build attempt, security review and scoring. Stabilisation runs in parallel from week one. Completion work is planned separately once the path is chosen and the backlog has acceptance criteria.
Usually yes, if the stack is still in vendor support and the code can be built. Changing language or framework only to suit a new team is a rewrite in disguise and should be justified by support status, security or maintainability - not preference.
The assessment then covers what can be recovered from deployed artefacts, configuration and the database, and states plainly what cannot. A missing or unbuildable repository usually moves the recommendation toward rebuilding the application layer while preserving the data model and integrations.
Yes. The assessment runs inside your network with local tooling and mirrors; no code or data leaves the environment. Air-gapped rescues need more time for dependency handling and environment reconstruction, and rely more on documented manual procedures.
Interfaces to ERP, finance and identity systems, because they depend on other teams and on access being granted. In half-finished projects these are typically stubbed rather than built, which is why they should be re-specified with field mappings and error handling before completion effort is estimated.
Your organisation owns the source, accounts, domains and documentation from the custody step onward. Support afterwards is your choice: knowledge transfer to your own developers, or a maintained service with agreed response times through a dedicated team.
A project that stopped moving - and a decision you cannot postpone.
Send us repository access or whatever exists, plus the original scope document. We reply with a scored assessment, a resume / rebuild / retire recommendation and a ranged estimate for completion. When Swedish Technology can help: we run the assessment as a fixed-scope first phase, take custody of code, data and accounts, and can complete the build with a named team.
Request a Project Rescue AssessmentSources & evidence
- PMI - PMBOK Guide and standards library — project recovery, acceptance and closure practice
- PMI - Pulse of the Profession — research on project performance and causes of failure
- NIST SP 800-218 - Secure Software Development Framework (SSDF) — baseline practices for build pipelines and secrets handling
- NIST - Cybersecurity Framework 2.0 — governance and protection functions applied to rescued systems
- ISO - ISO/IEC 27001 information security overview — access control, supplier and documentation requirements
- GitHub Docs - Transferring a repository — documented code-custody transfer with history preserved
Vendor and product names are trademarks of their respective owners; references are for technical context and do not imply partnership, certification or endorsement unless stated on the vendor's official pages.