AI voice agents for BPO and contact centers take routine inbound calls and overflow for each client program, and run its outbound campaigns. They verify the caller, read and write the client's CRM or helpdesk during the call, and transfer to a person when the call needs one. Afterwards, each call can be scored for quality.
Key Takeaways
- Count a call as deflected only when the caller's problem was solved.
- Over the concurrency limit, new inbound calls are rejected, not queued.
- Client call audio stays in-house only when the models run there too.
A BPO runs many client programs on one floor, each with its own script and its own systems. This guide covers which of those calls an AI voice agent can take, and how each one runs in Dograh, an open-source voice agent platform that reads and writes your client's CRM or helpdesk during the call.
AI voice agents for BPO: many client programs
Plan the agent per client program, never per floor, because each program has its own callers and its own rules. A bank's card line and a retailer's order line may sit side by side, but they verify callers differently and write to different systems.
The human work is not going away soon. The Bureau of Labor Statistics outlook for customer service representatives counts about 2.7 million jobs in 2025 and projects a 5% decline by 2035 as simple tasks move to automation and self-service, with about 289,500 openings a year still.
In Dograh, a client program is an agent: one workflow with its own prompt, documents and tools. Several phone numbers can point at the same agent through each number's Inbound workflow setting, and the number the caller dialled reaches Pre-Call Data Fetch as to_number. So one agent can serve several client lines and load the right client's details as the call connects. The greeting waits for that lookup, and the caller hears ringing meanwhile. When two programs need different scripts or verification steps, give each one its own agent.

Dograh has no built-in CRM or helpdesk integration. Each client's system connects through HTTP API tools during the call, MCP tools, the Webhook node after the call, Pre-Call Data Fetch, or the API Trigger to start calls from the client's side. Our guide to integrating voice agents with your stack covers each one.
Every program runs the same order: greet, verify, then disclose. A phone number finds a record. It does not prove who is calling. Tell the agent in the prompt to ask for the client's approved check, such as date of birth or the last digits of an account number, before it names any order, balance or account detail.
Tier-1 call deflection: calls the agent finishes
Tier-1 deflection means the agent solves a routine call from start to finish. A call it only keeps away from a person, without solving it, is not deflected.
Pick call types by one test: can the agent finish this call from the client's own system or documents? Order and account status, delivery dates, opening hours and policy questions usually pass. The Knowledge Base takes the client's documents (PDF, DOCX, DOC, TXT and JSON, up to 5 MB per file) for policy answers. An HTTP API tool reads a status or writes a change, such as a new delivery address. Tell the agent in the prompt to use it only after the caller is verified. It waits 5 seconds by default and does not retry, so a slow client API shows up fast in testing.
Call types that need judgement, a refund outside policy or an upset caller, stay with people. AI Voice Agents for Tier-1 Call Deflection works through how to pick them for each program.
Measure deflection by resolution. The containment rate, the share of calls finished without a person, is easy to inflate: an agent that loops callers until they hang up scores well on it. Our post on AI voice agent vs IVR explains why containment fails on its own. Check instead whether the caller rang back about the same problem within a few days, using the client's own records, and listen to a sample of calls.
Overflow call handling: when the agent picks up
The contact center's own phone system decides when a call goes to the agent. Dograh then answers it, up to its concurrency limit.
A call can go to the agent once it has waited past a set time, or after the team has gone home. In a Nextiva survey of 400 people, 54% of callers said they hang up after waiting up to eight minutes for an agent. So send calls to the voice agent on queue time, and not only when every person is busy.
Capacity is the fact to plan around. Inbound calls share the organisation's single concurrency limit (10 by default). Self-hosted, you raise it with DEFAULT_ORG_CONCURRENCY_LIMIT, and your servers and phone provider set the practical ceiling. Dograh Cloud Pay as you go includes 10, with more by contacting Dograh. Campaign calls take slots from the same limit, so a busy outbound campaign leaves fewer for inbound.
Past the limit, a new inbound call is rejected at once, not queued, and it creates no call record in Dograh. The second route, to a human team or a recorded message, has to sit in your phone system or at your carrier. Size the limit for the busiest hour across all the programs that share it.
Load test over real phone calls before a client goes live, and raise the volume in steps. Our guide to testing, monitoring and scaling AI voice agents sets out how. AI Voice Agents for Overflow Call Handling covers the routing rules and sizing.
Open Source Alternative to Vapi / Retell
Self-hosted voice agent platform — no per-minute fees
dograh-hq/dograh
Star on GitHub
Human handoff routing: the way to a person
Every client program needs a way out to a person, because many callers still want one. In a OnePoll survey of 6,000 consumers for AnswerConnect, across the US, UK and Canada, 85% said they prefer a real person and 31% said they would hang up if connected to AI. Tell the agent in the prompt to transfer as soon as a caller asks for a person.
Transfer Call works on Twilio, Telnyx and Asterisk ARI. It passes no summary by default; on Twilio it can play a short spoken introduction to both people. Write the details to your system with an HTTP API tool before the transfer. Dograh calls the destination first and connects the caller only when someone answers. Browser test calls can't transfer, so test every transfer on a real phone line.
Routing is set by the tool's destination source. Static / Template dials a fixed number or one built from call details. Context Mapping picks a number from ordered rules on a value the call already holds, such as the client program or the caller's language, with an optional fallback. The Dynamic HTTP Resolver asks the BPO's own system which number to dial, so the routing software can pick the right team at that moment.
For a BPO, that system is the client's helpdesk, so the ticket is already open when the person picks up. If nobody answers, the caller stays with the agent; tell it in the prompt to offer a callback, and write that request to the client's system with an HTTP API tool. The Transfer Timeout is 30 seconds by default (5 to 120).
To hand the caller to another Dograh agent rather than a phone number, such as a billing agent for the same client, use Transfer to Agent instead. AI Voice Agents for Human Handoff Routing covers each destination source and the unanswered case.
Outbound campaigns for client programs
Outbound work runs as campaigns, one per client program and time zone. The list comes from the client's own system as a CSV, uploaded to Campaigns, and each extra column becomes a variable the agent can use.
Calling hours are set by weekday in one time zone per campaign, so split a national list by time zone. Retries run from 0 to 10, 2 by default. Retry policy is the client's decision, written into the program's brief. The campaign can also cap how many of its calls run at once, which keeps slots free for inbound.
To test two openings, split the campaign between two versions of the agent. Dograh shows each version's share of calls and outcomes. A circuit breaker pauses the campaign when too many of its calls fail, for example when a speech or language model provider goes down or rejects the key, and someone resumes it by hand after checking.
Dograh keeps no do-not-call list. When a caller opts out, an HTTP API tool writes it to your own list, and you remove those numbers before the next campaign upload. The do_not_call call tag records the request but never blocks a later call. To stop calling someone mid-campaign, pause the campaign and start a new one from a corrected list. For lists that change daily, start calls from your own system with the API Trigger.
Consent generally comes before the first call. In its February 2024 declaratory ruling, the Federal Communications Commission (FCC) said calls using AI-generated voices "require the prior express consent of the called party to initiate such calls absent an emergency purpose or exemption." The client holds those consent records, so agree in the contract who checks them before each upload. This is general information, not legal advice; confirm your position with counsel. AI Voice Agents for Outbound Campaigns in BPO covers calling hours and consent.
Multilingual support lines: pick speech models first
Dograh supports 70+ languages, depending on the speech-to-text and voice providers you choose. Check each provider's own language page for every language the client's callers speak, and test each one over a real phone line.
In the agent's Model tab, the speech-to-text Language setting can be "Multilingual (Auto-detect)". With Dograh's own models or Deepgram Flux, Language hints below it bias recognition toward the languages you expect. Greeting Text plays before Dograh can hear the caller's language, so write it in both, for example "Hola, hello".
Detection can be wrong, and the agent should never carry on confidently in the wrong language. Tell it in the prompt to ask a short question when it is unsure, offering the likely languages, and switch only after the caller confirms. If the language is not supported well enough, the safest step is a transfer to a person who speaks it, with Context Mapping routing on the language value. When no one is free, tell it to collect only the minimum and write a callback request in the caller's language.
AI Voice Agents for Multilingual Support Lines in BPOs compares speech providers by the languages their own docs list.
Join the Dograh Community
Dograh is an OSS alternative to Vapi. Join our Slack community for queries, releases, best practices & community interactions.
Call QA and scoring for every client
Each client program needs its own scorecard, and Dograh's QA node grades calls against it after they end. It never changes a call while it is running.
The QA node scores each step of the flow separately. Each step gets its own tags, a 1-10 score, sentiment and a summary, and all tags are also listed together for the call. There is no single call score. QA summaries are in English by default.
Write the client's scorecard into the QA prompt, such as whether the agent verified before naming an account detail, or whether it offered a person when asked. The Sample Rate (%) setting starts at 100, and below that it picks calls at random. Run QA on every call while a program is new, then on a random 5-10% of live calls once it is stable. The Webhook node can send the results, as {{annotations.qa_xxx}} fields, to the client's own system.
QA flags calls. People decide what to change. Agree with each client who reviews flagged calls and who signs off a prompt change before it goes live. AI Voice Agents for Call QA and Scoring in Contact Centers shows how to build a scorecard per program.
On-prem voice AI: where client call data goes
A client contract often says where its call data may go, and self-hosting is how a BPO keeps that promise. Self-hosted Dograh keeps recordings and transcripts on the BPO's own servers. Dograh is the orchestration layer: it runs the call flow, tools and telephony, and the speech and language models are a separate layer you choose. The call audio stays in-house only when the speech and language models run on your own servers too. Bringing your own keys for a hosted model moves the contract, not the data. The audio still reaches that provider.
Because you self-host Dograh inside your existing compliance perimeter, you don't need a separate vendor review for Dograh. The speech and language model providers you choose may still need their own review, unless those models run on your servers too. If you choose Dograh Cloud instead, Dograh Cloud handles the security work for you.
Dograh starts every account on its own managed models. To keep call audio away from Dograh, open Models, switch the Organization default to BYOK with your own speech and language providers (or local models), and check that no agent has its own model override.
Recordings and transcripts keep whatever is said, so the call never asks for a full account, card or Social Security number; use a short check such as the last four digits, and send payment links by text or email from your own system. For the phone path, Asterisk ARI connects Dograh to the BPO's own phone system, and Transfer Call works there too. On-Prem Voice AI for BPOs covers servers, models and the network setup.
Choosing a voice AI platform for a BPO
Judge platforms by tests a BPO can check before it signs a client, not by a demo call.
| Test | What to ask | How Dograh answers |
|---|---|---|
| Client data | Where do recordings, transcripts and audio go? | Self-hosted on your servers; audio stays in-house with local models |
| Capacity | How many calls at once, and what happens to the next one? | 10 by default, adjustable; over the limit, new inbound calls are rejected |
| Way to a person | How is the transfer routed? | Transfer Call with static, context-mapped or resolver-picked destinations |
| Quality | Is post-call QA built in, with sampling? | QA node with per-step scores and a Sample Rate (%) setting |
| Many programs | Can one account serve several client lines? | Several numbers per agent; to_number tells it which line was dialled |
| Cost | What is the platform fee at BPO volume? | No per-minute platform fee self-hosted |
Per-minute fees add up fast at BPO volume. Vapi, for example, lists $0.05 a minute for hosting, with the speech and language models billed on top. At 10,000 minutes a day, that fee alone comes to $500 a day. Self-hosted Dograh has no per-minute platform fee (servers, model keys and phone minutes still cost); Dograh Cloud has a 1¢-a-minute platform fee. For client billing, Dograh connects to Paygent, which tracks each call's usage and invoices your clients at your own rates. Self-hosting puts uptime and upgrades in your team's hands. Best AI Voice Agents for BPOs compares the main platforms on these tests.
Start with one client program's busiest Tier-1 call. Verify, resolve it from the client's system, transfer the rest, and score every call until the numbers hold.
Glossary
- Containment rate
- The share of calls an automated system finishes without handing the caller to a person. On its own it rewards an agent that loops callers until they hang up, so a BPO pairs it with whether the problem was solved.
- Concurrency limit
- The number of calls Dograh runs at once for an organisation, 10 by default. Inbound calls share it, campaign calls take slots from it, and a new inbound call over the limit is rejected at once rather than queued.
- Destination source
- How Dograh's Transfer Call tool picks the number to dial: Static / Template, Context Mapping on a value from the call, or a Dynamic HTTP Resolver that asks your own system.
- Sample Rate
- The QA node's Sample Rate (%) setting: the share of calls the post-call review checks. It starts at 100; below that, calls are picked at random.

