Contractor-facing AI sales development with terracotta palette and voice A/B testing
SdrDashboard — top-level overview with quick actions, stats, experiments, campaigns
useSdrDashboard() hook — aggregates all SDR data
VoiceWizard step 1 — filter by style and gender
useVoiceLibrary() hook — queries sdrVoiceLibrary with filters
VoiceCarousel + VoiceCard — swipe to browse, play to preview, tap to select
useAudioPlayer() hook — streams previewUrl on play
VoiceWizard step 3 — final confirmation before saving selection
useMutation(api.sdr.mutations.updateCampaign) on confirm
ExperimentCard — status dot + badge, meta row, sparkline chart
useExperiments() hook — listExperiments with status filter
| 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
CampaignCard — status, metrics, config badges, trigger row
useCampaigns() hook — listCampaigns with status filter
CampaignBuilder — form with trigger selection, voice config, experiment link
useVoiceLibrary() + useCampaignMutations() hooks
CallHistory — filtered by outcome, accent bar color matches outcome
useSdrCallHistory() hook — listCalls with outcome filter
CallDetail — outcome, AI analysis, appointment, transcript teaser, badges
AI analysis from voiceAgentCalls + voiceAgentTurns tables
FormList — tab bar, status chips, form cards with type badges and metadata
useFormList() hook — listForms with type & status filters
FormEditor — accordion sections, drag-reorder fields, type badges, required stars
useFormEditor(formId) hook — getForm + updateForm mutation
TemplateGallery — search, category chips, template cards with stats and ratings
useTemplateGallery() hook — listTemplates with category filter
FormAnalytics — KPIs, field completion bars, submission chart, optimization tips
useFormAnalytics(formId) hook — getFormStats + getFieldCompletionRates
SubmissionsList — form dropdown filter, status chips, submission rows with agent info
useSubmissions(formId) hook — listSubmissions with status filter