WebRTC dialer with a NestJS backend, Socket.IO for push notifications, a decisioning engine based on multi-level skills scoring, and a third-party WebRTC SDK.
The routing engine uses multi-level skills scoring: each of an agent's skills is rated by their level of mastery. When a call arrives, the engine computes the score of each available agent on the required skills and selects the best match. Queued calls are re-evaluated at every change in availability.
Integrating a third-party WebRTC SDK lets agents place and receive calls directly in the browser. The NestJS backend handles the business logic: session creation, call-state tracking (ringing, in progress, on hold, ended), and recording. Socket.IO pushes real-time notifications to connected clients.
The architecture separates the dialer (the calling component) from the routing logic. The dialer is a standalone frontend module that communicates with the backend over WebSocket. Routing is an independent NestJS service that can be modified without affecting the calling interface. Call states are managed by a server-side state machine.
NestJS backend with call modules (a complete state machine), real-time notification modules (Socket.IO gateway), and decision modules (skills-based scoring).
Agent-scoring engine: weighting by skill level across multiple tiers, with round-robin fallback.
Socket.IO WebSocket gateway: agent registration, targeted push notifications with call and caller information, and status broadcasts.
Integration of a third-party WebRTC SDK into the React portal: session establishment, audio-stream handling, and mute/hold/hangup controls.
Prisma schema for calls, agents, skills, and dispositions with KPI tracking.
Multi-level weighting with round-robin fallback
Targeted real-time push notifications
Third-party SDK integrated into React for in-browser calls
A brief, a repo, or a quick call - whatever works.