Engineering conversational AIArunank · Technical article series · 30 July 2026← Portfolio series
Part 12 / 12 · 2,096 words

What a voice agent changes for the business

In this article

The technical achievement is an agent that can listen, respond, use tools and stay reliable across concurrent calls. The business achievement is a customer need resolved correctly at an acceptable cost.

Those achievements are connected, but they are not interchangeable. A hundred concurrent calls can create a hundred unresolved complaints. A lower average handling time can mean efficient resolution or customers hanging up.

Follow the outcome chain

For outbound qualification:

text
eligible leads → attempted calls → connected calls
  → qualified conversations → accepted next steps
  → attended appointments → converted customers

For support:

text
eligible requests → answered calls → verified resolutions
  → resolutions without repeat contact
  → customer effort and satisfaction

Every percentage needs a denominator. “Conversion improved” is incomplete without identifying which step changed, the time period, the baseline and whether the customer mix changed.

Keep operational capacity separate from outcome improvement. Delivering forty simultaneous calls demonstrates parallel operation. It does not mean forty human jobs were replaced: utilization, call mix, escalation and staffing differ.

Calculate the complete per-minute cost

A cascaded system can incur:

text
telephony
+ recognition
+ LLM input/output and cache usage
+ synthesized speech
+ call-worker compute
+ warm GPU capacity, if self-hosted
+ storage, network, monitoring and background work
+ human fallback and rework

The following is an illustrative USD rate card, not current vendor pricing:

Component Assumption
Telephony $0.015 per connected call minute
STT $0.008 per connected call minute
TTS $0.025 per 1,000 generated characters
LLM input $0.50 per million billed tokens
LLM output $2.00 per million tokens
Application compute, storage and monitoring $0.006 per call minute

Assume a four-minute call with 2,400 synthesized characters, 8,000 billed input tokens and 320 output tokens across all requests:

Component Calculation Cost
Telephony 4 × 0.015 $0.06000
STT 4 × 0.008 $0.03200
TTS 2.4 × 0.025 $0.06000
LLM input 8,000 / 1,000,000 × 0.50 $0.00400
LLM output 320 / 1,000,000 × 2.00 $0.00064
Application allocation 4 × 0.006 $0.02400
Total $0.18064
Per connected minute 0.18064 / 4 $0.04516

The usage assumptions matter as much as the rates. STT may be billed for streamed duration rather than only speech; LLM input includes repeated context; TTS accounting depends on its contract. Replace each assumption with actual meter data before making a customer claim.

A small, inspectable calculator

python
def cascade_cost(minutes, tts_chars, input_tokens, output_tokens):
    return (
        minutes * 0.015
        + minutes * 0.008
        + tts_chars / 1000 * 0.025
        + input_tokens / 1_000_000 * 0.50
        + output_tokens / 1_000_000 * 2.00
        + minutes * 0.006
    )

cost = cascade_cost(4, 2400, 8000, 320)
assert abs(cost - 0.18064) < 1e-9

These are the same illustrative rates as the table. The example deliberately excludes revenue and savings so the arithmetic can be reviewed independently.

Native-audio costs need their own meter

Do not assume the cascade's character and text-token quantities apply to native audio. Count the actual audio/text tokens, cached input and any auxiliary transcription for the chosen API. If an API bills by active session duration, silence and backend waiting may also be relevant.

Compare complete calls at the same task-success standard. A more expensive minute can produce a cheaper resolved issue if it reduces repetition or failed handoffs. A low headline rate can become expensive when the agent needs twice as many turns.

Self-hosting changes the denominator

For a hypothetical warm GPU costing $1 per hour and safely serving ten active calls, fully utilized GPU compute is:

text
$1 / (60 × 10) = $0.00167 per call minute

At only two average active calls, it becomes $0.00833. Two warm replicas with only two calls in total cost $0.01667 per call minute. These are illustrative GPU rates and capacities, excluding CPU nodes, redundancy overhead, networking and engineering.

This is why a self-hosted model can be attractive at steady scale and expensive at low utilization. The break-even calculation must use the measured quality and serving capacity of the actual model.

Include escalation and rework

Suppose 1,000 four-minute calls cost $180.64 under the illustrative cascade. Suppose 700 resolve automatically and 300 require human follow-up costing $2.60 each. Add $100 of allocated monthly support and maintenance:

text
total = $180.64 + (300 × $2.60) + $100
      = $1,060.64

If 950 issues are eventually resolved correctly, cost per verified resolution is $1.1165. If a comparable human-only cohort costs $2,600 and also resolves 950 issues, its cost per resolution is $2.7368.

The implied saving is 59.2% under these invented assumptions. Changing escalation rate, human rework cost or resolution quality can remove much of that apparent benefit.

Run sensitivity analysis before choosing architecture. The most important uncertain input may be repeat-contact rate rather than the LLM's token price.

The outcome depends on the workflow

For the client, the early workflows covered insurance enquiries, healthcare appointments and education follow-up. For Zoice, the ClearTax pilot put the emphasis on understanding the customer's tax-service requirement and arranging the right next conversation. Each workflow needs a different definition of success.

Zoice's customer stories describe the product's broader calling use cases. When I review a particular campaign, I come back to its own cohort: who was eligible, what the conversation was meant to achieve and what happened afterwards.

The client subsequently raised seed funding. That is part of the company journey after the early platform delivery. For the engineering case study, the useful detail is how the calling capability was built and what it enabled the team to do.

Design an impact experiment

Compare matched or randomized eligible cohorts, stratified by language, intent, customer segment and time of day. Define exclusions before seeing the results.

Measure connection and completion rates, repeat contacts over a declared period, escalations, policy errors, customer effort, cost and relevant downstream outcomes. Keep the reporting window long enough for delayed outcomes such as appointment attendance.

For a sales pilot, an agent that produces more “qualified” leads may simply be using a looser qualification rule. Check whether the next team accepts the leads and whether appointments are attended.

For support, an agent that avoids escalation may be refusing to transfer frustrated callers. Evaluate appropriate escalation, not merely low escalation.

Model the escalation rate before optimizing pennies

Using the same illustrative 1,000-call cohort, the automated call cost is $180.64 and fixed support allocation is $100. Human follow-up costs $2.60 per escalated call. Hold eventual verified resolutions at 950 only for this sensitivity calculation:

Escalation rate Human follow-up cost Total cost Cost / verified resolution
10% $260 $540.64 $0.5691
30% $780 $1,060.64 $1.1165
50% $1,300 $1,580.64 $1.6638
70% $1,820 $2,100.64 $2.2112

The assumption of unchanged resolution quality is deliberately restrictive. In reality, appropriate escalation may improve resolution, while unnecessary escalation adds work. Collect the joint outcome rather than declaring the smallest escalation rate the best result.

A ten-percentage-point reduction in unnecessary escalation saves $260 in this hypothetical cohort. Halving the $4.64 total LLM token cost saves $2.32. Both matter at scale, but this comparison shows why workflow quality can dominate a small token-price improvement.

This decimal calculator reproduces the sensitivity table:

python
from decimal import Decimal

def cohort_cost(calls, escalations, verified_resolutions):
    if not (0 <= escalations <= calls and 0 < verified_resolutions <= calls):
        raise ValueError("Invalid cohort counts")
    automated = Decimal(calls) * Decimal("0.18064")
    fallback = Decimal(escalations) * Decimal("2.60")
    total = automated + fallback + Decimal("100")
    return total, total / Decimal(verified_resolutions)

total, per_resolution = cohort_cost(1000, 300, 950)
assert total == Decimal("1060.64000")

This is a planning model in USD, not a financial statement. It excludes any item not already represented in the stated assumptions. Real billing must reconcile meter units, minimum charges, unused commitments, taxes where applicable and period allocation.

At escalation rates of 10, 30, 50 and 70 percent, illustrative total cohort costs are 540.64, 1060.64, 1580.64 and 2100.64 dollars, holding verified resolutions at 950.

Figure 12. Illustrative sensitivity. At escalation rates of 10, 30, 50 and 70 percent, illustrative total cohort costs are 540.64, 1060.64, 1580.64 and 2100.64 dollars, holding verified resolutions at 950. Scalable SVG.

Count the people who never reached a conversation

An outbound dashboard can look excellent if it reports only answered calls. Suppose one cohort starts with 1,000 eligible leads, reaches 400 people and obtains 80 accepted appointments. That is 20% of reached people and 8% of eligible leads. Both denominators describe something useful, but they answer different questions.

Track attempted, connected, eligible-for-workflow, completed and downstream-verified counts separately. If the agent changes dialing time or retries, it may change who answers. A before/after comparison can then mix better reachability with better conversation quality.

For support, record the difference between a call ending and a problem being resolved. A caller who hangs up during a denial should not become “contained successfully” simply because no human transfer occurred. Use a declared repeat-contact window and match follow-ups to the original issue where possible.

A simple experiment, with its limits

Imagine random assignment of 1,000 eligible leads to each of two approaches. The existing approach produces 80 accepted appointments and the agent approach produces 100. This invented example yields 8% versus 10%: a two-percentage-point absolute increase and a 25% relative increase.

Using an elementary independent-proportions approximation, the standard error of the difference is about 1.28 percentage points and a 95% interval is roughly −0.5 to +4.5 percentage points. The observed improvement would therefore remain uncertain at that sample size. This approximation is instructional; repeated customers, clustered campaigns or nonrandom assignment require a more suitable analysis.

An honest report includes the absolute difference and uncertainty. “25% improvement” alone is much easier to overinterpret.

Appointments also need an observation window. If the agent cohort was measured after one day and the comparison after a week, attendance is not comparable. Freeze cohort membership, define when outcomes mature, and retain unresolved outcomes rather than treating missing data as success.

Separate incremental value from attributed revenue

For sales, estimate incremental accepted opportunities, conversion and contribution margin—not the gross value of every sale after an AI call. Some customers would have purchased through the existing process.

For operations, distinguish theoretical capacity released from cash cost removed. Handling forty calls concurrently may let a team cover peaks or spend more time on complex cases. Unless staffing or outsourcing cost actually changes, it should not automatically become a payroll saving in the case study.

A useful impact record contains:

yaml
report_kind: proposed_client_impact_record
workflow: callback qualification
cohort_start: null
cohort_end: null
eligible_leads: null
connected_calls: null
accepted_next_steps: null
attended_appointments: null
verified_resolutions: null
repeat_contact_window_days: null
fully_allocated_cost_usd: null
comparison_method: null
customer_approved_publication: null

Fill the record from the campaign and operations systems for a specific reporting window. This keeps the outcome, denominator and cost allocation attached to the same cohort.

What makes the case study compelling?

Show the business constraint, the architecture it forced, a failure that changed the design, and the evidence of the resulting capability. For these engagements, that includes client discovery, telephony integration, model interoperability, asynchronous orchestration and the delivery of forty concurrent calls.

Then show the limits of attribution. An early product can support a company's progress without being the sole reason it raised funding. A pilot can demonstrate customer demand without proving later production economics. These distinctions make the technical achievements easier to trust.

A credible impact statement for this portfolio

We connected customer requirements with production calling systems across the client platform and Zoice. The work spanned Bolna and Pipecat, model-provider integration, configurable workflows and Kubernetes deployment. In early 2025, the client implementation achieved approximately 1.1-second response latency, delivered 40 concurrent calls, and reached 100 concurrent calls in testing.

For the business review, I connect those engineering measures to the workflow: qualified leads accepted, appointments booked and attended, issues resolved, repeat contacts and fully allocated cost. That is how capacity turns into a business decision.

Contribution

My contribution covered sales discovery, translating requirements into concrete workflows, architecture and hands-on development within a three-person team. I worked with the customer on the problem definition and with the team on the telephony, model and business-system integration needed to deliver it.