Skip to content

Case Studies

Selected deployments from our VoIP, infrastructure, and automation work. Client names are withheld under confidentiality, so each study is described by organisation type and scale.

Case Study 01

Automated call detail reporting for a 100+ agent call centre

SectorBPO / Call centre
Scale100+ agents
PlatformFreePBX, MySQL
Automationn8n, SMTP

Context

A BPO call centre running FreePBX with 100+ agents, with call detail records split across two separate MySQL servers.

Challenge

Reporting was manual. Supervisors had to assemble figures by hand from two databases, so reports arrived irregularly and in inconsistent formats. Timezone differences between the reporting audience and the switch made the raw records easy to misread.

What We Deployed

A set of n8n workflows querying both CDR databases, with timezone correction applied to the reporting window. Output is generated as pivot table Excel summaries and delivered over SMTP on daily, weekly, and on-demand schedules.

Result

Reporting now runs without manual assembly. Supervisors receive a consistent report format on a fixed schedule rather than requesting figures each time.

Case Study 02

Multi-tenant self-service portal over a shared FreePBX estate

SectorHosted VoIP
ArchitectureMulti-tenant
StackLaravel 11, Vue 3, Node.js
InfraDocker, nginx, Redis

Context

A hosted PBX operator serving several client companies from a single FreePBX installation.

Challenge

The estate had no tenant separation. All extensions, calls, and recordings were visible from one administrative interface, which made client self-service impossible without exposing other clients' data.

What We Deployed

A Laravel 11 and Vue 3 portal with enforced multi-tenant data isolation, extension synchronisation from the FreePBX user manager tables, and a browser-based WebRTC dialler with full call controls, deployed with Docker behind nginx and Redis for sessions and queues.

Result

Each tenant sees only its own extensions, call history, and recordings, and agents place calls directly from the browser without a desk phone or softphone installation.

Case Study 03

Closed database access for an externally hosted agent portal

SectorCall centre
PatternAPI proxy middleware
Stackn8n, MySQL
AccessStatic IP allowlist

Context

A call centre operation needing agents to reach their own call data from a portal hosted outside the PBX network.

Challenge

The agent portal ran on shared hosting while the call data lived in MySQL on the PBX VPS. Opening that database to a shared hosting environment was not an acceptable exposure.

What We Deployed

An n8n instance on the VPS acting as a query proxy. The portal calls webhook endpoints protected by a shared secret, and n8n executes the queries server-side, returning only the fields required for the response. The database accepts connections from the VPS static IP alone.

Result

Agents reach their call data through the portal while the database itself stays closed to the public internet, with no direct credentials held on the shared host.

Case Study 04

One agent dashboard across multiple FreePBX servers

SectorVoIP / Call centre
ArchitectureMulti-server aggregation
StackReact, Node.js
AccessJWT, role-based access control

Context

A VoIP client running several FreePBX deployments across separate servers, with call recordings, voicemail, and agent activity split across each one.

Challenge

The client's existing view of the operation was Grafana, which charts numbers well but has no concept of an agent, cannot play back a recording inline, and cannot enforce who may hear which specific call. Supervisors had no single place to see agent idle time, call volume, or recordings without logging into each server separately.

What We Deployed

A React and Node.js portal that queries each FreePBX server directly rather than replicating its data into a separate database, combining every server's agent activity, call stats, recordings, and voicemail into one dashboard. Authentication is JWT-based, with role-based access control scoping agents to their own records and supervisors to their team's.

Result

One dashboard replaces per-server checking and a metrics tool being stretched beyond what it was built for. The same portal is now being extended to other VoIP clients, with tenant isolation being designed in deliberately rather than retrofitted.

Talk Through a Deployment Like These

We typically respond within 4–8 business hours.