1 Dashboard & Voice
2 A/B Testing
3 Campaigns
4 Call Analytics
5 Form Builder
SDR Dashboard
9:41
AI Sales Development
Voice selection, A/B testing, and campaign management
Choose Voice
New A/B Test
New Campaign
Active Campaigns
3
+1 this week
Running Tests
2
Both on track
Total Calls (30d)
847
+12.3%
Appt. Rate
12.4%
+2.1pp
A/B Tests
Q1 Voice Comparison
Running
234 calls
3 variants
Voice Test
Warm vs Professional Script
Completed
500 calls
2 variants
Variant B
Script Test
Campaigns
Inbound Sales Handler
Active
412
Calls
51
Appts
12.4%
Rate
Missed Call Recovery
Active
234
Calls
18
Appts
7.7%
Rate

SdrDashboard — top-level overview with quick actions, stats, experiments, campaigns

useSdrDashboard() hook — aggregates all SDR data

Voice Wizard — Filter
9:41
Choose Voice
1
2
3
Filter
Select
Confirm
Voice Style
All Styles
Professional
Friendly
Warm
Energetic
Authoritative
Voice Gender
All
Male
Female
Neutral
Results
6 voices available matching your filters

VoiceWizard step 1 — filter by style and gender

useVoiceLibrary() hook — queries sdrVoiceLibrary with filters

Voice Wizard — Select
9:41
Choose Voice
2
3
Filter
Select
Confirm

VoiceCarousel + VoiceCard — swipe to browse, play to preview, tap to select

useAudioPlayer() hook — streams previewUrl on play

Voice Wizard — Confirm
9:41
Choose Voice
3
Filter
Select
Confirm
Sarah Mitchell
Professional · Female
ElevenLabs
Premium Voice
Clear, confident professional voice ideal for B2B sales outreach

VoiceWizard step 3 — final confirmation before saving selection

useMutation(api.sdr.mutations.updateCampaign) on confirm


Experiments List
9:41
A/B Tests
All
Running
Draft
Paused
Completed
4 experiments
Q1 Voice Comparison
Running
234 calls
3 variants
Voice Test
Warm vs Professional Script
Completed
500 calls
2 variants
Variant B
Script Test
Full Stack Test #3
Draft
0 calls
4 variants
Voice + Script
Energetic vs Calm
Paused
89 calls
2 variants
Voice Test

ExperimentCard — status dot + badge, meta row, sparkline chart

useExperiments() hook — listExperiments with status filter

Experiment Detail
9:41
Q1 Voice Comparison
Running
234 total calls · 3 variants · Primary: Appt. Rate
Statistical Confidence
87%
Needs 95% to declare winner. Currently at 87% — not yet significant.
Min Sample Size
234 / 300
78% complete — ~66 calls remaining
Variant Results
Sarah
14.2%
78
Marcus
11.8%
82
Alex
9.5%
74
Sarah (Professional) is leading
Metric Breakdown
Variant Calls Appts Rate Duration
Sarah 78 11 14.2% 3:24
Marcus 82 10 11.8% 2:58
Alex 74 7 9.5% 4:12

ExperimentDetail — confidence, sample progress, bar chart, metric table

useExperiment() + useExperimentResults() hooks


Campaigns List
9:41
Campaigns
All
Active
Draft
Paused
3 campaigns
Inbound Sales Handler
Active
Active
412
Calls
51
Appts
12.4%
Conversion
Sarah Mitchell
Q1 Voice Comparison
Lead Follow-Up
Trigger: Inbound Call
Missed Call Recovery
Active
Active
234
Calls
18
Appts
7.7%
Conversion
Marcus Chen
Trigger: Missed Call
Form Lead Qualifier
Draft
Draft
0
Calls
0
Appts
Conversion
Full Stack Test #3
Trigger: Form Submit

CampaignCard — status, metrics, config badges, trigger row

useCampaigns() hook — listCampaigns with status filter

Campaign Builder
9:41
New Campaign
Campaign Name
Spring Roof Outreach
Description
Outbound calls to homeowners who submitted storm damage forms in Q1
Trigger
Inbound Call
AI answers incoming phone calls
Missed Call
AI calls back after a missed call
Form Submission
AI calls leads who submit a form
Voice Configuration
Voice
Sarah Mitchell
A/B Experiment
None
Tip
Choose a fixed voice or link an A/B experiment to test variants

CampaignBuilder — form with trigger selection, voice config, experiment link

useVoiceLibrary() + useCampaignMutations() hooks


Call History
9:41
Call History
All Outcomes
Booked
Info Collected
Transferred
Hangup
847 total
105 booked (12.4%)
Avg 3:12
Sarah Johnson
Today, 2:34 PM
Booked
Roof inspection, Mar 3 at 2pm. Storm damage on south-facing shingles.
4:12
Via Inbound Sales Handler
Robert Chen
Today, 1:15 PM
Info Collected
Needs gutter estimate, 2-story home. Wants callback next week to schedule.
2:58
Via Inbound Sales Handler
Maria Garcia
Today, 11:42 AM
Transferred
Complex insurance claim question. Transferred to live agent for assistance.
1:23
Via Missed Call Recovery
Unknown Caller
Today, 10:08 AM
Hangup
Disconnected during greeting. No information collected.
0:12
Via Inbound Sales Handler
David Park
Yesterday, 4:22 PM
Booked
HVAC maintenance, Feb 28. Annual furnace tune-up before spring.
3:45
Via Inbound Sales Handler

CallHistory — filtered by outcome, accent bar color matches outcome

useSdrCallHistory() hook — listCalls with outcome filter

Call Detail + AI Analysis
9:41
Call Detail
Sarah Johnson
Incoming call · Duration 4:12
Today, 2:34 PM
Appointment Booked
AI Analysis
Lead Score
87 / 100
Sentiment
Positive
Key Topics
Roof Repair
Insurance
Estimate
Timeline
Caller Intent
Schedule inspection for storm damage on south-facing roof
Appointment Details
Date
Mar 3, 2026 at 2:00 PM
Service
Roof Inspection
Address
412 Oak Ave, Akron OH
Transcript
Agent: Hi, thanks for calling Morrison Roofing. This is Sarah, how can I help you today?
Caller: Hi, I noticed some damage after the storm last week. A few shingles are missing on the south side.
Agent: I'm sorry to hear that. We can get an inspector out there. Let me check our availability...
Inbound Sales Handler
Sarah Mitchell (Professional)

CallDetail — outcome, AI analysis, appointment, transcript teaser, badges

AI analysis from voiceAgentCalls + voiceAgentTurns tables


Form List
9:41
Form Builder
All
Inbound
Outbound
Universal
Published
Draft
Archived
Residential HVAC Intake
Published Universal
4 sections
18 fields
Commercial Plumbing
Draft Outbound
3 sections
12 fields
Emergency Service
Published Inbound
2 sections
8 fields

FormList — tab bar, status chips, form cards with type badges and metadata

useFormList() hook — listForms with type & status filters

Form Editor
9:41
Edit Form
Residential HVAC Intake
Inbound
Outbound
Universal
Contact Info
5 fields
Full Name Text *
Phone Phone *
Email Email
Address Address *
Preferred Contact Select

FormEditor — accordion sections, drag-reorder fields, type badges, required stars

useFormEditor(formId) hook — getForm + updateForm mutation

Template Gallery
9:41
Templates
All
HVAC
Plumbing
Electrical
General
Roofing
HVAC Service Call
by 3Bids team
Most Popular
4 sections
16 fields
4.8
Comprehensive intake for residential and commercial HVAC service requests including system details
Plumbing Emergency
by 3Bids team
3 sections
12 fields
Quick-capture form for urgent plumbing issues with photo upload and severity assessment
General Home Service
by 3Bids team
Recommended
5 sections
22 fields
Versatile all-purpose intake covering contact, service type, scheduling, budget, and notes

TemplateGallery — search, category chips, template cards with stats and ratings

useTemplateGallery() hook — listTemplates with category filter

Form Analytics
9:41
Form Analytics
Residential HVAC Intake
Published
Total Submissions
142
Completion Rate
78%
Avg Duration
3:42
Field Completion Rates
Budget Range
34%
Preferred Schedule
52%
Email
61%
Service Desc.
78%
Full Name
98%
Phone
97%
Address
95%
Submissions — Last 7 Days
Mon
Tue
Wed
Thu
Fri
Sat
Sun
Optimization Tip
Fields below 60% may need simpler labels or should be made optional.

FormAnalytics — KPIs, field completion bars, submission chart, optimization tips

useFormAnalytics(formId) hook — getFormStats + getFieldCompletionRates

Submissions
9:41
Submissions
Residential HVAC Intake
All
Completed
In Progress
Abandoned
JS
John Smith
Completed · HVAC Intake
Agent: Voice Bot A · 3:42
Feb 28
SJ
Sarah Johnson
Completed · HVAC Intake
Agent: Mike · 4:15
Feb 27
RC
Robert Chen
In Progress · Plumbing
Agent: Voice Bot B · 2:10
Feb 27
MG
Maria Garcia
Abandoned · HVAC Intake
Agent: Voice Bot A · 1:05
Feb 26

SubmissionsList — form dropdown filter, status chips, submission rows with agent info

useSubmissions(formId) hook — listSubmissions with status filter


Data Architecture
Schema Tables
sdrVoiceLibrary — voice catalog
provider, providerVoiceId, name, displayName, gender, style, previewUrl, isPremium

sdrExperiments — A/B tests
type, status, variants[], primaryMetric, winningVariantId, confidenceLevel

sdrExperimentResults — per-variant results
totalCalls, appointmentRate, infoCollectedRate, avgCallDurationSeconds

sdrCampaigns — campaign configs
trigger, voiceId, experimentId, automationId, totalCalls, appointmentsBooked

sdrCalls — per-call records
outcome, durationSeconds, variantId

voiceAgentConfigs — per-contractor config
capabilities[], voiceStyle, personalityTraits[], customScripts{}, faqResponses[]

voiceAgentCalls — call + AI analysis
outcome, conversationSummary, callerName, appointmentId

voiceAgentTurns — transcript turns
speaker, text, intent, confidence

voiceAgentUsage — monthly billing
totalCalls, totalMinutes, totalCostCents

sdrForms — form definitions
name, type (inbound/outbound/universal), status (published/draft/archived), sections[]

sdrFormSections — form sections
formId, title, sortOrder, fields[]

sdrFormFields — field definitions
sectionId, name, fieldType, isRequired, sortOrder, options[]

sdrFormTemplates — template gallery
name, author, category, sections, fields, rating, usageCount

sdrFormSubmissions — submission records
formId, callerName, status (completed/in_progress/abandoned), agentName, durationSeconds

sdrFormAnalytics — per-form stats
formId, totalSubmissions, completionRate, avgDuration, fieldCompletionRates{}
Hooks
useSdrDashboard — aggregated overview
useVoiceLibrary — filtered voice catalog
useAudioPlayer — voice preview playback
useExperiments — experiment list
useExperiment — single experiment detail
useExperimentResults — variant results
useExperimentMutations — create/start/pause/complete
useCampaigns — campaign list
useCampaign — single campaign detail
useCampaignMutations — create/update/toggle
useSdrCallHistory — filtered call list
useFormList — forms with type/status filters
useFormEditor — single form with sections/fields
useTemplateGallery — template catalog with categories
useFormAnalytics — per-form stats & completion rates
useSubmissions — submission list with status filter
Convex Queries
sdr.queries.getDashboard
sdr.queries.listVoices
sdr.queries.getVoice
sdr.queries.listExperiments
sdr.queries.getExperiment
sdr.queries.getExperimentResults
sdr.queries.listCampaigns
sdr.queries.getCampaign
sdr.queries.getCallHistory
sdr.queries.listForms
sdr.queries.getForm
sdr.queries.listTemplates
sdr.queries.getFormAnalytics
sdr.queries.listSubmissions
Convex Mutations
sdr.mutations.createExperiment
sdr.mutations.updateExperiment
sdr.mutations.startExperiment
sdr.mutations.pauseExperiment
sdr.mutations.completeExperiment
sdr.mutations.createCampaign
sdr.mutations.updateCampaign
sdr.mutations.toggleCampaign
sdr.mutations.createForm
sdr.mutations.updateForm
sdr.mutations.deleteForm
sdr.mutations.addFormSection
sdr.mutations.addFormField
sdr.mutations.reorderFields
sdr.mutations.cloneTemplate
Dashboard & Campaigns
9:41
SDR AI Sales
AI SDR Overview
1,247
Calls Made
23%
Convert Rate
Active Campaigns
Storm Season Outreach
342 calls • 28% conversion
Active
Spring Maintenance
189 calls • 19% conversion
Active
New Homeowner Welcome
716 calls • 22% conversion
Paused
A/B Test Results
Variant A
28%
Conversion
Variant B
21%
Conversion
Variant A winning with 95% confidence
Call Volume Trend
Analytics & Forms
9:41
Analytics & Forms
Call Analytics
84%
Answer
2:34
Avg Duration
4.2
Sentiment
Recent Calls
Johnson Residence
3 min ago • Booked
Garcia Home
12 min ago • No answer
Lee Property
25 min ago • Follow-up
Form Builder
Storm Damage Intake
142 submissions • Active
Free Estimate Request
89 submissions • Active
Referral Program
34 submissions • Draft
SDR AI Sales Center
https://app.3bids.io/contractor/sdr
3Bids
Dashboard ⌘1
Voice ⌘2
A/B Testing ⌘3
Campaigns ⌘4
Call Analytics ⌘5
Forms ⌘6
MK
Mike Kowalski
Contractor
Settings ⌘,

SDR AI Sales Center

1,247
Total Calls
23%
Conversion
$42K
Revenue
3
Campaigns
Active Campaigns
Storm Season Outreach
342 calls • 28% conversion
Spring Maintenance
189 calls • 19% conversion
New Homeowner Welcome
716 calls • Paused
Call Volume
Forms & Submissions
https://app.3bids.io/contractor/sdr/forms
3Bids
Dashboard ⌘1
Voice ⌘2
A/B Testing ⌘3
Campaigns ⌘4
Call Analytics ⌘5
Forms ⌘6
MK
Mike Kowalski
Contractor
Settings ⌘,

Forms & Submissions

5
Active Forms
265
Submissions
42%
Fill Rate
Form List
Storm Damage Intake
142 submissions
Free Estimate Request
89 submissions
Referral Program
34 submissions
Submission Trend