TerraQuotes

A patent-pending tool that prices yard work from public property records, so a homeowner gets a number before anyone comes out.

Shipped

My role

Founder, product and machine-learning engineer

Company
Good Citizens
Industry
Landscaping
Years
2025 to 2026
Team
Sole developer
  1. Built TerraQuotes alone over 17 months, from one homeowner's question to a live product run by a pilot operator, Quiet Village Landscaping.
  2. Designed the estimator so the homeowner measures nothing: the county's lot size, minus the buildings, times the contractor's own rate per square foot.
  3. Set the rules for the pricing model before it learned anything: it may only nudge the price, inside written limits, and it may not learn until 75 won and 225 lost jobs come back.
  • Live with a pilot operator, Quiet Village Landscaping, pricing real homeowners' yards
  • 1 address is all a homeowner types to get four priced monthly plans, with no sales call
  • 9 of 38 leads booked a visit after getting an instant price, and 4 became work
  • 49 of 225 lost bids recorded so far, against the count the model needs before it may learn

Summary

A friend asked a landscaper what his new lawn would cost. He got a plan, the fire pit he had mentioned in passing, and a bill for seventy-five dollars an hour of design. He only wanted the number. TerraQuotes gives a homeowner that number from an address, using the lot sizes the county already publishes for free.

I built it alone. A simple rule sets the price, and a machine-learning model may only nudge it, inside limits I wrote down in advance. The model is still waiting, on purpose: it has to see the bids contractors lost, and only 49 of the 225 it needs have come back.

Who was involved

  • Homeowners Want to know what yard work costs before anyone comes out.
  • Landscaping contractors Quiet Village Landscaping, the pilot operator, uses it today, and its prices come from its own price list.
  • Jeff Haring, Sundown Landscaping Saw an early build and drew the line between upkeep and installation.
Address to monthly total. One address in and a priced monthly package out, on Quiet Village's estimator, with no sales call.

Context

To give a homeowner a price before anyone comes out, I had to know how big their yard is without visiting it. The riskiest hypothesis was that a free source of lot sizes existed at all, and was good enough to price from. The whole product depended on it, and no national service offered one.

The hard part was never showing a buyer a range of numbers. It was resisting the urge to build a giant do-it-yourself landscape design tool, and staying on one question: which prices do people say yes to? In the trade that is called conversion, how often a quote turns into a paying job.

Research

Before building anything, I wrote each guess down as a hypothesis I could test, with what would prove me wrong. Then I ranked them by how much it hurts if I am wrong and how much a customer gains if I am right, and built in that order.

I went to the county records first: the city of St. Louis, St. Louis County, and Maricopa County in Arizona. St. Louis publishes every lot's land and building square footage for free, and the same approach worked in the other two. I showed an early build to Jeff Haring of Sundown Landscaping, and when Quiet Village came on, I tested the idea against their real price list.

Key hypotheses

Three hypotheses had to hold before this was worth building. Here is each one, and where it stands.

I tested these three hypotheses against a real price list when the first contractor, Quiet Village, came on. Their prices went into the model, and their customer records gave me the two questions I actually care about: does the estimate get closer to what jobs really sell for, and can a machine learn which quotes win.

  • Calculator trust

    Can a calculator hold a sensible price while someone changes their mind about what they want? Yes. The packages and add-on switches shipped, and I took away the input people could get wrong without noticing.

  • Estimate price

    Is the number close enough for a landscaper to take the lead seriously? Still open. A pilot operator runs it live, but I threw out the accuracy test before it could be scored, so the number itself is unproven.

  • Sq ft method

    Can a landscaper price work by the square foot? Yes, with a catch. The first pilot rewrote their upkeep pricing to a flat rate per square foot. Installation stays out, because nobody knows what's under the lawn.

Training gate

The model cannot start learning until enough finished jobs come back.

These numbers aren't random. I ran a simulation: I fed the model pairs of jobs, one won and one lost, and asked it to pick the winner. I tried different numbers of jobs, ran the simulation 30 times at each, and kept the smallest number of jobs where it picked the winner at least 80% of the time. Turns out that's 75 won jobs and 225 lost. The practice jobs were made up, though, so they tell me how many real jobs I need, not whether there's a pattern to find.

  • Losses recorded

    49/225

  • Wins recorded

    6/75

  • Wins we can train on

    0/75

Given one job that was won and one that was lost, a test model I trained in July put the winner first 47 times in 100. A coin flip gets 50, and I decided in advance I'd give up below 60. (Set on 14 July 2026.)
Assumption map

Design

The homeowner measures nothing. You type your address and pick your house from a list. The app takes the lot, subtracts the buildings, and shows what is left as a green tag beside the address. The price is that area times the contractor's own rate per square foot.

It only prices addresses picked from the list. If yours is not there, it says so and offers a waitlist instead of guessing. The code that turns county records into that list is patent pending, not granted.

The chosen address bar reading 1 World Wide Way, Maryland Heights, MO 63146 with a green tag beside it showing 26,863 sq ft
The lot, minus the buildings. The green tag shows the 26,863 square feet that can actually be worked on.
An address that isn't in the property list: an explanation of where the tool works and a waitlist signup form instead of an error page
When I cannot price it, I say so. An address off the list gets an explanation and a waitlist instead of an error.

More screens

Quiet Village Landscaping's GEM Concierge Quote Estimator on a phone: the company logo over a photo of a finished patio, with the estimator's name set large.
The contractor's estimator. Quiet Village's own page: type an address and get plans priced for that lot.
Plan cards on a phone: GEM Premier, marked Most Popular, at $374 a month, beside GEM Essentials at $295 a month. Below, the address bar carries a green tag reading 4,316 sq ft, and a table compares what each plan includes. The street address is blurred.
Plans priced for this lot. The lot is measured from county records and shown as a tag; each GEM plan is priced by the month.
The Maintenance tab on a phone: tiles for Lawn at 4,316 sq ft, Landscape and Hardscape, then Routine Care with Mowing and Fertilization ticked, each marked as available in GEM Essentials packages.
Routine care, line by line. Each line says which plan includes it, and the measured lawn sits at the top.
The Enhancements tab on a phone with the Hardscape tile selected: Paver Patio, 2ft Garden Walls, Flagstone Steppers, Dry Creek and Iowa Rainbow Rock Bed, each available in GEM Concierge packages.
Add-ons on their own tab. Hardscape, water and lighting sit under Enhancements, apart from monthly upkeep.
Customizing a plan. Ticking routine care and extras while the monthly total stays in view.
The end of the estimate on a phone: a green leaf and the line Consultation requested for Tuesday, September 29, 2026, with the monthly total of $185 for Lawn Basics pinned below.
Booked from the estimate. The homeowner picks a time without leaving the page.
An Add a source dialog showing a source tag, a bare or framed appearance choice, an initial height, and the script tag to paste into a page. Screenshot of the live app at quietvillagelandscaping.com/gem-concierge-quote-estimator, August 2026. Browser toolbar trimmed; nothing else changed.
The estimator, embedded. The same estimator runs on the contractor's own website as a small add-on with a tag, so each lead arrives already marked with the page it came from.
GoHighLevel: an opportunity named for the property on Fairdale Ave, in the Sales Opportunity Pipeline at the Onsite Appointment stage, status Open, valued at $438, the homeowner's monthly estimate. The contact's name and phone are blurred.
The lead, in the contractor's CRM. The estimate arrives as an open opportunity at the onsite-appointment stage, valued at the homeowner's monthly price.
The contractor's CRM calendar, week of September 27 to October 3, 2026, with an appointment panel open: Consultation at a Fairdale Ave. address in Rock Hill, Missouri, Wednesday, September 30, 2026, 10:00 to 10:15 AM, on the Booking Only calendar, status Confirmed. The house number, contact details and other appointments are blurred.
The visit, on the contractor's calendar. The consultation the homeowner booked shows up confirmed on the contractor's own CRM calendar.

Iteration

The first version was install-first. You typed an address and picked one of three one-time packages, Curb Appeal, Full Lawn or Dream Lawn, and an isometric drawing of a house redrew its yard to show what you were buying. Full Lawn at one address came to $106,564, or $16.30 a square foot.

It priced the wrong job. Jeff Haring saw an early build and said: “This is great for maintenance; not quite ready for installation. That’s complicated as soon as you start digging.” Five months later my first pilot drew the same line unprompted. So the packages became monthly upkeep: Quiet Village rewrote its maintenance prices as one flat rate per square foot, its packages became the GEM monthly plans, and digging moved to its own opt-in tab.

Some lessons came the hard way. Sending the whole address list to a phone, six megabytes of it, made the page slow and broke on iPhones, so now the server answers each search. A partner's website rewrote the address of my code and broke the quote form, so now the app knows each partner by name instead of guessing.

Three isometric drawings of the same two-story house on a green lot. Curb Appeal adds shrubs and flower beds along the walk. Full Lawn adds a flowering border and a long hedge. Dream Lawn adds a stone patio, a fountain, a pond and a gazebo. The drawing layers are the ones the October 2025 estimator stacked.
The install-first model. One house, three yards. Picking Curb Appeal, Full Lawn or Dream Lawn redrew the yard you were buying.
Wireframe redrawn from October 2025: an isometric yard preview, the Full Lawn package at $106,564 and $16.30 per square foot between two partly visible packages, the address 1012 Tallie Dr., Des Peres, and a pinned Your Estimate bar with View breakdown. Redrawn from the components at commit 2599c314 (18 Oct 2025). The Full Lawn figures are from the observed capture of 1012 Tallie Dr.; the other packages' prices are left blank rather than invented.
October 2025: a price to install. Three lump-sum packages over the drawing, with Full Lawn at $106,564.
A phone showing GEM Premier marked most popular at $672/mo over the address 1987 Willow Lake Dr., Chesterfield, MO 63017 with a green 12,179 sq ft chip, and a pinned monthly total of $672.
Today: a price to keep. Monthly plans priced off the square footage the parcel record gives.

A design that didn't work

The October 2025 calculator asked the homeowner to set how much of the yard needed work, with a slider. People got it wrong, and the price looked just as believable either way. A wrong answer that looks right is worse than no answer, because nobody notices it.

So for mowing and upkeep I stopped asking and measured the lot myself, from the county's property records. The area picker moved to the add-ons, where choosing an area is the right thing to ask.

Outcomes

The Strata sales view: 38 leads, 38 estimated at $48,400, 9 scheduled at $14,120 marked minus 76% from estimated, and 4 won at $6,290 marked 44% of consultations, above a per-channel table for Direct and Google Ads
Every lead got a price. Thirty-eight asked, nine booked a visit and four became work, with the drop shown at every step.
The training gates in detail, the outcome sample size gate showing 49 against its requirement in red, with the other gates listed beside their thresholds. Screenshot of the live app at quietvillagelandscaping.com/gem-concierge-quote-estimator, August 2026. Browser toolbar trimmed; nothing else changed.
What the model waits for. The losses gate reads 49 against its requirement, in red, so the model stays blocked.

TerraQuotes is live. A homeowner gets a priced maintenance package in about a minute, with no sales call, and the leads go to the pilot operator, Quiet Village Landscaping. On one contractor's sales view, all 38 leads got a number back the same minute; nine booked a visit and four became work.

What I cannot tell you yet is how close the price comes. I threw out my accuracy test before scoring it, because 215 of 347 old sales rows mixed a monthly price with two one-time prices, with nothing to tell them apart. On July 14, 2026 I set the bar the model must clear before it is worth building, from a simulation rather than a guess. A test model I trained in July picked the winner 47 times in 100, against a coin flip's 50 and my cutoff of 60, and no model has ever priced a real quote.

  • A training gate: 75 won and 225 lost jobs before the model may learn. Today it has 6 and 49.

  • 63 requirements tracked, with the 19 that ship with a known gap listed.

For landscaping businesses

Instant prices, from your own rates

Homeowners type an address and see their yard priced. No sales call.

terraquotes.com →