Contractors Kept Telling Me the Same Thing
I kept hearing the same complaint from people who run pressure washing businesses. Quoting a job on the spot feels like guessing. You stand in the driveway, do rough math in your head, second-guess the number, and either undercharge or lose the job to hesitation.
That stuck with me. So I built a quoting app for pressure washing companies. Not a general calculator. Something built around how the job actually gets priced in the field.
Two Layers: What the Contractor Sees vs What Runs Underneath
The app is built in two layers. The bottom layer holds the real business logic: labor rate, fuel cost, chemical cost, equipment wear, minimum job pricing, and markup. That layer is never shown to whoever is using the app in the field.
The top layer is what the operator actually touches. Job type, square footage, machine settings, a couple of sliders. Simple on purpose, because nobody wants to think through a spreadsheet while standing on someone’s driveway.
The client only ever sees a clean printable quote with a total price. No cost breakdown, no markup percentage, none of the math that got them there.
The Chemistry Research Took Longer Than the Code
Pressure washing uses sodium hypochlorite, SH for short, mixed at different strengths depending on the surface. Roofs run 5 to 6 percent. Driveways run 3 to 4 percent. Stucco and painted wood need a much lighter mix, around 0.5 to 1 percent, or the surface gets damaged. Cedar and exotic wood should never get SH at all. It strips the natural oils and grays the wood.
I pulled real local pricing too, not made-up numbers. Concrete driveway cleaning in Manatee and Sarasota County runs $100 to $175 for a two-car driveway. A full house soft wash runs $295 to $725. A minimum job fee around $150 to $250 is standard here, so the app checks the calculated total against that floor and flags it if a quote comes in too low.
Getting the Math to Match How the Machine Actually Works
My first version of the chemical math was wrong, and I only caught it by working through it line by line. I had it modeled as a batch mix, like you dump SH and water into a tank ahead of time. That is not how a downstream injector works in the field.
A downstream injector pulls SH continuously while the trigger is held, at a set ratio like 10 to 1. So the real inputs are the machine’s flow rate, how long the trigger is actually held during the job, and the injection ratio. Nobody holds the trigger the entire job either. Actual spray time usually runs 40 to 60 percent of total job time, the rest is moving, rinsing, and repositioning.
Fuel worked differently again. The engine runs the whole job, spraying or not, so fuel gets calculated off total job hours, not trigger time. Getting each of these right meant separating three things that are easy to blur together: how long the engine runs, how long the trigger is held, and how much chemical actually goes through the gun.
How a Quote Comes Together
-
1
Pick the job type and measurement Roof wash, house wash, driveway, pool deck, or screen enclosure, with square footage or linear feet.
-
2
Set the machine and injection method Downstream injector or X-Jet, flow rate, total job hours, trigger time, and injection ratio.
-
3
The app runs the hidden cost math Chemical cost, fuel, labor, and equipment wear calculate automatically from the inputs above.
-
4
Markup gets applied The subtotal is checked against the minimum job fee, then the markup percentage builds the final price.
-
5
A clean quote prints or emails Just the scope of work and the total price. Nothing about how the number was built.
Live, Free to Try, and Built to Be Customized
The app is live on Netlify, deploying straight from GitHub. No login, no download. Open it on a phone in the field and walk through the job details.
It started as a pressure washing tool, but the two-layer setup means the same approach could work for other field service trades. Landscaping, pool service, pest control, moving, junk removal. Swapping the cost model and inputs for a different trade takes about 5 days.
You can try the live demo here: pw-estimator.netlify.app.
This is the kind of custom build I take on through Gagne Marketing for local business owners who want something built around their own numbers, not a generic template. If that sounds useful for your business, I wrote more here: AI and automation for small businesses.
