A Google LSA lead in the home services space now costs an average of $60.50 - up 20% from 2023, according to 99 Calls. Roofing leads average $228.15 each. Every time you refuse to give a number over the phone and the customer hangs up, you just flushed real money.
The contractor on r/Contractor who sparked this post described it perfectly: "I'd either lowball because I didn't want to lose them, or highball to protect myself." That binary thinking is the whole problem. There is a third option, and it works.
Why refusing to quote at all is losing you money
LocaliQ analyzed over 3,200 home service ad campaigns between April 2024 and March 2025 and found that 69% of home service businesses saw their cost per lead rise, with an average increase of 10.51% year-over-year. Your leads are getting more expensive every quarter.
At the same time, homeowners are doing more research before they call. LocaliQ found the average number of customer touchpoints before conversion climbed from 4.9 to 5.5 in 2025. They are reading reviews, comparing your site to three others, and they want a number before they commit to a conversation.
If your answer to "roughly how much?" is "I need to see it first," a meaningful percentage of those callers move on. That is not protecting your margin. That is burning your ad budget.
What actually happens when you give a number too early
The risk is real too. A remodeling contractor quoted in the AWAI professional services community described under-quoting a job by 3 to 4 times because he gave a ballpark without enough information. That kind of mistake turns a $4,000 job into a $500 nightmare.
A plumbing industry guide from Young Douglas Insurance (October 2025) put it clearly: a toilet replacement that sounds like a $150 job can balloon fast if the flange is corroded, the bolts are broken, or there is subfloor damage. The customer feels misled even when the extra cost is completely justified.
So refusing to quote protects nothing, and quoting blindly destroys margin. The fix is a structured intake that gives you enough to generate a range, not a price.
The 4-question intake that makes ballparks defensible
Before you give any number, you need four things from the customer. You can collect these in a 90-second phone call, a text thread, or a web form.
1. Job type and specific scope. "Bathroom fan install" and "bathroom fan install with attic access through a finished ceiling" are two different jobs. Ask one follow-up: what is the current situation?
2. Square footage or a rough size description. You do not need exact measurements. "Small half bath," "master bath with double vanity," or "1,400 sq ft main floor" is enough to bracket your range.
3. Photos. Text a link or just say: "Can you send me two or three photos right now?" Most customers will. Photos catch the red flags - old wiring, previous water damage, non-standard configurations - that blow up ballparks.
4. Access and existing conditions. Is the space finished or unfinished? What year was the house built? Any known issues? This one question eliminates the single biggest source of ballpark blowouts. Jobs that seem straightforward on the phone often hide corroded shutoffs, non-standard wiring runs, or finished ceilings that triple the labor.
With those four inputs, you can generate a calibrated range based on your market pricing and past job history. This is also exactly the kind of intake data you can feed into an AI prompt or chatbot to auto-generate a range - more on that below.
How to frame the range so it does not become a contract
The language you use matters as much as the number. Here is the framing that works, adapted from BuildingAdvisor.com and TheHogRing.com:
"Based on what you've described, jobs like this typically run between $X and $Y in our area. That range assumes standard conditions. Once I see it in person, I'll give you a firm number. If I find something unexpected, I'll call you before I touch anything."
That statement does three things. It gives the customer something useful. It sets a ceiling expectation. And it explicitly removes the binding nature of the number.
Projul's 2026 estimating guide is direct about this: estimates are not legally binding and are subject to change as project details become more defined. Say that out loud. Customers who are serious about getting the work done will respect it.
What your ranges should actually be based on
A ballpark without data behind it is just a guess. The ranges you quote should pull from three sources, as outlined by Closer Look General Contracting in March 2025: average market costs in your area, project type and complexity, and your own historical job data.
That last one is the most valuable and the most underused. If you have completed 40 bathroom fan installs in the last two years, you know what the low end looks like, what the high end looks like, and what causes jobs to move from one to the other. That is your range.
If you are newer or entering a new service line, check how to price home service work for a framework on building your baseline numbers. Your ranges will tighten as your job history grows.
| Job Type | Typical Ballpark Range | Key Variables That Shift the Number |
|---|---|---|
| Bathroom fan install | $150 - $450 | Attic access, finished ceiling, wiring distance |
| Water heater replacement | $900 - $2,200 | Tank vs tankless, permit required, gas vs electric |
| HVAC tune-up | $85 - $175 | System age, filter condition, number of units |
| Exterior painting (1,500 sq ft) | $2,800 - $6,500 | Stories, surface condition, trim detail |
| Kitchen faucet replacement | $180 - $380 | Under-sink access, shutoff valve condition |
Build your ballpark intake system with AI
Get StartedHow AI can generate these ranges for you automatically
Once you have your intake questions and your historical range data, this entire process can be automated. You build a simple prompt or chatbot script that takes job type, size, location, and key conditions as inputs and outputs a formatted ballpark range with the right disclaimer language attached.
We have seen this work across contractor accounts in HVAC, plumbing, and remodeling. The office manager or the person answering texts runs the customer's info through the tool and has a professional range to send back in under two minutes - without waiting for the owner to call back.
If you want to wire this into your existing intake workflow, automations for contractors and digital forms are the two pieces you need to connect. The intake form collects the four questions. The automation fires the range back to the customer with your disclaimer language.
For HVAC specifically, Make automations for HVAC businesses covers how to build this kind of trigger-based response without writing code.
The pre-qualification payoff nobody talks about
Matt from SweatyStartup.com, who documents general contracting profitability, makes a point that often gets missed: giving a ballpark range on the intake call also screens out customers whose budget does not match your work. There is a big difference between a $5,000 job and a $20,000 job, and the customer asking for the smaller one is not always wrong - they might just be wrong for you.
If you give a range and the customer says "that's way more than I expected," you have saved yourself a two-hour site visit, a written estimate, and a follow-up call that was never going to close. That time has dollar value. At $150 per customer acquisition cost on Google LSA, you cannot afford to spend that time on leads that were never qualified.
For more on building a consistent intake and follow-up process, automated follow-ups for contractors shows how to keep warm leads moving without manual effort.
Protecting margin when site conditions change the number
Even with a good intake, jobs surprise you. The range you gave was based on standard conditions, and the crawlspace turned out to be a nightmare. This is where your framing from the initial call pays off.
You already told the customer: if I find something unexpected, I call before I touch it. So call. Walk them through what you found. Reference the range you gave and explain specifically what pushed it higher. Customers who were quoted a range and warned about variables are dramatically more likely to approve a change order than customers who got a fixed number and are now hearing a different one.
For managing the financial side of these swings, how to manage contractor cash flow is worth reading alongside your estimating process. Margin leaks on underquoted jobs compound fast when cash is already tight.
You can also build a smarter intake by reviewing home service KPIs to track - specifically your estimate-to-close rate and your average variance between ballpark and final invoice. Those two numbers will tell you where your ranges are off.
For teams that want to reduce the number of leads that go cold after the initial range conversation, appointment reminder automation keeps prospects engaged between the intake call and the site visit.
Frequently Asked Questions
Start today with one change
Build a four-question text or web form collecting job type, size, photos, and access conditions. Send it to every incoming lead before you call them back. Use your last 20 completed jobs to set your ranges for each service type.
Add a one-sentence disclaimer to every range you give, out loud or in writing. That is the whole system. It takes an afternoon to set up and it starts paying back on the first lead you do not lose.