A prospect emailed me last month asking for a flat $500 fee to “look at why my site is slow and fix it.” I said no. Not because $500 was too low — because the ask mixed two completely different services into one number, and that’s how scope creeps eat your margin and your weekends. Diagnostics and builds are not the same job. I price them differently on purpose.
Diagnostics is consulting. You pay for time and brain.
When a Bergen County manufacturer calls me because their site dropped from page one to page four of Google, I don’t know what’s wrong yet. Could be a Core Web Vitals regression. Could be a botched plugin update. Could be a competitor outranking them with better content. Could be all three. The answer lives inside an investigation that takes anywhere from 90 minutes to 6 hours depending on what I find. Quoting a flat fee before I open the hood is how amateurs lose $2,000 in unbilled time.
So I bill diagnostics at $175/hour with a 1-hour minimum. You get a written findings document, prioritized fix list, and rough cost estimates for each fix. That’s the deliverable. No surprises, no scope creep, because the scope is “spend N hours looking and tell me what you find.”
Builds are deliverables. You pay for the outcome.
Once we know what’s wrong, the fix is a build. A build has a defined scope, defined acceptance criteria, and a defined finish line. “Migrate the site off the broken host to Cloudflare Pages, restore Core Web Vitals to 90+, redirect map intact” — that’s a build. I quote it at $2,400 fixed. If it takes me 8 hours, that’s my problem. If it takes 22 hours because I underestimated, also my problem. You get the outcome at the price we agreed.
This is the part most freelancers get wrong. They quote builds hourly to “protect themselves,” which actually transfers all the risk to the client. Every hour you bill is an hour the client is watching the clock and wondering if you’re padding. Project rate aligns incentives: I get paid more if I’m efficient, you get certainty on cost.
Mixing the two confuses everyone
Here’s what happens when you try to bundle: “I’ll diagnose AND fix your site for $1,500.” Sounds clean. Reality:
- You spend 4 hours diagnosing and find the fix is a 30-hour rebuild. Now you’re underwater on a quote you can’t back out of without burning the relationship.
- OR you diagnose in 30 minutes and the fix is a 1-hour plugin swap. Client feels overcharged because they paid $1,500 for 90 minutes of work.
- OR scope explodes: “while you’re in there, can you also…” and you have no clean line to push back on.
Separating the two phases gives both sides a decision point. After the diagnostic, the client sees the findings and decides: fix it themselves, hire someone else, hire me, or do nothing. I’ve had clients take my $350 diagnostic, hand it to their nephew, and never come back. Fine. The diagnostic still paid for itself.
The model that actually works
Three-step engagement, every time:
- Discovery call — free, 20 minutes, scope the diagnostic.
- Diagnostic — $175/hour, 1-hour minimum, written report.
- Build — fixed project rate based on the report, 50% deposit, balance on delivery.
Clients who push back on this model are usually the ones who want a “quick fix” — which is shorthand for “I don’t want to pay for the thinking part.” Those clients are a trap. Walk away.
How AJD handles this
Every engagement I take starts with a free 20-minute discovery call. If there’s something to investigate, I quote diagnostics at $175/hour with a written deliverable. If you already know what you need built, I quote the build at a fixed project rate. I don’t mix them — and I’ll tell you which bucket your problem falls into on the call, whether you work with us or not.
Got a site that’s misbehaving and you’re not sure what it’ll cost to fix? Start with the diagnostic — you’ll walk away with a written report you can use, hire me or not. Book Free Discovery Call →





