Platform overview

Call lifecycle

Every call follows the same lifecycle regardless of transport:
1

Connection

Telephony provider connects to VoxCore via WebSocket or LiveKit SDK. VoxCore acquires a call slot from the CallTracker concurrency limiter.
2

Configuration

VoxCore fetches the bot configuration from VoxBridge using the bot ID and caller metadata.
3

Pipeline execution

The STT → LLM → TTS pipeline runs in real time. Customer speech is transcribed, processed by the language model, and the response is spoken back. Audio is recorded throughout.
4

Call termination

The call ends when the bot hangs up, the customer hangs up, or a timeout/error occurs. The recording is uploaded to object storage.
5

Post-call processing

Auto-disposition rules are applied. If the call qualifies, LLM-based post-call analysis and QC run against the transcript. Results are sent to VoxBridge via webhook.

Statelessness

VoxCore is architecturally stateless — no business data persists between calls. Each call creates its own pipeline, transcript, and metrics, all of which are destroyed when the call ends. Results are sent to VoxBridge via webhook; recordings go to object storage. The only cross-call state is the CallTracker, an in-memory concurrency limiter that enforces MAX_CONCURRENT_CALLS per worker. It tracks active call IDs (not call data) and cleans up when calls end. Workers can be killed and restarted independently without data loss.