- Type
- Working-system product demo
- Duration
- 12:00
- Stack
- NestJS · Vue 3 · PostgreSQL · FreeSWITCH ESL · SIP.js
- Proof
- YouTube · case study
Watch the demo
Open on YouTube → · Duration 12:00 · Full playlist
What this working demo shows
Direct answer: a working example of how to build a multi-tenant CCaaS / hosted-PBX product where the application owns tenancy, users, campaigns and business logic while FreeSWITCH owns real-time communications. The recording is the system—not a slide deck. Architecture & honest gaps: FreeSWITCH CCaaS case study · Layered pattern: CCaaS/UCaaS architecture article.
- Multi-tenant PBX and CCaaS administration on one product login
- Tenant-aware users and JWT/RBAC roles (super-admin, tenant admin, agent)
- Agent workspace for browser-based calling
- SIP.js / WebRTC softphone registration (WSS) when an extension is linked
- FreeSWITCH-backed call handling via ESL sync and live channel events
- Campaign and lead management next to PBX objects (not a second app)
- PBX objects — extensions, queues, IVR, DID, trunks, routes
- NestJS control plane deciding; FreeSWITCH executing
- ESL integration for sync, originate and Socket.IO live screens
- Separation between business/application logic and the media engine
What this demo is — and isn’t
It is: a working-system walkthrough; a product architecture demonstration; real admin and agent workflows; FreeSWITCH-backed calling; multi-tenant application architecture.
It isn’t: a public SaaS login on this domain; a generic PBX installer; a marketing animation; a Genesys, Five9, Twilio Flex or hosted-vendor account.
Client names stay off public pages where work is confidential. Figures on screen are from demo or evaluation data unless a linked case study says otherwise.
Build the application plane around FreeSWITCH
FreeSWITCH handles real-time communications; the application layer owns tenancy, users, business logic and product workflows. That is a more sophisticated architecture than “we built a FreeSWITCH PBX.”
CCaaS PLATFORM
│
┌──────────────────┼──────────────────┐
▼ ▼ ▼
Multi-Tenant Agent UI Admin UI
│ │ │
▼ ▼ ▼
PBX Objects WebRTC Campaigns
│ │ │
└──────────────────┼──────────────────┘
▼
NestJS API
│
▼
ESL
│
▼
FreeSWITCH
More than a PBX: a programmable contact center platform
A traditional PBX primarily handles extensions, trunks, dialplan, voicemail and routing. A modern CCaaS platform additionally needs tenants, users, roles, agents, queues, campaigns, WebRTC, customer records, APIs, billing, reporting, integrations and automation.
BUSINESS APPLICATION
│
┌────────────┼────────────┐
▼ ▼ ▼
CRM ERP Helpdesk
│ │ │
└────────────┼────────────┘
▼
CCaaS CONTROL
│
┌────────────┼────────────┐
▼ ▼ ▼
Users Queues Campaigns
│ │ │
└────────────┼────────────┘
▼
FreeSWITCH
│
SIP/RTP
Multi-tenant contact center architecture
CCaaS
│
┌────────────────┼────────────────┐
▼ ▼ ▼
Tenant A Tenant B Tenant C
│ │ │
Agents Agents Agents
Queues Queues Queues
Campaigns Campaigns Campaigns
DIDs DIDs DIDs
Reports Reports Reports
│ │ │
└────────────────┼────────────────┘
▼
FreeSWITCH
Tenant isolation belongs in the application and data model; FreeSWITCH is the communications engine. PostgreSQL is the source of truth. After admin edits, a sync screen pushes dialplan/SIP to FreeSWITCH so tenants are not snowflake XML on disk.
Platform roles
- Platform super admin — tenants, platform health, FreeSWITCH sync/diagnosis, global monitoring
- Tenant admin — users, extensions, queues, IVR, DID, trunks, routes, leads, campaigns, reports
- Supervisor / ops — in this product family often the same tenant-admin reporting surface (matrices, queue & CCaaS, agent reports). Dedicated wallboards may be a production extension
- Agent — WebRTC phone, campaign/lead context, status, disposition, transfer/hold when wired
Browser-based agent calling
Agents don’t need a traditional desk phone to participate in the contact center. When an extension is linked, SIP.js registers over WSS; originate can also go POST /calls/originate.
Agent Browser
│
SIP.js
│
WebRTC
│
▼
FreeSWITCH
│
SIP / RTP
│
▼
Customer
- Answer / hang up, hold, transfer, mute (call-control path via FS + app)
- Agent status (ready / break / lunch style workspace)
- Queue / campaign interaction and disposition
- Live channel visibility via ESL → Nest → Socket.IO
Domain proof of leads + live call on one desk: Insurance Agent Panel — the CCaaS core applied to a vertical workflow.
Contact center queue & ACD
Queues and IVR appear as first-class PBX objects in the tenant admin rail. Skill-based routing variants, overflow policies and callback programmes are design options for production—not every algorithm is claimed as shipped in the recording.
Inbound Call
│
▼
IVR
│
▼
Queue
│
┌───┼────┬────┐
▼ ▼ ▼ ▼
A1 A2 A3 A4
Outbound campaign management
Campaigns live next to trunks and IVR—not in a second app. Leads support search, add, bulk upload and groups. Honest scope: runtime in this build is agent preview dialing—not a claimed server-side predictive worker.
- In demo / case — contact lists, campaigns, agent assignment, dispositions, preview outbound loop
- Production extensions — predictive / progressive pacing, AI qualification, callback campaigns (label as future unless shipped elsewhere)
NestJS → ESL → FreeSWITCH
Vue Agent / Admin UI
│
▼
NestJS
│
├── Auth · Tenant · Users
├── Campaigns · Business logic
└── Call / sync APIs
│
▼
ESL
│
▼
FreeSWITCH
│
▼
SIP / RTP
Technical buyers care about this path. Deeper media/signaling work: FreeSWITCH development. Custom ACD/CCaaS delivery: Contact center development.
CCaaS APIs
Swagger documents the IPPBX API (Bearer auth): tenants (super-admin create), extensions, campaigns, FreeSWITCH, metrics and call originate. APIs first, screens second—communications infrastructure for products, not only a PBX GUI.
CRM / ERP / SaaS
│
▼
CCaaS API
│
▼
NestJS app
│
▼
FreeSWITCH
CRM / ERP integration
CRM → Customer record → Click to call → CCaaS → Agent
├── Call · Recording · Disposition · Notes
└── back to CRM
The call should update the business record—not live in a separate phone system. This demo proves the platform; Insurance proves a domain desk on the same idea.
AI + human hybrid — architecture path
Not claimed as the feature set of this demo recording. Direction: AI reception can resolve or escalate to a human agent on the same FreeSWITCH-controlled call.
INBOUND
│
▼
AI Reception
│
┌────────┴────────┐
▼ ▼
Resolve Escalate
│
▼
Agent
AI should assist the communications system—not become the system of record for the call. PBX owns call state, media, transfer, hangup, recording and routing. AI owns understanding, reasoning and tools. AI Voice development · AI call center.
FreeSWITCH
│
Call / Media Control
│
┌────────┴────────┐
▼ ▼
Human AI
Agent Agent
│ │
└────────┬────────┘
▼
CRM
Omnichannel — future / extendable
This recording is voice. Product vision can extend to SMS, WhatsApp, email, web chat and social—as a conversation layer into CRM. Messaging control-plane proof lives on SandeshX, not inside this FreeSWITCH video.
Billing / SaaS — demo vs production
Current demo proves multi-tenant CCaaS/PBX operations (tenants, roles, PBX objects, campaigns, WebRTC calling). Production SaaS extensions typically add plans, seats, minutes, recording storage and subscription/usage metering. Do not assume full commercial billing is on screen unless a case study says so.
Tenant → Users · Numbers · Minutes · Recordings · Features
→ Billing → Subscription / Usage
Scaling the CCaaS platform
API
│
Load Balancer
│
┌─────────────┼─────────────┐
▼ ▼ ▼
NestJS 1 NestJS 2 NestJS 3
│ │ │
└─────────────┼─────────────┘
▼
PostgreSQL
│
Redis
│
Event Queue
│
┌─────────────┼─────────────┐
▼ ▼ ▼
FS1 FS2 FS3
Discuss with buyers: horizontal app scaling, FreeSWITCH node scaling, SIP/RTP distribution, Redis/queues, DB scaling, tenant isolation and observability. Cloud DevOps for deployment hardening.
Production voice reliability
- NAT, RTP, jitter, packet loss, latency and codecs
- SIP signaling, firewall and SIP ALG pitfalls
- TLS/SRTP and TURN for WebRTC
- Media anchoring and failover
Production CCaaS is a layered system—not a single PBX GUI. See the architecture article and SIP infrastructure.
Security for multi-tenant CCaaS
- Tenant isolation and RBAC / JWT
- API authentication and rate limiting
- TLS, SRTP, firewall / Fail2ban patterns
- Audit logs and recording access control
Deeper hardening: Security & reliability · SaaS development for commercial multi-tenant products.
Technology stack
- Application — NestJS, Vue 3
- Database — PostgreSQL
- Telephony — FreeSWITCH, SIP, RTP, ESL
- Browser calling — SIP.js, WebRTC
- Platform — multi-tenancy, RBAC, APIs, campaign management
- Live events — Socket.IO (ESL → Nest → SPA)
Who should watch
- Contact-center operators, BPO tech leads and CCaaS founders
- Teams building white-label / hosted PBX reseller platforms
- Teams replacing hosted PBX seats or migrating from legacy suites
- Teams embedding browser calling in CRM or agent desktops
- Founders evaluating Amazon Connect / Genesys / Five9 alternatives for owned infrastructure
Video chapters
Jump points for humans and crawlers. Timestamps open the same recording on YouTube (real offsets only).
| Time | Segment |
|---|---|
| 0:00 | Platform overview & admin/agent surfaces Super-admin and tenant/agent surfaces on one NestJS + Vue product—multi-tenant control plane, not a PBX-only GUI. |
| 4:00 | Campaigns, PBX objects & calling Campaigns and calling on the same login as extensions, queues and other PBX objects. |
| 8:00 | FreeSWITCH-backed calling vs brochure CCaaS The difference between a CCaaS brochure and a stack that registers SIP and owns media via FreeSWITCH. |
| 11:15 | Architecture & deployment next steps How the screens fit a real deployment and what to read next on this site. |
Questions this demo answers
Related demos & case studies
On this site
Demo → architecture → build.
FreeSWITCH CCaaS case study → CCaaS/UCaaS architecture → FreeSWITCH development → Contact center development → VoIP development → AI Voice development → WebRTC development → Cloud DevOps → Security & reliability → SaaS development → Insurance agent panel → About Pankaj Joshi → All demos →Building a multi-tenant CCaaS or hosted PBX?
Share your current PBX, SIP architecture or product requirements. I can help design the application plane, FreeSWITCH/Asterisk integration, WebRTC agent experience, tenant isolation and production deployment. First reply is architecture—not a generic quote.
Discuss Your Project