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 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.
- 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.
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.
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.
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.
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.
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.
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.
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.
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.
Our Strategy
A phased approach to delivering measurable results.
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
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
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
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.


