One CRM. Three businesses. Built to fit, not configured to compromise.
A custom field-service CRM that replaced off-the-shelf software and runs three service businesses from one app: quotes, jobs, routes, invoices, payments, subscriptions, texting, payroll exports and owner dashboards.
We don't show screenshots of this system because it holds real customer records. The illustration above uses made-up data.
What needed solving.
Three owner-run service companies (exterior cleaning, lawn and snow, and a subscription pet-waste service) were paying for generic field software that didn't match how they quote, schedule, bill, sell door to door or pay their crews. Every mismatch became a workaround, and every workaround became a spreadsheet.
The goal was one owned system, on the owners' own domains, where each business keeps its own branding, numbering and Stripe account, and the owner sees all three at once.
The work, in detail.
Quotes customers approve online
Good, better and best packages, optional add-ons the customer ticks, and online approval with a drawn signature. The server re-prices on approval, so a tampered form can't change the price.
Jobs, recurring work and job costing
Checklists, recurring jobs and job profit and margin, so the owner sees what each job actually made.
Invoices, deposits and payment schedules
Batch invoicing, statements, refunds, deposits and payment schedules, with card and bank payments through each business's own Stripe account.
Card on file, autopay and subscriptions
Recurring customers can be billed automatically, and subscription plans re-price from the website's own published price list.
Online booking and a client portal
Public booking and request pages, plus a customer hub for quotes, invoices and payments.
Two-way texting with opt-out handling
A threaded inbox and broadcasts over business numbers, with STOP and START handled automatically.
Route board
Stops ordered automatically and routed over real roads, with done or skipped recorded per stop and proof photos.
Door-to-door tracker
An offline-first phone app for knocks and yard signs that syncs when signal returns and hands interested homeowners straight into the CRM.
Timesheets and payroll export
Activity-based timesheets with paid rest breaks, unpaid meals and weekly overtime rules, exported as a payroll file.
Owner metrics and an AI analyst
One metrics layer behind every owner screen, plus an assistant that answers questions about the business using read-only tools over that data.
Security
Two-factor sign-in, passkeys, recovery codes, account lockout, per-user business access and an audit log of every change to every record.
Nightly backups
A consistent snapshot of the database every night, kept for 30 days.
- Next.js 16 and React 19
- Postgres (Neon) with Drizzle ORM
- Stripe, Twilio and Resend
- Passkeys (WebAuthn) and TOTP
- OpenStreetMap routing
- Claude API for the owner assistant
- Netlify with scheduled functions
- Every business keeps its own branding, numbering and payments
- Every change to every record is logged
- Owned code, owned data, owned domains
Outfit. Each business keeps its own color and logo inside one app, with a switcher to move between them and a dark mode for the office.
Want one built for you?
Get a free system quote: we look at your site, your Google profile, how your calls get answered and what you spend on leads, then put what we'd build and what it costs in writing.
Get a free system quote