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.
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.
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
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?" 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.
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.
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:
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
How RAG Works
The retrieval-augmented generation pipeline follows these steps:
- Upload -- You upload a document through the dashboard or API.
- Chunk -- The document is split into overlapping chunks of ~512 tokens with 50-token overlap for context continuity.
- Embed -- Each chunk is converted to a vector embedding using a sentence transformer model.
- Store -- Embeddings are stored in Qdrant with metadata (source document, page number, chunk index).
- Retrieve -- At query time, the user's message is embedded and the top-k most similar chunks are retrieved.
- 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.
- 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:
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
- A conversation starts with a source agent.
- After each message, the routing engine evaluates all active routing rules for that agent.
- Rules are evaluated in priority order (lowest number = highest priority).
- The first rule whose conditions match triggers a transfer to the target agent.
- 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 sentimentlanguage-- Detected language code (ISO 639-1)keywords-- Words or phrases present in the latest messageskills-- 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.