Hearthlineopen-source
Built in public · MIT license · Self-hostable

Fork the whole stack.
Run it on your laptop.

Hearthline is open source. Same dashboard you saw on the home page, same AI pipeline, the same code we ship in the YouTube build-alongs — yours under MIT.

What's in the repo

A real, runnable stack — not a marketing site.

Every box below is wired up in code. No "coming soon" labels. Empty fields just mean you haven't filled in your API keys yet.

Backend

Django 5 + DRF

5 apps · 8 models · webhook endpoints for Vapi & Twilio · service layer for Claude + OpenAI Vision. Migrations included.

apps/{core,leads,calls,quotes,ai}
Frontend

Next.js 15 + React 19

App Router, server components, real-time dashboard with KPIs, lead detail, quote line items, customers, settings.

app/dashboard/{leads,calls,quotes,…}
Voice

Vapi + Twilio

POST /api/calls/webhooks/vapi/ persists the transcript, kicks off Claude extraction, creates a Lead with structured fields.

apps/calls/views.py
AI Pipeline

Claude Sonnet 4.6 + GPT-4o vision

Transcript → structured lead JSON. Customer photo → drafted quote with line items, tax, and PDF-ready notes.

apps/ai/services.py
Database

Postgres 16

Single docker volume. Seed command included — one shell command and you have 8 leads, 5 calls, 4 quotes to play with.

manage.py seed_demo --wipe
Infra

Docker Compose

Three services: db, backend, frontend. Hot-reload mounted on both apps. No build tooling, no Vercel config, no AWS.

docker-compose.yml

The pipeline

What happens when the phone rings.

Six stages, each one a single function or webhook in the codebase. Trace it with your IDE in five minutes.

  1. 01
    Inbound call
    Vapi

    Caller is greeted by the configured AI persona. Vapi handles STT + TTS.

  2. 02
    Webhook fires
    POST /api/calls/webhooks/vapi/

    Django persists Call row with transcript, summary, and raw payload.

  3. 03
    Claude extracts
    extract_lead_from_transcript()

    Strict-JSON pull of customer name, trade, urgency, value, follow-ups.

  4. 04
    Lead is born
    Lead.objects.create(...)

    Customer is linked or created. Conversation + Message rows are written.

  5. 05
    Photo → quote
    POST /api/quotes/from-photo/

    Vision pipeline drafts line items, subtotal, tax, total, customer-facing notes.

  6. 06
    Dashboard updates
    GET /api/leads/

    Server component re-fetches, action pill flips to Quote Sent / Booked / Won.

Get it running

Three commands. No login. No waitlist.

# 1 — clone
git clone https://github.com/codewithmuh/hearthline.git
cd hearthline

# 2 — copy the env template (works without API keys)
cp .env.example .env

# 3 — bring it up
docker compose up --build

# you now have:
#   http://localhost:3000        Next.js dashboard
#   http://localhost:8000/admin  Django admin
#   http://localhost:8000/api    REST API

Want demo data?

Run the seed command and the dashboard fills with believable rows.

docker compose exec backend \ python manage.py seed_demo --wipe

Wiring real voice

Drop your Vapi key in .env and point the assistant webhook at:

https://<ngrok>/api/calls/webhooks/vapi/
Read the README

Built in public

What's done. What's next. What's not yet.

Pull requests welcome. Each line below is a real GitHub issue.

Shipped 7

  • Django data model (Business, Channel, Customer, Lead, Conversation, Message, Call, Quote, LineItem)
  • Vapi + Twilio webhook handlers with structured-JSON Claude extraction
  • OpenAI Vision pipeline → drafted quote with line items, tax, total
  • Next.js dashboard: Overview, Leads, Calls, Quotes, Customers, Settings
  • Lead-detail conversation timeline + extracted_fields inspector
  • seed_demo management command for instant believable data
  • Docker Compose 3-service stack with hot-reload

In progress 4

  • ·Stripe checkout for deposit collection on quote acceptance
  • ·Outbound SMS / WhatsApp via Twilio for quote delivery
  • ·Multi-tenant auth (today: single business, no login)
  • ·PDF rendering for the customer-facing quote

Open issues 4

  • Subsidy lookup integration (solar / energy renovation)
  • Tech dispatch + GPS routing for booked jobs
  • Review request automation (Google + Trustpilot webhooks)
  • Eval harness for the Claude extraction prompt

Built by

@codewithmuh

I make AI build-along videos for developers. Hearthline is one of the projects I'm shipping live — the codebase here is the same one in the videos. If you're learning to ship AI agents end-to-end, the channel walks through every line.

17K+YouTube subscribers
75Build-along videos
1Video / week cadence
MITLicensed code

The whole thing is yours. Fork it, deploy it, sell it under your own brand.

MIT-licensed. No attribution required. The dashboard you've been scrolling through is the one you'll get.