<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Rayhan Mahmood</title>
    <description>The latest articles on DEV Community by Rayhan Mahmood (@nevermiss).</description>
    <link>https://dev.to/nevermiss</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3861281%2Feedf897a-10bd-4550-8241-c74d14bcebf0.png</url>
      <title>DEV Community: Rayhan Mahmood</title>
      <link>https://dev.to/nevermiss</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nevermiss"/>
    <language>en</language>
    <item>
      <title>Build for AI cold caller for outbound. Owners cant tell its a bot</title>
      <dc:creator>Rayhan Mahmood</dc:creator>
      <pubDate>Fri, 24 Apr 2026 19:41:41 +0000</pubDate>
      <link>https://dev.to/nevermiss/build-for-ai-cold-caller-for-outbound-owners-cant-tell-its-a-bot-5abc</link>
      <guid>https://dev.to/nevermiss/build-for-ai-cold-caller-for-outbound-owners-cant-tell-its-a-bot-5abc</guid>
      <description>&lt;p&gt;I spent &lt;strong&gt;3-4 weeks&lt;/strong&gt; building an AI voice agent that cold-calls HVAC owners for me. Real outbound. Real objection handling. Real appointments booked. When we listen back through the recordings, the owners never clock it as AI — they just think its a human SDR with a slightly weird cadence.&lt;/p&gt;

&lt;p&gt;This is the build, and the honest reason its sitting on the shelf for high-volume right now.&lt;/p&gt;

&lt;h2&gt;
  
  
  The stack
&lt;/h2&gt;

&lt;p&gt;Make.com runs the whole thing — &lt;strong&gt;seven scenarios&lt;/strong&gt; wired around a single Google Sheet called &lt;code&gt;NeverMiss – Outbound Calls&lt;/code&gt; that acts as the CRM.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;dialler&lt;/strong&gt; — every 5 minutes, pulls one row where &lt;code&gt;status=new&lt;/code&gt;, &lt;code&gt;enabled=TRUE&lt;/code&gt;, &lt;code&gt;attempts&amp;lt;3&lt;/code&gt;, and fires a call into Vapi&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Logger&lt;/strong&gt; — webhook from Vapi after every call. Writes transcript, recording, outcome back. Uses an OpenAI module to classify the transcript into structured outcomes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Watch Dog&lt;/strong&gt; — every 10 minutes, catches rows where the call went out but the Logger webhook never fired (Vapi had a bad minute), flips them to &lt;code&gt;logger-missed&lt;/code&gt; for retry&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reconciler&lt;/strong&gt; — sweeps stuck rows, enforces attempt caps, handles edge cases&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;recording sync&lt;/strong&gt; — pulls MP3s out of Vapi before the 30-day retention wipes them, stores in Drive&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Booking Handler&lt;/strong&gt; — when the agent closes a booking mid-call, writes the calendar event and fires a confirmation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CallBack Dialer&lt;/strong&gt; — separate path for inbound callback requests (form-fill → call within 60 seconds)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One Vapi agent on the voice side. Four Twilio numbers rotating for caller ID reputation. ElevenLabs for the actual voice. The complexity isnt in any one piece — &lt;strong&gt;its in how tightly theyre wired so nothing quietly breaks&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Sheet is the CRM, with row locks
&lt;/h2&gt;

&lt;p&gt;The Sheet has columns you would expect: &lt;code&gt;business_name&lt;/code&gt;, &lt;code&gt;phone_e164&lt;/code&gt;, &lt;code&gt;status&lt;/code&gt;, &lt;code&gt;call_id&lt;/code&gt;, &lt;code&gt;recording_url&lt;/code&gt;, &lt;code&gt;email&lt;/code&gt;, &lt;code&gt;last_called_at&lt;/code&gt;, &lt;code&gt;attempts&lt;/code&gt;, &lt;code&gt;notes&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;And some you might not: &lt;code&gt;lead_uid&lt;/code&gt; (UUID, stable key), &lt;code&gt;lock_token&lt;/code&gt; + &lt;code&gt;lock_expires_at&lt;/code&gt;, &lt;code&gt;next_callable_at&lt;/code&gt;, &lt;code&gt;logger_ran_at&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The lock columns are the interesting part.&lt;/strong&gt; Before the dialler fires a call, it writes a lock token and an expiry (&lt;code&gt;lock_expires_at = now + 10 min&lt;/code&gt;). Thats the contract — if any other scenario or retry sees a row with a live lock, it skips it. If the lock is stale (expired), the row is free for reclaim.&lt;/p&gt;

&lt;p&gt;Stops the Watch Dog from re-queueing a row thats actively being called. Stops two dialler runs from racing the same lead. Stops weird double-call bugs.&lt;/p&gt;

&lt;p&gt;This is the kind of thing you dont need until volume hits, and then you really need it.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it sounds like a human
&lt;/h2&gt;

&lt;p&gt;Most AI voice builds fail on two things: the voice itself, and the gap between the human finishing their sentence and the agent replying. Both telegraph "robot" immediately.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For voice&lt;/strong&gt;, ElevenLabs inside Vapi, cloned from a real sample. Tested OpenAI, Deepgram, PlayHT — ElevenLabs still wins on natural breath patterns and micro-pauses.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For latency&lt;/strong&gt;, Vapis tunable VAD and smart endpointing, tuned so the gap between you finishing and the agent replying sits right where a human would land. Too low, it interrupts. Too high, the silence tells on it.&lt;/p&gt;

&lt;p&gt;The system prompt is about &lt;strong&gt;1,100 words&lt;/strong&gt;. The agents named Alex. Rules include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Never read the prospect back to themselves&lt;/li&gt;
&lt;li&gt;Use natural fillers&lt;/li&gt;
&lt;li&gt;If asked "is this a robot" — be honest&lt;/li&gt;
&lt;li&gt;If asked for pricing — give a range and offer to send email details&lt;/li&gt;
&lt;li&gt;If told to stop calling — confirm and end gracefully&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Specific objections each get short inline responses that flip to a question. Nothing read aloud — everything handled as conversation.&lt;/p&gt;

&lt;p&gt;The agent can also call &lt;strong&gt;two tools mid-call&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;book_appointment&lt;/code&gt; — triggers the Booking Handler scenario which writes to Calendar and emails the confirm&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;capture_email&lt;/code&gt; — writes to the Sheet, kicks off a follow-up sequence&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;When those tools fire, the agent pauses briefly, gets the response, reads the confirmation back. &lt;strong&gt;No human in the loop on a successful call.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The glue — Logger, Watch Dog, recording sync
&lt;/h2&gt;

&lt;p&gt;This is the boring but critical part.&lt;/p&gt;

&lt;h3&gt;
  
  
  Logger
&lt;/h3&gt;

&lt;p&gt;Every Vapi call ends with a webhook hitting a Make scenario. The payload has the call ID, transcript, recording URL, end reason, and a Vapi-generated summary. The Logger finds the matching Sheet row by &lt;code&gt;lead_uid&lt;/code&gt;, then runs the transcript through &lt;strong&gt;OpenAI&lt;/strong&gt; to classify outcome into my taxonomy:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;booked&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;email_captured&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;voicemail&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;no_answer&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;do_not_call&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;no_interest&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;callback_requested&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Writes everything back, fires downstream actions — calendar events, DNC flags, re-queue for voicemails.&lt;/p&gt;

&lt;h3&gt;
  
  
  Watch Dog
&lt;/h3&gt;

&lt;p&gt;Vapi sometimes fails to fire the post-call webhook. &lt;strong&gt;Without a watchdog, those rows sit silently in &lt;code&gt;dialing&lt;/code&gt; status forever while you think everything is fine.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Mine runs every 10 minutes, finds rows with a &lt;code&gt;last_called_at&lt;/code&gt; older than 5 minutes but &lt;code&gt;logger_ran_at&lt;/code&gt; still empty, and flips status to &lt;code&gt;logger-missed&lt;/code&gt; so the dialler picks them up again. Also clears stale lock tokens.&lt;/p&gt;

&lt;h3&gt;
  
  
  Recording sync
&lt;/h3&gt;

&lt;p&gt;Vapi deletes recordings after 30 days. I want them forever — to retrain the prompt, spot objection patterns, audit outcomes. So a Make scenario runs every 4 hours, pulls the MP3, uploads to a Drive folder named &lt;code&gt;&amp;lt;lead_uid&amp;gt;_&amp;lt;company&amp;gt;_&amp;lt;date&amp;gt;.mp3&lt;/code&gt;, writes the Drive URL back, flips a synced flag.&lt;/p&gt;

&lt;h2&gt;
  
  
  Owners cant tell its AI — actual numbers
&lt;/h2&gt;

&lt;p&gt;The recording sync is how I proved this instead of just claiming it.&lt;/p&gt;

&lt;p&gt;After &lt;strong&gt;200+ connected calls&lt;/strong&gt;, I tagged every recording: did the prospect ever ask "is this a bot?", and did they ever seem confused?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;11 out of 200 asked if it was AI. Thats 5.5%.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And most of the 11 asked &lt;strong&gt;after&lt;/strong&gt; Alex had already booked a callback or captured their email — curiosity, not suspicion.&lt;/p&gt;

&lt;p&gt;The other &lt;strong&gt;94.5%&lt;/strong&gt; just had a normal conversation. Successful bookings averaged &lt;strong&gt;3 min 40 sec&lt;/strong&gt; — identical to a human SDR doing the same call, meaning prospects werent shortcutting it because they smelled a robot.&lt;/p&gt;

&lt;p&gt;Id share clips but theyre real owners voices without opt-in. Trust the data.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Ive parked it for volume
&lt;/h2&gt;

&lt;p&gt;Heres the uncomfortable part.&lt;/p&gt;

&lt;p&gt;Most HVAC numbers on public directories arent direct owner lines. Theyre main business lines routing through:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An &lt;strong&gt;IVR&lt;/strong&gt; ("press 1 for service, 2 for billing")&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;call center&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;front-desk receptionist&lt;/strong&gt; whose actual job is keeping people like me away from the owner&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Current voice AI is still bad at IVRs.&lt;/strong&gt; Vapi, Retell, Bland — all of them. The agent hears "press 1 for service" and either sits silent until the menu times out, or tries to talk to a recording.&lt;/p&gt;

&lt;p&gt;Human gatekeepers are a coin flip — warm ones might put you through, suspicious ones kill the call with one question the agent cant answer.&lt;/p&gt;

&lt;p&gt;Until voice AI gets genuinely good at navigating phone trees — pressing digits intelligently, detecting robot-vs-human, adjusting mid-call — high-volume outbound to public numbers burns money for &lt;strong&gt;10-15% owner connection rates&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;So Ive paused it. &lt;strong&gt;Not dead. Paused.&lt;/strong&gt; When the models catch up, its right back on.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why it still works
&lt;/h2&gt;

&lt;p&gt;If youve got &lt;strong&gt;direct owner mobile numbers&lt;/strong&gt;, this system is a weapon.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Number&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Connection rate (direct mobiles)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;40-55%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Book rate (on connected calls)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;8-14%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;All-in cost per connected minute&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;~$0.18&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Thats cold-outbound economics that actually pencil.&lt;/p&gt;

&lt;p&gt;Where direct mobiles come from ethically:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;LinkedIn scraping through Apollo / Clay / Wiza&lt;/li&gt;
&lt;li&gt;Network-sourced lists&lt;/li&gt;
&lt;li&gt;Trade show attendees&lt;/li&gt;
&lt;li&gt;Re-engagement on your own past leads&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Also works brilliantly for &lt;strong&gt;inbound callback&lt;/strong&gt; — form-fill, Alex calls within 60 seconds, qualifies, books. Running that in production right now. Book rates are silly.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Im building instead
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Inbound.&lt;/strong&gt; AI receptionists catching the calls HVAC owners are already missing nights, weekends, summer peak.&lt;/p&gt;

&lt;p&gt;Same agent pattern, flipped direction, better unit economics, &lt;strong&gt;100% connection rate&lt;/strong&gt; (theyre the ones calling you).&lt;/p&gt;

&lt;p&gt;Thats what NeverMiss is now. If you run HVAC, plumbing, or roofing and want to hear what a modern AI receptionist sounds like when the call lands at 9:47pm on a Saturday — &lt;a href="https://nevermisshq.com" rel="noopener noreferrer"&gt;nevermisshq.com&lt;/a&gt; has the live demo.&lt;/p&gt;

&lt;p&gt;And when voice AI finally cracks IVR? The dialler comes right off the shelf.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Happy to answer build questions in the comments.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Rayhan Mahmood runs &lt;a href="https://nevermisshq.com" rel="noopener noreferrer"&gt;NeverMiss&lt;/a&gt; AI automation for US home service businesses.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>automation</category>
      <category>voiceai</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How we build AI receptionists for home service businesses - the full playbook</title>
      <dc:creator>Rayhan Mahmood</dc:creator>
      <pubDate>Sat, 18 Apr 2026 16:41:12 +0000</pubDate>
      <link>https://dev.to/nevermiss/how-we-build-ai-receptionists-for-home-service-businesses-the-full-playbook-26oc</link>
      <guid>https://dev.to/nevermiss/how-we-build-ai-receptionists-for-home-service-businesses-the-full-playbook-26oc</guid>
      <description>&lt;h2&gt;
  
  
  You dont need a complicated stack
&lt;/h2&gt;

&lt;p&gt;People overcomplicate this. If youre a contractor or a dev building for contractors, the whole AI receptionist stack comes down to three things.&lt;/p&gt;

&lt;p&gt;One tool handles the voice. Vapi is the simplest path — it plugs into your phone line, handles the real-time conversation, and gives you a hook at the end of every call. Free tier is enough to test.&lt;/p&gt;

&lt;p&gt;One tool handles the workflow. Make.com, n8n, or Zapier all work. The agent takes the call, the workflow takes the transcript and does everything else — creates the booking, updates the CRM, texts the customer, alerts the owner. Pick whichever one you already know.&lt;/p&gt;

&lt;p&gt;One tool is your CRM. ServiceTitan, Housecall Pro, Jobber, GoHighLevel, whatever youre already using for customers and jobs. Doesnt matter which. The workflow just needs API access to create customers and appointments.&lt;/p&gt;

&lt;p&gt;Thats it. Voice + workflow + CRM. If you want to build something similar you can do it yourself. High leverage, high upside, and the barrier to entry is lower than most people think.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem most home service companies dont realise they have
&lt;/h2&gt;

&lt;p&gt;We work with loads of home service businesses. Plumbing, HVAC, roofing, electrical, the full spectrum. Before we step in most of them are losing thousands and thousands of dollars in revenue every month without realising it, and its always the same leak.&lt;/p&gt;

&lt;p&gt;The phone rings, nobody answers in time, the caller hangs up and dials the next company on Google. No voicemail, no callback, no second chance.&lt;/p&gt;

&lt;p&gt;Prestige Air &amp;amp; Heat in Fort Worth is one example. Before we stepped in they were answering around 35% of their calls. Thats a real number from a real company, and its not unique — its what a lot of small and mid-size contractors are dealing with when they dont have the operational muscle to staff phones 24/7.&lt;/p&gt;

&lt;p&gt;In contracting the average job is a couple hundred dollars. A single missed call might not feel like a big deal. But when you break down a month of missed calls, the lost revenue adds up fast. Owners are often leaving serious money on the table without knowing it because the leak is invisible — missed calls dont show up on your P&amp;amp;L.&lt;/p&gt;

&lt;p&gt;This is a build breakdown of what we ship for clients like Prestige. Architecture, the prompt work that actually makes or breaks a voice agent, the workflow orchestration, and what weve learned running this in production.&lt;/p&gt;

&lt;h2&gt;
  
  
  The voice agent — where most people get it wrong
&lt;/h2&gt;

&lt;p&gt;Getting a voice agent to sound like a really good receptionist at 9am on a Monday isnt a prompt engineering problem — its a systems problem. Theres a handful of specific failure modes that separate agents that demo well from agents that actually work in production, and each one has to be solved deliberately.&lt;/p&gt;

&lt;p&gt;Before writing a single line of prompt we spent real time talking to home service owners about what they actually want in a receptionist. What frustrates them about the CSRs theyve hired and fired. What their best CSR does that the average one doesnt. What they wish they could standardise across every call. Most owners had CSR call recordings they could share, and those recordings are where the real learning happened — you can hear the difference between a booking that feels natural and one that feels like a form being filled out. The patterns come out fast when you listen at volume. Good receptionists ask disarming empathy questions before jumping into logistics, they repeat the customers issue back in their own words to confirm understanding, they name the appointment window with confidence instead of hedging, they handle price shoppers differently to urgent emergencies. None of that is intuitive to an LLM without being told.&lt;/p&gt;

&lt;p&gt;Heres the failure categories we solved across hundreds of production calls.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Domain depth.&lt;/strong&gt; A generic friendly receptionist prompt is polite and useless. It doesnt know what questions to ask about home service issues, cant qualify an emergency from a routine call, has no intuition for pricing ranges. Fix is baking in domain knowledge — common system types, symptoms that indicate emergency vs routine, what info a tech needs before arriving on site. This is where listening to real CSR calls paid off. We pulled the actual diagnostic questions the top performers asked and structured them into the prompt.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Personality vs script.&lt;/strong&gt; Domain knowledge alone produces an agent that reads questions like a form. Fix is explicit personality cues built into the prompt — warm, confident, asks follow ups naturally. Knows when to politely interrupt a rambling customer vs when to let them vent for 20 seconds because theyre clearly stressed. The best human CSRs lead with empathy before logistics. We modelled the agents behaviour on that pattern.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Commitment boundaries.&lt;/strong&gt; Personality without constraints produces hallucinated appointment times and promises the business cant keep. The agent needs hard limits — cannot promise a specific tech by name, cannot promise an arrival window outside standard slots, cannot quote exact prices. Can book the appointment, gather the info, reassure the caller. For pricing the agent defers to the tech giving a free diagnostic and honest quote on site. This mirrors how good human CSRs are trained — they dont quote either, and for the same reason.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Edge cases.&lt;/strong&gt; Existing customers vs new customers. Emergency after hours calls that need to route differently. Language detection for Spanish speakers. Callback handling when the main system is offline. Each of these gets its own section in the prompt with explicit handling. This is the part where most generic voice agents fall apart — they treat every call the same. Home service calls are not the same.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Continuous tuning.&lt;/strong&gt; Real production calls surface accent handling issues, disambiguation problems (when a caller says "my AC is broken" — is it the outdoor unit, the thermostat, a zone valve, a bad capacitor), and phrasing quirks that only show up at volume. The prompt isnt a fixed artefact, its something that keeps getting refined against real data. We log every call, review the ones that didnt convert or had awkward moments, and tune the prompt against those specifics.&lt;/p&gt;

&lt;p&gt;A few learnings that matter more than most people realise.&lt;/p&gt;

&lt;p&gt;Interruption handling is everything. Voice platforms have interruption threshold settings — tune them aggressive. The agent should almost always yield to the caller. Nothing makes an agent feel robotic faster than it finishing a sentence while the customer is trying to speak.&lt;/p&gt;

&lt;p&gt;Dont over script. The temptation is to put every possible branch into the prompt. Fight it. The model is smart enough to handle variation if you give it good context and clear rules. A 400 line prompt performs worse than a 150 line prompt with the right structure.&lt;/p&gt;

&lt;p&gt;The voice itself is less important than people think. Dramatic voices make stressed customers feel worse. Go neutral and calm.&lt;/p&gt;

&lt;h2&gt;
  
  
  The workflow layer
&lt;/h2&gt;

&lt;p&gt;Once the call wraps, a webhook fires into the workflow tool with the full transcript, caller number, and a structured payload of what the agent booked or captured.&lt;/p&gt;

&lt;p&gt;Rough flow of what happens next —&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Webhook receives the end-of-call payload from the voice platform&lt;/li&gt;
&lt;li&gt;Parse the transcript into structured fields — customer name, phone, address, issue description, preferred time&lt;/li&gt;
&lt;li&gt;Check the CRM for existing customer match using phone number lookup&lt;/li&gt;
&lt;li&gt;If existing customer, fetch their record and use it for the booking&lt;/li&gt;
&lt;li&gt;If new customer, create the record with the captured info&lt;/li&gt;
&lt;li&gt;Create the appointment in the CRM with the booking details&lt;/li&gt;
&lt;li&gt;If the call was missed, send an SMS with a "sorry we missed you" template and a booking link&lt;/li&gt;
&lt;li&gt;Log everything to a backup audit trail&lt;/li&gt;
&lt;li&gt;If anything fails along the way, alert the owner with full call context so a human can step in&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Gotchas that ate time —&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CRM auth.&lt;/strong&gt; Most field service CRMs use OAuth with tokens that expire. Automation platforms dont always handle the refresh flow cleanly for custom integrations, so the token refresh often needs to be its own sub-workflow that runs when the main scenario detects a 401.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Customer matching.&lt;/strong&gt; Phone numbers come in a dozen formats. 8175551234, (817) 555-1234, +18175551234, with and without spaces or dashes. Your CRM stores them one specific way. Built a normalisation function that strips everything and matches on the last 10 digits. Matching hit rate went from mediocre to basically perfect.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rate limits.&lt;/strong&gt; When a contractor has a busy hour of calls back to back, the scenario can hit CRM API limits. Exponential backoff on the CRM modules solves it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Transcript parsing.&lt;/strong&gt; Early versions used regex to extract fields from the transcript. Constantly broke on edge cases. Replaced with an LLM module that takes the transcript and returns structured JSON against a schema. Slower by a couple seconds but reliability is way up.&lt;/p&gt;

&lt;h2&gt;
  
  
  The missed call text back — easiest win in the whole build
&lt;/h2&gt;

&lt;p&gt;Takes about 15 minutes to implement and honestly its one of the highest ROI pieces in the whole system.&lt;/p&gt;

&lt;p&gt;If the voice agent doesnt answer in time for whatever reason — on another call, system hiccup, whatever — the original number still routes to voicemail. A separate workflow watches for missed call events and fires an SMS within 30 seconds that reads something like —&lt;/p&gt;

&lt;p&gt;"Hi this is [Company], sorry we missed your call. Reply here with what you need and well get right back to you, or book a time at [link]"&lt;/p&gt;

&lt;p&gt;A big chunk of missed callers reply to that text. Of those, most end up booking. Even without the voice agent picking up, a missed call now has a meaningful conversion rate instead of effectively zero.&lt;/p&gt;

&lt;p&gt;If youre a contractor reading this and you dont do anything else from this article, build this one flow. The gap between a voicemail experience and a "we care, lets keep the conversation going" SMS is huge.&lt;/p&gt;

&lt;h2&gt;
  
  
  What actually changes for the business
&lt;/h2&gt;

&lt;p&gt;For Prestige specifically, the call answer rate went from 35% to 94% in the first month. That translated to dozens of jobs they wouldnt have won otherwise and a meaningful chunk of revenue recovered.&lt;/p&gt;

&lt;p&gt;But the numbers arent really the point. The second order effects matter more —&lt;/p&gt;

&lt;p&gt;Owners stop being the backup receptionist for their own business. Saturdays come back.&lt;/p&gt;

&lt;p&gt;Reviews improve because customers feel taken care of from the first touch.&lt;/p&gt;

&lt;p&gt;Tech utilisation goes up because the schedule actually fills.&lt;/p&gt;

&lt;p&gt;Word of mouth accelerates because people get a better experience at first contact, which is the part most contractors underinvest in.&lt;/p&gt;

&lt;p&gt;The business stops leaking in the most expensive place it was leaking without anyone noticing.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I would do differently
&lt;/h2&gt;

&lt;p&gt;Start with the missed call text back flow before touching the voice agent. Easier to build, easier to sell to the client, starts generating ROI in week one instead of week three.&lt;/p&gt;

&lt;p&gt;Spend more time on prompt testing. Manual testing by calling in is slow and doesnt cover edge cases. Better setup — feed recorded real customer calls through the agent and grade the responses. Building that testing harness is on the next sprint.&lt;/p&gt;

&lt;p&gt;Tighter error alerting. Our first version would silently fail on CRM rate limits. The owner called us one Monday asking why a few calls over the weekend didnt book. Now every failure path has a specific alert with full context.&lt;/p&gt;

&lt;p&gt;Have a rollback plan from day one. When platforms push updates mid-week that change behaviour, you need to be able to revert in a minute. Tag every change.&lt;/p&gt;

&lt;h2&gt;
  
  
  Build your own
&lt;/h2&gt;

&lt;p&gt;If youre a contractor and missed calls are your leak, you dont need us — you can build a version of this yourself. Vapi free tier covers testing. Make, n8n, and Zapier all have generous free tiers. Twilio is pay as you go. Plug it into whatever CRM youre already using.&lt;/p&gt;

&lt;p&gt;If youre a dev or AI consultant building for home service clients, the biggest lesson — they dont care about the tech stack. They care about two things. Does it answer the phone reliably, and does it get the booking into their system without humans touching it. Optimise for those and the rest follows.&lt;/p&gt;

&lt;p&gt;If you want to see what a production version looks like, the NeverMiss demo at &lt;a href=""&gt;https://nevermisshq.com/demo&lt;/a&gt; spins up a working AI receptionist from a business name in about 60 seconds so you can hear what it sounds like before committing to anything.&lt;/p&gt;

&lt;p&gt;Happy to answer build questions in the comments.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Written by Rayhan Mahmood, founder of NeverMiss. Nottingham, United Kingdom.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>claude</category>
      <category>voiceai</category>
      <category>automation</category>
    </item>
    <item>
      <title>AI Receptionist vs Live Answering Service in 2026 — Which One Actually Makes Sense</title>
      <dc:creator>Rayhan Mahmood</dc:creator>
      <pubDate>Fri, 10 Apr 2026 18:01:01 +0000</pubDate>
      <link>https://dev.to/nevermiss/ai-receptionist-vs-live-answering-service-in-2026-which-one-actually-makes-sense-5a23</link>
      <guid>https://dev.to/nevermiss/ai-receptionist-vs-live-answering-service-in-2026-which-one-actually-makes-sense-5a23</guid>
      <description>&lt;p&gt;The answering service industry is going through a massive shift right now. For decades the only option was hiring humans to answer your phones when you couldnt. Now AI can do it for a fraction of the cost.&lt;br&gt;
But the marketing from both sides is misleading. Live answering companies say AI sounds robotic and cant handle complex calls. AI companies say live agents are overpriced and outdated. The truth is somewhere in the middle and depends entirely on what kind of business you run.&lt;/p&gt;

&lt;p&gt;I build AI voice systems for home service contractors at NeverMiss so I have a bias. But Ill break down the real numbers and let you decide.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What a live answering service actually costs&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Most people dont realize how expensive live answering gets at scale. The entry level plans look cheap. $50-100 per month for 30-50 calls. But thats where the bait and switch lives.&lt;br&gt;
Go over your call limit and youre paying $1-2 per minute. A busy HVAC company getting 40 calls a day during summer will burn through a 50 call plan before Wednesday. The real monthly cost ends up being $500-2,000 depending on volume.&lt;br&gt;
Then theres the quality problem. These operators handle calls for dozens of businesses simultaneously. They dont know the difference between a capacitor and a compressor. They cant tell a caller whether you service their zip code. They take a message and email it to you. Thats it.&lt;br&gt;
The caller wanted help. They got a message taker.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What an AI receptionist actually costs&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AI answering services range from $29 per month on the low end to $900 or more for custom built systems. The difference is massive.&lt;br&gt;
The cheap options give you a generic voice that takes messages. Basically voicemail with a personality. Better than nothing but not by much.&lt;br&gt;
The mid range options like HeyRosie at $49-149 and Goodcall at $59-199 handle appointment booking, FAQ answering, and basic lead qualification. These work well for simple businesses with predictable call patterns.&lt;br&gt;
Custom built systems handle industry specific triage, emergency routing, CRM integration, and complex conversation flows. These cost more but they replace a full time receptionist not just an answering service.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Speed is where AI wins and its not close&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The data on this is overwhelming. 78% of customers buy from the first company that responds. Responding within 60 seconds converts at 391% higher rates than waiting even 5 minutes.&lt;br&gt;
Live answering services have hold times. The caller sits in a queue waiting for the next available operator. During peak hours that wait can be 2-3 minutes. For a homeowner whose AC just died in August those 3 minutes feel like an hour and theyre already calling your competitor.&lt;br&gt;
AI picks up on the first ring. Every time. No queue no hold music no "please stay on the line your call is important to us." The caller starts talking immediately.&lt;br&gt;
For home service businesses where speed to lead is everything this alone justifies the switch.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where live answering wins&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AI isnt better at everything. There are specific scenarios where a human operator is the right call.&lt;br&gt;
Complex emotional conversations. A homeowner calling after a house fire needs empathy that AI cant fully replicate yet. Legal intake where the caller is in crisis. Medical situations where the wrong response has liability implications.&lt;br&gt;
If your business handles sensitive calls where the wrong word creates legal exposure then a hybrid approach makes more sense. Smith.ai does this well with AI handling routine calls and humans stepping in for complex ones. It costs more but the risk mitigation is worth it for law firms and medical practices.&lt;br&gt;
For contractors plumbers roofers and HVAC companies the calls are operational not emotional. Whats the problem. Whats the address. When are you available. Book the job. AI handles this perfectly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The hidden cost nobody talks about&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Live answering services have turnover. The person who answers your calls this month might not be there next month. The new person doesnt know your business. They mispronounce your company name. They give wrong information about your service area. They accidentally tell a caller you dont do weekends when you do.&lt;br&gt;
Every new operator is a reset. Every reset loses you calls.&lt;br&gt;
AI doesnt quit. It doesnt have a bad day. It doesnt call in sick on the busiest Saturday of the year. The knowledge base stays consistent. The quality stays consistent. Tuesday at 2pm and Sunday at 3am get the exact same experience.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The real comparison&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Live answering service at scale runs $500-2,000 per month. Covers business hours only unless you pay extra for 24/7. Quality varies by operator. Hold times during peak. Limited to message taking for most services.&lt;br&gt;
AI receptionist runs $49-900 per month depending on complexity. Covers 24/7/365 automatically. Consistent quality every call. Zero hold time. Can book appointments, answer FAQs, qualify leads, route emergencies, and integrate with your CRM.&lt;br&gt;
For most service businesses the math isnt even close.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to test before you commit&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Most AI answering services offer free trials. Use them. But dont just test the easy calls. Call with background noise. Interrupt mid sentence. Ask a question thats not in the FAQ. Try to confuse it. Thats how you find out if the AI actually works or if its just a glorified voicemail.&lt;br&gt;
If you want to test what a custom built AI receptionist sounds like for a specific business theres a live demo at nevermisshq.com/demo that builds one in 60 seconds and calls you back.&lt;br&gt;
The answering service industry is changing fast. The companies that adapt now get the speed advantage. The ones that wait will be paying twice as much for half the result in two years.&lt;/p&gt;

&lt;p&gt;i wrote more about this on substack here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.tourl"&gt;https://rayhanmahmood.substack.com/p/your-home-service-company-is-losing&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>startup</category>
      <category>automation</category>
      <category>homeservices</category>
    </item>
    <item>
      <title>How I Built an AI Phone Agent That Actually Books Jobs for Contractors</title>
      <dc:creator>Rayhan Mahmood</dc:creator>
      <pubDate>Sat, 04 Apr 2026 17:05:11 +0000</pubDate>
      <link>https://dev.to/nevermiss/how-i-built-an-ai-phone-agent-that-actually-books-jobs-for-contractors-21p9</link>
      <guid>https://dev.to/nevermiss/how-i-built-an-ai-phone-agent-that-actually-books-jobs-for-contractors-21p9</guid>
      <description>&lt;h1&gt;
  
  
  How I Built an AI Phone Agent That Actually Books Jobs for Contractors
&lt;/h1&gt;

&lt;p&gt;Home service companies lose billions from missed calls every year. 78% of customers go with the first company that responds. For HVAC plumbing and roofing companies every unanswered call during peak season is $300-500 walking out the door.&lt;/p&gt;

&lt;p&gt;Traditional answering services charge $1-2 per minute and the operators dont know anything about the trades. AI voice agents fix this but most of them are built for generic businesses not contractors.&lt;/p&gt;

&lt;p&gt;I built NeverMiss to solve that. Let me walk through how the tech works and what I learned along the way.&lt;/p&gt;

&lt;h2&gt;
  
  
  The stack
&lt;/h2&gt;

&lt;p&gt;Vapi handles voice AI orchestration. ElevenLabs does the voice synthesis. OpenAI powers the conversation intelligence. Twilio handles telephony. Make.com runs the workflow automation. The whole thing plugs into whatever CRM the contractor already uses whether thats ServiceTitan Housecall Pro Jobber or just Google Calendar for smaller shops.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why generic AI receptionists fail for contractors
&lt;/h2&gt;

&lt;p&gt;Most AI answering services treat every call the same. Collect name number and reason for calling. Transfer or take a message.&lt;/p&gt;

&lt;p&gt;That works for a dentist office. It doesnt work for a plumber at 2am when someones basement is flooding.&lt;/p&gt;

&lt;p&gt;Trade calls need triage. The AI has to figure out if its an emergency or routine, new customer or existing, service request or just a quote, and whether its something the company even handles. An HVAC company doesnt want their AI booking a call for ductwork installation when they only do residential service.&lt;/p&gt;

&lt;h2&gt;
  
  
  The prompt engineering challenge
&lt;/h2&gt;

&lt;p&gt;The biggest technical problem wasnt voice quality or latency. It was getting the AI to ask follow up questions without sounding like a robot reading a checklist.&lt;/p&gt;

&lt;p&gt;Early versions would rapid fire questions. Whats your name whats your number whats your address whats the problem. Real receptionists dont talk like that. They have a conversation.&lt;/p&gt;

&lt;p&gt;The fix was structuring the prompt as a conversation flow instead of a data collection form. The AI acknowledges what the caller says, asks one question at a time, and uses natural transitions like "got it and whats the best number to reach you at" instead of "please provide your phone number."&lt;/p&gt;

&lt;h2&gt;
  
  
  Edge cases are where the real work lives
&lt;/h2&gt;

&lt;p&gt;What happens when the caller says "my water heater is making a banging noise and theres water on the floor"? Thats an emergency. The AI needs to pick up on urgency without the caller explicitly saying the word emergency.&lt;/p&gt;

&lt;p&gt;What about pricing questions? Most contractors dont want pricing disclosed over the phone. But saying "I cant help with that" kills the call. The AI needs to give a range or explain that pricing depends on the situation and theyll get a quote when the tech comes out.&lt;/p&gt;

&lt;p&gt;What about Spanish speakers? Heavy background noise from a job site? Someone who puts the phone down mid conversation to deal with a leak thats flooding their kitchen right now?&lt;/p&gt;

&lt;p&gt;Each of these required specific handling in the prompt and sometimes in the voice config itself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Voice quality is the whole game
&lt;/h2&gt;

&lt;p&gt;In testing the biggest factor in whether callers trusted the AI wasnt how smart the responses were. It was the voice.&lt;/p&gt;

&lt;p&gt;Early versions sounded too perfect too smooth too obviously synthetic. Callers would immediately say "am I talking to a computer" and either hang up or get hostile.&lt;/p&gt;

&lt;p&gt;The fix was counterintuitive. Make the voice slightly less perfect. Add natural pauses. Vary the speed. Use a voice with character instead of the generic default.&lt;/p&gt;

&lt;p&gt;ElevenLabs gives you control over stability, similarity, style, and speed. The sweet spot for contractor calls is stability at 0.7, style at 0.1, and speed at 0.8. This sounds like a calm competent receptionist instead of a text to speech engine.&lt;/p&gt;

&lt;h2&gt;
  
  
  The math
&lt;/h2&gt;

&lt;p&gt;The system answers every call within one ring 24/7/365. It handles emergency triage, appointment booking, lead qualification, and FAQs. After each call it logs everything to the CRM and sends a summary via text and email.&lt;/p&gt;

&lt;p&gt;For an HVAC company doing $3-5M the math is simple. They miss 3-5 calls per day during peak season. At a $400 average ticket and 60% close rate thats $720-1,200 in lost revenue daily. The AI costs and pays for itself in the first week.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;Theres a live demo at nevermisshq.com/demo. Enter any business name and phone number and the AI calls you back in under 60 seconds. Test the conversation, throw weird scenarios at it, hear the voice quality.&lt;/p&gt;

&lt;p&gt;If youre building voice AI for any industry the biggest lesson I learned is that the technology is the easy part. Understanding the domain deeply enough to handle the edge cases is what turns a demo into a product.&lt;/p&gt;

&lt;p&gt;i also wrote about this topic on medium here &lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.tourl"&gt;https://medium.com/@rayhanmahmood/i-tested-7-ai-answering-services-for-home-service-companies-and-most-of-them-were-trash-8970fa413408&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.tourl"&gt;https://nevermisshq.com&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  ai #voiceai #startup #automation #homeservices
&lt;/h1&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>startup</category>
      <category>automation</category>
    </item>
  </channel>
</rss>
