🔨 Construction GC / Specialty Trade

Drop your estimating workbook into Claude. Give clients a ballpark in seconds, not 3 weeks.

Who this is for: general contractors, design-build firms, and specialty trades (electrical, HVAC, roofing, concrete) bidding $25K-$2M jobs.

The pitch in one line: upload your estimating spreadsheet → get a client-facing ballpark calculator that hides your unit costs and exposes only the scope inputs. Same takeoff logic, same crew rates, same OH&P — just self-serve enough for the inquiry stage.


What your estimating workbook looks like today

Every estimator has a version of Master_Estimate_v9.xlsx. The tabs usually look like:

Tab What it does
Inputs Project type, sq ft, stories, finish level, scope flags (kitchen, bath count, structural, mech upgrade, site work, demo, permits)
Unit Costs Per-sq-ft costs for framing, drywall, electrical, plumbing, HVAC, finishes, by finish tier (Basic/Mid/High)
Crew Rates Burdened hourly cost per trade — these are the numbers you do NOT want any client to see
Material Markup Material cost × markup factor (typically 1.18-1.35)
Waste Factors Per-material waste % (drywall 10%, tile 15%, lumber 12%, etc.)
Sub Bids Allowances for subs you haven't quoted yet (roofing, MEP)
Equipment Rental days × rate (lift, dumpster, scaffolding)
Permits & Fees Permit by jurisdiction × project value
OH&P (subtotal) × (overhead % + profit %) — your secret sauce
Contingency 8-15% buffer depending on scope clarity
Total Bid Sum-of-everything, rounded to the nearest $500

You email this to a homeowner or commercial client only after they sign an "estimating agreement" because the workbook leaks margin. For everything pre-engagement, you say "give me 2 weeks for a real number" — and 60% of those leads ghost or go to whoever quoted them faster.


What CalcForms gives you instead

Easiest path: drop your estimating workbook into Claude

If you have Master_Estimate_v9.xlsx, drag it into a Claude chat with the CalcForms connector and say:

Build this as a client-facing CalcForms ballpark tool. Inputs the client should see: project type, square footage, finish level, scope checkboxes (kitchen remodel, bathroom count, structural changes, MEP upgrade, demo, permits). Hide everything in the Crew Rates, Material Markup, OH&P, and Contingency tabs — those are computed silently. Output a single range (low-high) for the bid, not a fake-precise number.

Claude reads your workbook, identifies that Crew Rates and Material Markup are internal cost basis (never expose), Unit Costs by finish tier becomes a 2-D lookup table, the per-trade subtotals roll up through markup and OH&P automatically, and the contingency band turns into a low-high spread (e.g. subtotal × 1.08 to subtotal × 1.18). The builder UI appears. You spot-check by entering scope from a job you bid last quarter — does the range bracket your actual bid? If yes, ship it. If your range is too wide ("I want ±10%, not ±20%"), tell Claude and it tightens the contingency bounds.

Time from "drag the .xlsx" to "deployed URL": 20-30 minutes, mostly spot-checking that the ranges bracket your real bids.

From-scratch alternative

If you'd rather start clean (residential remodel example):

Build me a residential remodel ballpark calculator with:

Unit costs ($/sq ft by finish level): Basic = 110, Mid-range = 185, High-end = 285, Luxury = 425.

Project type multiplier: Kitchen remodel = 1.4, Bathroom remodel = 1.6, Whole-home renovation = 1.0, Addition = 0.85, ADU = 0.95.

Regional cost factor (rough RSMeans-style): Default = 1.0. SF/NYC/Boston ZIPs = 1.45. LA/Seattle/DC = 1.25. Austin/Denver = 1.05. Midwest = 0.92. Rural South = 0.82.

Add-ons:

Markup (built-in, hidden from client): material 1.22, OH&P 1.28.

Calculations:

6 minutes later the calculator is live. You put the URL on your contact page: "Get a 30-second ballpark before booking a site visit."

A homeowner enters their scope. They see:

Your project ballpark: $172,000 – $225,000

This range reflects typical {project_type} {finish_level} costs in your ZIP. A site visit produces a real fixed bid.

[Book a site visit →]

They submit (you get every input + the range in your dashboard). Your scheduler calls them back: "Looks like you're in the $170-225K range — that's well within what we build. Want to schedule a site visit Tuesday or Thursday?" You skipped 2 rounds of email and went straight to a calendar invite.


The outcome

Estimating-spreadsheet workflow CalcForms client-facing ballpark
Time from inquiry → first number 2-3 weeks Under 60 seconds
Ghost rate after first inquiry ~60% ~25%
Site visits booked per 100 inquiries ~15 ~40
Calls that begin with "what's it going to cost?" Every one of them None — they already saw the range
Margin leaked to client Real risk if you sent the workbook Zero — they only see range outputs
Time spent on dead leads (under-budget) ~6 hours/week of wasted estimating 0 — under-budget clients self-select out

The wedge: by exposing a range (not a fake-precise number) at the inquiry stage, you filter out the bottom of the market and let clients self-qualify before you spend an hour on the phone.


What about commercial / hard-bid work?

CalcForms is not your bid-day tool. It's your pre-engagement tool — the conversation that decides whether you spend the 80 hours doing the real takeoff. For commercial RFPs, you still build the real estimate in your existing software (PlanSwift, ProEst, Sage, Excel). But you can use a CalcForms ballpark form internally so your BD team can give a ROM (rough order of magnitude) to a developer in 5 minutes without bothering an estimator.


Honest gotcha

The range you publish is the range you'll be held to. If a client gets $172K-$225K and the real bid comes in at $260K, you'll have an awkward conversation. Two ways to handle this:

  1. Widen the range — adjust your markup/contingency bounds so the high end is genuinely your worst-case. Better to walk back from "we came in at the low end of the range" than to fight a $40K gap.
  2. Add scope clarification — bake a "scope assumptions" footer into the form description. "Range assumes standard finishes per tier and no hidden conditions. Site visit may reveal additional scope."

Try it

Reference example (different industry, same engine): forms.badabingapp.cc/f/commercial-underwriting.

Open Claude with the CalcForms MCP connector, drag your estimating workbook, and ship the URL by end of day. The first GC we shipped this for routed their entire "contact us" form through it — within 3 weeks they were sending 40% fewer wasted site visits and 30% more qualified ones.

Want this for your spreadsheet?

Connect CalcForms to Claude or ChatGPT and drop your .xlsx into the chat. We'll do the rest.

Get started — first week free →