Toolbelt Handyman Services
A multi-tenant SaaS platform for handyman businesses — a public marketing site, a full operations admin panel, and “Riley,” an AI receptionist that answers every inbound call 24/7 over voice and chat and books real jobs. Live at toolbelthandyman.info, with tenant subdomains served from *.toolbelthandyman.info.
Screenshots


Multi-Tenant Day One
Per-tenant branding by subdomain on wildcard TLS; onboard a new shop with one Organization row
24/7 AI Receptionist
Riley answers every call on voice and chat, books real jobs, and recovers from its own mistakes
Production-Grade
44 Prisma models, 1,301 tests, TypeScript strict, A2P 10DLC approved and routed
Tech Stack
Platform Features
Riley — AI Receptionist
One AI brain on the phone and the browser chat widget — answers every inbound call 24/7 and books real jobs into the operations system.
- OpenAI Realtime API GA (gpt-realtime), G.711 μ-law end-to-end — no resampling
- Twilio Voice + Media Streams; browser /chat bridged into the same CallSession
- Tools: bookAppointment, takeMessage, transferToLivePerson, answerQuestion (RAG)
- Spells back names, addresses, and emails before booking
- Business-hours / after-hours / holiday / emergency mode resolution
- Configurable persona, voice, and turn-detection per tenant
Operations Admin
A per-org operations console at admin.<tenant-domain> with SUPER_ADMIN cross-org switching for staff.
- Live ops dashboard: jobs in-flight, tech locations, today's revenue
- Customers (rolling lifetime value, SMS consent stamp) + Jobs with audit log
- Calendar day/week/month with drag-to-reschedule
- Google Calendar two-way sync per tech
- Route optimization across an assigned day's jobs
- Outbound reminder SMS scheduling (T-24h, T-1h, T+0 arrival)
Dispatch & Team
Tech roster, skills matrix, and a dispatcher engine that keeps the owner in the loop on every job.
- Skills matrix, availability windows, exception dates, document-expiry tracking
- Per-org rates: after-hours surcharge, holiday surcharge, emergency rate
- Dispatcher engine: owner SMS A/B/C with candidate ranking + ETA
- Tech PWA: phone + OTP login, 6 screens, GPS ping for live ETA
- Rolling tech stats on every COMPLETED job (jobs done, on-time %, rating)
- Every dispatch owner-confirmed via SMS
Marketing Site + Tenant CMS
A fast, mobile-first marketing site with a fully toggleable per-tenant CMS — owners author their own public site.
- Per-tenant subdomain branding (logo, favicon, palette) injected as CSS vars
- Announcement marquee, hero banner carousel, owner-authored sections (TinyMCE)
- Featured Services, Service Areas grid, moderated Reviews wall
- Footer navigation editor + full blog stack (index, detail, category, tag)
- JSON-LD (HomeAndConstructionBusiness, Service), Open Graph + Twitter cards
- A2P-compliant SMS consent checkbox on /book and /chat
Billing & Documents
Stripe Checkout wired straight into the job lifecycle, with a customer-facing tracking page.
- Tech sets final price → owner approves → customer pays → webhook → rating SMS
- Stripe webhook signature verification + customer dispute form
- Public /track/:jobId tracking page (no login)
- Document upload (multer + Docker volume), authenticated download
- Auto-rating SMS fires after a job is COMPLETED
- Pay success / cancel flows with consent-stamped intake
Compliance & Reliability
Production-grade plumbing so SMS actually delivers and no caller is ever stranded.
- Twilio A2P 10DLC: Standard brand, CUSTOMER_CARE campaign, MessagingServiceSid
- Verbal A2P consent stamp on the call + checkbox consent on web forms
- Phantom-tool-call auto-recovery: parser creates the Job + owner SMS on a miss
- CallSession with full transcript, tool-call log, auto-tags, outcome detection
- BullMQ workers: reminders, document expiry, webhook DLQ, zombie-call cleanup
- Sentry + pino structured logging; daily backup script
Use Cases
Independent Handyman & Small Shops
Never miss a callRiley answers every call 24/7, books real appointments, and texts the owner — so a missed call never becomes a missed job.
After-Hours & Emergency
24/7 coverageAfter-hours date/time booking with Riley, plus an emergency mode that confirms the emergency rate before booking.
Multi-Tenant / White-Label
White-labelEvery surface is multi-tenant on day one. Onboard a new handyman business with a single Organization row + branding seed.
Owner-Confirmed Dispatch
Owner in the loopThe dispatcher engine ranks techs and SMSes the owner A/B/C; every dispatch is owner-confirmed before a tech is committed.
See Toolbelt in production
Toolbelt Handyman Services is live at toolbelthandyman.info and sold per-tenant, white-labeled to your brand. Visit the live site, or get in touch for a walkthrough of the marketing site, operations admin, and Riley — the AI receptionist.