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 TypeTypical Ballpark RangeKey Variables That Shift the Number
Bathroom fan install$150 - $450Attic access, finished ceiling, wiring distance
Water heater replacement$900 - $2,200Tank vs tankless, permit required, gas vs electric
HVAC tune-up$85 - $175System age, filter condition, number of units
Exterior painting (1,500 sq ft)$2,800 - $6,500Stories, surface condition, trim detail
Kitchen faucet replacement$180 - $380Under-sink access, shutoff valve condition

Build your ballpark intake system with AI

Get Started

How 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

Won't giving a ballpark before a site visit kill my margin?

Only if you give a fixed price instead of a range with a clear disclaimer. Estimates are not legally binding and are subject to change as project details are defined, according to Projul's 2026 estimating guide. A range communicated verbally with explicit conditions attached is not a quote, and courts and customers both understand the difference when you set expectations correctly from the start.

What information do I actually need before giving a range?

Four inputs: job type with a follow-up on current conditions, rough size or square footage, photos of the existing space, and access or age-of-home information. Closer Look General Contracting's March 2025 guide identifies these as the three core inputs for any defensible ballpark - average market costs, project type and size, and your own historical data from comparable jobs.

How do I stop customers from holding me to the low end of my range?

Verbal framing at the time of the quote is your best tool. TheHogRing.com's trade professional guides recommend saying explicitly: "I can give you a range, but without seeing it I cannot promise the price won't change. Are you okay with that?" Getting a verbal yes creates a shared understanding before the site visit, not a dispute after.

Should I just charge for estimates instead?

For complex remodels and larger jobs, yes. Remodeling consultant Shawn McCadden has written that the ballpark request is actually a useful moment to justify paid estimates - the customer is already showing price sensitivity, and a paid estimate filters for serious buyers. For routine service work under $1,500, a calibrated range on intake is faster and converts better than a paid estimate process.

How much does wasting a ballpark call actually cost me?

LocaliQ's 2025 benchmark analysis of 3,200+ campaigns found HVAC leads average $105 and roofing leads average $228.15. If you convert at 15%, Talk24.ai calculates your real cost per customer at $333 on a $50 lead. Every unconverted intake call is that dollar amount walking out the door.

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.