Key takeaways
- Ask who owns the source code and infrastructure at the end. If the answer is the vendor, you are buying dependency rather than software.
- A proposal that ends at launch is hiding the maintenance cost, not eliminating it.
- Ask for a comparable system running in production, with a reference you may contact directly.
- The cheapest proposal frequently costs the most, because the gap gets recovered through change requests once you have no practical alternative.
Three proposals arrive. They are different lengths, quote different numbers, and describe the work in incompatible terms. Nobody on your team writes software.
Here is how to compare them anyway. All four questions are commercial rather than technical, and any competent vendor can answer them in plain language.
1. Who owns what at the end?
The single most important question, and the one most often left vague.
Ask specifically: at final payment, who owns the source code, the repository, the deployment configuration, the domain, the hosting accounts, and the data?
If the answer is the vendor, or if it is unclear, you are not buying software. You are buying a dependency — and the price of leaving is rebuilding from scratch. That may still be an acceptable arrangement, but it should be a decision rather than a surprise.
The version to look for: everything transfers to you on final payment, with documentation written for a developer who was not involved in the build. A good vendor is comfortable with this because they expect to earn the next engagement rather than trap you into it.
2. What happens after launch?
A proposal that ends at delivery has not removed the maintenance cost. It has moved it somewhere you will not see until later.
Software needs ongoing attention: dependency updates, security patches, compatibility with browsers and mobile operating systems that change annually. Left alone, systems degrade until something breaks that cannot be fixed cheaply.
Ask what maintenance costs, what it covers, and what happens if you decline it. If declining means the system becomes unsupported within a year, that is a real cost belonging in the comparison.
Ask also about the correction period. Every system surfaces problems under real use that testing did not catch. A proposal reserving budget for that is more honest than one that assumes perfection.
3. Can you see it working somewhere else?
Ask for a comparable system running in production, and a reference you may contact directly.
Not a portfolio screenshot. Not a demo environment. A real deployment with real users, and permission to call the client and ask how it went.
The questions worth asking that reference: Did it land on time? What surprised you? What would you do differently? How responsive were they after launch? Would you hire them again?
A vendor who cannot produce this for work resembling yours may still be capable, but you are funding their first attempt at your problem class and the price should reflect that.
4. Does it describe your process, or any process?
Read the proposal and ask whether it could have been sent to a different client with the company name changed.
A generic capability list — we deliver scalable, robust solutions using modern technologies — tells you nothing about whether they understood your problem. A proposal that names your specific workflow, identifies where it is unusual, and flags the parts that will be difficult tells you they listened.
The strongest signal is a proposal that pushes back somewhere. A vendor who says this part of your requirement will not work as described, here is why, here is what I suggest instead is doing the job before being paid for it.
Price is the weakest signal
The cheapest proposal frequently costs the most in the end.
The mechanism is straightforward: the gap between the quoted price and the real cost gets recovered through change requests, once you have committed and have no practical alternative. Everything not explicitly written into the scope becomes billable, and by month four you are negotiating from a weak position.
Rather than comparing headline numbers, compare what is included. Line up the three proposals against each other and mark what each one covers: process discovery, design, build, testing, data migration, training, documentation, post-launch correction, maintenance. The gaps are usually where the price difference lives.
Two smaller things that reveal a lot
How they handle the estimate. A vendor giving a precise figure for a complex system before any discovery has either done this exact build before or is guessing. A range with the drivers named — cost depends mainly on how many user roles you need — reflects how estimation actually works.
Whether they ask about your existing systems. Integration is a major cost driver and it depends entirely on whether your current systems expose an API. A proposal that never asked has not priced it.
When to bring in someone independent
If the decision is large relative to your budget, an independent review before signing is cheap insurance.
The distinction that matters is incentive. A vendor asked whether you need custom software has an obvious interest in the answer, and so does an agency quoting to build it. Someone who does not resell products, take commissions, or receive referral fees can recommend an off-the-shelf tool without losing anything by it — which is exactly what makes the recommendation worth having.
Frequently the most valuable outcome is the recommendation not to proceed, or to buy rather than build. That advice tends to save considerably more than it costs.
Questions
How do we evaluate this without technical staff?
The four questions in this article are commercial, not technical — ownership, maintenance, references, and fit. Any competent vendor can answer them in plain language, and a vendor who cannot or will not is telling you something useful.
Can someone review work a vendor has already delivered?
Yes. Technical due diligence on a delivered system covers code review, architecture assessment, and whether what was delivered matches what was contracted. Findings should be reported factually, since the goal is a working outcome rather than assigning blame.
