● Live demo · District ID single sign-on

From raw lead to signed deal, in one system.

A sales funnel CRM built around how a phone team actually works: a shared lead pool everyone draws from, callers qualifying and booking, setters filling the calendar, closers running the appointment — and every call recorded, transcribed and measurable.

Open the demo See what's inside

No account form. Login goes through District ID (Keycloak) — the same identity you use across the platform.

1 · CaptureTypeform, WooCommerce, imports
2 · PoolShared, deduplicated, assignable
3 · CallQualify, record, transcribe
4 · BookCalendly-synced appointments
5 · CloseOutcome, earnings, KPIs
What it does

Everything the funnel needs, already built

Not a pile of spreadsheets with a dashboard on top. Each stage of the funnel is a real service with its own data, its own screens and its own numbers.

🗂️

Shared lead pool

One pool the whole team pulls from, with source tracking and per-lead history.

  • Filter by source, status, owner
  • Claim, assign in bulk, release back
  • Full detail view per lead
📞

Caller pipeline

The calling desk: a working queue, outcome capture and a live personal scoreboard.

  • Own leads, update status inline
  • Release what isn't yours to work
  • Confirmations screen for booked calls
📅

Setter & calendar

Appointments land in the system the moment they are booked, not the morning after.

  • Calendly webhooks, live
  • Automatic reconciliation of missed events
  • Setter queue with its own KPIs
🤝

Closer desk

Appointment-by-appointment view with the caller's notes attached and the outcome recorded.

  • Show / no-show / closed / lost
  • Earnings per closer, computed
  • Notes flow back to the caller
📈

KPIs per role

Each role sees the numbers that role is judged on — and admin sees all of them.

  • Caller, setter and closer KPI screens
  • Conversion across every funnel stage
  • Admin roll-up over the whole team
🛠️

Admin console

Operations, not guesswork: what came in, what failed, who is on the team.

  • Webhook history, Typeform responses
  • Pending approvals, migration state
  • User management and impersonation
Roles

Four seats, four different apps

The role is not a checkbox on a profile — it comes from your District ID token and decides which screens exist for you at all. Admins can step into any operational seat to see exactly what that person sees.

Caller

Works the pool

Queue, dial, qualify, book. Personal KPIs and a confirmations view for what's already on the calendar.

Setter

Fills the calendar

Own lead queue focused on booking, with setter-specific conversion numbers.

Closer

Runs the appointment

Appointment list, caller context, outcome and earnings — nothing else in the way.

Admin

Owns the system

Team-wide KPIs, integrations health, user management, and impersonation for support.

AI

The phone work gets an AI layer

Two AI bots sit directly on the calling pipeline. One does the dialling. The other listens, records and writes down what was said — so coaching and quality control stop depending on somebody's memory.

Coming

🤖 AI bot with automatic calling

An AI agent that takes the top of the lead pool and calls it by itself — first contact, qualification questions, and booking straight into the calendar.

  • Auto-dials the queue, no human in the loop for cold first touch
  • Qualifies against your script and scores the lead
  • Books the appointment, or hands a warm lead to a human caller
  • Retries, voicemail detection and call-back windows
  • Every outcome written back to the same lead record
Recording live

🎙️ AI bot with conversation recording

Every conversation is captured and pushed through speech-to-text automatically, then attached to the call it belongs to — searchable, reviewable, auditable.

  • Automatic capture and upload of the call audio
  • Whisper transcription, queued and retried until it lands
  • Transcript on the lead, one click from the pipeline
  • Next: summaries, objection detection and per-agent coaching signals
  • Next: sentiment and script-adherence scoring per call
Integrations

Leads arrive on their own

Webhooks in, reconciliation behind them, and a backfill path for whatever was missed while a service was down.

Typeform — form responses become leads
WooCommerce — orders in, with backfill
Calendly — bookings and reconciliation
Whisper STT — call transcription
PostgreSQL — one database per client
Keycloak — District ID SSO
Security & tenancy

One deployment per client, one identity for everyone

🔐 District ID single sign-on

There is no password in this application. Sign-in is an OpenID Connect authorization-code flow with PKCE against District ID (Keycloak); roles arrive inside the token. Password changes, profile and two-factor live in the account console, and signing out ends the session at the identity provider too.

🏢 Isolated per client

Every client gets its own namespace, its own database and its own identity client with its own roles. Nothing is shared between tenants except the login page — so a new client is a deployment, not a migration.

See it running with your own District ID.

The demo is a full copy of the system — pool, pipelines, calendar, KPIs and admin. Sign in and it opens on the home screen for whatever role you hold.

Sign in with District ID Back to the features