Wireframe — Estimate Recording (Phase 2 · Future Feature)

The recording feature lets a tech hit "Record" when they walk into a customer's house, capture the full estimate visit, and have the system auto-transcribe and extract the scope of work. The intake form is pre-filled when they hit "End", so they can review on their phone, tweak if needed, and generate the estimate before leaving the customer's driveway. Phase 2 — ships after the Phase 1 web app.

Wireframes: Index Sign in Dashboard New Estimate Estimate · Overview Estimate · Refine Estimate · Doc Preview Estimate · History HCP Match Modal Settings Training Data Recording (Phase 2) Original Reference
{{ name }} — Estimate Recording
Phase 2 · Future D Dan ▾
📅 Phase 2 — Coming after the Phase 1 web app ships The tech opens the app, hits "Record", visits the customer, hits "End." The system uploads the audio, transcribes it via Whisper, extracts scope of work + customer details with GPT, and pre-fills a new estimate form so the tech can review & generate on the spot. Estimated build time: ~1.5 weeks for pipeline + ~3 days to wrap with Capacitor for reliable mobile recording.
During Visit · active recording
Smith — Bath Visit Recording in progress · session 1
REC
🔔 Reminder: Tech announces "I'm recording this for accuracy." One-party consent in CO — legally fine.
12:34
Capturing audio Mic: iPhone built-in · 47 MB so far
Auto-saves every 30s · safe if app backgrounds
⏸ Pause
⏹ End Recording & Process
After "End" · form auto-filled
Review & Generate
From recording · 12:34 captured
Pre-filled
Auto-filled from your recording. Edit anything that's wrong, then Generate.
Default · adjust if needed
  • Tech writes nothing during the visit — full attention on the customer.
  • Estimate ready before they leave the driveway — sign on the spot.
  • Audio is the source of truth — disputes have a real record.
  • Transcript feeds the training pool over time.
  • Audio file → Convex Storage · auto-deletes after 90 days
  • Transcript → kept forever · attached to estimate
  • Extracted fields → name, phone, address, scope, conditions
  • Photos (if tech also taps photo button during/after) → still uploaded the existing way
  • Whisper transcription: ~$0.006/min
  • 45-min visit: ~$0.27
  • GPT scope extraction: ~$0.02
  • Total per recorded visit: ~$0.30
Workflow · Start to Finish 12 steps · 3 phases
PHASE AIn the Field · Mobile App (Capacitor)
STEP 1
Tech arrives
Opens app, navigates to "New Recording"
STEP 2
Tap Record
Native mic permission already granted (one-time setup)
STEP 3
Disclosure
Tech announces "I'm recording for accuracy"
STEP 4
Visit conversation
15–60 min · audio chunks auto-save every 30s
STEP 5
Tap End
Tech confirms · file finalized + queued for upload
PHASE BProcessing · Cloud (n8n + OpenAI)
STEP 6
Upload audio
→ Convex Storage · 5–15s for typical 45min visit
STEP 7
Whisper transcribes
~30–60s · returns full text + timestamps
STEP 8
GPT extracts scope
~5s · maps transcript to intake form fields
PHASE CReview & Generate · Mobile App
STEP 9
Form auto-fills
All fields highlighted ★ AI · tech sees results in ~1 min total
STEP 10
Tech reviews
Edits any wrong fields · adds finish level if model didn't catch it
STEP 11
Generate estimate
Hits the existing Generate button · same pipeline as manual intake
STEP 12
Show customer
Doc Preview tab · sign on the spot
Web vs Mobile App Wrapper · why both

Web (Browser) Phase 2a · partial

The recording UI works in any modern browser using MediaRecorder + getUserMedia. Fine for desktop or short recordings, but with mobile gotchas.

  • Zero install — works in Chrome / Safari / Firefox
  • Identical UI to the production web app
  • Fine for desktop testing or short visits
  • iOS Safari pauses recording when screen locks or app backgrounds
  • Tab switching kills the stream
  • Battery drain on long recordings
Decision: Phase 2 ships as Capacitor-wrapped mobile app + matching web fallback. Both flow into the same Phase B/C cloud processing — only Phase A (the recording itself) is mobile-app-specific.

Technical decisions

What's not in scope for Phase 2