Wireframe — New Estimate

Replaces the n8n form trigger. Same fields, better UX. On submit, the form POSTs to the n8n webhook (fire-and-forget) and the user is redirected to a generating-state page that subscribes to Convex by estimate number. The session shows up in real-time when n8n finishes — no waiting on webhook response, no broken UX if generation takes 60+ seconds.

Wireframes: Index Sign in Dashboard New Estimate Estimate · Overview Estimate · Refine Estimate · Doc Preview Estimate · History HCP Match Modal Settings Training Data Original Reference
Desktop · form fill
{{ name }} — New Estimate
ZIP is auto-extracted for material pricing.
Natural-language description. The AI uses this to generate labor tasks and material lists.
Drop photos here, or click to upload JPG / PNG / WEBP / HEIC · up to 10 photos · 10MB each
Stored in Convex Storage. Vision API extracts measurements + condition cues.
What happens next
  1. Form submits to n8n webhook
  2. Photos analyzed (vision API)
  3. Historical labor lines retrieved
  4. GPT generates estimate
  5. Doc rendered + saved to Convex
  6. You're redirected to the estimate
25–60s end-to-end. The page polls Convex by estimate number, so timeouts are harmless.
  • Be specific about quantities (sq ft, linear ft, count) when known.
  • Photos help the model estimate condition + scope.
  • If multiple trades, mention all of them in the scope.
Mobile · field tech intake
{{ name }} — New Step 1 of 1
+ Take Photo Camera opens directly. Multi-shot.
🎤 Coming Phase 2: Hit record, talk through the visit, AI extracts the scope.
Generate Estimate →

Key behaviors