Meet Jessica AI
An AI voice employee that starts as a business's receptionist, closes the owner on a trial, then stays on to run their day-to-day — answering missed calls, following up with customers, and booking jobs. Designed and built end to end.
📋 Overview & the problem start here
Small home-service businesses — HVAC shops, plumbers, electricians running a few trucks — lose real money every day to one thing they can't fix: they miss calls. The owner is under a house or on a roof, the phone rings, no one answers, and the caller dials the next company. For a trade where a single job is worth thousands, that unanswered ring is direct, daily lost revenue.
The usual "fixes" don't land. Hiring a receptionist costs $3,000–$4,000 a month plus training and turnover; the $49 AI-receptionist apps ask a non-technical owner to configure software they don't trust and won't maintain. Both leave the bleed open.
Jessica is the answer I built: an AI voice employee that catches those calls and turns them into booked jobs — sold on a pay-only-when-she-books-a-job model, so the owner takes zero risk to say yes. The interesting part isn't the tech list; it's the design decisions that remove the exact reason a buyer would walk at each stage.
🎯 How Jessica works — three phases the arc
Jessica isn't one thing — she evolves across the whole relationship. Same voice, three jobs:
🗺️ Architecture — how the software connects
Everything runs on one engine — the same tools handle two situations: a sales demo (someone signs up) and a live missed call (a real customer). Here's how the software connects, left to right.
Same engine, two triggers — nothing is duplicated. Think of Make.com as the wiring that connects everything, and Airtable as Jessica's memory.
⭐ The Reverse Demo — earning trust before the pitch the centerpiece
So I built the demo around a reverse-demo approach — letting the prospect experience the product before hearing a word of sales. An owner submits their name, business, and website; within 60 seconds Jessica calls them and answers as their own receptionist, greeting them by their real business name. She fields the call as if the owner were a customer, books a realistic appointment using genuine knowledge of their business, and only then reveals she's AI.
Letting a buyer experience a product before selling to them isn't a new idea — the hard part, and the part I'm proud of, was engineering one that actually works: personalized to their business, in under a minute, fully automated. By the time the reveal lands, "I don't believe it works" is already dead — they just watched it work on themselves. The sale moves from "convince me" to "how do I get this."
🧠 How I think — four design decisions
Each of these removes a specific reason a buyer would walk — and each is a judgment call, not a wiring task.
Personalization at scale
The demo only works if Jessica truly knows the business — but hand-researching each prospect doesn't scale. A Cloudflare Worker scrapes their site, a Claude API call writes a tailored briefing (services, area, tone), and it injects into her prompt before the call. Hand-built intimacy at automated speed, no human in the loop.
Pay-per-booked-job — a pricing decision as a moat
Price is where demos stall. I repositioned the offer around outcome, not access: the owner pays only when Jessica books a confirmed job. A missed call is a logged, timestamped event on a number the caller never reached, so attribution is airtight. It removes 100% of buyer risk, reframes the comparison against a $3,500/mo hire instead of a $49 app, and it's the one thing subscription-SaaS competitors structurally can't copy.
The missed-call trigger — solving the last mile
Software can only recover a missed call if the call routes through infrastructure I control — without changing the number customers already know. I solved it with conditional call-forwarding (forward only on no-answer to a Twilio number I control) and mapped the carrier activation codes into a lookup table for a guided ~5-minute setup. Goes live the same day, reversible and testable on a real phone.
One engine, swappable modules
The naive way to serve many clients is to clone the system — which collapses by the tenth client. Instead: one assistant, one database, one automation core, with a switchboard that identifies the client by the number dialed and loads the right module. Adding a client is adding a row; a new service is checking a box. I built it to scale before it needed to.
🚀 Beyond the demo — Jessica as a full employee designed capabilities
The demo is just the front door. Once an owner signs on, Jessica is designed to run as their around-the-clock voice employee. This is the roadmap I architected — some pieces live, some in development:
Missed-call recovery
Answers the calls they miss and books the job, 24/7 — the core of the live service.
Command center
The owner can call or text Jessica to push out a special, or ask for live numbers — jobs on the board, last month's sales — like a voice dashboard for their business.
Follow-ups & reviews
After a completed job she follows up, confirms they're happy, and asks for a Google review with the link — automatically.
Referral engine
Introduces a referral offer at the right moment to turn happy customers into new ones.
Seasonal outreach
Reaches the past-customer list for tune-ups each season, filling the slow months.
Learns the business
Standing instructions accumulate, so she gets smarter and more tailored the longer she works.
🧩 The stack I integrated
| Layer | Technology | What it does |
|---|---|---|
| Voice AI | Vapi + ElevenLabs | Reverse demo, mode-switching sales close, live recovery |
| Personalization | Cloudflare Worker + Claude API | Scrapes each site, auto-writes a tailored briefing per call |
| Orchestration | Make.com | Routes events, identifies the client, assembles the prompt, logs outcomes |
| Telephony | Twilio | Catches unanswered calls via conditional forwarding; SMS + callbacks |
| Data | Airtable | The switchboard — clients, modules, leads, clean-attribution call logs |
| Front door | Netlify landing page | Captures the submission that fires the 60-second reverse demo |