In one line

Almost every failed web project shows warning signs in the first two meetings — vague scope, refused code access, no staging environment, and payment demanded entirely up front. Learn to spot them before you sign.

We are regularly asked to rescue websites and applications that went wrong elsewhere. The pattern is remarkably consistent: the signs were visible early, but the client had no reason to recognise them at the time. Here are the nine that matter most.

1. The quote has no line items

A single number — "Website: ₹60,000" — is not a quote, it is a guess. Without line items you cannot tell what is included, cannot compare it against another agency, and have no basis to dispute later claims that something was "extra".

Ask for: a breakdown by design, development, content, integrations, testing, and support.

2. They will not give you the source code

Some agencies retain code deliberately so you cannot take the project elsewhere. It is presented as normal practice. It is not.

Ask directly: "On final payment, do I receive the complete source code and database, with full ownership, in writing?" Hesitation is your answer.

3. There is no staging environment

If changes go straight to your live website, there is no review step and no safety net. A broken deployment becomes a customer-facing outage rather than a private mistake.

4. Full payment demanded up front

This transfers all delivery risk to you. Reasonable practice is 30–40% up front with the remainder tied to milestones.

A related trap: a suspiciously low build price paired with a compulsory monthly fee that you can never stop paying without losing the site. That is a lease dressed as a purchase.

5. No questions about your business

An agency that quotes without asking who your customers are, what a lead is worth to you, or what the site must achieve is planning to give you a template. Good developers ask uncomfortable, specific questions before quoting.

6. The portfolio does not survive inspection

Portfolio screenshots prove nothing. Live URLs prove a great deal.

  • Open their portfolio sites on your phone — do they actually work?
  • Run one through PageSpeed Insights — is mobile performance acceptable?
  • Ask for a site built two or more years ago that is still live.
  • Check whether the listed client actually exists.

7. Pirated themes and plugins

At the low end of the market, "nulled" premium themes and plugins are common. They are a documented malware vector, cannot be updated safely, and expose you to real legal and security risk. If a quote includes premium plugins but the price is implausibly low, ask for licence receipts.

8. Everything is "no problem"

An experienced developer pushes back. They tell you a feature will cost more than it is worth, or that a timeline is unrealistic. An agency that agrees enthusiastically to every request, however contradictory, is either inexperienced or planning to renegotiate later.

A partner who never says "that is a bad idea" is not being agreeable — they are not paying attention.

9. Communication is already slow

Response times during the sales process are the best they will ever be. If replies take three days before you have paid anything, expect worse afterwards. Agree a communication cadence in writing: weekly demos, a named point of contact, and a defined response window.

Protecting yourself contractually

Regardless of who you hire, insist on these five terms:

  1. Source code ownership on final payment Stated explicitly, covering both frontend and backend.
  2. Your own repository from day one Code pushed to a GitHub or GitLab account you own, so you always have the current state.
  3. Milestone-linked payments Money released against delivered, reviewable work.
  4. A defined revision allowance A specific number, not "unlimited".
  5. A post-launch warranty Typically 30–90 days of free bug fixing for defects in delivered work.

If a project has already gone wrong: secure whatever assets you can — domain registrar access, hosting credentials, and any code you have rights to — before raising a dispute. Access is far harder to obtain once a relationship turns adversarial.

If you are mid-way through a project that has stalled, we do take over inherited codebases — audit first, then stabilise, then plan. Tell us what happened, or read the 12 questions to ask before hiring.

Frequently asked questions

Refusing to give you access to your own source code. Everything else can be a difference in working style; this one is a deliberate choice to make you dependent, and it is the hardest problem to unwind later.
A deposit is normal and reasonable. Full payment before any work is delivered is not — it removes every incentive to finish well. Payments tied to delivered milestones protect both sides.
Yes. A developer who never pushes back is either not thinking about your requirements or plans to raise the difficulties later, as change orders. Some early disagreement is a sign of engagement, not of being difficult.
Secure your assets first — domain registrar access, hosting credentials, and any code you have rights to — before raising a dispute. Access becomes much harder to obtain once a relationship turns adversarial. Then get a written list of what is complete versus outstanding.