Evalgent
Back to Blog
Voice AI Testing

Real Estate Speed-to-Lead AI: TCPA Checks Before You Dial

Deepesh Jayal
18 min read
Real Estate Speed-to-Lead AI: TCPA Checks Before You Dial
On this page

Search for real estate AI calls TCPA guidance and you mostly find vendor pages promising compliance. This post is for the product and engineering team behind the dialer. You run a real estate CRM or lead-gen platform. Your AI agent calls new web leads within minutes and runs nurture calls for hundreds of agents. Here are the checks your software must enforce before it dials and during the call. You also get the data behind each check, a Python dial gate, an opt-out test set and exposure math.

Rules verified October 16, 2026. Sources: the FCC's AI voice declaratory ruling, 47 CFR 64.1200 and the FTC's Telemarketing Sales Rule. This is engineering guidance, not legal advice. Have counsel review your consent language and state coverage.

$500
Statutory damages per violating call, up to $1,500 if willful (47 U.S.C. 227)
31 days
Max age of the National DNC data you call from (16 CFR 310.4)
10 business days
Outer limit to honor an opt-out (47 CFR 64.1200)
8 p.m.
Local calling cutoff in Florida, Oklahoma and Maryland (state laws)

For the whole lead flow, start with our AI for real estate leads testing playbook. General outbound checks live in outbound voice agent testing. This post covers only the TCPA layer.

Why speed-to-lead AI is a TCPA problem first

Speed to lead is the whole pitch. A buyer fills a listing form at 9:14 p.m. and your agent calls at 9:16 p.m. That is why teams buy speed to lead real estate AI.

The law does not care how fast you were. TCPA real estate claims turn on three facts instead. Did you have consent? Was the number on a list? What time was it where the person lives?

In February 2024 the FCC settled the AI question with Declaratory Ruling FCC 24-17. It was released February 8, 2024. The TCPA's "artificial or prerecorded voice" limits now "encompass current AI technologies that resemble human voices." Voice cloning is covered too. The FCC also noted that a live agent in the loop "does not negate the clear statutory prohibition."

So AI voice calls need consent, in two tiers.

Prior express consent: the called party agreed to be called at that number. It covers informational AI calls to wireless numbers, such as an appointment confirmation.

Prior express written consent: a signed agreement that "clearly authorizes the seller" to make artificial-voice telemarketing calls. It names the phone number and says consent is not a condition of purchase. E-signatures count (47 CFR 64.1200(f)(9)).

A speed-to-lead call that offers a showing, a valuation or an agent's services is telemarketing. Plan for written consent on every one.

Courts also stopped deferring. In June 2025, McLaughlin Chiropractic v. McKesson held that district courts need not follow the FCC's reading of the TCPA (Faegre Drinker). Build to the strict reading.

What the rules require, as of October 2026

The real estate AI calls TCPA picture has eight moving parts. The status column is the part that keeps changing.

RuleWhat it requiresSourceStatus, Oct 2026
AI voice is artificial voiceConsent before AI calls; written consent for telemarketingFCC 24-17In force since Feb 2024
One-to-one consentConsent limited to one identified seller per formFCC 2023 orderVacated Jan 24, 2025; FCC later removed it
National DNCNo telephone solicitations to registered numbers; use data no more than 31 days old64.1200(c)(2), 310.4(b)(3)(iv)In force
Internal DNCHonor requests within 10 business days; keep them 5 years64.1200(d)(3)In force
Revocation of consentAny reasonable method; honor within 10 business days64.1200(a)(10)In force; "revoke all" amended Sept 2026
Calling hours8 a.m. to 9 p.m. at the called party's location64.1200(c)(1), 310.4(c)In force
IdentificationName the entity at the start; callback number; opt-out mechanism64.1200(b), (d)(4)In force
Reassigned numbersSafe harbor if you query the FCC database and it errs64.1200(m)In force

Two rows need more detail.

One-to-one consent is gone, but "the seller" is not. The FCC adopted the one-to-one rule in December 2023. The Eleventh Circuit vacated it on January 24, 2025, in Insurance Marketing Coalition v. FCC, minutes after the FCC postponed it (Steptoe). The court held the FCC exceeded its authority. The FCC then formally deleted the rule text in 2025. But written consent must still authorize "the seller" by definition. A portal form that says "you agree to hear from our partner agents" is a weak record for the agent who calls. Store the named seller.

Revocation rules moved twice this year. The 10-business-day limit has applied since April 11, 2025. The "revoke all" part was waived until January 31, 2027 (Kelley Drye on DA 26-12). Revoke all means one opt-out stops all robocalls from that caller. Then on September 30, 2026, the FCC adopted FCC 26-67. For informational calls, an opt-out may now apply only to that category. For telemarketing, one opt-out still revokes consent to all future telemarketing from that caller (Squire Patton Boggs). The order takes effect 30 days after Federal Register publication. That had not happened as of mid-October 2026. For a speed-to-lead dialer, the safe design is simple: one opt-out blocks every marketing call for that seller.

State mini-TCPA laws that tighten the window

Federal law is the floor. Several states go further, and they presume location from the area code.

  • Florida. Fla. Stat. 501.616(6) bars solicitation calls before 8 a.m. or after 8 p.m. in the called person's time zone. It caps calls at three per 24 hours on the same subject, "regardless of the phone number used" too. The Florida Telephone Solicitation Act, 501.059, requires written consent for automated or recorded sales calls. It presumes a call to a Florida area code reached a Florida resident. Licensed real estate agents are exempt from most of Florida's telemarketing act, but 501.604 keeps the hours and cap in 501.616(6) for everyone.
  • Oklahoma. The Oklahoma Telephone Solicitation Act took effect November 1, 2022. It sets an 8 a.m. to 8 p.m. window and three calls per 24 hours, with $500 per violation (Manatt).
  • Maryland. The Stop the Spam Calls Act took effect January 1, 2024. Same window, same three-call cap, and a private right of action (Kelley Drye).

Real estate cold calling rules also vary by recording law. California Penal Code 632 bars recording a confidential call "without the consent of all parties" (Justia). If your agent records every call for QA, disclose recording at the top of the call in every state. That is cheaper than routing by state.

Most TCPA defense comes down to one question: can you produce the consent? Treat it as a data model, not a checkbox. Store these fields per lead, per seller:

FieldWhy it exists
`seller_id`Written consent must authorize the seller who calls
`scope`AI voice, telemarketing, SMS; each listed in the consent text
`consent_text_version`The exact disclosure the person saw
`captured_at`, `source_url`, `ip`, `form_id`Proof of when and where
`phone_as_entered`The number the person typed, unmodified
`signed_written`True only for an e-signed written agreement
`opt_out_events[]`Every revocation, any channel, with timestamp
`rnd_checked_at`, `rnd_result`Reassigned Numbers Database proof

One common shortcut fails here. An established business relationship (EBR) includes an inquiry made in the three months before the call. An EBR takes a call outside the "telephone solicitation" definition, which matters for DNC. It does not appear in the written-consent rule for artificial-voice telemarketing. A web inquiry may let a human agent call a DNC-listed number. It does not authorize the AI voice to make a marketing call. Do not let the EBR flag open the AI dial path.

This is also where do not call real estate disputes start. It is the core of real estate AI calls TCPA risk in a CRM. Agents import old sphere lists and expired listings into the CRM. Those rows have no consent record. Your gate should treat them as "human dialing only," never AI.

The pre-dial gate checklist

Run eight checks, in order, on every dial, not once per lead. Opt-outs, DNC data and the clock change between calls.

Pre-dial gate checklist for real estate AI calls with eight ordered checks from consent record to state call cap, each with a data source and a block or hold action
#CheckRuleData sourceFail action
1Consent record exists64.1200(a)(2), (a)(3)Form capture logBlock
2Seller and AI voice in scope64.1200(f)(9)Consent text version, `seller_id`Block
3No opt-out since consent64.1200(a)(10)Opt-out events, all channelsBlock
4Not on internal DNC64.1200(d)Suppression list, 5-year retentionBlock
5National DNC clear, or signed consent64.1200(c)(2), 310.4(b)(3)(iv)Registry download no more than 31 days oldBlock (stale data: hold)
6Number not reassigned64.1200(m)FCC Reassigned Numbers DatabaseHold, then block on "yes"
7Inside local calling window64.1200(c)(1), state lawsLead's address time zoneHold until window opens
8Under state call capFla. 501.616(6), OK, MDCall log, last 24 hoursHold

Check 5 runs against your latest National Do Not Call Registry download. Order matters for cost. Checks 1 to 4 are local lookups. Check 6 costs a database query, so run it only when the earlier checks pass.

The Reassigned Numbers Database takes a number plus the date you got consent. It answers yes (disconnected since then), no, or no data. Carriers must hold a disconnected number at least 45 days before reassigning it. A call minutes after the form needs no query. A nurture call 60 days later does.

The registry costs money too. From October 1, 2026, the FTC charges $85 per area code after five free ones. The annual cap is $23,425 per entity (FTC).

Python: validate a dial queue before the AI calls

This is a simplified gate. It assumes consent, DNC and RND data are already joined onto each lead. It returns DIAL, HOLD or BLOCK with a reason. Log that reason with the call ID. That log is your evidence later.

from datetime import datetime, timedelta, timezone
from zoneinfo import ZoneInfo

STATE_RULES = {  # stricter state windows and caps (verify before use)
    "FL": {"start": 8, "end": 20, "max_24h": 3},
    "OK": {"start": 8, "end": 20, "max_24h": 3},
    "MD": {"start": 8, "end": 20, "max_24h": 3},
}
FEDERAL = {"start": 8, "end": 21, "max_24h": None}
DNC_MAX_AGE = timedelta(days=31)
RND_MAX_AGE = timedelta(days=30)  # internal policy, not a legal number

def window(state):
    return STATE_RULES.get(state, FEDERAL)

def check(lead, client_id, now, dnc_snapshot_at):
    c = lead.get("consent")
    if not c:
        return "BLOCK", "no consent record"
    if c["seller_id"] != client_id or "ai_voice" not in c["scope"]:
        return "BLOCK", "consent not in scope for this seller or AI voice"
    if any(t >= c["captured_at"] for t in lead["opt_outs"]):
        return "BLOCK", "opt-out on file after consent"
    if lead["internal_dnc"]:
        return "BLOCK", "internal do-not-call list"
    if now - dnc_snapshot_at > DNC_MAX_AGE:
        return "HOLD", "national DNC snapshot older than 31 days"
    if lead["on_national_dnc"] and not c["signed_written"]:
        return "BLOCK", "on national DNC without signed written consent"
    last_rnd = lead.get("rnd_checked_at")
    if now - c["captured_at"] > RND_MAX_AGE and (not last_rnd or now - last_rnd > RND_MAX_AGE):
        return "HOLD", "query Reassigned Numbers Database first"
    if lead.get("rnd_result") == "yes":
        return "BLOCK", "number disconnected since consent"
    zones = lead["candidate_tzs"] or ["America/New_York", "Pacific/Honolulu"]
    rule = window(lead["state"])
    for tz in zones:  # every plausible zone must be inside the window
        hour = now.astimezone(ZoneInfo(tz)).hour
        if not rule["start"] <= hour < rule["end"]:
            return "HOLD", f"outside {rule['start']}:00-{rule['end']}:00 in {tz}"
    if rule["max_24h"]:
        recent = [t for t in lead["calls"] if now - t < timedelta(hours=24)]
        if len(recent) >= rule["max_24h"]:
            return "HOLD", f"{rule['max_24h']}-call/24h state cap reached"
    return "DIAL", "all gates passed"

We ran it on seven sample leads at 00:30 UTC on October 17, 2026, which is 8:30 p.m. Eastern:

+14155550101  DIAL  all gates passed
+18505550102  HOLD  outside 8:00-20:00 in America/New_York
+12125550103  BLOCK consent not in scope for this seller or AI voice
+13035550104  BLOCK opt-out on file after consent
+14055550105  HOLD  outside 8:00-20:00 in America/New_York
+12105550106  DIAL  all gates passed
+13015550107  HOLD  query Reassigned Numbers Database first

Three design choices are worth copying.

1. Unknown time zone means strictest zone. The Oklahoma lead had no location. The gate tested Eastern through Hawaii and held the call. Florida's 850 area code spans Central and Eastern time, so that lead carries two candidate zones. It must clear both.

2. A National DNC hit is fine only with signed written consent. The California lead is on the registry but signed. It dials.

3. The first call skips the RND query. Consent was three minutes old. The Maryland nurture lead, 45 days old with no query on file, is held.

For production, count Florida's cap across all your numbers, not per caller ID. Keep the rule table in config so counsel can change it without a deploy.

Calling windows and the time zone trap

The federal window is 8 a.m. to 9 p.m. at "the called party's location" in local time. That means the person's location, not the number's. Mobile numbers move with people. A buyer relocating from Miami to Los Angeles keeps a 305 number.

Calling window timeline comparing the federal 8 a.m. to 9 p.m. rule, the 8 p.m. state cutoff, and a 305-number lead in Los Angeles called at 7:30 a.m. Pacific

A dialer that reads time zone from the area code calls at 10:30 a.m. Eastern. It is 7:30 a.m. in Los Angeles.

There is a second twist. Florida law presumes a 305 number belongs to a Florida resident. So that lead may carry Florida's 8 p.m. cutoff and three-call cap while living in Pacific time. The safe rule: apply the stricter state rule from the area code and the local window from the actual location. The intersection is your window.

Get the actual location from the lead: the property searched, a "moving from" field, or the call itself. If ASR hears "Pasadena" as "Pensacola," that write-back is wrong. That speech error has a compliance cost.

In-call checks the AI agent must pass

The gate decides whether to dial. The agent's script and runtime decide what happens once the line connects.

Identify at the start. An artificial-voice message must "state clearly the identity of the business" at the beginning (64.1200(b)(1)). Telemarketing calls also give the caller's name, the entity, and a phone number or address (64.1200(d)(4)). The TSR adds prompt disclosure that the call is a sales call and what is being sold (310.4(d)).

Offer an automated opt-out fast. Artificial-voice telemarketing must offer an opt-out within two seconds of the identification, under 64.1200(b)(3). Using it must record the number on the do-not-call list and end the call. An AI agent can satisfy this with a spoken or key-press opt-out. Test that it is offered on every call, including after the caller interrupts the greeting.

Disclose call recording. If you record, say so before the conversation starts.

Honor "stop" in any words. A caller may revoke consent by "any reasonable method" under 64.1200(a)(10). For texts, keywords like "stop" and "unsubscribe" are reasonable per se. On a voice call, plain speech counts, in phrasings no keyword list contains.

Treat "wrong number" as a consent event. It means the consent belonged to someone else. Block the number for that seller and flag the lead record.

For disclosure tests across regulated industries, see our policy and guardrail test cases.

What a speech error corrupts downstream

The voice call is the front door to a workflow. Capture, then a system action, then confirmation, then write-back. In TCPA terms, five speech errors corrupt the record silently.

1. A missed opt-out. The caller says "stop calling me." ASR hears "take me off your lease." The intent model routes it to a rental question. No suppression row is written. Day 3, day 7 and day 14 nurture calls all go out.

2. Opt-out heard but not written back. The agent says "I'll remove you." The tool call times out. The CRM never gets the flag. The caller heard a promise. Your database did not.

3. Consent source not logged. The agent books a showing from an imported sphere contact. The booking writes a "lead" row with no consent record. The next nurture campaign picks it up.

4. Wrong time zone written back. The caller says where they live. ASR mangles the city. Future calls follow the wrong clock.

5. "Wrong number" heard as "not now." The agent schedules a callback to a stranger.

Two lanes for one opt-out request: heard correctly it is written to the suppression list and blocks later calls; misheard as a lease question, nurture calls continue

Accent and dialect make this worse. A 2020 PNAS study tested five commercial ASR systems on 19.8 hours of interviews. It found an average word error rate of 0.35 for Black speakers versus 0.19 for white speakers. An opt-out detector that reads only transcripts will miss more for some caller groups. Our word error rate guide explains how to measure that split.

The opt-out detection test set

Build this set once. Run it on every prompt, model or ASR change. Each phrasing is a separate test call, played as audio, not typed text.

GroupExample phrasingsExpected action
Direct"Stop calling me." "Take me off your list." "Put me on your do-not-call list."Opt-out, confirm, end call
Indirect"I already bought a house, lose my number." "Don't call this number again." "Who gave you my number? No more calls."Opt-out
Keyword"Unsubscribe." "Opt out." "Cancel."Opt-out
Mid-pitch barge-inCaller says "stop" over the agent's second sentenceOpt-out within the same turn
Wrong number"There's no Maria here." "Wrong number."Block number for this seller
Spanish"Ya no me llamen." "Quítenme de su lista." "No me vuelvan a llamar."Opt-out
Ambiguous"Stop. Actually, what's the price?"Confirm before continuing; log both
Negative controls"Can we stop by the open house?" "Don't stop, keep going."Continue; no opt-out

Run each phrasing under four conditions at minimum. Use clean audio, street noise, a car speakerphone and a strong accent. Our STT background noise testing guide covers how to set noise levels.

Use these pass rules:

  • Opt-out recall: 100% on direct and keyword phrasings; zero misses allowed.
  • Write-back: every detected opt-out produces a suppression row within the call, verified by querying the list, not the transcript.
  • False positives: under 5% on negative controls. A false opt-out costs a lead, not a lawsuit, so tilt toward caution.
  • Runs: at least three runs per phrasing per condition. Speech pipelines are not deterministic.

Teams skip this because it means hundreds of calls per release. Evalgent generates these scenarios from the agent's prompt and flows. It calls the agent over PSTN, SIP or WebRTC. Caller profiles set accent, pace, interruptions and background noise, and Spanish is supported. It judges from the audio, not only the transcript. A "lease" mishearing shows up as a failure with evidence.

Worked math: what one gap costs

Statutory damages make small error rates expensive. The TCPA gives $500 per violating call under 47 U.S.C. 227(b)(3), up to triple if willful or knowing. DNC claims under 227(c)(5) allow "up to $500" and require "more than one telephone call within any 12-month period."

Formula: exposure = affected leads × calls per lead × $500 (× up to 3 if willful)

All inputs below are illustrative assumptions, not data from any platform. Picture a CRM serving 150 brokerages with 30,000 new web leads a month. Each lead gets one speed-to-lead call plus five nurture calls in 30 days.

ScenarioAffected leadsCalls eachCallsAt $500At $1,500
Consent form version missing AI-voice language, 2% of leads for one month60063,600$1,800,000$5,400,000
Opt-out detector misses 4% of 900 monthly opt-outs364 more144$72,000$216,000
Area-code time zone wrong for 1% of leads, 10% of their calls early3000.6180up to $90,000up to $270,000

The consent row dominates because it multiplies by every call. One bad form deploy beats a year of missed opt-outs. That is why check 2 compares the consent text version, not just a "consented" boolean.

Real estate AI calls TCPA exposure is not hypothetical. In April 2024, NAR reported a class action against a large brokerage over an agent's calls. The brokerage denied wrongdoing. In February 2026, a class action alleged a mortgage lender made "synthetic or prerecorded voice" calls without written consent. Both are allegations, not findings.

How to test TCPA controls on an AI dialer before each release

Run this real estate AI calls TCPA test suite for every prompt, model, ASR or form change. It pairs with our go-live checklist for each new customer's phone agent.

1. Snapshot the rules config. Version the state table, windows and caps. A test run records which version it used.

2. Run the gate on a synthetic queue. Hit every BLOCK and HOLD reason at least once. Include stale DNC data, an RND yes, split-zone area codes and a fourth Florida call in 24 hours. Assert the exact reason string.

3. Diff consent text versions. Any new form version must list the seller and the AI voice scope. Fail the build if a form ships without a version ID.

4. Run the opt-out test set as audio. All phrasing groups, four conditions, three runs each. Check suppression rows, not transcripts.

5. Test the in-call disclosures. Confirm identity in the first turn, the opt-out offer and the recording notice. Repeat with the caller barging in on the greeting.

6. Test write-back failure. Force the CRM tool call to time out after an opt-out. The agent must retry or queue the suppression and must not keep pitching.

7. Replay production calls. Pull a weekly sample of real calls with an opt-out or "wrong number" in the audio. Confirm each produced a suppression row within 10 business days, ideally within the call.

Step 7 is ongoing monitoring, not a release gate. Evalgent's production monitoring takes pushed call recordings, transcribes them and maps them to scenarios. It flags policy failures and tool-call failures with fix recommendations. A missed opt-out is often both. See how to monitor voice agents in production and our voice agent compliance audit guide. Qualification errors are covered in is your real estate AI mis-qualifying buyers and sellers.

Frequently asked questions

AI voice calls to real estate leads need prior express written consent when they market a service. Booking a showing or offering a valuation counts. The FCC treats AI voices as artificial voices. Written consent must be signed, electronic signatures included, name the phone number and authorize the seller. Purely informational calls need prior express consent.

Is an AI voice an artificial voice under the TCPA?

An AI-generated voice is an artificial voice under the TCPA. The FCC's February 2024 ruling, FCC 24-17, says the limits cover "current AI technologies that resemble human voices." Voice cloning is included. A human monitoring the call does not change that. Every consent, identification and opt-out rule for artificial-voice calls applies.

The FCC's one-to-one consent rule is not in effect. The Eleventh Circuit vacated it on January 24, 2025, in Insurance Marketing Coalition v. FCC, and the FCC later removed it. Written consent must still clearly authorize the seller who calls. A form naming only "partners" gives a weak consent record.

How often do you have to scrub the Do Not Call list?

National Do Not Call Registry data must be no more than 31 days old on the day of each call. That keeps the safe harbor. That rule sits in 16 CFR 310.4(b)(3)(iv) and 47 CFR 64.1200(c)(2). Most dialers refresh weekly or daily. Internal DNC requests must be honored within 10 business days and kept five years.

How fast must you honor a stop calling request?

A stop calling request must be honored within ten business days at most. See 47 CFR 64.1200(a)(10) and (d)(3). Software should do it within the call. As of October 2026, an FCC proposal asks whether to shorten the deadline. For telemarketing, one opt-out revokes consent for all future marketing calls from that seller.

What hours can you call real estate leads?

Federal rules allow solicitation calls from 8 a.m. to 9 p.m. in the called person's local time. Florida, Oklahoma and Maryland end at 8 p.m. and cap calls at three per 24 hours. Use the lead's actual location for the clock, and apply the stricter state rule when the area code points elsewhere.

How much is a TCPA violation per call?

A TCPA violation for an unconsented artificial-voice call carries $500 in statutory damages per call under 47 U.S.C. 227(b)(3). Courts may triple that to $1,500 for willful or knowing violations. Do Not Call claims allow up to $500 per call and need more than one call in 12 months. Class actions multiply these numbers.

Does the Reassigned Numbers Database protect AI callers?

The FCC's Reassigned Numbers Database gives a safe harbor only if you query it and it wrongly answers no. Calling without querying gives no protection. A speed-to-lead call minutes after the form rarely needs a query. Nurture calls weeks later should query first, and a "yes" should block the call.

The bottom line

Speed to lead only pays when every AI dial passes consent, DNC, reassigned-number, clock and cap checks first. The costliest failures are silent, like a misheard "stop" that repeats on every call until you test for it.

Related Articles