Last Tuesday a woman called Wasatch Cleaners at 9:42 pm. Nobody answered. The office was dark, the crews were home, and under any normal setup that call becomes a dial tone and a customer who calls the next cleaner on the list.
Here is what actually happened, step by step, because we built the system and we still watch it every week.
First, the missed-call text-back. The phone line flagged the unanswered call and sent a text within a minute: a short, human message that says we saw the call, we are sorry we missed it, and here is the fastest way to get a price. The caller replied with her address and the rooms she needed cleaned.
Second, the quote engine. It priced the job from the rate card, using the rules for size, condition and frequency, and it refused to quote below the margin floor. She got a real number, not "someone will call you during business hours."
Third, the booking. She picked a slot, the system held a card for the balance, and the job went into the dispatch queue. The next morning it showed up on the crew schedule like any other job.
This is not a story about software magic. It is one loop, run thousands of times: 244 missed calls answered by text between July and October, out of 208 inbound enquiries, and 143 jobs booked through the same quote and booking flow, 87 of them completed so far. After every completed job, one review request goes out. That is 96 requests to date, sent only when the job is marked done, never to fill a quota.
None of this worked on day one. The first month broke in four places, and we fixed each one in public, on our own dime, before we ever sold it to anyone.
The text-backs read like a robot wrote them. Short, stiff, obviously automatic. People ignored them. We rewrote every template to sound like the person who actually runs the call desk, and replies came back.
The quote engine priced recurring cleans wrong. It handled one-time jobs fine, then misfired on weekly and biweekly frequency because the rules were written for the simplest case. Customers saw numbers that made no sense and called to ask why. We rebuilt the frequency rules and added a human review step on anything unusual.
The review requests fired too early. For the first weeks they went out when a job was scheduled, not when it was finished. A customer got asked for a review before the crew arrived. That one embarrassed us, and it is the reason the rule today is hard-coded: no completed job, no review request, no exceptions.
There was no card hold, so no-shows burned whole slots. We added the deposit rule and the problem mostly disappeared, because a held card turns a maybe into a commitment.
And the quiet one: nobody was watching the text-back queue. One night the messages stacked up unanswered, which is the exact failure the system exists to prevent. Now the weekly log check is part of the operating routine, and a backed-up queue pages a human.
Between July and October the lead radar behind all of this mapped 14,297 local businesses, permits and bids. That is the pipeline that feeds the call desk, and it is the same pipeline we run for our own growth.
The point of this field note is not that our system is clever. It is that a 9:42 pm caller got a price and a booking slot instead of a dial tone, and that the loop only got there by failing visibly for a month while we fixed it. Every fix above is in the runbook now, so an account never has to pay for our first-month mistakes.
If you run a service business, you already know what your 9:42 pm caller costs you. We built a free calculator for it, and a teardown tool that shows where your own loop leaks. Both are on the site. Or book a 30-minute call and we will walk through the numbers on your account, not ours.