Back to Blog
Company
From Spreadsheets to Software: How CleanEstimate Pro Was Built
Matt Rathbun
10 min read
The Spreadsheet That Started Everything
Every piece of software starts with a problem. For CleanEstimate Pro, the problem was a spreadsheet I built in 2023 to price house wash jobs. It was a mess. Columns for square footage, siding type, story count, and lot size. A lookup table for per-surface rates. A formula for the story multiplier. Another formula for flatwork. A manual entry for add-ons. And a margin calculation that only worked if I remembered to update my cost inputs. It took 5–10 minutes to build an estimate in that spreadsheet, and it was error-prone. I would forget to change the siding type dropdown and quote a brick house at vinyl rates. Or I would copy a previous estimate as a template and forget to update the square footage. Or the margin formula would break because I accidentally deleted a cell reference. The estimates looked unprofessional — a PDF export of a spreadsheet is never going to impress a homeowner. And my crew could not use it without calling me, because the spreadsheet was on my laptop and the formulas were fragile. I knew there had to be a better way. I started looking at existing estimating software and found that nothing was built specifically for power washing. The general contractor tools were either too complex (designed for remodeling contractors with material takeoffs and subcontractor management) or too simple (glorified invoice generators with no pricing intelligence). None of them knew what siding type meant. None of them could pull property data. None of them had per-surface pricing.
Building for One User: Myself
I did not set out to build a software company. I set out to replace my spreadsheet. The first version of what became CleanEstimate Pro was a simple web app that did three things: pull property data from an address, apply my per-surface rates automatically, and generate a PDF. That was it. No admin portal, no team features, no pipeline, no integrations. Just address in, estimate out. I built it because I was tired of the spreadsheet. The property data pull was the unlock. When I typed in an address and the square footage, siding type, and story count populated automatically, I realized I had something. I was not measuring anymore. I was not guessing siding type from a Google Street View screenshot. The data was right there, and my rates loaded based on that data. My first estimate with the tool took 52 seconds. My spreadsheet took 8 minutes on a good day. That 7-minute difference does not sound like much, but when you are doing 10–15 estimates a day during peak season, it is 70–105 minutes of your day back. Over a week, that is almost an entire workday. Over a season, it is hundreds of hours. But the real value was not the time savings — it was the accuracy. Every estimate used the correct rate for the siding type. The story multiplier applied automatically. The margin showed me whether the estimate was profitable before I sent it. I stopped making the $200–500 pricing mistakes that had been costing me all season.
The Admin Portal: Giving Operators Control
Once the core estimating worked, the next obvious need was the admin portal. I wanted to change my rates without editing code. I wanted to add new surfaces, adjust multipliers, and configure add-on services from a dashboard. The admin portal became the control center for the entire system. Set your per-surface-type rates. Define your story multipliers. Configure your add-on services with their pricing methods (per unit, per linear foot, per square foot, flat rate). Set your margin targets and the thresholds for the color-coded badges. Enter your crew costs, chemical costs, and overhead. Everything that makes the estimating engine work is configured in the admin portal. This was also where the "set it once" philosophy took shape. An operator should not have to think about pricing on every estimate. They should set their rates once, update them when costs change, and let the system handle the math on every individual estimate. The admin portal is where you think about pricing strategy. The estimating screen is where you execute. This separation turned out to be critical for team usage. The owner sets the rates in the admin portal. The crew in the field creates estimates using those rates. The owner controls pricing without being the bottleneck on every estimate.
Beyond Residential: Modules for Every Revenue Stream
The residential module proved the concept, but power washing operators do not just wash houses. They install holiday lights in the off-season. They bid commercial buildings. They wash truck fleets. Each of these revenue streams has its own pricing model, its own workflow, and its own customer type. Rather than building one monolithic application that tries to do everything, we built CleanEstimate Pro as a modular system. Each module is purpose-built for its revenue stream. The Holiday Lights module has a visual drag-and-drop builder because customers need to see the design. The Commercial module has a kanban pipeline because commercial deals take weeks to close. The Fleet module has per-unit vehicle pricing because fleet managers think in units, not square feet. The modular approach means operators only pay for what they use. A residential-only operator does not need the commercial pipeline or the fleet vehicle configurator. A full-service operation that does residential, commercial, lights, and fleet gets all four modules and a unified view across their business. Each module shares the same admin portal, the same branding, the same PDF generation, and the same team management. But the estimating workflow and pricing logic are purpose-built for each service type. This is the architecture that lets us add new modules — like the upcoming Asphalt and Seal Coating module — without disrupting existing functionality.
What We Got Wrong and What We Learned
Building software for an industry you work in gives you an advantage — you understand the problem deeply. But it also gives you blind spots. Here is what we got wrong along the way and what we learned. First, we over-engineered the pricing configuration. The initial version had so many options that operators spent 45 minutes setting up their rates. We simplified it to a guided setup that takes 10 minutes and covers 90% of use cases. Advanced options are available but not required. Second, we underestimated the importance of the PDF. We thought the estimate data was the product. We were wrong. The PDF is the product. It is what the customer sees. If the PDF does not look professional, nothing else matters. We spent two full development cycles on PDF design, layout, and branding options. Third, we tried to build a CRM before we built the estimating right. We started on pipeline features before the core estimate-to-PDF flow was rock solid. Operators do not need a CRM if they cannot generate an accurate estimate in under a minute. We pulled back, perfected the estimating flow, and then added the pipeline features for commercial. The lesson: solve the core problem first, then expand. Fourth, we learned that operators will not read documentation. Every feature needs to be obvious from the interface. If it requires a help article to understand, it is too complicated. This principle drove our UX decisions — big buttons, clear labels, color-coded indicators, and as few screens as possible between "type address" and "send PDF."
Where We Are Going
CleanEstimate Pro started as a spreadsheet replacement. It became a modular estimating platform built specifically for the exterior cleaning industry. Today, operators use it to generate residential estimates in under a minute, build visual holiday lighting proposals that close at 78%, manage commercial pipelines with six-figure portfolio deals, and quote fleet contracts with built-in margin protection. The roadmap is driven by operator requests. The Asphalt and Seal Coating module is next — lot square footage pricing, single and double coat options, crack repair, line striping, and patchwork. After that, we are looking at roof-specific estimating (soft wash pricing with pitch multipliers and material calculators), window cleaning as a standalone module (not just an add-on), and deeper integrations with field service platforms. Every new module follows the same philosophy: pull the property data automatically, load the operator’s configured rates, show the margin in real time, and generate a branded PDF. The surface types and pricing models change. The core workflow does not. We are also investing in the features that make the whole system more valuable — better reporting and analytics, improved team management, enhanced proposal tracking, and a mobile experience that works as well on a phone in the field as it does on a laptop in the office. This is software built by operators, for operators. Every feature exists because someone in the field needed it. That is how it started and that is how it will continue.