All Case Studies
Construction · Landscape

From handwritten site notes to client-ready proposals.

A six-agent AI orchestration system designed for an exterior landscape construction contractor — turning a phone snapshot of paper-pad notes into a branded Google Doc proposal in minutes, not hours.

Engagement Type Orchestration Blueprint
Industry Exterior Landscape Construction
Stack Claude · n8n · Supabase · Google Workspace
Timeline 12-week phased rollout
1–3 hrs → ~15 min
Proposal turnaround per job
~35 hrs / month
Office time returned to billable work
~13×
Monthly ROI vs. operating cost
$86 – $204 / mo
Operating cost at typical volume

Every proposal started at the office, hours after the site visit ended.

A landscape construction contractor was losing one to three hours per proposal to administrative work — at twenty proposals a month, roughly forty hours of office time spent on a process that produced the same kind of output every time.

The day-in-the-life was straightforward and repetitive. The contractor would drive to a property, walk the exterior, measure dimensions — patio footprint, planter bed lengths, retaining wall heights, grade elevations — and write notes on a paper pad. Material preferences, soil conditions, drainage concerns, existing hardscape to remove. Sometimes a rough sketch. Sometimes a phone photo. Then the day ended at the office.

Back at the desk, the work that actually paid the business — the building — was over for the day. What followed was one to three hours of deciphering his own handwriting, manually typing measurements into a Word doc, looking up material costs, calculating square footage, classifying the job size, assembling a proposal from scratch, and emailing it to the client.

The pain was not a missing tool. It was a missing pipeline. Notes lived on paper. Pricing lived in his head. Templates lived in old Word documents. Client history was scattered across phone contacts, email, and memory. Nothing was holding any of it together — and the only person who could do the assembly was the same person who needed to be on a job site the next morning.

Pain Point
Impact
AI Fix
Manual transcription of handwritten notes
One to two hours per proposal, with errors creeping in from misread handwriting.
AI-powered OCR via vision LLM, tuned for construction terminology.
No structured client database
Client details re-entered from scratch every time, with no project history.
Supabase CRM with auto-lookup and project history retrieval.
Manual pricing calculations
Inconsistent pricing, missed line items, and quotes that drifted across jobs.
Pricing engine agent driven by a structured rate card and complexity multipliers.
Proposal formatting from scratch
Inconsistent branding, slow turnaround, and lost momentum with prospective clients.
Templated Google Docs generation populated through the Workspace API.
No automated follow-up
Lost deals from delayed or forgotten follow-ups after the proposal went out.
Notification and reminder agent with three-day and seven-day cadence.

Encode the contractor's logic first.
Automate the workflow around it.

The architecture was built around a clear principle: encode the contractor's domain knowledge first, then automate the pipeline around it.

Before any tooling decisions, ResonAi worked with the contractor to extract the institutional logic that lived in his head. Rate cards. Sizing thresholds. Complexity multipliers. The language he used to describe scope. The sequence in which work actually happens. Every proposal he had ever written contained these rules implicitly — the system needed them to be explicit.

The architecture is six single-responsibility agents in sequence, with the contractor reviewing and approving every output before it reaches a client. Human-on-the-loop is not a fallback. It is the design.

Once the logic was encoded, the orchestration followed naturally. Each agent has a single job. An intake agent receives a photo of the notes — over WhatsApp, email, or a simple PWA. An OCR and extraction agent reads the handwriting and pulls out structured data with confidence scoring on every field. A data enrichment agent matches the client against the CRM and surfaces project history. A pricing and sizing agent applies the rate card and complexity rules. A proposal draft agent generates a branded Google Doc with narrative scope, itemized pricing, and timeline. A notification agent handles delivery, follow-ups, and tracking.

The orchestration runs on n8n, with Claude handling vision and language, Supabase holding the data, and the Google Workspace API generating the documents. It is deliberately built on commercial low-code infrastructure — the contractor is never dependent on a custom platform to keep operating, and any agent in the pipeline can be replaced or swapped out without rebuilding the whole system.

Single-responsibility agents.
Human-on-the-loop at every checkpoint.

Each agent has one job, fails safely, and hands off validated output to the next. The contractor stays in control of every proposal.

1

Intake

Receives photos of handwritten notes via WhatsApp, email, or a simple PWA upload. Validates image quality, runs deskew and contrast preprocessing, and assigns a Job ID.

InPhoto or PDF scan from any channel
OutValidated, preprocessed image with Job ID
2

OCR & Extraction

Vision LLM reads the handwriting and emits structured JSON — measurements, materials, drainage notes, client details — with confidence scoring on every field.

InValidated image
OutStructured JSON with field-level confidence
3

Data Enrichment

Fuzzy-matches the client against the Supabase CRM, surfaces project history and preferences, or creates a new record flagged for verification.

InExtracted client name, phone, address
OutComplete client record with project history
4

Pricing & Sizing

Applies the rate card, complexity multipliers, and job-sizing matrix. Produces line items, subtotals, tax, and a small/medium/large classification.

InMeasurements, materials, rate card
OutItemized cost breakdown and job class
5

Proposal Draft

Copies the master Google Doc template, populates every field via the Docs API, and generates the narrative project overview and scope sections.

InAll enriched data and pricing
OutGoogle Doc URL ready for contractor review
6

Notification & Follow-Up

Alerts the contractor for review, delivers the approved proposal to the client, tracks opens, and triggers automated follow-ups on day three and day seven.

InApproved proposal
OutClient delivery, tracking, follow-up cadence

Three phases.
Value at week four.

The system is implemented in phases, each delivering immediate value while building toward full automation. Phase 1 puts a working OCR-to-structured-data pipeline in the contractor's hands within four weeks.

Phase 1 · Weeks 1–4

Foundation

Establish the data layer and the OCR-to-structured-data pipeline. Set up Supabase with the schema, import existing client data, build the rate card, and configure n8n with a webhook trigger that accepts image uploads.

Deliverable. The contractor uploads a photo of notes and receives a structured JSON extraction within 60 seconds.
Phase 2 · Weeks 5–8

Proposal Generation

Automate the full pipeline from notes to draft proposal. Build the Google Docs template, implement enrichment and pricing agents, connect the proposal draft agent to the Docs API, and turn on contractor review notifications via SMS and email.

Deliverable. The contractor uploads notes and receives a draft Google Doc proposal within five minutes, ready for review and one-click approval.
Phase 3 · Weeks 9–12

Client Delivery & Intelligence

Automate client communication and build the business intelligence layer. Implement the notification and follow-up agent, build a dashboard showing open proposals, win rates, and pipeline, and add e-signature capability and proposal versioning.

Deliverable. A fully automated pipeline from site visit to signed contract, with a business analytics dashboard.

The math the contractor was
already losing every month.

The numbers below are not aspirational. They follow directly from the time the contractor was already spending on proposal admin, the hourly value of that time when it goes back to billable site work, and the operating cost of the system that replaces it.

01
What manual proposal work was costing
20 proposals/month × 2 hrs each = 40 hrs of office time per month
$3,000 / mo
at $75/hr opportunity cost
02
What review work costs after automation
20 proposals/month × ~15 min review each = 5 hrs of contractor time
$375 / mo
contractor review only
03
Time and value recovered
40 hrs − 5 hrs = 35 hrs/month returned to billable site work
$2,625 / mo
opportunity cost recovered
04
Net of system operating cost
$2,625 recovered − ~$200 monthly operating cost (high-end estimate)
$2,425 / mo
net monthly value
Monthly Return on Cost
~13×
$2,625 in opportunity-cost value recovered for every $200 of system operating cost.
Annualized Net Value
~$29,100
$2,425 net monthly value × 12 months. Sustained, with no incremental staff cost.

And the economics get stronger with volume.

The system has near-fixed operating cost. Once the pipeline exists, every additional proposal it processes drops almost all of its recovered value straight to net.

Monthly volume
Hours saved
Value recovered
Operating cost
Net / month
10 proposalsLow volume
~17.5 hrs
~$1,313
~$78
~$1,235
30 proposalsMedium volume
~52.5 hrs
~$3,938
~$204
~$3,734
60 proposalsHigh volume
~105 hrs
~$7,875
~$398
~$7,477
Modeled at $75/hour opportunity cost — the conservative value of the contractor's time when it goes back to billable site work or client meetings instead of proposal admin. Operating cost ranges reflect the full stack at each tier (LLM API, n8n, Supabase, Google Workspace, SMS) and use the upper bound to keep the ROI estimate conservative.

Built on commercial low-code infrastructure.

No custom platform dependencies. Every layer is replaceable, observable, and priced in dollars per month rather than dollars per seat.

Monthly Operating Cost

At typical thirty-proposal volume.

The system pays for itself many times over. Against a thirty-proposal-per-month workload, total operating cost lands between $86 and $204 — versus roughly $2,600 in opportunity cost saved by returning the contractor's office time to billable work.

Component
Cost / month
LLM API (Claude / vision)
$45 – $90
n8n Cloud (or self-hosted)
$24 – $50
Supabase
$0 – $25
Google Workspace
$7 – $14
Twilio SMS
$10 – $25
Total
$86 – $204
Tech Stack

Each layer is swappable.

No proprietary glue. Every component is a commercial product with a documented API, so the architecture can evolve without a rebuild.

Orchestrator n8nSelf-hosted or cloud
Vision & LLM ClaudeAnthropic API with vision
Database SupabasePostgreSQL with row-level security
Documents Google WorkspaceDocs and Drive APIs
Notifications Twilio + Gmail APISMS and email delivery
Mobile Input WhatsApp Business or PWAPhoto capture from any device

AI failures are execution problems, not technology problems.

The technology stack here is unremarkable. Vision models, low-code orchestration, a Postgres database, and a document API are all commercial commodities. The leverage is in the design discipline that ties them together.

Logic extraction comes before tooling.

The contractor's rate card, sizing thresholds, and scope language are encoded in the system before any agent is built. The pipeline automates the contractor's decisions — not a generic notion of "what proposals look like."

Single-responsibility agents fail safely.

Each agent has one job and one definition of done. Low-confidence extractions are flagged for review rather than silently propagated. The contractor never has to debug the pipeline to understand what went wrong.

Human-on-the-loop is the design, not a fallback.

The contractor reviews and approves every proposal before it reaches a client. The system removes the assembly work, not the judgment.

Phased delivery beats big-bang implementation.

Phase 1 delivers working OCR-to-JSON in four weeks. The contractor sees value before the full system is in place — which is what funds the discipline to finish the rest of it properly.

Have a workflow that should look like this?

The same orchestration pattern applies to claims intake, support triage, broker inquiries, report generation, approvals, internal knowledge search, and most operational workflows that move information from one place to another. Start with a conversation about yours.