Welcome

What Coachbot is, what it does, and where to look for what.

Coachbot is a multi-tenant SaaS that automates lead qualification on WhatsApp and outbound voice calls. Every form submission becomes a lead. The AI agent picks up immediately — qualifies the lead one question at a time, books qualified leads onto your Cal.com calendar, and politely declines obvious non-fits. You see everything from a single dashboard.

What's in this manual

These docs are organised by what you're trying to do.

Building blocks

  • Getting started — sign up, onboarding, and the very first end-to-end test.
  • Workspaces — what a workspace is, the two channel types, and how membership works.
  • Agent — Identity / Qualification / Tone tabs that shape what the agent says.

Channels

  • WhatsApp — Twilio setup, inbound webhook, the message-template gotcha.
  • Voice — Vapi setup, the Form builder, mid-call tools, the Test page, the Logs page.

Integrations

Public API

  • API overview — Bearer-key authenticated endpoints to submit + read leads from your own backend.

Architecture

  • Architecture — data model, Inngest, webhook logs, sync voice dispatch.

The 30-second mental model

Form submit (Coachbot form OR external API)
        │
        ▼
Lead row inserted in Coachbot's DB
        │
        ├── WhatsApp workspace → Inngest agent-turn → OpenAI reply → Twilio send
        │                                                                │
        │                          (Twilio webhook on next inbound) ◄────┘
        │
        └── Voice workspace → sync Vapi /call → phone rings → tools fire mid-call
                                                              │
                                                              ▼
                                            transcript + recording on lead page

Tools called during the call (or generated mid-conversation on WhatsApp) write back to Coachbot:

  • updateLeadProfile saves what the agent learned
  • listSlots reads Cal.com
  • bookConsult creates the booking
  • markUnqualified / escalateToHuman / endConversation close the loop

The rest of these docs explain each piece in detail. Start with Getting started.