OutboundAI

Tenant Context
Set Org, Lead, Trunk ID, & Gemini Key β†’ applied to all calls
β€”
Total Calls
β€”
Booked
β€”
Not Interested
β€”
Booking Rate %
β€”
Avg Duration (s)

Live Config

Place Single Outbound Call

Contact 1

Contact 2 (optional β€” dials at the same time as Contact 1)

Both numbers ring together when you have 2 Gemini API keys in GEMINI_API_KEYS. With 1 key, Contact 2 may wait until Contact 1’s agent frees the key.

πŸ”΄ Live Transcript

No active call β€” dispatch a call to see live text here

Transcript appears in real time during the call (powered by Gemini, not Deepgram).

Batch CSV Dial

Up to N leads dial at once. When one is busy / no-answer / ends, that slot automatically dials the next queued lead. Hard cap = min(your choice, free+busy caller-ID DIDs, Gemini keys). With 2 pool numbers you can run at most 2 parallel calls.

Same projects for every row β€” CSV columns project_id, projectDetails, or projects_json override per contact.

Create Campaign

Parallel slots are capped by your phone-number pool (caller IDs) and Gemini keys.

Example: 4 leads + 2 caller-ID numbers β†’ dial leads 1–2 first; when one finishes, dial lead 3 on that free DID, then lead 4, until all are called. Parallel slots are capped by your phone pool (currently 2 DIDs β‡’ max 2 at once).

Same projects for every row β€” CSV columns project_id, projectDetails, or projects_json override per contact.

Campaigns

Only one campaign can dial at a time. If another is running, Start Calls is blocked until it finishes.

Create Agent Profile

Set an Organization ID above to load its voice.
Recorded samples for female voices β€” no API quota used

Agent Profiles

Global System Prompt

Save here to change what the agent says on calls. Reset clears the dashboard prompt and uses the code default from prompts.py.

0 chars

Appointments

Vobiz Billing

Set Organization ID in the tenant bar to scope cost to one org.

β€”
Avg rate / min
β€”
Calls
β€”
Billable mins
β€”
Talk time
β€”
Vobiz cost

Call Logs

β€”
Keys available
β€”
Keys leased
β€”
Tokens total (est.)
β€”
Tokens / min (est.)
β€”
In / Out

Tokens β‰ˆ transcript estimate. Tokens/min = total tokens Γ· talk minutes.

Phone Numbers

β€”
Total
β€”
Free
β€”
Busy
β€”
Disabled

Dynamic pool β€” Sync imports caller IDs from the tenant LiveKit outbound trunk and, when configured, Vobiz. Add numbers to the trunk β†’ Sync here β†’ they appear for auto-lease and dropdowns. No default DID. Assign an organization_id so each builder uses their own DID (empty = shared). Busy numbers are leased per call and freed when the call ends β€” a toast pops up when a DID becomes free again.

Number Organization Status Current call Room Last used Synced Vobiz
Loading…

πŸ”΄ Active Calls

No active calls right now.

Contacts

LiveKit

Gemini

Vobiz SIP

Twilio SMS

S3 Recordings

Cal.com

Tool Toggles

Live Logs

Quick Start

1Run supabase_schema.sql in Supabase SQL Editor
2Go to Settings β†’ fill LiveKit, Gemini, Vobiz credentials
3Click ⚑ Create SIP Trunk in LiveKit
4Customize AI Prompt for your business
5Create an Agent Profile in πŸ€– Agents
6Test with πŸ“ž Single Call using your own number

Cost Breakdown (per minute)

Vobiz SIPfrom VOBIZ_RATE_PER_MINUTE
LiveKit Cloudβ‰ˆ β‚Ή0.17
Gemini Liveβ‰ˆ β‚Ή0.03

With VOBIZ_AUTH_ID + VOBIZ_AUTH_TOKEN, Call Logs pull live total_cost from Vobiz CDRs. Without Auth, fallback estimate is used.