Documentation

Everything you need to deploy, configure, and scale your autonomous call center.

Getting Started

What is Autonomous Call Center?

Autonomous Call Center is an AI-powered platform that deploys intelligent agents to handle inbound calls, outbound campaigns, web chat, and SMS conversations -- 24/7, without human intervention. Each agent is backed by your own knowledge base, capable of natural voice conversations, and configurable for any use case from customer support to sales outreach.

System Requirements

To run the platform you need:

  • A modern web browser (Chrome, Firefox, Safari, Edge)
  • A Twilio account for voice and SMS channels
  • A Groq API key for LLM inference
  • ElevenLabs API key (optional -- for premium text-to-speech voices)
  • Deepgram API key (optional -- for enhanced speech-to-text accuracy)

Architecture Overview

The platform is composed of several services working together:

Next.js Dashboard

Primary web application for configuration, monitoring, and management.

PostgreSQL

Relational store for agents, conversations, campaigns, users, and organization data.

Qdrant

Vector database for knowledge base embeddings and semantic retrieval (RAG).

Redis

Caching layer and pub/sub for real-time conversation state and session management.

Trigger.dev

Background job runner for campaigns, document processing, QA scoring, and automations.

Quick Start Guide

Get your first agent live in under 10 minutes.

1

Sign up and create your organization

Create an account at the dashboard. You will be prompted to name your organization and invite team members. Each organization is an isolated tenant with its own agents, knowledge bases, and billing.

2

Create your first agent

Navigate to Agents → New Agent and choose a type:

  • Web Chat -- embeddable widget for your website
  • Inbound Call -- answers incoming phone calls
  • Outbound Call -- makes calls as part of a campaign
3

Configure the system prompt and greeting

Write a system prompt that defines the agent's personality, role, and boundaries. Set a greeting message that starts every conversation.

systemPrompt: "You are a helpful customer support agent for Acme Corp.
You help customers with order status, returns, and product questions.
Always be polite and concise. If you cannot resolve an issue,
offer to transfer to a human agent."

greeting: "Hi! I'm the Acme support assistant. How can I help you today?"
4

Upload knowledge base documents

Go to Knowledge Base → Upload and add your support docs, FAQs, product manuals, or any reference material. Supported formats: PDF, DOCX, TXT, Markdown.

5

Deploy your agent

For Web Chat, copy the embed snippet and paste it into your site:

<script
  src="https://app.callcenter.ai/widget.js"
  data-agent-id="your-agent-id"
  data-theme="dark"
  data-position="bottom-right"
  async
></script>

For Voice, connect a Twilio phone number in Settings → Phone Numbers.

6

Monitor conversations in the dashboard

Watch conversations in real time from the Conversations tab. View transcripts, sentiment analysis, QA scores, and recording playback -- all in one place.

Agents

Agents are the core building block of the platform. Each agent is an autonomous AI entity configured for a specific channel and use case.

Agent Types

Type Channel Description
web_chat Web Chat Embeddable widget that runs on your website. Supports SSE streaming, Shadow DOM isolation, and real-time typing indicators.
inbound_call Voice Answers incoming phone calls via Twilio. Uses Deepgram for STT, Groq for reasoning, and ElevenLabs for natural TTS.
outbound_call Voice Makes outgoing calls as part of a campaign. Same voice stack as inbound with campaign-specific context injection.

Configuration

Every agent has the following configurable fields:

{
  "name": "Support Agent",
  "type": "web_chat",
  "systemPrompt": "You are a helpful support agent...",
  "greeting": "Hello! How can I help you today?",
  "language": "en",
  "voiceId": "EXAVITQu4vr4xnSDxMaL",       // ElevenLabs voice ID (voice agents only)
  "phoneNumber": "+1234567890",               // Twilio number (voice agents only)
  "enableRecording": true,
  "enableLiveHandoff": true,
  "knowledgeBaseIds": ["kb_abc123"]
}

Multi-Language Support

Each agent can be configured with one of 20 supported languages. The language setting controls STT recognition, LLM response language, and TTS voice selection. Supported languages include:

English Spanish French German Portuguese Italian Dutch Japanese Korean Chinese Arabic Hindi Turkish Polish Russian Swedish Danish Norwegian Finnish Czech

Templates

Pre-built agent templates let you deploy common configurations in seconds. Templates include a system prompt, greeting, suggested knowledge base structure, and recommended settings for:

  • Customer Support -- handles FAQs, order lookups, and issue resolution
  • Sales Qualifier -- qualifies leads and books demos
  • Appointment Scheduler -- manages calendar bookings
  • Survey Agent -- conducts post-call satisfaction surveys
  • Collections Agent -- handles payment reminders with compliance guardrails

Knowledge Base

The knowledge base is how you give your agents domain-specific information. Upload your documents and the platform will automatically chunk, embed, and index them for retrieval-augmented generation (RAG).

Supported Formats

PDF DOCX TXT Markdown

How RAG Works

The retrieval-augmented generation pipeline follows these steps:

  1. Upload -- You upload a document through the dashboard or API.
  2. Chunk -- The document is split into overlapping chunks of ~512 tokens with 50-token overlap for context continuity.
  3. Embed -- Each chunk is converted to a vector embedding using a sentence transformer model.
  4. Store -- Embeddings are stored in Qdrant with metadata (source document, page number, chunk index).
  5. Retrieve -- At query time, the user's message is embedded and the top-k most similar chunks are retrieved.
  6. Generate -- Retrieved chunks are injected into the LLM context as reference material, producing grounded answers.

Linking Knowledge Bases to Agents

Each agent can be linked to one or more knowledge bases. When a conversation occurs, the agent queries all linked knowledge bases and merges the top results before generating a response.

// Link a knowledge base to an agent via the API
PATCH /api/agents/:agentId
{
  "knowledgeBaseIds": ["kb_abc123", "kb_def456"]
}

Updating Documents

When you upload a new version of a document, the previous embeddings are automatically deleted and replaced. The re-processing pipeline runs as a background job via Trigger.dev, so there is no downtime -- the agent continues to serve from the existing index until the new one is ready.

Channels

Agents can communicate through three channels. Each channel has its own technical stack and configuration options.

Voice (Twilio)

Voice is the flagship channel, supporting both inbound and outbound calls.

Voice Stack: Twilio Media Streams → Deepgram STT → Groq LLM → ElevenLabs TTS → Twilio Playback
  • Inbound -- Configure a Twilio number to forward to your agent's webhook. Calls are answered in under 2 seconds.
  • Outbound -- Agents initiate calls as part of campaigns. Custom caller ID, retry logic, and concurrent call limits are configurable.
  • Recording -- Optional dual-channel recording stored in cloud storage with automatic transcription.
  • Live Handoff -- When enabled, the agent can transfer the call to a human operator via SIP or phone number.

Web Chat

The web chat channel uses an embeddable JavaScript widget that renders inside a Shadow DOM for complete CSS isolation from the host page.

  • SSE Streaming -- Responses stream token-by-token for a natural conversational feel.
  • Shadow DOM -- Widget styles never conflict with host page CSS.
  • Theming -- Supports light/dark themes and custom accent colors.
  • Session Continuity -- Conversations persist across page navigations using localStorage.

SMS

SMS conversations are handled via Twilio webhooks. Each inbound SMS is matched to an existing conversation or creates a new one.

  • Conversation Continuity -- Messages from the same phone number are grouped into a single conversation thread.
  • Optimized Length -- Responses are automatically trimmed to stay within SMS segment limits while preserving meaning.
  • Async Processing -- Responses are generated asynchronously and delivered via Twilio's messaging API.

Campaigns

Campaigns let you run outbound call sequences at scale. Upload a contact list, configure call settings, and let your agents work through the list autonomously.

Creating a Campaign

Navigate to Campaigns → New Campaign, select an outbound agent, and upload your contact list. Each campaign is tied to exactly one agent.

CSV Upload Format

Contact lists should be uploaded as CSV files with the following columns:

phone,name,email,company,custom_field_1,custom_field_2
+12025551234,Jane Doe,jane@example.com,Acme Inc,Enterprise,Q4 Renewal
+12025555678,John Smith,john@example.com,Globex,Starter,New Lead

The phone column is required. All other columns are optional and available as template variables in the agent's system prompt via {{name}}, {{email}}, etc.

Campaign Settings

Setting Default Description
concurrentCalls 5 Maximum number of simultaneous outbound calls.
maxRetries 2 Number of retry attempts for failed or unanswered calls.
retryDelay 3600 Seconds to wait before retrying a contact.
callerId Agent phone Caller ID displayed to the contact. Must be a verified Twilio number.

Campaign Lifecycle

Every campaign progresses through a defined set of states:

Draft Running Paused Completed

You can pause and resume a campaign at any time. Active calls will finish naturally when paused -- no calls are dropped.

Monitoring

The campaign dashboard shows real-time progress: contacts reached, calls in progress, outcomes per contact (answered, voicemail, no answer, busy, failed), and overall completion percentage.

QA & Recording

Every conversation is automatically scored by AI across six quality categories. This gives you immediate visibility into agent performance without manual review.

Scoring Categories

Category Weight What It Measures
Greeting 10% Professional opening, tone, and identification.
Problem Identification 20% How well the agent understood the customer's issue.
Resolution 25% Whether the issue was resolved or appropriately escalated.
Communication 20% Clarity, conciseness, and natural language quality.
Compliance 15% Adherence to policies, legal requirements, and guardrails.
Closing 10% Professional wrap-up, next steps, and farewell.

Weighted Scoring Algorithm

Each category is scored 0-100 independently. The overall score is a weighted average using the weights above:

overallScore =
  (greeting * 0.10) +
  (problemIdentification * 0.20) +
  (resolution * 0.25) +
  (communication * 0.20) +
  (compliance * 0.15) +
  (closing * 0.10)

Auto-Flagging

Conversations are automatically flagged for review when:

  • Overall score falls below 50
  • Any individual category score falls below 30

Flagged conversations appear in the QA → Flagged queue for manual review by a team member.

Manual Review Workflow

Reviewers can read the full transcript, listen to the recording, adjust scores, add notes, and mark the conversation as reviewed. Reviews are logged with the reviewer's identity and timestamp.

Call Recording

Recording is enabled per-agent via the enableRecording flag. Recordings are stored as dual-channel audio (agent + caller on separate channels) and are accessible from the conversation detail view. Automatic transcription is generated alongside each recording.

Automations

Automations are event-driven workflows that fire after specific conversation events. They let you connect the call center to the rest of your business processes without writing code.

Triggers

conversation_ended sentiment_negative handoff_requested keyword_detected intent_matched no_resolution

Conditions

Each automation can have one or more conditions that must all be true for the actions to execute. Conditions can filter by:

  • Sentiment -- positive, neutral, negative, very_negative
  • Intent -- matched intent labels from the conversation
  • Keywords -- specific words or phrases detected in the transcript
  • Channel -- voice, web_chat, sms
  • Agent ID -- limit automation to specific agents
  • Duration -- minimum/maximum conversation duration in seconds

Actions

Action Description
webhook Send a POST request with conversation data to a custom URL.
email Send an email notification to specified recipients.
create_ticket Create a support ticket in your connected helpdesk.
crm_update Update a contact record in HubSpot or Salesforce.
tag_conversation Apply one or more tags to the conversation for filtering.
notify_team Send a real-time notification to team members in the dashboard.
schedule_callback Schedule an outbound call back to the customer at a specified time.

Example Automation

{
  "name": "Escalate Negative Calls",
  "trigger": "conversation_ended",
  "conditions": [
    { "field": "sentiment", "operator": "eq", "value": "very_negative" },
    { "field": "channel", "operator": "eq", "value": "voice" }
  ],
  "actions": [
    {
      "type": "email",
      "config": {
        "to": "support-lead@company.com",
        "subject": "Negative call flagged for review",
        "includeTranscript": true
      }
    },
    {
      "type": "tag_conversation",
      "config": { "tags": ["escalation", "negative-sentiment"] }
    }
  ]
}

Execution Logs

Every automation execution is logged with status (success/failure), timestamp, trigger event, matched conditions, and per-action results. View logs at Automations → Execution History.

Routing

Multi-agent routing lets you transfer conversations between specialized agents based on configurable rules. This enables complex workflows where different agents handle different parts of a conversation.

How It Works

  1. A conversation starts with a source agent.
  2. After each message, the routing engine evaluates all active routing rules for that agent.
  3. Rules are evaluated in priority order (lowest number = highest priority).
  4. The first rule whose conditions match triggers a transfer to the target agent.
  5. The conversation continues with the target agent, preserving full context and history.

Routing Rule Configuration

{
  "name": "Route Spanish to Spanish Agent",
  "sourceAgentId": "agent_main",
  "targetAgentId": "agent_spanish",
  "priority": 10,
  "conditions": [
    { "field": "language", "operator": "eq", "value": "es" }
  ]
}

Condition Fields

  • intent -- Detected conversation intent (e.g., billing, technical_support, sales)
  • sentiment -- Current conversation sentiment
  • language -- Detected language code (ISO 639-1)
  • keywords -- Words or phrases present in the latest message
  • skills -- Required agent skills (matched against target agent capabilities)

Templates

Templates are pre-configured agent blueprints that let you deploy common use cases in seconds. Each template includes a system prompt, greeting message, suggested knowledge base structure, and recommended settings.

Available Templates

Template Best For Channels
Customer Support FAQ handling, order lookups, issue resolution Voice, Chat, SMS
Sales Qualifier Lead qualification, demo booking Voice, Chat
Appointment Scheduler Calendar management, booking confirmations Voice, Chat, SMS
Survey Agent Post-call CSAT surveys, feedback collection Voice, SMS
Collections Agent Payment reminders with compliance guardrails Voice
Receptionist Call routing, message taking, office hours Voice

Using a Template

Navigate to Agents → New Agent → Start from Template. Select a template, customize the system prompt and settings for your business, and deploy. All template fields are fully editable after creation.

Integrations

Connect the call center to your existing tools and workflows.

CRM Integrations

Native integrations with HubSpot and Salesforce are available through Unified.to. Once connected, you can:

  • Automatically create or update contact records after conversations
  • Log call summaries and transcripts as CRM activities
  • Pull contact data into agent context for personalized conversations
  • Trigger CRM workflows based on conversation outcomes

Webhooks

For custom integrations, configure webhooks to receive real-time event data. Webhook payloads include the full conversation object, transcript, metadata, and QA scores.

// Example webhook payload
{
  "event": "conversation.ended",
  "timestamp": "2026-02-07T12:00:00Z",
  "data": {
    "conversationId": "conv_abc123",
    "agentId": "agent_def456",
    "channel": "voice",
    "duration": 245,
    "sentiment": "positive",
    "qaScore": 87,
    "transcript": [...],
    "metadata": {
      "contactPhone": "+12025551234",
      "contactName": "Jane Doe"
    }
  }
}

REST API

All platform resources are accessible via a RESTful API. Authenticate with your API key in the Authorization header:

curl -H "Authorization: Bearer YOUR_API_KEY" \
     -H "Content-Type: application/json" \
     https://app.callcenter.ai/api/agents

Endpoints are available for agents, conversations, knowledge bases, campaigns, automations, routing rules, and organization settings.

Embeddable Widget

The chat widget is a lightweight JavaScript snippet that adds an AI-powered chat interface to any website.

Installation

Add a single script tag before the closing </body> tag:

<script
  src="https://app.callcenter.ai/widget.js"
  data-agent-id="your-agent-id"
  data-theme="auto"
  data-position="bottom-right"
  data-accent-color="#4353FF"
  async
></script>

Configuration Options

Attribute Required Description
data-agent-id Yes The ID of the web chat agent to connect.
data-theme No light, dark, or auto (follows system preference). Default: auto.
data-position No bottom-right or bottom-left. Default: bottom-right.
data-accent-color No Hex color for the widget accent. Default: #4353FF.

Shadow DOM Isolation

The widget renders inside a Shadow DOM boundary. This means your page's CSS will never affect the widget's appearance, and the widget's styles will never leak into your page. No !important overrides, no class name collisions.

WordPress Plugin

A dedicated WordPress plugin is available for one-click installation. Install via the WordPress plugin directory, enter your agent ID in the settings page, and the widget is automatically injected on all pages. No code editing required.

Billing & Usage

Billing is managed through Stripe with transparent, usage-based pricing.

Plans

Plan Price Agents Included
Starter $49/mo 1 500 call minutes, 2,000 chat messages, 500 SMS
Pro $199/mo 5 5,000 call minutes, 20,000 chat messages, 5,000 SMS, call recording
Agency Custom Unlimited Custom limits, multi-tenant, SLA, white-label, dedicated support

Usage Tracking

Usage is tracked in real time across four dimensions:

  • Call Minutes -- billed per minute of voice conversation (rounded up per call)
  • Chat Messages -- each agent response counts as one message
  • SMS Segments -- billed per SMS segment sent
  • Recording Storage -- billed per GB/month of stored recordings

Overage Billing

When you exceed your plan's included usage, overage charges apply at the following rates:

Call minutes:      $0.08 / minute
Chat messages:     $0.002 / message
SMS segments:      $0.04 / segment
Recording storage: $0.50 / GB / month

You can set usage alerts in Settings → Billing → Usage Alerts to receive email notifications at custom thresholds (e.g., 80%, 100% of included quota).

Stripe Integration

All payment processing is handled by Stripe. You can manage your payment method, view invoices, and update your plan from Settings → Billing. Invoices are generated monthly and include a detailed usage breakdown.

Ready to get started?

Deploy your first AI agent in under 10 minutes. No credit card required.