All Startup Ideas

AI receptionist so solo contractors never ghost a customer

Solo-priced AI front desk at $79/mo that texts the owner before it books — built for one-truck HVAC, plumbing, and electrical, not ServiceTitan shops.

A one-truck plumber is wrist-deep in a P-trap when the phone rings in the cab. It dumps to voicemail. The homeowner does not leave a message and wait until tomorrow; they dial the next name on Google. That missed ring is not a scheduling inconvenience. It is a $400 to $2,800 job walking down the street. Directional vendor math that closes deals in this category puts an electrician job around $950, a plumber around $1,200, HVAC around $1,500, and a roof up to $2,800. The community research catalog brief sizes the pool at 3.2 million solo home-service firms. DialCatch, which already ships a $29 solo plan, markets against 2.3 million U.S. tradespeople who lose thousands a year to unanswered calls. Either number is a TAM you do not need to invent.

Built for Small Business Owners, Solo Founders.

Suggested stack: Next.js (App Router) + Vercel, Twilio, OpenAI Realtime (gpt-realtime / gpt-realtime-mini), Jobber + Housecall Pro webhooks, Stripe Billing, Postgres (Supabase or Convex). Weekend scope: about 12 hours.

The Problem

A one-truck plumber is wrist-deep in a P-trap when the phone rings in the cab. It dumps to voicemail. The homeowner does not leave a message and wait until tomorrow; they dial the…

The Solution

Never Ghost is a solo AI front desk for the one-truck operator in HVAC, plumbing, electrical, roofing, landscaping, and remodeling. It answers the existing business number in a…

Market Research

“AI receptionist” is 12,100 U.S. searches/mo at $33 CPC (Google Ads, low competition). “AI answering service” is 2,400/mo at $52 CPC. Google Trends interest for the category more…

Competitive Landscape

Rosie — Category face. Professional $49/mo is a message pad (250 mins). Booking and live transfers gate at Scale $149/mo (1,000 mins). Growth $299/mo. 7-day trial, 2,000+…

Business Model

Missed Call Rescue Audit ($0) — Three test calls in one afternoon, Loom of what callers heard, text to the owner. This is the sales motion for 90 days.

Recommended Tech Stack

Next.js (App Router) + Vercel — Contractor dashboard, script editor, call log, Edge webhooks for Twilio and Stripe.

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. 1. Project Setup

    Build the weekend MVP of "Never Ghost": an AI front desk for a one-truck contractor. It answers the business number, qualifies the job, and texts the owner for a yes or no before anything is booked.
    
    Stack: Next.js (App Router), TypeScript, Tailwind, Supabase (Postgres, Row Level Security, Auth with email magic link), Twilio for the phone number and SMS, OpenAI Realtime for the voice. Deploy on Vercel.
    
    Tables (Row Level Security on, each owner reads only their own rows):
    - contractors(id, user_id, phone_e164, trade, service_zips, hourly_cents)
    - trade_scripts(id, trade, system_prompt, qualifying_questions jsonb) where trade is one of hvac, plumbing, electrical, roofing, landscaping, remodeling
    - calls(id, contractor_id, twilio_sid, started_at, ended_at, transcript, outcome) where outcome is one of veto_pending, approved, held, out_of_scope, hangup
    - veto_messages(id, call_id, sms_sid, job_summary, price_band, status) where status is one of pending, approved, held
    - jobs(id, call_id, completed_at)
    
    Screens: /login, /script (edit the trade script), /calls (call log).
    Env vars (names only): NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_ANON_KEY, SUPABASE_SERVICE_ROLE_KEY (server only), TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN, OPENAI_API_KEY.
    Calendar: never ask for calendar access that shows free or busy time to callers.
    
    Do not build: billing or plans, Jobber or Housecall Pro posting, calendar sync, team accounts, an admin area.
    Done when: npm run dev starts, you can sign in, and the five tables exist with Row Level Security on.
  2. 2. Core Feature

    Build the one feature that proves Never Ghost: answer a call, qualify it, and get the owner's veto by text.
    1. POST /api/voice/inbound receives the Twilio call and starts an OpenAI Realtime session that uses the contractor's trade script.
    2. After the call, return qualifying JSON: { zip, issue, urgency, in_service_area, price_band, caller_name, callback }.
    3. If in_service_area is false, end the call politely and set calls.outcome = out_of_scope.
    4. If it is true, set calls.outcome = veto_pending and text the owner a one-tap approve or hold link with the job summary and price band. Nothing is booked until the owner taps approve.
    5. Approve writes a row to jobs. Hold sets veto_messages.status = held.
    Rules: aim for voice turns under 750 ms and use the smaller realtime model by default. Never read the owner's calendar to the caller. Save every turn of the transcript. Answer Twilio fast and do the database writes after.
    Empty state: a new owner with no calls sees how to forward their business number.
    Done when: a test call is answered in your trade's voice, an out-of-area zip ends politely, and an in-area job texts you a link that approves or holds it.
  3. 3. Landing Page

    Build a one-page landing site for Never Ghost.
    Headline: "Your phone can stop ghosting jobs." Sub: "AI answers in your trade's voice. Texts you before it books. Your calendar stays yours." One button: Join the waitlist.
    Sections: the missed-call math (a missed job is worth about $950 for an electrician, $1,200 for a plumber and $1,500 for HVAC), how it works in four steps (answer, qualify, veto, close), and a short FAQ (does it sound human, can I keep my number, why it never sees your calendar).
    Waitlist: store the email in a waitlist table in Supabase. No other service.
    Style: Geist, off-white, near-black, one amber accent. No purple gradient.
    Done when: the page renders on a phone and a submitted email appears in the waitlist table.
  4. 4. Branding Package

    Use a design or image tool for this one. A coding agent cannot draw a logo.
    Brand sheet for Never Ghost: a wordmark and an icon of a work glove holding a phone that is actually answered.
    Colors: near-black, an amber signal color and truck-cab gray. Type: Geist sans, with IBM Plex Mono for call timestamps.
    Voice rules: talk like a dispatcher, never like a Silicon Valley receptionist. Always show the veto text in screenshots. Never promise "we book 100% of calls".
    Deliverables: wordmark, icon, six trade badge icons, and three SMS copy variants under 160 characters for approve, hold and out-of-area.
    Done when: each deliverable is saved in one folder and each SMS variant is under 160 characters.
AI receptionist so solo contractors never… | Weekend MVP