shouldivibecodeit

Should I vibe codeVapi?

API-first platform for inbound and outbound phone and web voice agents

An AI voice on a phone line is legally a robocall. Damages are per call, and you wrote the loop.

?

Their verdict, the Build price and the build-time estimate come from their entry, MIT-licensed. Checked 2026-08-04.

Can you build it?asked by canivibecodeit.com ↗KINDAweekend project · weekend for one inbound agent; ongoing production operations
?

Our verdict, the regret score and everything below it. Editorial and unsponsored — nobody can pay to be moved.

Should you ship it?asked by usABSOLUTELY NOTthe thing you break isn’t code.

The honest answer

why the verdict is what it is

Vapi is a hosting layer over a stack you can assemble yourself — Pipecat or LiveKit, a speech-to-text, a model, a voice, a SIP trunk — and an agent will assemble it in a weekend. That is precisely the problem. What you have built, when it works, is a machine that dials phone numbers and talks, and US telecoms law has a settled and expensive opinion about machines that do that. Since February 2024 the FCC treats an AI-generated voice as an "artificial" voice under the TCPA, which puts your side project in the same regulatory bucket as a robocall: prior express consent before you dial, identification of who is responsible for the call, and a working opt-out. The damages are statutory and assessed per call, so a query that returns the wrong list does not cost you an apology — it costs you a number multiplied by another number. Layered on top are the state rules that say the caller has to admit it is a bot, the two-party recording consent problem that is decided by where the person you called is standing, and the small matter of an agreeable language model inventing a refund policy in a conversation you recorded. None of it is hard to build around. All of it is easy to forget in the file where you loop over contacts.

What actually breaks

not "if". the specific failures.

  • The outbound loop, which is one bad join away from dialling a list you never had consent for, at statutory damages per call
  • Disclosure, because the voice sounds human and several states require the caller to say plainly that it is not
  • Recording consent, which on a phone call is decided by where the other person is standing, not where your server is
  • The number's reputation, which analytics carriers downgrade to "Spam Likely" after a burst of outbound calls and which you then petition each of them, separately, to restore
  • Barge-in and endpointing — the two things that separate a demo from a call a human will tolerate. The agent either talks over people or leaves three seconds of silence
  • Prompt injection delivered by voice, where a caller tells the agent to ignore its instructions and transfer them, and the agent is agreeable by design
  • The agent inventing a commitment — a refund, a discount, an appointment you cannot honour — in a conversation you recorded and now have to explain
  • SIP credentials on a host with a public IP, which get found and pumped for premium-rate international minutes overnight, on your carrier account
  • Voicemail, with which the agent will cheerfully hold a full two-minute conversation at your per-minute rate
  • The caller who is distressed, elderly or in an emergency, for whom "the bot did not understand" is the entire failure
and then, at 3am

The campaign was meant to reach the 340 customers who had ticked the box. The query that built the list joined on the wrong column and returned 11,000 rows — every contact in the database, including the ones who unsubscribed in 2023 and the ones who were only ever in there because somebody imported a badge scan from a conference. It ran overnight, because overnight was cheap. By morning 6,200 calls had connected, an AI voice had introduced itself using your company name, and the opt-out you built was a spoken phrase the recogniser matched maybe half the time. The first message on the office line is not from an angry customer. It is from a lawyer, it is perfectly calm, and it uses the phrase "per call".

Is that you?

the verdict is a default, not a law

ship it if
  • It is inbound only, on a number you own, and the disclosure is the first thing every caller hears
  • The only outbound calls go to people who gave prior express written consent to automated calls, and you can produce that record
  • It is a demo you dial yourself, to find out whether the latency is tolerable
  • The agent can read but never commit — it answers questions and books nothing, refunds nothing, promises nothing
don’t ship it if
  • There is any outbound dialling from a list, at all, ever
  • The agent does not identify itself as an AI in its first sentence
  • Calls are recorded without an announcement that plays before capture begins, inbound as well as outbound
  • The agent can take an action — book, cancel, refund, transfer — without a human confirming it
  • It touches anything medical, financial or legal, where a confidently wrong answer is the whole liability
  • Your SIP credentials live in an environment variable on a box with a public IP and no fraud alerting

If you build it anyway

the checklist, then the prompt that enforces it

  1. Build inbound before outbound, and treat outbound as a separate product with a separate decision. Almost every rule that bites is an outbound rule.
  2. Say it is an AI in the first sentence of every call, in both directions, before anything else happens. Do not make this configurable.
  3. Play a recording announcement before capture starts, and default to all-party consent everywhere rather than inferring jurisdiction from an area code.
  4. Gate outbound dialling behind a stored consent record per number, checked at dial time, not at list-build time. No consent row, no call.
  5. Cap the dialler: a hard per-run ceiling, a per-number cooldown, calling-hours enforcement in the recipient's timezone, and a kill switch a human can reach from a phone.
  6. Give a spoken and a keypad opt-out. DTMF works when speech recognition does not, and the opt-out is the one path that must never fail.
  7. The agent proposes, a human disposes. Any action with money, a booking or a cancellation attached becomes a queued request, not a completed one.
  8. Treat everything the caller says as untrusted input to the model. Keep tool permissions minimal and assume someone will try to talk the agent into using them.
  9. Set a spend and concurrency limit on the carrier account with alerting, because toll fraud on an exposed SIP endpoint is measured in hours, not weeks.
the guardrail prompt
Before you write anything that places or answers phone calls with a synthetic
voice, apply these, and refuse the parts of my request that break them.

1. Tell me first that since February 2024 the FCC treats an AI-generated voice
   as "artificial" under the TCPA, that damages are statutory and per call, and
   that a hobby project is covered exactly as a call centre is.
2. Build inbound only. If I ask for outbound dialling from a list, stop and
   make me describe where the consent came from and how it is stored per
   number. No consent record, no dial — enforce that at dial time in code.
3. The first thing the agent says, on every call in either direction, is that
   it is an AI. Not a config flag. Not a system-prompt suggestion. Code.
4. If calls are recorded, an announcement plays before any audio is captured.
   Default to all-party consent everywhere; do not infer jurisdiction from an
   area code, because a number says nothing about where a person is standing.
5. Build the opt-out before the conversation logic, and give it two paths:
   a spoken phrase and a DTMF key. Test it against a caller who interrupts.
6. Before any dialler exists: a hard cap on calls per run, a per-number
   cooldown, calling-hours checks in local time, and a kill switch.
7. The agent may not commit to anything. Bookings, cancellations, refunds and
   transfers become queued requests for a human. Refuse to wire a tool that
   moves money or changes a booking directly.
8. Treat caller speech as untrusted input to the model. Give tools the minimum
   permissions and assume someone will try to talk the agent into using them.
9. Put a spend cap and alerting on the telephony account on day one, and never
   put SIP credentials on a publicly reachable host without IP restrictions.
10. Out of scope, and say so if I ask: medical, financial or legal advice,
    voice cloning of a real person, and anything aimed at people who did not
    ask to be called.
11. Then tell me that $0.05 a minute buys a vendor who already answered the
    consent, disclosure and reputation questions I am about to get wrong.
paste this before you build — not after something breaks30 lines · 2110 chars

That one keeps you out of trouble. For the prompt that actually builds it, canivibecodeit.com has one.

their build prompt ↗

Or don’t build it

the boring option, and the way back out

just pay for it

Always, if real people are on the line. The per-minute price is not what you are buying. You are buying carrier relationships, STIR/SHAKEN attestation, the number-reputation work, and a vendor whose lawyers have already read the TCPA — none of which is in the framework you would self-host, and all of which is what the failure mode is made of. Self-host the stack for a prototype you dial yourself; put anything that reaches a stranger on infrastructure with a compliance team attached.

your exit plan, if you already built it

Own the two things that are not the platform: the phone numbers and the transcripts. Numbers port between carriers, so hold them on a carrier account in your own name rather than inside a vendor's number pool, and you can move the whole operation without reprinting anything. Keep transcripts, recordings, consent state and the disclosure log together per call with a single deletion path, because an erasure request has to remove all four or none of them. Everything else — the agent's prompt, the tools, the voice — is a config file you can rewrite in an afternoon.

prior art · someone already did this
LiveKit Agents + SIP

Apache-2.0 realtime agent framework. Pair it with the separately deployed LiveKit Server and SIP service for a self-hosted phone stack.

Pipecat

BSD-2-Clause Python framework with composable voice pipelines and broad model, transport, and telephony integrations. You still own deployment and carrier operations.

Voice OSS cost planner

Source-linked calculator and deployment reference for platform, model, SIP, number, infrastructure, and operational costs. It is a planning companion, not an agent runtime.

Questions

It is inbound only. Does any of this apply to me?

Much less of it, which is why inbound-only is the one shipItIf here. The TCPA consent rules are about calls you place. What still applies inbound is recording consent — decided by where the caller is, which for a public number you cannot know — and disclosure, because a caller who believes they are talking to a person is being misled either way. Announce that it is an AI and that the call is recorded, before anything else, and inbound is a defensible build.

Superscribe was YOUR FUNERAL for phone recording. Why is this ABSOLUTELY NOT?

Superscribe listens to calls you were already on. Vapi-shaped systems originate them. Recording without consent is a serious problem with one recording; an outbound dialler is a loop, and a loop over a bad list turns one mistake into thousands of identical ones at statutory damages each. The difference between the two verdicts is the multiplier.

Does the agent really have to say it is a bot?

In California, if the conversation is intended to incentivise a sale or influence a vote, yes — SB 1001 makes undisclosed bots unlawful, and other states have added their own versions. The FCC's rules separately require artificial-voice calls to identify who is responsible for the call. Beyond the statutes, the disclosure is the cheapest liability reduction available: one sentence at the top of the call, and nobody can later claim they thought they were talking to a person with authority to promise them something.

What about toll fraud? That sounds like a carrier problem.

It is your problem, because it is your account. An exposed SIP endpoint with weak credentials gets discovered by scanners within hours and used to place expensive international calls, and the bill is real and generally payable. Set a spend cap, restrict by IP, and turn on whatever fraud alerting your carrier offers before the first call, not after the first invoice.

sources
  • 47 CFR § 64.1200 — delivery restrictions on artificial or prerecorded voice calls (US)
  • FCC Declaratory Ruling FCC 24-17 — AI-generated voices are "artificial" under the TCPA (US, Feb 2024)
  • California SB 1001 — unlawful to use an undisclosed bot to communicate with a person (US, CA)
  • Recording phone calls and conversations — consent requirements by state (US)
  • GDPR Art. 6 — lawfulness of processing (EU)
did you build it?

Every week, someone ships something they shouldn’t have.

New verdicts, the worst thing that landed in the trap, and the occasional incident report. No other email, ever.

also on the regret index
SuperscribeYOUR FUNERAL

Phone calls are the most regulated recording surface there is, and you want a cron job on them.

ChatbaseYOUR FUNERAL

An AI that answers your customers wrongly is a support ticket that scales.

TeleMinuteDEMO ONLY

Telegram bots are the easiest backend you will ever ship, which is also the warning.

last reviewed 2026-08-04 · verdict is editorial and unsponsored · shared entry data from canivibecodeit under MIT · not legal advice