All work

The Defined CRM

One platform that runs a home service business: scheduling, estimates, invoicing, payments, marketing, and a mobile app for the crew.

The Defined CRM appointment analytics dashboard

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.

Mobile app

Appointments screen in The Defined CRM mobile app
The day's appointments
Invoice details screen in The Defined CRM mobile app
Invoices sent from the job
Analytics screen in The Defined CRM mobile app
Business analytics

Have an app idea like this?

Tell me about it on a free 30-minute call. You'll leave knowing what to build first and what it would cost.