NNabeel Hassan

Blog · August 10, 2026 · 9 min read

An Outbound Voice Agent Is Not an Inbound Agent Dialing Out

By Nabeel HassanAI Engineer · ICPC World Finalist

TL;DR: An outbound voice agent is not an inbound agent pointed the other way. Inbound, the caller chose to talk to you and will forgive a lot. Outbound, you interrupted someone, and everything follows from that: the first eight seconds have to earn the rest of the call, the list matters more than the prompt, answering machines are the majority outcome rather than an edge case, and retry cadence is a compliance decision instead of a tuning knob. The measurement changes too. Resolution rate is an inbound metric. Outbound lives or dies on contact rate, conversion on contact, and attempts per contact.

Most of the voice agent work I get asked about starts inbound, because a missed call is easy to point at. Somewhere around month two the client asks the obvious follow-up: if it can answer the phone, can it call people? At Tested Media I built the voice and chat agents behind CallSetter AI, with GoHighLevel running campaigns and lead management underneath, so the outbound half is not a hypothetical for me. It is also where I have watched the most projects go sideways, almost always because the same agent that worked inbound was reused with the direction flipped.

Here is what actually changes.

Everything falls out of one asymmetry

Inbound, the person dialed you. They have a reason, they are already holding the phone, and their patience budget is large because they want something. A three second pause is annoying. It is not fatal.

Outbound, you took someone out of whatever they were doing. Attention is not granted, it is borrowed, and it gets withdrawn the moment the call sounds like a telemarketer. There is no goodwill in the account to spend.

That single inversion is why copying an inbound agent outbound produces something that technically works and books nothing. The conversation design, the failure modes, the infrastructure and the metrics all shift.

The first eight seconds are the whole product

An inbound agent opens with a greeting and a question, because the caller is about to tell it why they rang. An outbound agent has to answer three questions before the human decides whether to stay on the line: who is this, why are you calling me, and what do you want.

The structure I use, in order:

  1. Name the business the person recognizes, not the agency and not the platform. The name has to be the one they interacted with.
  2. Anchor the call to something they did. "You enquired about a service on our site this morning" is a different call than "we have an offer for you." One is a follow-up, the other is a cold call, and people can hear the difference instantly.
  3. Ask a short question that gives them an exit. "Is now an okay time?" costs two seconds and dramatically changes how the rest of the call goes, because it converts an interruption into a choice.

Things that belong nowhere near an outbound opener: "How are you today," any pause longer than a beat before the first word, and pitch language before the reason for the call. Silence on a call you did not ask for reads as a robodialer, and people hang up on it, so the first turn is where to spend the latency budget.

On disclosure, my rule is simple and I do not negotiate it: the agent never claims to be a person, and if someone asks directly it says plainly that it is an AI assistant calling on behalf of the business. Some jurisdictions require that up front on outbound calls. Beyond the legal question, an agent caught pretending is worse for the client than no agent, because the recording of that call is the thing that gets shared.

The list is the product, not the prompt

The single largest determinant of outbound performance is not the agent. It is who you dial and how long after they raised their hand.

The best outbound call in this category is the one that goes out sixty seconds after a missed call or a form fill, while the person still remembers doing it. That is a callback, not a cold call, and it is why missed-call textback plus an AI callback is the outbound build I recommend before any other. Contact rates on a sixty second callback are in a different universe from a list that has been sitting for a week.

The other half of list quality is suppression, and it needs to be enforced before a dial job is ever created:

Every one of those lives in the CRM, which is the point. If the suppression logic sits inside the voice platform, it applies to one agent and gets forgotten. If it sits in front of the dial queue, it applies to every campaign and every channel.

Answering machines are the normal case

Inbound, a voicemail is an edge case. Outbound, machines answer a large share of the calls, and how the agent handles that is a real feature rather than an afterthought.

Two failure modes, and they pull in opposite directions. Detection that is too eager clips a real human who answered slowly, so the agent starts leaving a voicemail over a live person saying hello. Detection that is too patient means the agent has a warm conversation with a beep and burns a minute of billable audio doing it. Neither one is solved in the prompt. It is a setting on the telephony layer, and it needs to be tested against real numbers on real carriers, including mobile voicemail greetings that are long and personal enough to look like a conversation.

The voicemail itself should be short and boring. Who called, one sentence on why, one number to call back, done. Not a pitch, not three sentences of value proposition, and never three voicemails across three attempts. The callback number matters as much as the script: it needs to be a number that is answered, ideally by the same agent, or the whole loop dead ends. That is a piece of the phone number layer, which is also where the registration work lives that keeps your outbound number from being labelled Spam Likely.

Retry cadence is compliance, not tuning

Inbound has no cadence problem. Outbound has almost nothing but cadence problems, and this is the area where I insist on getting the client's rules in writing before I encode anything. I am an engineer, not their lawyer, and outbound calling in the US sits under consent rules with real financial teeth.

What I build regardless of the specific rules:

There is a reputational layer on top of the legal one. Carriers score numbers, and a burst of very short outbound calls is exactly the pattern spam analytics look for. A cadence that is polite to the recipient also happens to be the cadence that keeps your number answerable, which is a rare case of the compliant thing and the effective thing being identical.

The metrics change

The inbound numbers I hold clients to do not transfer cleanly. Resolution rate assumes someone called with a problem. Outbound needs its own set:

Where the logic lives

Structurally, my outbound build looks like my inbound build with one addition: the dial queue. The agent stays thin and handles the conversation. Everything around it, suppression, quiet hours, retry scheduling, outcome write-back and the follow-up SMS, runs in n8n against the CRM, which is where the campaign and the contact history already live. The voice platform triggers a call and reports what happened. It does not own the strategy.

That separation is what makes the system auditable, and auditability is the thing an outbound program needs most, because when a client asks why their customer got called at 7am on a Sunday, "the agent decided to" is not an answer. It also keeps the escalation path clean, since a live outbound contact who asks for a human is the highest value handoff you will ever get, and handing off well is worth more here than anywhere inbound.

When outbound should not be an agent at all

Sometimes the right answer is not a call. If the reason for contact fits in one sentence and needs no back and forth, a text outperforms a call on cost, on annoyance, and often on response. That is the same channel logic I laid out in chat agent versus voice agent: the channel is a consequence of where the interaction is actually being lost.

My filter is one question. Can you state the reason for this call in a single sentence tied to something this specific person did? If yes, the call is welcome and an agent can make it well. If no, you are building a robodialer, and no amount of prompt engineering makes that a good product.

The short version

Inbound is about not losing what you already have. Outbound is about being welcome enough to be worth the interruption. They are different products that happen to share a voice.


I build production voice and chat agents on Retell, wired into n8n, GoHighLevel and Twilio, with the CRM, campaign and reporting layer behind them actually working. More about my background here, or book a call.

FAQ

What is the difference between an inbound and an outbound AI voice agent?

Consent and attention. Inbound, the person dialed you, so they have a reason to be on the call and a large patience budget. Outbound, you interrupted them, and attention is borrowed rather than granted. That inversion changes the conversation design, because the agent has to answer who is calling, why, and what it wants inside the first few seconds; it changes the infrastructure, because answering machine handling, suppression lists, calling windows and retry caps all become required rather than optional; and it changes the measurement, because resolution rate assumes an inbound problem to resolve. Reusing an inbound agent with the direction flipped produces something that technically works and books nothing.

How soon should an AI agent call a new lead back?

As close to immediately as the pipeline allows, ideally within about a minute of the missed call or form fill, while the person still remembers doing it. A callback that fast is not a cold call at all, it is a continuation of something they started, and contact rates on it are in a completely different range from a list that has been sitting for days. This is why missed-call callback is the outbound build I recommend before any other: the timing does more for performance than any amount of prompt tuning.

What metrics should you track on an outbound voice agent?

Contact rate, meaning attempts that reached a live human, which is mostly a list and timing metric rather than an agent one. Conversion on contact, meaning of the conversations that actually happened how many reached the goal, which is the honest agent quality number and has to be kept separate from contact rate so a bad list cannot hide a good agent. Attempts per contact, which is the cost and annoyance metric and climbs when the list ages or the calling windows are wrong. Opt-out rate, which warns you that targeting is wrong before the client's customers do. And cost per booked appointment, which transfers over from inbound unchanged.

Building something in this space?

I take on AI-agent, automation and product work directly — scoped fast, shipped fast.

Book a discovery call →

Keep reading