Voice · InfrastructureIn productionNDA

Phone infrastructure the client owns.

The client was paying per seat, per minute and per feature for a hosted phone platform, and could not change a routing rule without raising a support ticket.

Category
Voice · Infrastructure
Model
Self-hosted Asterisk
Scope
SIP · IVR · recording
Status
In production

The problem

Renting the phone system.

Costs scaled with headcount rather than usage, and every feature was a separate line item. Recordings were retained in a platform the client could not query.

Operationally, routing had drifted. The IVR tree reflected a team structure from several years earlier, so callers routinely reached the wrong queue and were transferred twice.

Any change required a ticket with the provider and a wait, which meant changes stopped being made.

The hard parts

Migrating a live phone system.

  • Numbers had to port without a window where inbound calls failed
  • Existing extensions and voicemail had to keep working through the transition
  • Routing logic had to be rebuilt from how the team works now, not how it worked then
  • Call quality is unforgiving — jitter and packet loss are immediately audible
  • Recording retention had to satisfy the client’s own compliance policy

Architecture

What was deployed.

  1. 01terminateSIP trunks terminate on Asterisk running on client infrastructure
  2. 02registerSoftphones and desk phones provisioned against the new platform
  3. 03routeIVR and queue logic rebuilt in one place, editable by the client
  4. 04recordCalls recorded to client-controlled storage with a retention policy
  5. 05integrateAMI exposes call events to Laravel for CRM and dashboard use
  6. 06monitorTrunk health, call quality and queue depth monitored continuously

Stack

  • Asterisk
  • SIP
  • AMI
  • IVR
  • Ubuntu
  • Laravel
  • Nginx

What shipped

What shipped.

  • Self-hosted Asterisk with SIP trunk termination
  • Softphone and desk phone provisioning
  • IVR trees and queue logic the client can change without a support ticket
  • Call recording to storage the client controls, with retention rules
  • AMI integration exposing call events to business systems
  • Monitoring on trunk health and call quality

Result

Owned

Infrastructure, recordings and routing

Cost stopped tracking headcount.

The platform runs on the client’s own infrastructure, so cost no longer scales with seats and features are not line items.

Routing became editable, which meant it started being maintained again. Callers reach the right queue.

Because call events are exposed over AMI, this deployment became the foundation for the call-intelligence work that followed.

Next step

What is your phone system costing you per seat?