Case study›Solar · Bay Area · CallTools

122 appointments in three weeks, and a file ranked on every one of them

Eleven agents, three 25,000-record files, three weeks, 122 appointments — and a call log that changed how the next file was picked. The third was ranked on what had already booked, before anyone dialed it, and out-booked the first by 36% on the same number of passes.

Who
A California solar call center
Sells
Solar appointments for an installer, by phone
Market
San Francisco Bay Area
Team
11 agents, in-house
Dialer
CallTools predictive
Files
Three, 25,000 records each
Illustration: a stack of record folders fanned like a leaderboard with the top two edge-lit, a phone showing a rising bar chart, Bay Area ranch homes on golden hills behind.
122appointments in three weeks, from 75,000 records
122appointments bookedone per household
75,000records deliveredthree files, three weeks
348,858dials on those records3.47% reached an agent
1 in 615records became an appointment1.63 per 1,000

Measured in the floor's own CallTools account and published with the method. Last re-read September 21, 2026.

Three files, three weeks

On August 31, eleven agents at a Bay Area solar call center started dialing 25,000 homes we had picked for them. They got a second 25,000 on September 8 and a third on September 15. By the end of the third week they had made 348,858 outbound calls on those numbers and booked 122 homeowners into an appointment.

Here is the whole run on one axis, coloured by which file the number came from.

061218Week 1 · 32Week 2 · 36Week 3 · 54Mon Aug 31: 2 appointments · 7,351 dials231MTue Sep 1: 6 appointments · 25,378 dials61TWed Sep 2: 9 appointments · 32,928 dials92WThu Sep 3: 9 appointments · 23,259 dials93TFri Sep 4: 5 appointments · 18,061 dials54FSat Sep 5: 1 appointment · 2,895 dials15SSun Sep 6: 0 appointments · 0 dials6SMon Sep 7: 4 appointments · 13,504 dials47MTue Sep 8: 11 appointments · 30,290 dials118TWed Sep 9: 11 appointments · 28,830 dials119WThu Sep 10: 2 appointments · 15,759 dials210TFri Sep 11: 6 appointments · 16,330 dials611FSat Sep 12: 2 appointments · 10,470 dials212SSun Sep 13: 0 appointments · 0 dials13SMon Sep 14: 6 appointments · 23,868 dials614MTue Sep 15: 7 appointments · 23,427 dials715TWed Sep 16: 18 appointments · 24,049 dials1816WThu Sep 17: 8 appointments · 26,385 dials817TFri Sep 18: 15 appointments · 26,074 dials1518F

The weeks read 32, 36 and 54. Nothing about the floor changed in week three: same agents, same dialer, same hours, same market. What changed is that by then every number on the dialer had been chosen by a model built out of the first two files’ call logs — and that is the whole story on this page.

We asked for the call log, not a testimonial

The usual way a data vendor finds out how a file did is to ask, and the usual answer is “pretty good.” We asked for the export instead. Their dialer hands back every call through its API, so we pulled all 348,858 of them page for page, reconciled the totals against the dialer’s own per-day counts, and joined them by phone number to the three files we had shipped.

That turns an opinion into a record: every dial, what the agent tagged at the end of it, how long it ran, and which of the 75,000 homes it belonged to. Every count below is theirs, read back.

The first thing it showed us was what an hour on a cold file really looks like, and it is not flattering to anybody.

Four calls in five never reach a conversation

Every call an agent finished got a disposition, and across three files that is 14,741 agent-tagged calls. This is the whole mix, and it is worth seeing whole rather than as the two or three slices a vendor would rather show you.

No answer or voicemail37.58%Customer hung up29.60%Not interested14.41%Everything else8.98%Callback or appointment3.45%Wrong or dead number3.40%Renter, solar or out of state2.57%
No answer, voicemail, a hang-up, a no — that is the job. The part a data vendor is answerable for is the 5.97% on the right.

The sliver on the right is the part that is ours to own: numbers that were wrong or dead (3.40%), and people who could never have bought — a renter (1.43%) or a home that already had panels (0.98%). Everything to the left of it is what cold calling is.

A call that does end in an appointment does not sound like the others. It runs seven and a half minutes at the median against twenty seconds for an ordinary connect. The best hour is 2 pm, noon and 6 pm are next, and a quarter of the bookings land after five o’clock.

The third dial books more than the first

The next thing the log settled is an argument every floor has with itself: when is a record spent? Pickup falls with every pass, as it does on any file, so it feels spent quickly. Appointments say otherwise. Per live connect, the third dial booked 1.9 times what the first one did, and passes four through six added 31 more bookings after that.

Connect rate per dial

Live person handed to an agent · falls each pass

Appointments per 100 connects

All three files pooled, outbound · rises through three
Illustration: a phone on a dark desk showing three calls to the same contact, the first two short and dim and the third long and lit, a headset beside it, California ranch homes behind, with the words the third dial books and connect rate falls each pass, appointments rise.
Work the file three times before you ask for the next one. This is the third read in a row saying so — now on 122 bookings rather than 15.

Who books is not who installs

Then we joined every appointment on the first two files back to the record behind it and asked what those homes had in common. Five traits separated them from the homes that did not book, each adjusted for the others. Two — phone activity and time in the home — we had never ranked a file on before.

The pool is the one that stopped us. Pool homes pick up at a normal rate and almost never book. They are also one of the strongest predictors of who installs solar, which is exactly what the first file had been built on. We had sent a file that was right about the wrong question: who installs and who books a cold call are not the same list.

Illustration: a single-story ranch home at dusk with a mailbox at the curb, a backyard pool dark in the far corner, a phone in the foreground showing a rising bar chart, with the words who books and five years in the home, an active mobile, not the pool.

Checked backwards before we bet a file on it

Five traits found after the fact will always look convincing, so we ran a check: we scored the second file using weights learned on the first file alone, and looked at where its bookings actually fell.

The top fifth booked 2.8 per 1,000 records. The bottom three fifths, together, booked 2 of 25. Encouraging — but still a test run on files we had already watched being dialed, which is why the third file was built to settle it properly.

23 of 25 bookings in the top 40% of a ranked file, on 24,968 records, 25 bookings. Weights from the first file only; the five traits were chosen looking at both.

September 15: a file nobody had dialed yet

For the third file we scored the whole eligible Bay Area pool on those traits, kept the top 25,000, and shipped it without knowing how it would do. It has been worked three passes where the first two have had six, so the only fair comparison is all three files at the same dialing depth.

Appointments per 1,000 records, first three passes only: 25 bookings on the first file, 32 on the second, 34 on the third. The third file also carried the best connect rate of the three, 3.95%.

+36% more appointments per record than the first file, on the same number of passes, from a score fitted before a single number on it was called. It is most of the 54-appointment week at the top of this page, and it is the whole argument for sending us the export: the first file was built on who installs solar, the third was built on who answers and books, and the difference is worth a third more appointments for the same dialing.

Illustration: a laptop showing a spreadsheet with a few rows highlighted beside a stack of record folders, a thin line running from the screen into the top folder, with the words send the export and the dialer's log, joined to the file, ranks the next one.
Every finding on this page came out of the dialer's own log, joined back to the file. That join is what ranked the next one.

Two things we had to correct along the way

The floor told us the second file was much better than the first, and at matched depth it was — 32 appointments against 25. But not by as much as it felt. What really changed was the texture of the conversations: scheduled callbacks nearly doubled and “doesn’t qualify” fell by a third. Only 3.4% of the numbers that asked for a callback ever booked. Warmer calls feel like a better list; they are not the same thing, which is why we grade on appointments set.

The second correction is ours. A week ago this page said 88 appointments. The dialer holds 144 calls tagged Appointment Set, and they sit on 122 different homes: on every repeat, the same agent rings the same number back a median of two days later for about a minute and tags it again. That is the confirmation call, not a second appointment. Counting rows would have credited this floor with 22 appointments it never booked, so every figure here — and the floor’s own before-we-arrived numbers we compare against — counts one booking per household.

On its own window, the read that produced 88 holds 89 rows on 76 households. The published figure was high by about a sixth. We would rather correct it here than leave a number standing that a customer could not reproduce from their own export.

Before us, and after

Appointments per 1,000 records
Before1.00the first file, unranked, over three passes
After1.36the third file, ranked on what booked, same three passes
The score held on a file it had never seen
Agent connects per dial
Before1.95%the cold lists they already buy, 89,549 dials
After3.47%348,858 dials on our three files
+77%
Wrong or dead numbers
Before10%the line a call-center scorecard calls strong
After3.40%of 14,741 agent-tagged calls
2.94× fewer

What to take to your own call center

  1. Work every record three times. Connects fall with each pass; bookings per connect rise through the third, and passes four to six still produced a quarter of the total. Replace the file after the third dial, not the first.

  2. Rank on phone activity and time in the home. A mobile with carrier activity in 5 of the last 12 months and an owner in year zero to five each roughly triple bookings per record. Skip pool homes.

  3. Count appointments by household. A dialer re-tags the same contact on the confirmation call. Count dispositions instead of homes and you will report a number your own export cannot reproduce.

  4. Send the export. Every finding above came from the dialer’s own log joined to the delivered file. That is how the third file got ranked, and why it out-booked the first.

How this was measured
  • CallTools account export through the API, every call from August 31 to September 21, 2026, pulled page-for-page and reconciled against the server’s own per-day counts, joined by phone number to the three delivered files (348,858 outbound dials on 74,913 of the 75,000 records).
  • An appointment is one household tagged “Appointment Set” on a delivered number, inbound callbacks included. A repeat tag on the same number is the agent’s confirmation call and is not counted again; 144 tagged calls sit on 122 households. The floor’s own before-we-arrived figures are counted the same way.
  • Attempt number counts outbound dials to a number from its delivery day, and a booking is credited to the dial that opened it. Connect rate is the dialer’s own “answered, agent connect” system disposition over outbound dials.
  • Trait multiples: joint Poisson model of appointments per record, every trait adjusted for the others, fitted on the first two files. The third file was scored with it before delivery and is compared at matched dialing depth — the first three passes on each file, which is as far as the third has been worked.
  • Wrong-number, already-solar and renter rates: 14,741 agent-tagged calls across all three files, Aug 31 – Sep 18, 2026, as published on the benchmarks page.
  • Published anonymized. The floor’s name, quotes, agent names and volumes appear only with its written approval.

Put a test batch on your dialer.
Free.

Built for your market. Shipped within 24 hours. Measured together.

Get a free test batch