Contact pipeline, call tracking, AI analysis, and Blueprint automations for contractors. The command center for every customer relationship.
CrmHub — contacts.length === 0
useQuery(api.calls.contacts.list), useQuery(api.calls.contacts.getStats)
CrmHub — populated, pipeline filter + search
useQuery(api.calls.contacts.list), crmWidgets.getCustomerCount / getRepeatCustomerRate / getEstimateConversion / getResponseTime
ContactDetail — tabbed layout (Calls / Notes / Reminders)
useQuery(api.calls.contacts.getById), useMutation(api.calls.contacts.update)
CallDetail — AI analysis with lead score, sentiment, keywords, next steps
useQuery(api.calls.queries.getById)
BlueprintList — stats, search, filter, FAB to create, locked upsell state
useQuery(api.automations.queries.listAutomations), getContractorAutomationStats
BlueprintDetail — info card, trigger, numbered steps, run history timeline
useQuery(api.automations.queries.getAutomation), RunTimeline component
BlueprintBuilder — trigger picker, step cards with connectors
useMutation(api.automations.mutations.create), StepEditor, TriggerPicker
TemplateGallery — category filters, step icons, clone action
useQuery(api.automations.queries.listTemplates), TemplateCard component
AutomationBilling — usage meter, per-action pricing, upgrade CTA
useQuery(api.automations.queries.getBillingUsage), Stripe upgrade flow
TemplateGalleryEnhanced — 11 trigger-type filter pills, “Use Template” CTA
useQuery(api.automations.queries.listTemplates), triggerType filter param
StatusFilters — status chip filters, per-card actions (Pause/Resume/Edit)
useQuery(api.automations.queries.listAutomations, { status }), useMutation(api.automations.mutations.updateStatus)