Skip to main content
Software Development

Red Flags in Development Agency Proposals: What to Check Before You Sign

The most dangerous agency proposals are not the expensive ones — they are the ones where the risk is invisible. The recurring red flags: no discovery phase, a single confident total instead of a range, a vague or stock-photo team page, no QA line item, offshore staffing presented as local, missing maintenance terms, and IP assignment language with gaps. This article walks through eleven of them, what each one actually costs you, what an honest proposal contains instead, and how to compare two proposals without being fooled by formatting.

By Raman Makkar, CEO & Founder··13 min read

The short answer: the flags that matter most

A proposal is a prediction of a relationship. Agencies behave during the sale the way they will behave during the build — only nicer. So when a proposal hides information, the build will hide it too, at build rates. The three flags that predict the most damage are a single-point estimate with no discovery, an anonymous team, and IP language that does not assign everything to you on payment. Almost everything else is a variation on those three.

The table below is the checklist version. The rest of the article explains each flag, why it happens, and what to ask in response. None of these are automatic disqualifiers on their own — a small fixed-scope job legitimately skips a formal discovery phase, for example — but each one is information the agency chose not to give you, and the pattern matters more than any single item.

See how our services are scoped and priced

Red flagWhat it usually meansWhat to ask
No discovery phaseThe estimate is a guess dressed as a quoteWhat assumptions is this number built on?
Single-point total, no rangeFalse precision; the variance will surface as change ordersWhat is the range, and what moves it?
Vague team pageStaffing is not settled, or not who you thinkName the people. May we interview them?
No QA line itemTesting is unbudgeted and will be skipped under pressureWhat percentage of effort is testing?
"Local team," actually offshoreYou are paying onshore rates for offshore deliveryWhere does each named person sit?
Missing maintenance termsPost-launch pricing is open-ended leverageWhat does month thirteen cost?
IP assignment gapsYou may be renting your own productShow me the assignment clause. When does it trigger?

📐Flags one to three: the estimate itself

The estimate section of a proposal is where the agency shows you whether it understands your project or is selling to it. Three patterns should slow you down.

First, no discovery phase. A professional build starts with a paid, time-boxed scoping phase — typically one to four weeks — that converts your idea into a buildable backlog with real estimates. A proposal that jumps straight to a build total is telling you the number was produced from a sales call, not from analysis. The discovery cost did not disappear; it moved into the build, where it will be spent as rework at full rates. Skipping discovery is sometimes legitimate for a genuinely small, well-defined job, but the proposal should say so explicitly.

Second, a single confident total. Real estimation has variance, and honest agencies show it: a range, or a total with stated assumptions. A lone number like $87,500 for a six-month build signals false precision. The variance still exists — you just cannot see it, which means it will arrive later as change orders, and change orders are priced by a vendor who knows switching costs are now high.

Third, an estimate that cannot decompose. Ask for hours by role and phase. An agency that cannot or will not break its total into engineering, design, QA and management hours is asking you to evaluate a number you cannot verify or negotiate. The refusal itself is the flag — even if the total is fair.

👥Flags four to seven: who is actually doing the work

You are not buying a company; you are buying specific people for specific months. Proposals that blur this are protecting the agency, not you.

A vague team page — "our senior architects" with no names, or a wall of stock photos — usually means one of two things: staffing is not settled, or the people on the sales call are not the people who will build your product. The counter is simple: ask for the named team, their roles, their allocation percentages, and the right to interview the technical lead. Agencies with stable senior teams agree to this readily; agencies running a bench or a resale operation stall.

The next flag is "100 percent local" staffing that is actually offshore. There is nothing wrong with offshore or blended teams — we run one ourselves, with offices in Edmonton and Chandigarh, and the model works well when it is disclosed and managed. The red flag is the lie, not the geography. An agency claiming a fully local team while quietly subcontracting overseas is billing you onshore rates for offshore delivery and, more importantly, has already shown you how it handles uncomfortable truths. Ask where each named person physically sits and check it on a video call.

Two smaller flags round out this group. No QA line item means testing has no budget owner, and under deadline pressure unbudgeted work is what gets cut — you receive code that was never systematically tested and discover it in production. And missing maintenance terms mean month thirteen is unpriced, which hands the agency open-ended leverage exactly when switching is most painful. Honest proposals name a maintenance model and a rate before you sign.

The fastest single test in this entire article: ask for the named delivery team and a thirty-minute call with the technical lead, before signing. The speed and directness of the answer predicts the whole engagement better than the proposal does.

📄Flags eight to eleven: the contract mechanics

The final group lives in the terms rather than the pitch, and it is where sophisticated buyers focus. These four are the ones that produce the worst surprises.

IP assignment gaps are the most consequential. The contract should assign all work product — code, design files, documentation, infrastructure definitions — to you, in writing, upon payment, with no retained licence that lets the agency reuse your product as a template for a competitor. Watch for: assignment only on final payment of the last invoice (leverage during disputes), exclusions for "pre-existing tools" defined so broadly they swallow the codebase, and silence on design and infrastructure assets. Anything less than full assignment is renting, not buying.

An unrealistic timeline is a sales flag disguised as optimism. If three agencies quote five months and one quotes ten weeks, the ten-week proposal has not found an efficiency the others missed — it has deferred the honest conversation to a missed deadline, when your sunk cost makes you compliant. Ask what the timeline assumes about your own feedback turnaround, and what has made similar projects slip.

The last two travel together: no change process and a proprietary lock-in stack. Every real project changes scope; a proposal without a written process for pricing and approving changes is reserving the right to improvise billing later. And a proposal built on a niche framework or a vendor-controlled platform nobody else can maintain is a switching-cost strategy. A mainstream stack — mainstream frameworks, a standard database, managed cloud — is cheaper to build, cheaper to maintain, and, tellingly, the choice of agencies that expect to keep your business by being good rather than by being sticky.

IP: the four words that matter

"All work product, upon payment, in writing." Then check the exclusions list — that is where the claws live.

Timeline realism check

Ask what slipped on their last three comparable projects and why. An agency with no answer has not been tracking; one with a rehearsed "nothing ever slips" is performing.

Change process

A one-paragraph clause covering how changes are estimated, approved and billed prevents the most common dispute in the industry.

Stack audit

Ask: if we part ways in a year, how hard is it for another team to take this over? The answer reveals whether the stack choice serves you or the vendor.

What a good proposal actually contains

It is easier to spot the flags when you know the shape of the real thing. A professional proposal is longer than a sales deck and shorter than a contract, and it is specific in ways that are mildly uncomfortable for the agency — because specificity is what accountability looks like before signature.

Notice what the good shape has in common across every row: it transfers information to you before you have leverage over nothing. Named people, decomposed hours, written exclusions, priced maintenance. An agency that hands you this document has deliberately given up the informational advantages that bad agencies monetize later. That is not naivety; it is a firm confident enough in its delivery to compete on it.

The table also works in reverse as a request list. If a proposal arrives missing two or three of these rows, you do not have to reject it — you can ask for the rows. The quality of the response to that request is itself the evaluation. A firm that fills the gaps quickly and precisely has them ready; a firm that cannot produce them was never going to.

Read what our proposals include as standard

SectionWhat good looks like
DiscoveryA paid, time-boxed phase with named deliverables: backlog, architecture, estimates — or an explicit reason it is unnecessary
EstimateA range with stated assumptions, decomposed into hours by role and phase
TeamNamed people, roles, allocation, and an offer to interview the technical lead
QAA visible testing allocation, typically 10–20 percent of build effort, plus a staging environment
Staffing geographyDisclosed locations for each team member, blended or otherwise
MaintenanceA named post-launch model with rates, response times and an exit path
IP & exitFull assignment on payment, defined exclusions, credentials in your name, a handover clause
Change processWritten method for pricing and approving scope changes
ReferencesTwo or three clients you may actually call, on comparable work

⚖️How to compare two proposals honestly

Three proposals for the same project routinely span a two-times price range, and the middle one is not automatically right. Before comparing totals, normalize. Force every proposal onto the same grid: same team mix assumption, same phase split, same list of what is included and excluded. The classic exclusions — hosting, third-party licences, content entry, data migration, post-launch support — are where a cheap proposal quietly becomes expensive. An excluded line you need is a discount you did not get.

Then compare the blended rate, not the headline. Divide each total by its total hours. A $150,000 proposal with senior-heavy staffing and full QA frequently represents better value than a $110,000 proposal that is mostly junior hours with no testing budget — because the second one delivers the missing phases anyway, as rework, at the worst possible time.

Weight the things proposals cannot show. Responsiveness during the sale predicts responsiveness during the build. The quality of the questions the agency asked you predicts the quality of the discovery. And the willingness to say "this part of your scope is a bad idea" predicts whether you are buying a partner or a meter.

Finally, run the downside scenario explicitly. Ask each agency: "at 80 percent of the budget, if the remaining work is larger than estimated, what happens?" The answer — re-plan with you, or bill the overrun — tells you which proposal was real. This one question filters more effectively than any scoring matrix, because it forces the agency to describe its own failure mode before you have signed.

Normalize thisAgency A saysAgency B saysQuestion to ask
Hours by roleFill in from each proposalFill in from each proposalCan you decompose the total?
Blended rateTotal ÷ total hoursTotal ÷ total hoursWhy does the mix differ?
QA allocationPercent of build effortPercent of build effortWho signs off on quality?
ExclusionsList themList themWhich exclusions will we actually need?
MaintenanceModel + rateModel + rateWhat does month thirteen cost?
IP termsClause referenceClause referenceShow me the exact assignment language

The ten questions to ask before signing

Everything above compresses into a short list of questions that any honest agency will answer directly and any problematic one will hedge on. Ask them in writing, and treat hedged written answers as answers.

One discipline makes the list far more powerful: ask every shortlisted agency the same questions and compare the answers side by side. Differences that were invisible in the proposals become obvious in the responses — one agency names people, another describes roles; one quotes a maintenance rate, another says "we can discuss that closer to launch." You are not just collecting answers; you are generating a controlled comparison of how each firm behaves under the same mild pressure.

Start a scoped conversation about your project

Who, by name, is on my team?

And may I interview the technical lead before signing?

Where does each team member physically work?

Geography is fine; undisclosed geography is not.

What assumptions is this estimate built on?

Followed by: what is the range around this total?

What percentage of effort is QA, and who owns it?

A named person and a number, not "we test everything."

What is excluded from this price?

Get the list in writing and price the ones you need.

Show me the IP assignment clause.

All work product, upon payment, with narrow explicit exclusions.

What does maintenance cost after launch?

Model, rate, response time, and how you exit it.

How are scope changes priced and approved?

One paragraph in the contract, agreed now, not improvised later.

What happens at 80 percent if the estimate was wrong?

The re-planning answer, not the blame answer.

Which two clients can I call about comparable work?

Then actually call them, and ask what went wrong.

FAQ

Frequently Asked
Questions.

Common questions on software development, answered by the Codazz engineering team.

Ask Us Anything

A single confident total with no discovery phase behind it. It means the number came from a sales conversation rather than analysis, and the variance you cannot see will arrive later as change orders priced by a vendor who knows you are committed. Close behind it: an anonymous team and IP language that does not assign all work product to you on payment.

No — blended and offshore teams are legitimate and often the right economics; we run one ourselves across Edmonton and Chandigarh. The red flag is claiming to be fully local while quietly subcontracting. The lie predicts how the agency handles every other uncomfortable truth during the build. Ask where each named person sits and verify on a call.

For anything beyond a small, sharply defined job, yes: a paid, time-boxed scoping phase that produces a backlog, an architecture and estimates with real assumptions. Skipping it is occasionally legitimate, but the proposal should explain why. A build total produced without discovery is a guess with a currency symbol.

Normalize before comparing. Force both onto the same grid: hours by role and phase, blended rate (total divided by hours), QA allocation, exclusions list, maintenance terms and IP clauses. A cheaper proposal that excludes discovery, design, QA and maintenance is not cheaper — it is incomplete. The comparison only becomes honest once both quotes describe the same scope.

That all work product — code, design files, documentation, infrastructure definitions — is assigned to you upon payment, with exclusions that are narrow and explicitly listed. Watch for assignment only on the final invoice of the whole engagement, broad "pre-existing tools" carve-outs, and silence on non-code assets. Anything short of full assignment means you are renting your own product.

Occasionally, for genuinely small fixed-scope work where requirements are unambiguous. For anything larger, the cheapest proposal is usually the one with the most missing scope — discovery, design, QA, maintenance — and you will pay for the missing pieces later at the least convenient moment. Compare blended rates and phase splits, not headline totals, and weight how each agency behaved during the sale.

Two or three on comparable work, and they should expect you to actually call. The useful question on the call is not "were you happy" but "what went wrong and how did they handle it." Every real project has a failure somewhere; a reference who reports a problem that was handled honestly is a stronger signal than one who reports perfection.

Want a proposal with nothing hidden in it?

Every Codazz proposal includes a named team, hours by role and phase, a visible QA allocation, disclosed locations across our Edmonton and Chandigarh offices, full IP assignment on payment, and maintenance terms up front. Ask us the ten questions from this article — we will answer all of them in writing.

Get a Free Quote

Tell us about your project

Or talk to an engineer