Overview
Home service businesses usually run on a patchwork: one tool for scheduling, another for estimates, another for invoicing, a card reader, a payroll spreadsheet, and a phone that rings while the crew is on a ladder. Every hand-off between those tools is a place where a lead or a payment gets dropped.
The Defined CRM replaces that patchwork with one multi-tenant SaaS: a web app for the office, a mobile app for the field, public pages where customers sign and pay, and AI services that answer the phone and build reports. Companies subscribe on Starter, Professional, Enterprise, or Defined plans, and features are gated by plan.
Work started on the backend in April 2025, the web app in July, and the mobile app in August. It's live in production and under active development.
What it does
Scheduling and field work
- Appointments, recurring jobs, crews, and departments
- Route optimizer for the day's stops
- Google Calendar sync
Estimates, invoices, contracts
- Estimate templates with e-signature
- Window and screen pricing calculators
- Recurring invoices and signed contracts as PDFs
Payments
- Stripe Connect payouts to each business
- Card payments at the door with Stripe Terminal
- QuickBooks, inventory, orders, and promo codes
Crew management
- Clock-in with face verification and liveness checks
- Timesheets, payroll, and per-job payouts
Marketing
- Leads, campaigns, Mailchimp, and Facebook Lead Ads
- Google Ads campaigns drafted by AI
- Neighbor postcards and texts after a completed job
Phones and AI
- A phone number per company, with missed-call text-back
- AI voice receptionist on OpenAI Realtime and Twilio
- Plain-English reports and an AI website builder
How it's built
Many companies, one service
Every record is scoped to a company, feature access follows the subscription plan, and role-based permissions decide what each employee can see. One Node and Express API on Heroku serves every tenant, backed by Firestore, a Redis cache, and Algolia search.
Proving who clocked in
A tap on a button doesn't prove who's on the job. Clock-in in the mobile app requires a face match with a liveness check, using on-device ONNX and TFLite models backed by InsightFace on the server.
SQL reporting on a document database
Reports need SQL, but the system of record is Firestore. Changes stream through Eventarc, Pub/Sub, and Redis Streams into MotherDuck, and a nightly reconciler catches anything the stream missed. That warehouse is what powers the plain-English reports.
Letting AI agents in, safely
An MCP server lets Claude and other AI clients work in the CRM with an API key, through 30 scoped tools for customers, leads, appointments, documents, todos, and projects, and nothing broader.
Tooling that keeps it moving
Around 800 API routes, documented in Swagger, and covered by Jest, Supertest, and Playwright suites. In-app bug reports go to an automated fixer built on the Claude Agent SDK, which opens a pull request for review.