Product Architecture

How TurfPilot works, end to end.

A modular estimating platform that turns a satellite outline into a signed proposal in under 10 minutes. Below is the flow, the rules engine, and how each module interlocks.

Core workflow

Customer
Step 1
Measure
Step 2
Estimate
Step 3
Materials
Step 4
Proposal
Step 5
Payment
Step 6

Modules & responsibilities

Customer CRM

Contacts, project addresses, photos, notes, filterable search.

Measurement Engine

Mapbox satellite polygon capture, exclusions (pool, concrete).

Estimating Engine

Reactive rule set — sqft, waste, seams, labor, tax, markup.

Catalog & Pricing

Turf/infill/base/adhesive SKUs, per-unit pricing, activation.

Proposal Builder

Branded PDFs, upgrades, terms, e-signature capture.

Billing

Subscription plans, seat counts, deposits, invoice history.

Access Control

Role scopes: Contractor, Estimator, Sales, Admin.

Data Layer

Normalized customers → projects → estimates → proposals.

Admin Console

Global catalog, account management, plan orchestration.

Estimating rules engine

Roll & seam calc
linearFt = ceil(sqft / rollWidth)      // 15' rolls default
rolls    = ceil(linearFt / 100)         // 100' roll length
seams    = max(0, rolls - 1)
seamLen  = seams * sqrt(sqft)
turfCost = sqft * (1 + waste/100) * $/sqft
Pricing waterfall
materials = turf + infill + base + accessories
subtotal  = materials + labor + equipment + delivery
tax       = subtotal * (taxPct / 100)
price     = (subtotal + tax) * (1 + markupPct/100)
profit    = price - (subtotal + tax)
margin    = profit / price

Data flow

Customer
↓ has many
Project
↓ has many
Estimate
↓ has many
Proposal

Role access matrix

ModuleContractorEstimatorSalesAdmin
Customers
Projects
Estimates
Measurement
Proposals
Product catalog✓ own✓ view✓ global
Accounts
Subscriptions✓ own✓ plans

Ready to try it?

Open workspace