TreeCanopy
Walk the site. Talk the job. Send the report.
Voice-to-quote software for tree-care firms. Talk at the tree, and the species, size, condition and price are on a quote before you're off the rope.
Category
Field SaaS
Timeline
12 weeks · idea to finished product
Focus
Enterprise & field

From the live app
Why I built it
It started with a working tree surgeon and a simple observation: arborists know trees cold and lose their evenings to paperwork. We began with the consultant's problem, BS 5837 survey reports for planning work. Halfway through we saw the bigger pain sat with the crews, writing quotes in the van at the end of a long day. So we rebuilt the core around the voice. Say the tree, and the quote is done before you're off the rope.
What it does for people
- Talk at the tree: species, size, condition and a priced line item in one breath, with the words you actually said kept on the record
- Species and health suggestions from a photo of a leaf, the bark or the damage. The AI suggests; you confirm before anything lands on the sheet
- Quote to crew in a tap. The customer accepts online, line by line with no login, and accepted work runs as a job with a completion report
- Every tree pinned on a site map and remembered, so next year's visit starts where this one finished
- Customer-ready PDF reports drafted from your voice notes, with the UK BS 5837 pack bundled, plus GeoJSON, Shapefile and CSV exports for any GIS
- Crew seats are free on every plan. Only the office pays, from $24.99 a month for a solo arborist, with a 14-day trial and no card
Under the hood
- A single multimodal Gemini Flash Lite call turns a voice recording straight into a schema-checked tree record: species, size, condition, the work and a spoken price. I collapsed a two-pass transcribe-then-extract pipeline into one call through the Vercel AI Gateway, inside a 10-second rule for every field action
- Claude Haiku 4.5 drafts the report narrative in the user's language and units. The recommendations section is built without the model, so the part a customer acts on is never invented
- Offline-first where it counts. Every pin, photo and voice note is written to the phone first, queued, and sent when the signal returns. The app shows what has synced and what is still waiting, so saved never means maybe
- One Next.js codebase wrapped with Capacitor ships the web app, iOS and Android from the same source
- PDF reports rendered with @react-pdf/renderer, no headless browser, in the firm's own house style and local standard
The cool bits
- Built for your country, not translated to it: seven languages, with report standards per country. The BS 5837 pack ships today and more are on the way
- The seat model is the pitch. Six people on the books can be two paid seats, because climbers and groundies never use one
- MapLibre and OpenFreeMap instead of Mapbox, so map loads cost nothing even when a crew lives on the map all day
- It's honest about what it doesn't do yet. The site says plainly that invoicing is the next thing being built
How long it took
Twelve weeks, from first idea to a finished product, side by side with a working tree surgeon.
12 weeks · idea to finished product
What I worked through
The biggest call was the pivot. The report product worked, but the people who'd use it every day were the crews, and their pain was the quote, not the report. Changing course halfway through a twelve-week build meant keeping what we had learned about the trees and rebuilding the workflow around the voice. Offline was the other hard part: a day's survey is hours of walking, and losing it because a lane had no signal is not acceptable, so the phone saves first and the server catches up. And pricing took real thought. Charging by office login rather than headcount keeps the whole crew in the app without the owner counting heads.
The full stack
- Next.js (App Router)
- TypeScript
- Capacitor (iOS + Android)
- Supabase (Postgres, RLS, Storage, EU region)
- Vercel AI Gateway
- Gemini Flash Lite (voice to structured fields)
- Claude Haiku 4.5 (report drafting)
- Pl@ntNet API (species ID)
- MapLibre + OpenFreeMap (offline tiles)
- @react-pdf/renderer
- RevenueCat
- PostHog
- Sentry EU
- Offline queue + service worker
- pnpm
- Vitest
- Playwright




