After 198 calls to local trades, the archive holds 25 prices.
Ninety-nine jobs across 34 trades since July: 198 dials, 139 the carrier marked completed, 116 that were not a machine, and 25 that named a price.
The numbered case studies on this blog each follow one job. This one adds up all of them. Between 21 July and 28 September 2026 the product filed 99 jobs, searched 15 ZIP codes and 34 different trades, found 1,280 local providers, and dialled 198 of them. What follows is everything those 198 calls did and did not produce, counted once, with the denominators shown.
- 1,280
- providers foundacross 99 jobs
- 198
- calls dialledto 190 providers
- 116
- reached a personnot a machine, not a failed dial
- 25
- named a price12.6% of the dials
How to read this
Four words carry the whole piece, and in most phone-call reporting they are used interchangeably. Here they are not.
- Dials: a call the product actually placed. 198 of them, to 190 different providers, so eight of the dials were a second attempt at a number already called. A job whose providers were found but never dialled contributes nothing to any call figure below.
- Completed: the carrier reported the call as a connected, finished call. This is the loosest of the four and it is the one most easily mistaken for a conversation. 139 calls.
- Reached a person: a completed call whose stored summary is not one of the two voicemail labels. 116 calls. This excludes every call a machine answered, so it is the honest denominator for “somebody talked to us.”
- Named a price: the call stored a non-empty price field. 25 calls. A price is what a provider said out loud, not an invoice, and not a repair quote unless the provider called it one.
One count deliberately does not have its own word: voicemail. It is not a status in this data, and the next section shows why that matters before any of the numbers are trusted.
The whole funnel, from search to price
Every row is a subset of the row above it, except the first, which is the raw pool the dials were drawn from. The share column is derived from the two beside it, and the arithmetic is repeated in the paragraph under the table so a reader can check it without a calculator.
| Step | Count | Share of the 198 dials |
|---|---|---|
| Providers found | 1,280 | n/a |
| Calls dialled | 198 | 100% |
| Carrier completed | 139 | 70.2% |
| Reached a person | 116 | 58.6% |
| Availability confirmed | 40 | 20.2% |
| Price named | 25 | 12.6% |
The arithmetic: 139 divided by 198 is 0.702, so 70.2%. 116 divided by 198 is 0.586, so 58.6%. 40 divided by 198 is 0.202, so 20.2%. 25 divided by 198 is 0.126, so 12.6%. The 198 dials went to 190 distinct providers, which is 14.8% of the 1,280 found; the eight extra dials are retries to a number already called. The provider row is the one step that is not the top of the same funnel, which is why it carries no share of the dials.
Read downward, the table is the product’s real pitch and its real limit in one column. It found 1,280 candidates, it got a human on the line on 116 calls, and it came away with a spoken price 25 times. The gap between 116 and 25 is the part a quote-only screenshot would hide.
Three ways a call ends, and one that is not a status
Strip the archive back to its raw outcome column and there are only three values. This is the table that answers the question the whole product exists to ask: what happened?
| Stored status | What it means | Calls | Share |
|---|---|---|---|
| completed | A connected call the carrier finished normally | 139 | 70.2% |
| no_answer | It rang and nobody picked up | 40 | 20.2% |
| failed | The dial itself failed, on our side, before anyone’s phone rang | 19 | 9.6% |
The two that are not completed are not the same thing, and the distinction is the honest part of this table. Ano_answeris the provider’s silence: 40 calls where a phone rang and no one reached it. A failedis our silence: 19 dials that never became a ringing phone at all, because a carrier or a platform call broke. Charging a business with a “failed” call would be counting our own plumbing against them, so the two are never merged into one “nobody answered” number.
Now the word that is missing. There is no voicemailstatus in this dataset, which surprises people who expect a column of four. Voicemail is recorded as a sentence in the call summary the platform writes, and the underlying status is whichever of the three above the call settled into. Summing those sentences across the archive:
| Voicemail label | What it means | Calls |
|---|---|---|
| Voicemail left | A machine answered and the message got in | 20 |
| Voicemail (no message) | A machine answered and the line closed on the greeting | 3 |
| Total reached a voicemail box | Subset of the 139 completed calls, not a fourth status | 23 |
Those 23 calls are already inside the 139 completed calls. Twenty of them are billable, because a message longer than five seconds means the provider actually received something; the other three closed on the greeting, so they cost nothing. Adding 23 to the status table would count the same calls twice, which is exactly the mistake the table above is shaped to prevent.
So the honest three-way answer to “answered, not answered, or voicemail” is not three equal buckets. It is 116 conversations, 23 machines, 40 silent rings and 19 dials that never reached a phone. Only the 116 and the 23 share the word “answered” in ordinary speech, and they are worth different amounts.
What the conversations produced
A human on the line is not the product. Two separate fields say what a conversation was worth, and they fill at very different rates. This table splits the same 198 dials by what each call stored, and the rows overlap: a call can confirm availability and name a price, or one and not the other.
| What the call stored | Meaning | Calls | Share |
|---|---|---|---|
| Availability confirmed | The provider said it could take the job or offered a time | 40 | 20.2% |
| A time window | The structured availability time field was filled | 34 | 17.2% |
| A price | Any non-empty price was spoken, fee or repair | 25 | 12.6% |
| Availability and a price | Both fields on the same call | 23 | 11.6% |
| Availability, no price | Would come out, would not say what it costs | 17 | 8.6% |
Two things stand out, and both cut against a tidy sales story. First, availability is far more common than a price: 40 calls versus 25, and 17 of the availability calls gave no number at all. A provider happy to come out is not a provider willing to say what the visit costs, and the 17 calls where the two disagree are the clearest statement of that. Second, only 25 of 198 dials, 12.6%, produced a price. That is the single hardest number in the archive to move, and every case study on this blog has run into some version of it.
The prices themselves are not a range and are not averaged here. They are 25 separate sentences, and the earlier case studies show why: the same trade produced a flat fee on one call and a two-number conditional answer on the next. Turning that into a single figure would invent a precision the calls never had.
The trades, and the shape of a run
The archive is wide rather than deep: 99 jobs, but only 49 of them were ever dialled, and those 49 produced all 198 calls. Median calls per dialled job is 3, the average is 4.0, and the largest single run dialled 16 providers. Across the 99 jobs there are 34 distinct trade descriptions and 15 ZIP codes, which is why no aggregate here is a statement about one trade or one city.
| Job status | Jobs | Note |
|---|---|---|
| ready_to_call | 44 | Searched, providers found, never dialled |
| completed | 41 | Run finished |
| failed | 9 | Run could not finish |
| pending | 3 | Filed, not yet searched |
| cancelled | 1 | Stopped by the user |
| scraping | 1 | Mid-search when read |
The 44 ready_to_call jobs deserve a plain sentence, because they are the biggest single block in the table and they are not failures. They are searches that found providers and were never called, which is what the free half of the product looks like when a user stops after seeing the list. Adding their providers to the 1,280 is how a found-provider count grows without a single extra dial.
What it cost in time
The money here is talk time, because that is what the product meters. The table reports the raw seconds first and the derived dollar figure last, so the price cannot be read without the measurement that produced it.
| Metric | Value |
|---|---|
| Completed calls | 139 |
| Total talk time, completed calls | 8,979 s (2h 29m 39s) |
| Average completed call | 65 s |
| Median completed call | 38 s |
| Ninetieth percentile call | 151 s |
| Longest single call | 541 s (9m 1s) |
| Completed calls under 30 seconds | 64 |
| Completed calls under 60 seconds | 85 |
| Total talk time, reached-a-person calls | 8,309 s (2h 18m 29s) |
| List price of the talk time at 30 cents a minute | about $44.90 |
The dollar figure is derived in public: 8,979 seconds is 149.65 minutes, and at the product’s rate of 30 cents a minute that is about $44.90 of talk time across two and a half months and 99 jobs. It is the list price of the conversation, not an invoice: the ledger rounds once per job, so the real total is slightly higher, and calls that reached voicemail without leaving a message are deliberately not billed at all. The figure a provider might quote a homeowner is a different number again and is not in this table.
The shape of the durations is the more useful finding. The median completed call is 38 seconds and 64 of the 139 finished inside 30 seconds, while the average of 65 seconds is pulled up by a small tail that runs past nine minutes. That is what a phone agent for home services actually earns its keep on: a lot of very short calls, and a handful of long ones that decide the run.
What we would change next time
- Give voicemail its own status. Right now the fact lives in a sentence and the status column has three values. A fourth status, or an explicit voicemail flag, would let every future count be a filter rather than a string match, and would end the risk of a summary being rewritten without the label.
- Ask for the repair price on the same call as the visit.The gap between 40 availability confirmations and 25 prices is the clearest lever in the archive. Seventeen calls offered to come out and gave no number, and each of those is a call that could have closed the loop.
- Track the dials we do not make. Only 190 of the 1,280 found providers were ever called, 14.8%, and 44 jobs sit at ready_to_call. A found-but-never-called provider is invisible in every figure above, so the archive currently describes the calls it chose to make, not the list it could have dialled.
- Re-run this report on a fixed cadence. Every number here is a snapshot of a moving archive. Published monthly, the same rows become a trend line instead of a single reading.
Why publish the whole archive
A case study can always be dismissed as a good day. This is the whole archive instead: ninety-nine jobs, 198 calls, and every outcome counted the same way, including the 19 dials that failed on our own side and the 40 providers who simply did not pick up. The point is not that the numbers are flattering. The point is that they are the same numbers a user sees, and a product that phones businesses on someone’s behalf should be able to show its own hit rate without being asked.
Boocki finds the providers, makes the calls, and writes down what each one said, whether that was a price, a time, a voicemail greeting or nothing at all.