Armstrong Plumbing
A plumbing and HVAC company in Saratoga Springs, NY. This is the longer version of the story on the main page— what was actually there before, what got built over about two weeks, and what it looks like now.
Where it started
He's my neighbor. Good work, steady customers, and a business held together by a notepad, a cell phone, and everything he happened to remember.
Quotes were written by hand off supplier prices that were already out of date, so the margin on a job was a number nobody actually knew until well after the job was done. Calls came in while he was under somebody's sink, and the ones he missed mostly didn't call back, because whoever picks up first tends to get the work.
Parts got bought at the counter, put on the truck, and reconciled weeks later against a supplier invoice that never quite matched anything. The website was a separate thing that sent an email to an inbox. Payment was a check, eventually.
None of that is unusual, and none of it is a criticism. It's how most shops this size run, right up until the work outgrows what one person can hold in their head. After that it starts costing money in ways that are hard to see.
What got built
Roughly in the order it came up, because the order was driven by what was hurting rather than by any plan:
The platform and the API underneath it
Customers, jobs, techs, parts and money modelled properly in one place, so everything else could plug into the same set of facts.
Quote generation
The pricing that lived in his head, written down so it comes out the same whoever is doing it.
Materials and invoicing
What went on the job ends up on the invoice without anyone retyping it, which is also where line items used to quietly go missing.
Supplier scraping and supplier data
His suppliers' catalogs and prices pulled in and kept current, so a quote is priced against what things cost now.
Purchasing, tied back to the job
Parts get bought against the job that needs them and reconciled to it when they arrive, so what a job actually cost is a fact rather than a guess at the end of the month.
An AI phone line wired into the backend
It answers, talks to the caller, works out roughly what the job is, and leaves a lead in the system with notes. Calls that used to become voicemail become work.
Stripe payments
Deposits and invoices people can pay from their phone.
The website and the email that goes with it
Requests from the site land in the same place phone calls do, and confirmations send themselves.
An iPhone and iPad app
So the crew works out of the same system the office does — jobs, parts, photos, from the truck.
The pieces are not exotic. What makes it work is that they all sit on the same backend, so nothing has to be entered twice, and that every one of them was shaped around how his shop already operates rather than the other way round.

Where it landed
It went live in about two weeks and it's what he runs the business out of now.
The reason it took two weeks rather than two quarters is that I wasn't inventing a process. I was writing down the one he already had, and taking the parts he was doing by hand off his plate. He had worked all of that out over years of doing the job. I put it into software.
If you run something similar and any of this sounds familiar, get in touch.