Case Study
Rebuilding a live platform from the ground up without dropping a call.
- Company
- XOIP
- Cloud telephony · SME market
- My role
- Product Lead
- Strategy · Design · Build
- Scale
- 50,000+
- Customers migrated
- Stack
- Asterisk · Python
- React · New product suite




01 · Business Context
The legacy platform had reached a ceiling it couldn't grow past.
XOIP ran its cloud telephony services on purchased "unified messaging" boxes. These telecom appliances connected carrier trunks, converted voicemail to email, and routed fax as PDF. A PHP web app sat on top. The system worked reliably, but years of patches had made it hard to change without breaking something else.
The limits showed up in three places. Straightforward product ideas were not feasible inside the purchased platform. New pricing could not be modeled. And the frontend translated the boxes' settings into scattered inputs and toggles, which did not help a small business owner who only wanted the phone to work.
The choice was to rebuild instead of keep patching. The old stack would not support the product XOIP wanted or the SME market it was targeting. The problem was replacing it underneath 50,000 active customers.
02 · Strategic Direction
Not enterprise. Deliberately, strategically SME.
The rebuild also clarified who XOIP was for. Enterprise telephony depends on bespoke implementations, long sales cycles, and customers with in-house IT. XOIP was not set up to win that market and did not need to.
SME customers needed professional phone features such as call routing, voicemail, office hours, and number management. They did not want a telecom engineer's learning curve. The product needed to offer real control without requiring customers to understand the machinery underneath.
That SME-first choice made simplicity a product requirement. It shaped the product, design, and technical decisions that followed.
Strategic principle
Simplicity means giving people a model they can understand. An SME owner should be able to configure the product alone, on the first visit, without calling support.
03 · Architecture as Product Decision
The choice of Asterisk shaped the design as much as the engineering.
The team evaluated more configurable telephony platforms during the rebuild. They had every PBX feature, but that also meant every setting could interact with every other setting. A clean surface quickly led to a maze of configuration screens.
Asterisk solved the right problem. As an open-source PBX framework, it gave us programmatic control over call logic without imposing its own configuration model. Telephony logic could stay on the Asterisk gateways. Product logic, user management, billing, admin, and the Call Plan could live in Python with a React frontend.
The architecture gave the design room to work. The SME strategy required a simple experience, and that ruled out platforms that would impose their own complexity. Asterisk let us keep control of the product surface.








04 · Design Decisions
A mental model, not a settings panel.
The legacy interface translated the unified messaging platform's settings directly into inputs, selects, and toggles spread across several pages. There was no useful organizing model. Customers had to understand the system's internals before they could configure it.
Asterisk made a different model possible. An incoming call is an event that moves through conditions and ends with an outcome. Every SME owner already understands the result: a call gets transferred, sent to voicemail, or answered with a greeting. The Call Plan uses that prior knowledge.
Two levels of depth, one interface
The Call Plan reads from top to bottom: block check, office hours, greeting, transfer, voicemail, goodbye. Each step is an on or off bar with its current configuration summarized inline. An SME owner can scan the whole plan without opening a setting.
Each bar has an Edit button. Open it and only that step expands. The "Send call to" step can forward to one number or to a list of up to five destinations. They can ring in sequence or at the same time, with a ring duration and caller ID setting for each. The routing system is capable, but the detail appears only when someone asks for it.
This two-level structure gives the product depth without putting it in front of everyone. The overview stays simple, and the complexity is there when someone needs it.












The branch that had to be visible
Office hours introduces the one real branch in the Call Plan: different behavior during and outside working hours. The UI had to make that split obvious. When someone enables office hours, they should see the two sub-plans and understand why they are there.
The first engineering proposal was simpler and faster to build, but it hid the branch and broke the model used everywhere else. The visual connectors were outside my engineering remit, so I built them in React. That "bent noodle" made the branch readable instead of something users had to decode.
05 · Product & Pricing
Separating what needed to be separate.
The legacy product bundled voice and fax on the same number and in the same subscription. Fax was once common in business. By the time of the rebuild, it mainly served legal and financial teams that still needed privacy and delivery proof. Most voice customers did not need fax at all.
The case for keeping them together was mostly inertia. The two products had different customers, usage patterns, value propositions, and messages. Mixing them weakened both. Supporting voice and fax on one Asterisk number also required extra codec work that the old appliances had handled for us. We split the portfolio into voice and fax product lines, each with its own subscription, pricing, and customer journey.
Customer research showed that usage volume, not features, drove the voice purchase. We created three tiers based on bundle size and per-minute rate. Heavy users got more included minutes at a lower rate, while occasional users could stay on a lighter plan. A free tier covered pay-as-you-go customers.








06 · The Migration
50,000 customers. No major incidents.
The migration was the part that could undo everything else. 50,000 active businesses relied on phone numbers printed on letterheads and listed on Google. They expected service to continue through a full platform replacement.
We phased the migration by product and usage. Each wave started with lower-activity accounts, which exposed product-specific edge cases before the most active customers moved. Both platforms stayed live throughout. That gave us a way to catch problems before they spread, even though there was no practical path back once the new experience was live.
The new platform was easier to use, and the expected wave of UX complaints did not arrive. The real disruption was passwords. We could not move credentials securely between systems, so every user had to set a new one. Advance notice, a clear migration email, and a follow-up made that manageable.
Existing customers kept their products and pricing. The migration was not the time to add new commercial terms to a new experience. Later campaigns moved customers to comparable products in the new portfolio when they were ready.
What made it work
We phased the rollout by product and activity, kept both platforms running, and did not combine a commercial change with the migration. The new experience was good enough that customers accepted it.








07 · Reflection
The meta-skill was the point.
I now build AI voice agents, design multi-agent systems, and run evals. Looking back, this rebuild was practice for all of it.
Choosing Asterisk was a technical, design, and strategy decision at the same time. The strategy was to serve SMEs, not enterprise. That made clarity and simplicity non-negotiable, which ruled out platforms that imposed their own complexity. Asterisk gave us the control to let the product lead.
The useful skill is holding that chain of reasoning and acting on it quickly. AI tools now help small teams do more of that work. I had been building the same cross-disciplinary fluency for two decades. The XOIP rebuild was an early, high-stakes version of the work I do now: hold the whole picture, make the call, and ship it.
What this project demonstrates
Strategy, product, design, and engineering in one person is not a new idea. What has changed is that small teams can now act on that combination at a much larger scale.
Also: XOIP AI Voice Agent, Cerbex Hotel Marketplace, and TravelBot AI Guide