Evalgent
Back to Blog
Voice AI Testing

Speed-to-Lead AI for Movers: Measure What It Misses

Deepesh Jayal
15 min read
Speed-to-Lead AI for Movers: Measure What It Misses
On this page

Picture a mover whose AI agent dials every new lead within a minute. The dashboard shows "time to first call: 41 seconds." Everyone is pleased. Then the estimator turns up at a two-bedroom house that is really a four-bedroom, on a date the customer never gave.

Speed was real. The call still failed. This post is for the team that built or runs moving leads AI follow up inside a moving CRM or lead platform. It shows what to measure besides speed, how consent from the lead form gates the dial, and which spoken fields corrupt the record. Everything below is a method you can copy, with illustrative numbers clearly labelled.

3-5
how many times a typical moving lead is sold (SmartMoving article, no methodology given)
8 a.m.-9 p.m.
telemarketing call window, local time at the called party's location (47 CFR 64.1200(c)(1))
10 business days
current limit to honor a revocation of consent (47 CFR 64.1200(a)(10))
59
clean audited calls needed to show a miss rate under 5% at 95% confidence (rule of three, worked below)

Why a fast first dial is the wrong headline number

Speed to lead moving company teams track means the gap between a person asking for a quote and a human conversation starting. Most dashboards measure only the first half. They stamp the dial, not the conversation.

Fast response does matter. A 2011 Harvard Business Review article by Oldroyd, McElheran and Elkington, "The Short Life of Online Sales Leads", reported that most companies do not respond nearly fast enough. The page that is publicly readable gives no figures, so this post quotes none. Set your own targets from your own ledger.

For moving leads AI follow up, a fast dial is necessary and far from sufficient. Four things sit between the dial and a booked survey:

1. The lead must be allowed to be called at all.

2. A human must answer, not a voicemail greeting or a spam filter.

3. The right person must be on the line.

4. What they said must land in the record unchanged.

An agent can score perfectly on the first number and fail the other four. That is why this post defines speed-to-lead ledger as a per-lead record of every stage from form fill to booked next step, with a miss code wherever the lead drops out.

The lead ledger: stages, metrics and what each one misses

One row per lead. One column per stage. Every lead that leaves the funnel gets a reason.

StageMetricComputed asWhat it silently misses
1. ReceivedLeads in, by sourceCount by `ReferralSource` or vendorDuplicate leads inflate the count
2. ClearedCleared rateConsent text found, not on DNC, valid mobile, not a duplicateLeads held back that nobody reviews
3. AttemptedTime to first attempt, p50 and p90First dial minus the vendor's form timestampWebhook lag starts your clock late
4. ReachedReach rateLive human answer over attemptsVoicemail logged as "answered"
5. Right personRight-party contact rateSpeaker is the person who asked for the quoteSpouse, roommate, reassigned number
6. Record correctField accuracy, auditedAudio compared to saved fieldsWrong date, size, origin, destination
7. Next stepBooked survey or estimateAppointment exists and matches the callBooked on the wrong day

Three of these stages need a human to listen. Only stages 1 to 4 can come from system logs. Stages 5 and 6 need the audio.

A worked example, with illustrative numbers

These numbers are an assumption, not a benchmark. They show how a good speed figure coexists with a weak outcome.

Horizontal bar funnel of an illustrative moving lead ledger from 400 received leads down to 52 booked, with the drop at each stage labelled in red or grey.

In the example, 400 leads arrive in a month. Twenty-eight are held at the gate: 12 duplicates, 9 without usable consent text, 7 bad numbers. The agent dials all 372 cleared leads, with a median first dial of 48 seconds. Dashboards would call this a success.

Then the ledger continues. Only 167 pick up, which is 45% of attempts. Of those, 150 are the right person. An audit of those calls finds the record is correct on 126, or 84%. So 24 leads carry a wrong field into an estimate. Fifty-two book.

The headline was "48 seconds." The finding is that 24 booked-or-bookable leads were stored wrong, and nobody knew. The audit is what finds them.

Why moving lead follow up is harder than other trades

Three features make moving leads AI follow up harder than, say, a dentist's reminder call.

Shared leads are common. Leads are often sold more than once. SmartMoving's own lead-buying article says "most leads are sold 3-5 times" and that some marketplaces cap sharing at three companies. That is a vendor blog without a stated method, so treat it as a direction, not a measurement. Check your own vendor's terms. If your lead is shared, the customer's phone starts ringing from several numbers within minutes. Reach rate drops for everyone, and the first mover to get a real conversation wins. Moving lead response time is a race against rivals, not a clock.

The data is relative and fuzzy. Callers say "end of next month," "the weekend after Labor Day," "a two-bedroom, kind of big." Forms collect ZIP codes, not addresses. An agent must turn that into a date and a size without guessing.

The record feeds crews and trucks. A wrong date or size does not just lose a sale. It sends a wrong estimate or a wrong crew. Our post on wrong moving estimates from an AI agent covers that chain. For the bad-lead side, see moving company AI lead quality.

This section is engineering guidance, not legal advice. Have counsel review your consent language and your state rules.

An AI-generated voice that simulates a human is an "artificial" voice under the TCPA, according to the FCC's declaratory ruling FCC 24-17, adopted February 2, 2024 and released February 8, 2024. The ruling says "they are 'artificial' voice messages because a person is not speaking them."

Under 47 CFR 64.1200(a)(2), telemarketing calls with an artificial or prerecorded voice to wireless numbers need the called party's prior express written consent. The definition in 64.1200(f)(9) requires a written agreement with the person's signature. It must contain a "clear and conspicuous disclosure" that the signer authorizes the seller's automated or prerecorded telemarketing calls. Electronic signatures count if valid under federal or state law.

Lead forms matter because the consent text lives on the form, often a form the vendor wrote. Four facts to check:

CheckWhy it mattersSuggested gate
Consent text stored per leadProof must exist when challengedNo stored text, no dial
Text names who may callA vague "partners" line is weak evidenceMatch seller name or approved list
Text covers an automated or AI voiceArtificial voice needs written consentRequire the phrase or flag for review
Consent time and page versionForms change; proof must match the versionStore timestamp and form version ID

The FCC's one-to-one consent rule, which would have limited each consent to one seller, was vacated by the Eleventh Circuit in Insurance Marketing Coalition v. FCC, per a Morrison Foerster summary dated January 30, 2025. That does not remove the need to show the form named you or your category of caller. For the full pre-dial gate, see real estate speed-to-lead AI and TCPA checks. The same logic transfers to moving lead consent and TCPA checks.

Calling hours and revocation

The residential telemarketing window is before 8 a.m. or after 9 p.m. "local time at the called party's location," per 64.1200(c)(1). Movers hit a trap here. The lead may fill the form in Phoenix about a move out of New York. A mobile number's area code is only a proxy for where the person stands. As a suggestion, require the lead's ZIP time zone and the number's area-code zone to both be inside the window.

Revocation changed recently. The FCC adopted FCC 26-67 on September 30, 2026 and released it October 1, 2026, according to Kelley Drye and Nixon Peabody. Per Nixon Peabody, informational messages may allow category-specific opt-outs, and marketing opt-outs stay all-or-nothing. Businesses may designate exclusive opt-out methods if disclosed on each call. The rules take effect 30 days after Federal Register publication, which had not happened as of October 7. The current outer limit is 10 business days under 64.1200(a)(10).

Test it directly. Put "stop calling me," "take me off your list" and "not interested, don't call again" in your test set, with accents, interruptions and noise. See outbound voice agent testing for the general method.

What the call must confirm before the record is written

Good moving leads AI follow up treats the form as a claim and the call as a check. Every field the form sent should be spoken back and confirmed or corrected before the CRM write.

Annotated mapping from moving lead form values to spoken answers and CRM fields, with MoveDate, MoveSize, origin and ReferralSource each flagged with the error that corrupts it.

SmartMoving publishes a lead API integration guide. As of October 2026 it describes fields we can use as a concrete example. Four details matter for follow-up QA:

1. `MoveDate` has conflicting documentation. The field list says YYYYMMDD. The JSON sample uses "7/25/2020." Test against your own account before trusting either.

2. `ReferralSource` must match exactly. The referral source is the lead's origin label. The guide says a value that does not match a source in your settings creates a new one. A casing or spelling change from your agent splits attribution quietly. If omitted, the lead shows as "Your Website."

3. Duplicates return HTTP 400. The message reads "This lead has already been submitted." An agent that retries after a failed write must not treat that as a failure to loop on.

4. `UserOptIn` is described as a texting recommendation. The guide does not define accepted values beyond the sample. Do not treat it as proof of consent for calls.

The same guide lets you send origin and destination either as components (street, city, state, ZIP) or as one full-address field, but not both. A voice agent that sends a spoken city plus a leftover form ZIP can produce an address that never existed. This is a mapping bug, not a speech bug, and only a record-versus-audio check finds it.

Speech errors that corrupt each field

FieldSpoken inputTypical errorWhy a log misses it
Move date"the third of next month"Month rolls wrong, or day-first vs month-firstRecord looks like a valid date
Move size"two-bedroom, but with a big garage"Garage dropped, size stored as 2Size field has no place for the garage
Origin city"Austin"Heard as "Boston"City exists, ZIP mismatch is not checked
Destination"I'm still deciding"Agent stores the form's ZIP as finalField is not empty
Callback numberNumber said fastDigit swapLooks like a phone number
Source"I got you from a mover list"Source overwritten with a free-text stringNew source created in CRM

Speech-to-text errors on names, dates and places are well known. Our posts on entity accuracy in speech-to-text and tool argument accuracy show how to isolate them. The mover-specific advice is to compare spoken, form and stored values in three columns.

Speed versus capture: a decision matrix for AI speed to lead

AI speed to lead and record accuracy are separate axes. Moving lead conversion depends on both. Put each lead segment, such as source, hour of day or move size, on the grid.

Two-by-two matrix of first-attempt speed against record accuracy for moving lead follow-up, naming the action for each quadrant: scale, fix capture, fix speed, and rebuild.
  • Fast and accurate: protect it. Add regression tests before any prompt change.
  • Fast and wrong: the dangerous quadrant. Slow the agent's data steps and add confirm-back turns before you add dials.
  • Slow and accurate: speed fix. Check queue lag, webhook delay and calling windows.
  • Slow and wrong: rebuild the flow before spending more on leads.

A plausible first place to look is the late-evening segment. That is a hypothesis to test, not a finding. Home noise and interruptions may be higher after work.

Python: compute the ledger from lead, call and CRM events

This simplified function joins one row per lead and returns stage rates. It uses the vendor's form timestamp as the clock start. The `record_correct` field comes from your audit, not your logs.

from dataclasses import dataclass
from datetime import datetime
from statistics import median
from typing import Optional

@dataclass
class Lead:
    lead_id: str
    form_ts: datetime              # vendor's form timestamp, NOT webhook arrival
    consent_ok: bool
    is_duplicate: bool
    first_dial_ts: Optional[datetime] = None
    reached_human: bool = False
    right_person: bool = False
    record_correct: Optional[bool] = None   # from audio audit; None = not audited
    booked: bool = False

def pct(n, d):
    return round(100 * n / d, 1) if d else None

def ledger(leads):
    cleared = [l for l in leads if l.consent_ok and not l.is_duplicate]
    attempted = [l for l in cleared if l.first_dial_ts]
    reached = [l for l in attempted if l.reached_human]
    right = [l for l in reached if l.right_person]
    audited = [l for l in right if l.record_correct is not None]
    correct = [l for l in audited if l.record_correct]
    secs = sorted((l.first_dial_ts - l.form_ts).total_seconds() for l in attempted)
    return {
        "cleared_pct": pct(len(cleared), len(leads)),
        "median_first_dial_s": median(secs) if secs else None,
        "reach_pct_of_attempted": pct(len(reached), len(attempted)),
        "right_person_pct_of_reached": pct(len(right), len(reached)),
        "record_correct_pct_of_audited": pct(len(correct), len(audited)),
        "booked_pct_of_received": pct(sum(l.booked for l in leads), len(leads)),
    }

Two gotchas. First, a dialer may mark a voicemail pickup as "answered." Use a separate human-answer disposition, and see answering machine detection in LiveKit and Pipecat. Second, never compute time to first attempt from the moment your webhook fired. A delayed vendor push makes the number look better than the customer's experience.

Sample-size math for the audit

You cannot listen to everything by hand, and you do not have to. Use the standard sample size for a proportion: n = z² × p × (1 − p) / e², with z = 1.96 for 95% confidence.

Assumed miss rate pMargin eCalls to audit
20%±5 points246
20%±3 points683
50% (unknown, worst case)±5 points385

These are illustrative planning numbers. Use the 246 row if you expect roughly one lead in five to be wrong.

For a pass-fail release gate, use the "rule of three." If you audit n calls and find zero misses, the 95% upper bound on the true miss rate is about 3/n. With n = 59, that is about 5%. The exact figure is 1 − 0.05^(1/59) = 4.95%. So 59 clean calls, drawn at random, support a claim of "under 5%." One miss in the sample means you need a larger sample before you can say that.

Stratify the sample. Draw from each lead source, each time-of-day band and each move-size bucket. An overall average can hide a bad segment. For the wider case for scoring every call, see score every call, not a sample.

How to audit moving leads AI follow up in one week

1. Freeze the definitions. Write down what "attempted," "reached," "right person" and "record correct" mean. Use one definition per metric for the whole week.

2. Pull the ledger. Export every lead for the last 30 days with the vendor's form timestamp, consent text ID, dial times and dispositions. Compute stages 1 to 4.

3. Check the gate. Count leads blocked at the consent gate, and read ten of them. Confirm the blocks are right. A wrong block is a lost lead that no report shows.

4. Draw a stratified sample. Pick 250 reached calls across sources, hours and sizes. Add every call where the agent re-asked a field or the caller corrected it.

5. Listen and fill three columns. For each call, write the spoken value, the form value and the stored value for date, size, origin, destination, callback number and source.

6. Assign a miss code. Use one code per failure: wrong person, wrong date, wrong size, wrong place, wrong number, wrong source, wrong time zone, missed opt-out. Count by code.

7. Replay the fixes as tests. Turn each miss into a scripted scenario. Run it with accents, noise and interruptions before the next prompt change ships.

8. Repeat weekly on a smaller sample. Keep the same definitions so the trend is real.

For ai follow up calls for moving leads, Evalgent can generate test scenarios from your agent's prompt and flows, including branches and hard constraints. It can then run them with caller profiles that vary accent, speech pace, interruption, response delay and background noise, over PSTN, SIP or WebRTC. That is where the "I'm still deciding on the destination" and date-correction cases belong. For a pre-launch pass across customer setups, see the AI phone agent go-live checklist and multi-tenant voice agent testing.

What transcript review misses on moving company lead follow up

A transcript can read cleanly and still carry the wrong date. The caller said "the thirteenth"; the transcript says "the thirtieth"; the agent confirms the thirtieth in a flat voice; the caller, on a noisy line, says "mm-hm." The text shows agreement. The audio shows doubt.

Evalgent's view is that the referee is deaf if it reads only text. It evaluates from the audio as well as the transcript, using an LLM plus Jev judge that cites evidence, with human review of verdicts. See transcript versus audio evaluation for the failure modes.

For live traffic, teams push call recordings. They are transcribed, mapped to scenarios and judged. Tool-call failures, latency spikes and policy failures are flagged with fix recommendations. In a moving setup that can surface a CRM write that failed silently. See detecting silent tool failures. Evalgent works with teams to set up evals for their first agent. It is not self-serve.

If your AI also handles inbound calls, AI receptionist for moving companies, its accuracy audit and moving company scheduling software with AI cover the other side of the same record.

Frequently asked questions

How fast should a moving company call back a new lead?

No verified universal threshold exists. SmartMoving's article lists "under 5 minutes" for top movers but gives no method, so treat it as a vendor claim. Set a target from your own ledger: choose the time at which your reach rate stops improving, then monitor p90 as well as the median.

For telemarketing to wireless numbers, an artificial or prerecorded voice generally needs prior express written consent under 47 CFR 64.1200(a)(2). The FCC treats AI-generated voices as artificial. Informational calls follow different rules. This is not legal advice; have counsel review your lead form and use case.

Does a quote-form checkbox cover several moving companies?

It depends on the wording. The one-to-one consent rule was vacated by the Eleventh Circuit, so consent is not automatically limited to one seller. The disclosure still must be clear and conspicuous and authorize the seller's automated calls. Store the exact text and form version per lead, and ask counsel to review it.

What should an AI follow-up call confirm first?

Confirm identity and permission to continue, then the fields most likely to be wrong: move date, size, origin and destination. Read each form value back and let the caller correct it. Write to the CRM only after confirmation. Treat form values as claims until the caller agrees.

How do I measure what my speed-to-lead AI misses?

Build a lead ledger with stages from received to booked. Log a miss code wherever a lead drops out. System logs cover the gate, dial and answer stages. For right-person and record accuracy, compare the call audio to the saved fields on a stratified sample.

How many calls should I audit?

About 246 calls give a margin of ±5 points if you expect a 20% miss rate. If you expect none, 59 clean random calls support an upper bound near 5% at 95% confidence. Stratify by lead source, hour and move size so one bad segment cannot hide.

What time can AI call moving leads?

For residential telemarketing, the federal window is 8 a.m. to 9 p.m. local time at the called party's location. Mobile area codes can mislead. As a suggestion, require both the lead's ZIP time zone and the number's area-code zone to fall inside the window. Check state rules, which can be stricter.

How do I keep wrong data out of SmartMoving or another CRM?

Validate before the write. Check date format against your own account, match `ReferralSource` exactly, handle duplicate-lead 400 responses without retry loops, and never send both component and full-address fields. Then audit stored values against call audio each week.

The bottom line

Speed gets the call started, but only a ledger shows whether the right person reached a record that is true. Measure every stage from form fill to booked estimate, and audit the audio against the saved fields.

Related Articles