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/retellendpoint for Retell-stylecall_endedpayloads. - 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.jsonso 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.jsrather 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=twilioand Twilio credentials are configured. - Retell webhook signature verification uses an MVP-local
x-housecall-signatureHMAC header whenRETELL_WEBHOOK_SECRETis 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
- Replace demo provisioning with real Retell agent creation and Twilio phone-number wiring.
- Move persistence to Supabase/Postgres with the brief's
tenants,calls, andleadsschema. - Add Supabase Auth or magic-link access before exposing real contractor data.
- Swap heuristic transcript parsing for a structured LLM extraction call with confidence scoring.
- Add Stripe Checkout and subscription webhooks to activate/deactivate agents.
- Add webhook replay tests using captured Retell payloads from a pilot call.