Voice Copilot for HVAC and Plumbing Pros
HVAC and plumbing techs narrate the job; AI fills ServiceTitan, Jobber, or Housecall Pro work orders at $29 per tech per month.
An HVAC tech is on a roof in July with a condenser, a manifold, and a customer who wants to know why the second-floor rooms still will not cool. Both hands are occupied. The work order in ServiceTitan or Jobber is a blank that will get filled — maybe — in the van at 6:40 p.m., from memory, after three other jobs. Inventory that came off the truck is a guess. The customer note that would prevent a callback (“capacitor was swollen, recommended replacement, declined, quoted 90 days”) never gets typed. Dispatch sees “diagnostic, no parts” and the shop eats a warranty return two weeks later. Every field-service platform on the market assumes a tablet and a clean minute. The job assumes gloves, a flashlight, and a homeowner hovering.
Built for Small Business Owners, Solo Founders.
Suggested stack: React Native or Expo, Deepgram (primary) / Whisper (fallback), GPT-4o structured output, Jobber / ServiceTitan / Housecall Pro APIs, Supabase or Convex, Stripe Billing. Weekend scope: about 8 hours.
The Problem
An HVAC tech is on a roof in July with a condenser, a manifold, and a customer who wants to know why the second-floor rooms still will not cool. Both hands are occupied. The work…
The Solution
Sayso is a FSM-agnostic voice layer for tradespeople whose hands are busy. The tech starts a job in the app (or from a widget on the home screen), talks the way they talk — “found…
Market Research
Field service management software is a roughly $4 billion to $6 billion global market, high-teens CAGR depending on the cut. HVAC, plumbing, and electrical are the loudest SMB…
Competitive Landscape
ServiceTitan — Full FSM: dispatch, marketing, memberships, accounting. AI is not why a shop pays. Street pricing commonly $250 to $400-plus per technician per month in a real…
Business Model
Shop trial ($0, 14 days, 2 techs) — Connect one FSM, record ten jobs, see writeback. No credit card if you can stomach the abuse; otherwise card-up-front with easy cancel.
Recommended Tech Stack
React Native or Expo — iOS first (techs’ personal phones), Android next. Background recording, offline queue, fat-finger confirm UI.
AI Prompts to Build This
Copy these build prompts into Claude, Cursor, or your AI coding tool. Create a free account to unlock the full research behind them.
1. Project Setup
Build the weekend MVP of "Sayso": a technician talks through a job and the app turns it into a work order summary, a customer note and parts lines that they confirm and copy into their field service tool. It writes to no outside system this weekend. Stack: Next.js (App Router, TypeScript), Tailwind, Supabase (Postgres, Row Level Security, Storage, Auth with email magic link), Deepgram for speech to text with trade keywords, the Anthropic API for the structured summary. The browser records the audio and works as an installable PWA. Deploy on Vercel. Tables (Row Level Security on, each technician reads only their own rows): - profiles(user_id, shop_name, fsm_name, keep_audio boolean) - jobs(id, user_id, external_job_ref, status, created_at) status is recording, queued, confirm or exported - recordings(id, job_id, file_path, duration_sec, created_at) - payloads(id, job_id, transcript, structured_json jsonb, confirmed_json jsonb, confirmed_at, diffs jsonb) Screens: /login, /jobs (start a job), /jobs/[id] (record, then three cards: what we did, parts, customer note), /export. Env vars (names only): NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_ANON_KEY, SUPABASE_SERVICE_ROLE_KEY (server only), DEEPGRAM_API_KEY, ANTHROPIC_API_KEY. Do not build: billing, seats or per-technician pricing, writes to Jobber, ServiceTitan or Housecall Pro, a native app, inventory decrements, SMS invites. Done when: npm run dev starts, you can sign in, and the four tables exist with Row Level Security on.
2. Core Feature
Build the one feature that proves Sayso: a closeout the technician only has to check, and never contains a part they did not say. 1. Record in the browser with the MediaRecorder API. Show a clear recording state with a timer and a pause button. If the phone is offline, keep the audio in IndexedDB and upload it when the connection returns, with backoff. 2. Transcribe with Deepgram, with keyword boosting for common trade words (capacitor, contactor, TXV, evaporator, PEX, shutoff, reclaim). Delete the audio after transcription unless keep_audio is on. 3. Send the transcript to the Anthropic API with a strict JSON schema { summary, customer_note_plain_language, line_items: [{ description, qty, guessed_sku }], equipment, follow_up: boolean, confidence: number from 0 to 1 }. Never add a part the technician did not mention. If a quantity is missing, set it to 1 and add flag_uncertain. 4. Check in code that every line item's description shares its key words with the transcript. Drop an item that does not. 5. Show three editable cards: what we did, parts and customer note. Export and Copy stay disabled until the technician presses Confirm. Save the difference between the model's output and the confirmed text to diffs. 6. The export page gives the confirmed closeout as plain text and as a CSV of line items to paste into the shop's tool. Rules: nothing is exported without a confirm. Never invent a part, a quantity or a price. Say if the audio was kept or deleted. Empty state: with no jobs, show the start button and a one-line example of what to say. Done when: a recorded sample job produces three cards, an invented part is dropped, a missing quantity shows as 1 with a flag, Copy is disabled before Confirm and an offline recording uploads after reconnecting.3. Landing Page
Build a one-page landing site for Sayso, a voice closeout for HVAC and plumbing technicians. Hero: "Say what you did. Get the work order." Sub: "Talk through the job the way you already do. Sayso writes the summary, the customer note and the parts list for you to check." One button: Join the waitlist. Sections: a sample spoken closeout next to the three cards it produced, how it works in three steps (narrate, confirm, copy), and an FAQ on which field service tools work first (copy and paste now, direct connections next), what happens to the audio and how a part you did not say is kept out. Waitlist: store the email in a waitlist table in Supabase. No other service. Style: Geist, an off-white background, near-black type, one safety-orange accent. Done when: the page renders on a phone and a submitted email appears in the waitlist table.
4. Branding Package
Use a design or image tool for this one. A coding agent cannot draw a logo. Brand for Sayso: a wordmark and an icon that suggest a speech bubble shaped like a wrench head. Colors: off-white, near-black and one safety orange. Type: Geist, set large for use with gloves. Deliverables: wordmark, icon, three card styles (what we did, parts, customer note) that differ by icon as well as color, a recording state, and one launch graphic. Done when: each deliverable is saved in one folder and the three card styles are distinguishable without color.