Case Study
When AI voice agents made our core product obsolete, we didn’t upgrade it — we launched a new one alongside it.
- Company
- XOIP
- Cloud telephony · SME market
- My role
- Product Lead
- Strategy · Design · Build
- Timeline
- 2026
- In active development
- Stack
- Python · Next.js
- Pipecat · LLM APIs · Evals




01 · Business Context
Simple, affordable phone management for SMEs — until AI changed the game.
XOIP provides phone numbers to small and medium businesses with a simple call configuration layer: routing, voicemail, office hours, blocked numbers. The differentiator has always been approachability — unlike enterprise telecom, SME owners can configure this themselves, without a telecoms engineer.
AI voice agents change the competitive landscape entirely. An agent can do everything XOIP’s legacy routing does, and also answer questions from a knowledge base, handle appointments, look up customer data, and respond naturally in any language. This capability was previously inaccessible to SMEs at an affordable price point.
The question wasn’t whether to build it. It was whether to bolt it onto the existing product, or treat it as something fundamentally new.
02 · The Strategic Call
New product, not a feature upgrade.
I explored whether the voice agent could be introduced as a progressive enhancement to the existing call plan — an AI layer on top of the current product. I did the design work to test this path. It didn’t hold.
The existing product’s philosophy is simplicity through constraint: SME owners configure a finite set of rules. An AI voice agent removes those constraints entirely — its behavior is open-ended by design. Fitting an unlimited-behavior product into a limited-behavior interface would have communicated exactly the wrong thing to customers: that this was just a smarter IVR.
The decision: launch as a separate product with its own onboarding, its own pricing tier, and a clear migration path from classic subscriptions. There was reasonable pushback — separate products mean more surface area to maintain. A live demo resolved it.
Key decision
Don’t position AI as a smarter IVR. Position it as a different product for a different kind of customer relationship — one where the business talks to its phone system, not configures it.




03 · The Insight
If the product is an AI service, the configuration tool should be AI-native too.
The initial design direction was conventional: a form-based UI where SME owners fill in fields to configure how the voice agent behaves. Cards, inputs, dropdowns. It worked. But it was a category error.
Asking someone to configure an AI agent through a settings panel is like building a touchscreen interface you can only operate with a keyboard. The paradigm doesn’t fit the medium. If the product is intelligent enough to answer calls naturally, the owner should be able to instruct it naturally too.
The hypothesis
The primary interface for configuring a voice agent should be a conversation — not a smarter form. An SME owner should be able to say “Transfer billing questions to the billing department, they’re available weekdays 8 to 5” and have the system configure itself from that. Structured views (routing rules, knowledge sources, agent settings) exist as read-back and verification surfaces — not the entry point.




04 · Design Decisions
Voice UI as a new design paradigm.
Four decisions defined the product’s character.
Structured views as transparency, not control
Chat is the primary entry point, but the routing rules, knowledge sources, and agent settings remain as structured views. This respects that SME owners sometimes want to verify what they’ve configured — not everything belongs in conversation history. The tabs (Agent, Knowledge, Call Routing, Test Agent) are the transparency layer, not the control layer. That distinction matters for trust.








The agent is the brand’s voice — literally
The voice agent is the first thing a customer hears when they call. A law firm sounds different from a surf shop. An SME owner should be able to choose a persona that matches their business’s personality — not just accept a default. The persona picker lets owners audition each voice before committing: name, character archetype, and a play button to hear the actual voice. The selection carries through to how the agent introduces itself and the tonal register it holds throughout the call.
This also turned out to be a trust signal. Testing showed that SME owners give more complex instructions to a named, characterful agent than to a generic assistant — the persona lowers the psychological barrier to treating the AI as a capable colleague rather than a configuration panel.




Multi-modal by default
Text and voice are separate technical pipelines but surface as one unified interface. The microphone button in the chat input isn’t an afterthought — it’s the signal that this product operates at voice-first. The design decision was to avoid a mode-switch pattern entirely: the owner moves between typing and speaking within a single conversation, without interruption.
Latency as a UX problem
Voice UI has a tolerance window of roughly one to two seconds before it feels broken. The architecture uses a fast model for conversational turns and a slower, more capable model for tool-calling operations. But the design solution matters as much as the engineering one: bridging phrases like ”Let me check that” and ”One second...” are designed into the agent’s response patterns — they mask the latency window without feeling evasive, and set the right expectation for what the agent is doing.
05 · What Testing Surfaced
The agent was confident. Sometimes too confident.
Early testing revealed a consistent failure pattern: when configuring a new call routing rule, the agent would correctly ask for some required details but miss others. Setting up ”Transfer billing questions to the Billing Department” might capture the phone number but omit office hours — or capture both but fail to ask what happens after hours. And if it did ask that, it might forget to request the voicemail email address.
The fix combined prompt engineering with guardrails in the orchestration layer — ensuring the agent completes a full configuration checklist before confirming any rule as set. Each routing configuration now has a defined set of required fields that must be resolved before the agent closes the loop.
06 · Building a Feedback Loop
A self-improving system — not just a product.
Manual review of voice sessions doesn’t scale. Every call is an implicit test, but without structure, the learnings evaporate. So I built an automated evaluation layer that runs on every user session.
It operates in two passes. The first is deterministic: did the agent capture all required fields for each configuration action? Did it confirm back correctly? The second is AI-judged: did the user actually achieve their intent by the end of the conversation? A separate judge model reviews the full transcript and returns a verdict with the evidence it used.
The output is a set of prioritized eval cards — concrete, actionable findings I can review directly. The next step is routing those cards to AI coding agents for automatic remediation: a voice agent product that identifies its own gaps and closes them without a human in the loop for every session.
Why this matters
An AI product that can evaluate and improve itself is a fundamentally different kind of product.
The eval system is the architectural decision that makes continuous improvement possible at scale. It turns operational data into a learning signal — and eventually into autonomous remediation. The product gets better with every call, not every sprint.
07 · Status & Reflection
In active development. Here's what I'd do differently.
The chat configuration UI is functional. The multi-modal voice interface is operational. The routing, knowledge, and agent settings views are complete. The eval system is running on live sessions. What’s ahead: customer-facing launch, pricing model validation, and building out the self-healing loop from eval cards to automated fixes.
What I’d do differently: I’d design the configuration completeness guardrails before the first user test, not after. The checklist logic for each routing rule type was obvious in retrospect — it should have been in the prompt design from the start, not remediated after watching users hit the gap in testing.
I’d also have invested in the agent persona earlier in the process. The trust effect — that SME owners give richer, more complex instructions to a named, characterful agent — only became clear in testing. We shipped the persona picker as a direct response. But had I designed for this from the start, persona selection would have opened the onboarding flow, not lived inside settings.
More case studies coming — Cerbex Hotel Marketplace & TravelBot AI Guide