← Back to Daily Builds

Daily build note · May 7, 2026

HouseCall AI Receptionist

An AI phone receptionist built specifically for home service contractors (HVAC, plumbers, electricians, roofers).

Local Business Automations Runnable local MVP built Public demo coming soon

What shipped

  • Runnable local web MVP for a home-service AI receptionist.
  • Contractor onboarding wizard that captures business details, service ZIP codes, hours, coverage, emergency contact, Calendly URL, and plan.
  • Demo provisioning flow that creates a mock Retell agent ID and mock forwarding number.
  • Inbound call simulator plus /api/webhooks/retell endpoint for Retell-style call_ended payloads.
  • Transcript parser that extracts caller name, phone, address, ZIP, issue summary, emergency/scheduled classification, urgency, and service-area match.
  • Lead inbox dashboard with stats, recent calls, transcript viewer, lead status updates, and SMS outbox.
  • Demo SMS adapter that logs contractor notifications locally, with an optional Twilio REST adapter for real SMS when credentials are provided.
  • Smoke test covering onboarding, call simulation, SMS logging, and status updates.

Architecture

  • Used a no-dependency Node.js server to keep the sandbox easy to run and inspect.
  • Used static HTML/CSS/JavaScript instead of a bundled frontend framework to avoid install friction and network dependency.
  • Used JSON file persistence at data/demo-db.json so demo state survives refreshes while staying transparent.
  • Modeled external services as provider boundaries in src/lib/providers.js; the MVP defaults to local demo behavior.
  • Kept lead extraction deterministic in src/lib/leadParser.js rather than requiring an LLM key.

Trimmed scope

  • No real Retell agent provisioning.
  • No Twilio number purchase or voice forwarding setup.
  • No Stripe checkout or subscription webhook.
  • No Supabase/Postgres/Auth layer.
  • No Calendly OAuth; Calendly is stored as a URL only.
  • No production authentication, team accounts, CRM integrations, or admin analytics.

Limitations

  • Transcript parsing is heuristic and intended for demo calls, not production voice variability.
  • The dashboard is single-tenant at runtime and uses the most recently onboarded contractor.
  • SMS delivery is logged locally unless HOUSECALL_SMS_MODE=twilio and Twilio credentials are configured.
  • Retell webhook signature verification uses an MVP-local x-housecall-signature HMAC header when RETELL_WEBHOOK_SECRET is set; it is not Retell's production signature scheme.
  • JSON persistence is not safe for concurrent production writes.

Verification

Run:

``bash npm run smoke ``

The smoke script starts the server on a temporary port, completes onboarding, simulates an emergency call, verifies lead/SMS creation, updates the lead to booked, and exits.

Suggested next steps

  1. Replace demo provisioning with real Retell agent creation and Twilio phone-number wiring.
  2. Move persistence to Supabase/Postgres with the brief's tenants, calls, and leads schema.
  3. Add Supabase Auth or magic-link access before exposing real contractor data.
  4. Swap heuristic transcript parsing for a structured LLM extraction call with confidence scoring.
  5. Add Stripe Checkout and subscription webhooks to activate/deactivate agents.
  6. Add webhook replay tests using captured Retell payloads from a pilot call.