Skip to main content
Case studyApplication Development

Bidding a Lawn From Space, and Invoicing the Day It's Cut

Satellite-measured estimates, an optimized daily route, and per-cut invoicing in one system

4M Lawn Care's property book: 26 measured properties, each with acreage, vision-detected tree and bed coverage, slope class and a per-visit price, all marked ready to route.
0
Property visits required to quote
1 day
Invoice turnaround
2-opt
Route optimization

4M Lawn Care ran a commercial route on manual invoicing and a drive to every property to produce an estimate. We replaced all of it with one system: paste an address and it measures the property from county parcel data and satellite imagery to produce a price, bundles estimates into a client proposal, converts an accepted proposal into a billing account, sequences the day into an optimized drive order, and invoices each cut the day it happens.

Services
  • Custom Software Development
  • AI & Computer Vision
  • GIS & Mapping
  • Progressive Web App
  • Billing Automation

Challenges & Solutions

What stood in the way, and how we cleared it.

01

Every estimate required driving to the property

Quoting a new commercial property meant getting in a truck, looking at the lawn, and guessing at the areas that matter. That put a hard ceiling on how many properties could be bid in a week, and it made bidding a large portfolio impractical.

Solution

We built an estimating pipeline that starts from an address. It geocodes the property, pulls the county's own recorded parcel polygon, fetches satellite imagery sized to the lot, reads that image with AI to separate turf from canopy and beds, samples a USGS elevation grid to derive slope, and prices the result against a transparent model.

Result: Properties are bid from a desk in seconds, individually or as a pasted batch, with a per-cut price and an exportable spreadsheet.
02

An AI estimate you cannot check is an estimate you cannot trust

A pricing model that depends on a language model reading an aerial photo has a known failure mode: it will occasionally call a large house on a small lot a commercial property, and misprice the job.

Solution

We cross-check the model against physical reality. Parcel acreage overrides a commercial classification when the land does not support it, because a real commercial mowing job sits on real land. Every measurement carries a method and a confidence, and a low-confidence bid carries an internal advisory to walk the property before it goes out, so the estimator never has the tool's uncertainty hidden from them.

Result: Every measurement carries its method and a confidence level, and the bid surfaces its own weak spots to the estimator instead of presenting a shaky number as a certain one.
03

The drive order and the billing roster could drift apart

A route is only right if it holds exactly the properties the client is being billed for. Hold the drive order and the billing roster in two places and they drift: a property gets added to the account and never makes the drive, or a stop keeps getting cut after it comes off the books. Stops in the order they were added also produce long backtracking drives between neighbors.

Solution

We brought routing in-house and tied it to the customer records. A 2-opt optimizer refines the drive order on an open path, and adding a property automatically slots a stop into the route while removing one archives it, so the route and the billable roster can never drift apart.

Result: The daily drive order is derived from the same records that bill the client, so a property can't sit on one list without sitting on the other.
04

Invoicing was manual, so cash arrived a month late

Cuts were recorded one place and invoiced another, by hand, on a monthly cycle. For a per-cut commercial account that delay pushed payment out by weeks.

Solution

The crew works the route in an installed phone app that tolerates dead zones, tapping Navigate and then Complete, which stamps the cut with GPS and queues it. An end-of-day digest emails the client one invoice per cut, while monthly accounts stay on a scheduled batch. Both cadences read one field, so no account can ever be billed twice.

Result: For per-cut accounts, invoices leave the same day the work happens instead of at the end of the month.

Our Strategy

A phased approach to delivering measurable results.

1

Modeling the pricing

We wrote the pricing logic down as an explicit rule set: a base rate per mowable acre, a floor price, and multiplier tables for tree canopy, planting beds and slope. Every price the software produces is inspectable and adjustable instead of a black box.

  • Pricing model
  • Multiplier tables for canopy, beds, and slope
  • Price-band validation
  • Property-type profiles
2

Measuring properties without visiting them

We assembled a measurement pipeline from public data: county parcel services across four counties, satellite imagery, AI vision for surface composition, and USGS elevation for slope.

  • Multi-county parcel lookup
  • Satellite capture and projection
  • AI surface analysis
  • Elevation and slope derivation
3

Turning estimates into accounts

We connected bidding to the rest of the business: estimates bundle into branded proposals, accepted proposals convert into billing accounts with property rosters, and every property carries its own price and cadence.

  • Proposal builder and PDFs
  • Account and property management
  • Bulk property import
  • Operations dashboard
4

Running the day and billing it

We built the field app and the money path: an offline-tolerant route runner with GPS-stamped completions, an optimizer that refuses to make a route worse, and two invoicing cadences that cannot double-bill.

  • Crew progressive web app
  • 2-opt route optimizer
  • Per-cut invoice digest
  • Scheduled monthly invoicing

Results

Measurable outcomes that speak for themselves.

Quotes without the drive

Properties are measured from parcel data and satellite imagery instead of a site visit, individually or in batches.

Same-day invoicing

Per-cut accounts are invoiced the day the work is completed rather than at month end.

Routing and billing share one record

The drive order is built from the same property roster that bills the client, so the route can't drift from the books.

Tech Stack

The technologies and tools powering this project.

N
Next.js 16
R
React 19
T
TypeScript
T
Tailwind CSS
O
OpenAI GPT-4o Vision
G
Google Maps Platform
C
County ArcGIS Services
U
USGS Elevation
N
Netlify Blobs
p
pdfkit

Project Details

IndustryCommercial Landscaping
Start here

Want one of these for your business?

Every project on this site started with the same conversation. Tell us what you're building, or get a free written audit of what you already have.