Inspiration
CallBuddy came from a simple operational reality: in home services, revenue is often lost in the first 30 seconds of a phone call. Owners are on-site, front-desk coverage is limited, and high-intent callers hang up if no one answers clearly and quickly.
Even with online booking growth, phone remains a major conversion channel. A 2025 benchmark based on 60M+ calls reinforced this and pushed us to focus on call-to-booking execution, not just chatbot demos (Invoca report).
What it does
CallBuddy is an AI revenue agent for home services (starting with plumbing) that sits between inbound demand and dispatch execution.
[ \text{Booked Jobs} \approx N_{\text{inbound}} \times r_{\text{answer}} \times r_{\text{qualify}} \times r_{\text{book}} ]
It improves those three conversion steps by:
- Answering inbound calls through telephony webhooks.
- Running natural voice intake and structured extraction (service type, urgency, address, preferred time, notes).
- Evaluating booking readiness with deterministic pricing and availability rules.
- Creating bookings only after explicit confirmation gates.
- Considering the field-heavy working style of our target users, giving merchants a mobile-first dashboard to review calls, bookings, and status updates.
How we built it
We built it as a modular MVP with production-style boundaries:
Next.js + TypeScriptfor app and API surface.Prisma + PostgreSQLfor merchant/call/booking/consent data.Auth.jsfor merchant authentication.- Domain modules for telephony, AI orchestration, extraction, pricing, availability, booking lifecycle, and compliance.
Our build strategy:
- Start from workflow decomposition (call lifecycle first, UI second).
- Keep deterministic business rules as source of truth.
- Let AI assist extraction/conversation, but never own irreversible business decisions.
- Add tests at service and route layers, then verify with E2E flows.
ML layer:
- We added an optional local intent classifier with
OFF / SHADOW / ONruntime modes. SHADOWmode lets us evaluate model behavior safely before full activation.- Current local artifact metrics are around
86.8%test accuracy and0.885macro-F1.
We used vibe coding for scaffolding and repetitive wiring, but architecture, data contracts, guardrails, and verification were fully engineering-owned.
Challenges we ran into
- Designing idempotent webhook handling and retry-safe state transitions.
- Balancing low latency with multi-step extraction + rule evaluation.
- Preventing brittle AI behavior with deterministic fallback paths.
- Modeling call-booking-consent relations for auditability and future integrations.
- Building mobile-first operations UX without weakening backend correctness.
Accomplishments that we're proud of
- Built a clear market position first:
- Angi’s core business is demand aggregation/lead marketplace.
- ServiceTitan’s core business is full-stack field-service operating software.
- We opened a new lane between these types of business: real-time voice intake and conversion infrastructure that turns inbound demand into dispatch-ready bookings.
- Angi’s core business is demand aggregation/lead marketplace.
- Designed for real operator behavior: low learning curve onboarding, mobile-first simple energetic UI, and workflow simplification tailored to field technicians and owner-operators.
- Shipped a true end-to-end loop: onboarding → inbound call → extraction → rule evaluation → confirmation-gated booking → dashboard visibility.
- Implemented compliance-safe disclosures and consent gating in the core flow.
- Built a clean module architecture that is easy to extend and test.
What we learned
- The best early-stage strategy is not replacing entire incumbent stacks, but delivering a high-ROI intelligence layer that integrates with them.
- In voice automation, reliability beats novelty: graceful degradation and observability matter more than flashy responses.
- “AI product” work is mostly systems engineering: contracts, failure modes, and operational trust.
- Fast coding only compounds value when architecture boundaries are explicit.
What's next for CallBuddy
- Add deeper integrations with existing FSM/CRM and lead sources.
- Upgrade from controlled webhook flow to richer real-time voice orchestration and smarter human handoff.
- Improve accent recognition robustness for diverse real-world callers.
- Expand multilingual support (starting with high-demand service languages) while preserving compliance and booking accuracy.
- Expand optimization logic from booking readiness to dispatch readiness.
- Continue SHADOW-mode evaluation to improve intent performance before broader ON-mode rollout.
- Expand beyond plumbing templates into more home-service verticals while keeping the same conversion-first architecture.
Built With
- auth.js-(nextauth.js)
- docker-compose
- next.js-(app-router)
- node.js
- npm
- playwright
- postgresql
- prisma
- react
- tailwind-css
- twilio-voice-webhooks
- typescript
- vitest
- zod
Log in or sign up for Devpost to join the conversation.