DEV Community

mhk sameera
mhk sameera

Posted on

You Expect Corolla Pricing but Ordered Lamborghini Options — What a Bad WordPress Job Taught Me About Discounts

The conversation goes the same way almost every time a new client comes in.

They ask the cost. I ask what they actually need. I send a quote. "That's expensive." I walk through exactly what's in it, line by line. Still expensive. I offer a small discount to keep the relationship. They come back asking for more.

I used to keep giving. Then a Canadian client taught me why that habit was going to cost me a lot more than money.

The job that changed how I quote

This client bargained hard, I dropped my price to close the deal, and the scope was small: a few updates to their existing WordPress site. I'm not a big fan of WordPress — I'll say that upfront, it colors this story — but it was a small job at a reduced rate, so I said yes.

"A few updates" did not stay a few updates. One small ask led to another, which needed a plugin that conflicted with another plugin, which needed a theme change, which broke something else. Each individual request sounded reasonable on its own. Together, they added up to rebuilding the entire site from scratch — at the price I'd agreed to for a handful of tweaks.

I did it. I finished the job. And I lost money and time on a client I'd already discounted to win.

What I actually did wrong

It wasn't agreeing to a discount. It was agreeing to a discount without re-scoping the moment the ask changed. Every "can you also just..." should have been a new estimate, not a favor squeezed into the old one. I said yes to the relationship instead of saying yes to a number, and by the time I noticed how far the scope had moved, I'd already done half the extra work for free.

What I say now

When a client pushes for a lower price after I've already explained the quote, I tell them straight:

"You're expecting Corolla pricing, but what you've asked for is Lamborghini options. You'll get exactly what you pay for."

It sounds blunt written down. In conversation it isn't — it's said plainly, not angrily, and it does something a longer explanation doesn't: it makes the mismatch obvious in one sentence. A client who wants custom logic, clean code, and something that won't break in six months is not shopping in the same category as a client who wants the cheapest possible build. Both are valid. They're not the same job.

What changed in how I run projects since then

  • The quote has a defined scope, in writing, before anything starts. Not "a few updates" — an actual list.
  • A discount is a number, not a mood. If I reduce the price, the scope shrinks to match it. I say that out loud when I offer the discount, not after the client tries to expand the work.
  • "Can you also just—" gets a real answer: "Sure, that's outside the current scope, here's what it adds." Every time, no exceptions, said the same calm way whether it's the first ask or the fifth.
  • I stopped treating discount requests as a negotiation I have to win by conceding. Explaining the quote once is fair. Explaining it three times while lowering the number each time teaches the client that pushback is how you get a cheaper Claude — sorry, cheaper developer.
  • I'm honest about not loving certain platforms going in. If I'm not a WordPress person and the job is a WordPress site, the client should hear that before I quote, not discover it when something breaks.
  • If the number doesn't work, I walk. Not every negotiation ends in a deal, and that's fine. I'd rather sleep well or watch a movie than take a job at a price that means I'm working for free by week two. Saying no to a bad price is cheaper than saying yes and resenting the project for the next month.

Why I think this is worth sharing

Every freelancer or agency dev has some version of this story. The details change — the platform, the client, the country — but the shape is identical: discount granted, scope quietly expands, developer eats the difference because walking away mid-project feels worse than finishing at a loss.

The fix isn't "don't give discounts" or "don't take small jobs." It's that price and scope have to move together, every time, out loud, before the work happens — not after you're three unpaid hours into a rebuild you didn't agree to.


What's your version of the Corolla line? Every developer I know has one phrase that ends these conversations — I'd like to hear yours.

Top comments (0)