PRODUCT DEMO — MULTI-TENANT CCAAS / HOSTED PBX

Multi-Tenant CCaaS & IP PBX Platform — FreeSWITCH + WebRTC

Working contact-center and hosted-PBX architecture with multi-tenant administration, agent workspaces, campaigns, WebRTC calling, SIP infrastructure and FreeSWITCH media control.

A working contact-center platform combining multi-tenant PBX, agent workspaces, campaigns, WebRTC calling and FreeSWITCH media infrastructure. Build the application plane around FreeSWITCH—not just another PBX interface.

CCaaSFreeSWITCHNestJSVue 3SIP.jsWebRTCPostgreSQL12:00

Canonical watch page for search and AI crawlers—the recording is the running product. URL kept for existing indexes; content repositioned for buyers and SEO.

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).

TimeSegment
0:00Platform 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:00Campaigns, PBX objects & calling
Campaigns and calling on the same login as extensions, queues and other PBX objects.
8:00FreeSWITCH-backed calling vs brochure CCaaS
The difference between a CCaaS brochure and a stack that registers SIP and owns media via FreeSWITCH.
11:15Architecture & deployment next steps
How the screens fit a real deployment and what to read next on this site.

Questions this demo answers

No. UnifiedPBX.in is a consulting and build practice. The recording is software you would operate or commission—not a public tenant login.

A 12:00 working-system walkthrough of a multi-tenant CCaaS and IP PBX platform: admin and agent surfaces, campaigns, PBX objects and FreeSWITCH-backed calling—real screens, not a marketing reel.

A contact-center product where many organisations share infrastructure while keeping users, queues, campaigns, numbers and reports isolated—with an application control plane above FreeSWITCH (or Asterisk) as the media engine.

An IP PBX focuses on extensions, trunks, dialplan and voicemail. CCaaS adds tenants, agents, queues/ACD, campaigns, WebRTC agent desks, CRM-shaped workflows, APIs and reporting. This demo shows both layers on one login.

FreeSWITCH is a strong real-time communications engine (SIP/RTP, ESL control). NestJS owns tenancy, users, campaigns and business logic; FreeSWITCH executes media and signaling. That separation is the product architecture.

Yes when the application owns tenancy. In this build, PostgreSQL is the source of truth and FreeSWITCH directory uses tenant-scoped variables (for example variable_tenant_id)—not a claim that FreeSWITCH is a native multi-tenant SaaS product by itself.

Isolation belongs in the application and data model (JWT roles, tenant-scoped APIs and PostgreSQL). FreeSWITCH is the communications engine that syncs dialplan/SIP after admin edits. See the FreeSWITCH CCaaS case study for roles and sync screens.

Yes. The agent workspace uses SIP.js over WebRTC/WSS when an extension is linked. Originate can also go through the NestJS call API; channel events flow ESL → Nest → Socket.IO for live screens.

SIP.js registers the agent softphone in the browser (WSS). FreeSWITCH handles SIP/RTP; NestJS/ESL orchestrate originate, events and business state. WebRTC media path still needs production NAT/TURN hardening—see voice reliability notes on this page.

Architecturally yes: click-to-call, screen pop, dispositions and notes should update the business record. Domain proof on this site includes the Insurance Agent Panel. Depth depends on your CRM APIs; not every CRM connector is claimed as shipped in this demo.

Campaigns and leads are in the demo and case study. Runtime in this build is agent preview dialing—not a claimed server-side predictive dialer. Predictive/progressive pacing and AI qualification are labeled as production extensions.

Yes as a layered architecture: FreeSWITCH owns call/media control; AI owns understanding and tools. See AI Voice development and the AI call center solution. Hybrid AI+human is not claimed as the feature set of this specific demo recording.

Yes as a product direction—AI as a worker type on the same queues and CRM path. This demo proves the human CCaaS/PBX control plane; AI hybrid is a linked architecture path, not asserted as shipped in the video.

Voice is what this demo proves. Omnichannel (SMS, WhatsApp, chat, email) is an extendable conversation layer—see SandeshX for messaging CPaaS. Do not treat omnichannel as shipped in this FreeSWITCH walkthrough.

Yes architecturally: NestJS behind a load balancer, PostgreSQL, Redis/queues and multiple FreeSWITCH nodes. Redis/Bull appear in docs for this product family—not claimed as fully wired Nest workers in every path of this build. Scaling is a deployment design, not a slide claim.

Often as a staged migration: keep trunks and DIDs, introduce the NestJS control plane and agent WebRTC, then move tenancy and campaigns off snowflake FreeSWITCH XML. Share the current stack for an architecture-first reply.

Yes as a commercial direction—multi-tenant admin, plans, seats and usage billing on the application plane. Full SaaS billing/metering is a production extension unless a linked case study shows it shipped.

Yes—that is the point of this demo: build the application plane around FreeSWITCH (tenancy, agents, campaigns, APIs), not only another PBX interface. Share requirements via the contact form; first reply is architecture.

See the FreeSWITCH CCaaS case study for roles, screens and honest gaps, plus the CCaaS/UCaaS architecture article for the layered control-plane pattern.

Yes. Share the current PBX, SIP architecture or product slice through the contact form. The first reply is architecture—not a generic quote.

Related demos & case studies

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