Guides
Build a real estate lead qualification agent in Thoughtly that calls every inbound lead, qualifies buyers on pre-approval and budget, books showings, and warm-transfers hot prospects to listing agents.
Last updated
Real estate teams lose money every time a lead goes uncalled. Industry data shows that leads contacted within five minutes are 21 times more likely to convert, yet most inside sales agents only reach the top 10% of their pipeline. The rest go cold within 24 hours.
This guide walks through building a real estate lead qualificationLead qualificationThe process of capturing fit signals — intent, urgency, location, eligibility, consent, and availability — before routing a lead to the right next step. agent in Thoughtly that calls every inbound lead — from Zillow, Redfin, your website, or any other source — qualifies buyers on pre-approval, budget, and timeline, books showings, and warm-transfers hot prospects to your listing agents.
Before touching the Agent Builder, write down the exact fields that determine whether a real estate lead is worth an agent's time. Real estate qualification is not B2B BANTBANT qualificationA sales qualification framework — Budget, Authority, Need, Timeline. Thoughtly captures BANT in a single inbound call before transfer. — it's about buyer readiness and fit.
A practical qualification framework for real estate:
| Field | Variable name | Format | Why it matters |
|---|---|---|---|
| Pre-approval status | pre_approved | Boolean | Separates serious buyers from browsers |
| Budget range | budget | Number | Routes to the right price band and agent |
| Timeline | timeline | Text | Hot (30 days) vs. nurturing (3-6 months) |
| Target area | target_area | Text | Matches buyer to the right listing agent |
| Property type | property_type | Text | Single-family, condo, multi-family, etc. |
| Buyer or seller | buyer_or_seller | Text | Different funnels for each |
| Preferred contact | preferred_contact | Text | Call, text, or email for follow-up |
These fields become Variables in your Thoughtly agent. Each one gets extracted during the call and used for branching, CRMCRMThe system of record for leads, contacts, deals, and activity. Thoughtly reads from and writes to your CRM continuously. updates, and routing decisions.
In Thoughtly, every agent starts with a Start node and flows through Speak nodes, Transfer nodes, and End nodes. Outcomes on each Speak node determine where the conversation goes next.
Here's the flow for a real estate lead qualification agent:
Keep the opener tight. State who you are and why you're calling, then ask an open-ended question to get the lead talking.
Hi, this is Alex with [Brokerage Name]. I saw you just requested information about a property on [street name]. Is now a good time to chat for two minutes about what you're looking for?If you're calling a lead who submitted a form on Zillow or Redfin, reference the source. The contact's lead sourceLead sourceThe channel, campaign, marketplace, referral partner, or form that generated a lead. Lead source often determines routing, compliance rules, and follow-up cadence. is available as a variableVariableA named value the voice agent stores during a conversation — caller name, intent, qualifying answers — and uses to drive routing and post-call actions. in the prompt: {{ contact.lead_source }}.
Use a Prompt speak node to ask qualification questions conversationally. The agent should sound natural, not like reading a form. Ask about pre-approval, budget, timeline, and target area in a flowing conversation — not back-to-back interrogation style.
Define the following Variables on this node so they extract from the caller's responses before outcomes evaluate:
| Variable | Source | Extraction instructions | Format |
|---|---|---|---|
| pre_approved | Current speak node | Determine if the caller has a pre-approval letter or has spoken to a lender. Return true for yes, false for no. | Boolean |
| budget | Current speak node | Extract the maximum home budget the caller states as a plain number in USD. If a range is given (e.g., '400 to 450k'), choose the upper bound. | Number |
| timeline | Current speak node | Extract the buyer's timeline. Normalize to: '30 days', '60 days', '90 days', '6 months', 'just browsing'. | Text |
| target_area | Current speak node | Extract the city, neighborhood, or zip code the buyer is targeting. | Text |
| buyer_or_seller | Current speak node | Determine if the caller is looking to buy, sell, or both. | Text |
After the caller responds, these variables extract automatically. Then outcomes evaluate to route the conversation.
Use rule-based outcomes for deterministic routing after the qualification node. Rule-based outcomes check your variables top-to-bottom and take the first match.
Outcome A: pre_approved == true AND budget >= 250000
-> Route to: Schedule showing (Speak node 2)
Outcome B: pre_approved == false AND timeline != "just browsing"
-> Route to: Nurture path (Speak node 3)
Outcome C: timeline == "just browsing"
-> Route to: Long-term nurture (End node)
Outcome D (Else):
-> Route to: Transfer to agent (Transfer node)Adjust the budget threshold to match your market. In high-cost markets, 250000 may be too low. In entry-level markets, it may be too high.
When a lead qualifies, the agent should book a showing in real time — not promise a callback. Thoughtly Actions run mid-call integrations from a Speak node, so the agent can check calendar availability and schedule an appointment while the lead is on the phone.
Add a Speak node after the qualified outcome. Configure an Action on this node to schedule an appointment using your connected calendar integration (Calendly, Cal.com, or Google Calendar).
The flow works like this:
Action: Schedule Appointment (Calendly / Cal.com)
Inputs:
- calendar_id: {{ agent.calendar_id }}
- appointment_type: "Property showing"
- name: {{ contact.name }}
- email: {{ contact.email }}
- phone: {{ contact.phone_number }}
Variables updated:
- booking_status (text): "confirmed" or "error"
- showing_time (text): the booked timeAfter the action runs, use rule-based outcomes to branch: if booking_status == "confirmed", confirm the appointment and end the call. If the booking fails, offer an alternative or transfer to the listing agent.
For leads that qualify but want to talk to an agent before booking — or for high-value leads where a human touch matters — use a Transfer node. Thoughtly Transfer nodes support two modes:
Enable Early Summaries on the Transfer node so the receiving agent gets context before picking up. The summary includes the qualification variables captured during the call — pre-approval status, budget, timeline, and target area — so the listing agent walks into the conversation already knowing the buyer's profile.
Set the Transfer node's Description field to control what the agent says before transferring:
Description: "I've got all your details — let me connect you with [agent name], one of our listing specialists in [target_area]. They'll have everything I've gathered. Hang tight for just a moment."Not every lead is ready to buy today. For leads without pre-approval or with a longer timeline, the agent should still add value and set up follow-up rather than ending the call abruptly.
For the nurture path, the agent should:
Use the Send SMS Action to text the lead during the call with a link to your listing search or a lender recommendation. This gives immediate value and keeps your brokerage top-of-mind.
The qualification agent only works if it gets triggered the moment a lead comes in. Thoughtly Automations listen for events from your lead sources and triggerTriggerThe event or condition that starts an automated workflow, such as a new lead, missed call, CRM status change, calendar booking, or completed call. calls automatically.
For Zillow Premier Agent or Redfin leads, set up a webhookWebhookAn event-based integration that sends data from one system to another when something happens, such as a form submission, booked appointment, or completed call. that fires when a new lead is captured. The webhook triggers a Thoughtly Automation that creates a contact and places the call.
Automation trigger: Webhook (new lead from Zillow/Redfin)
Steps:
1. Call Contact (agent: real_estate_qualification_agent)
- metadata: {"lead_source": "zillow", "property_address": "{{webhook.property_address}}"}
2. Add Disposition: "Qualified" or "Nurture" based on call outcome
3. Update CRM (HubSpot/Salesforce): write qualification variables to contact recordIf you use HubSpot or Salesforce as your CRM, the integration is bidirectional. Thoughtly reads lead data from your CRM, calls the contact, and writes the qualification results back as an engagement on the contact timeline. Lifecycle stage moves automatically based on the call outcome.
For teams using GoHighLevel, the same pattern works — trigger the call from a GHL custom field change, and Thoughtly writes the call summary and disposition back to the opportunity.
Every call should end with a clear disposition that routes the lead to the right next step. Thoughtly's disposition system automatically tags calls based on transcriptTranscriptThe text record of a voice conversation, used for review, training, compliance audit, and search. content and call outcome.
Recommended dispositions for real estate qualification calls:
| Disposition | Meaning | Next step |
|---|---|---|
| Qualified - showing booked | Buyer is pre-approved, budget fits, showing scheduled | Add to listing agent's calendar |
| Qualified - needs agent | Buyer is ready but wants to talk to an agent first | Warm transfer or schedule callback |
| Nurture - not pre-approved | Buyer is interested but not financially ready | Add to 30-day nurture sequence |
| Nurture - long timeline | Buyer is 6+ months out | Add to long-term email/SMS cadence |
| Not interested | Lead is not pursuing a purchase | Remove from active follow-up |
| No answer | Lead did not pick up | Retry per cadence, then SMS follow-up |
Use Automations with the On Call Completed trigger to handle post-call work: update the CRM, send a summary email to the listing agent, add the contact to a nurture sequence, or trigger an SMS follow-upSMS follow-upSMS follow-up is the use of compliant two-way text messages to continue a lead conversation after a form fill, missed call, voicemail, or prior interaction..
Don't interrogate leads with back-to-back questions. The agent should weave qualification questions into a conversation: 'Have you had a chance to talk to a lender yet, or are you still exploring options?' sounds natural. Five rapid-fire questions feel like a survey and drive leads to hang up.
A buyer at 240K in a 250K market is still a qualified lead. Use variables for branching, but set thresholds that account for negotiation and flexible price bands. Consider routing borderline leads to a nurture path rather than disqualifying them outright.
Many real estate leads are sellers, not buyers. Your agent should detect this early (the buyer_or_seller variable) and branch into a seller qualification flow: asking about property details, motivation to sell, timeline, and whether they've already listed or are pre-listing.
Use Thoughtly's Test Agent (text chat) to verify each outcome path before going live. Then use Call Me to test with a real phone call. Test scenarios: a hot buyer with pre-approval, a tire-kicker, a seller, someone who says they're 'just looking,' and someone who doesn't answer.
If qualification data stays inside Thoughtly and never reaches your CRM, your agents won't see it. Always configure a post-call Automation to write variables — pre-approval, budget, timeline — back to the contact record in HubSpot, Salesforce, or GHL.
Track these metrics to measure the impact of your real estate qualification agent:
| Metric | What it tells you | Target |
|---|---|---|
| Lead contact rate | % of inbound leads reached by the agent | > 90% (vs. 10% with human-only ISAs) |
| Speed to lead | Time from lead capture to first call | < 60 seconds |
| Qualification rate | % of contacted leads classified as qualified or nurture | 40-60% (varies by market) |
| Showing booking rate | % of qualified leads with a showing booked | > 50% of qualified leads |
| Transfer-to-close rate | Warm transfers that result in a closed transaction | Track quarterly |
| Cost per qualified lead | Total Thoughtly cost / qualified leads produced | Compare against ISA cost per qualified lead |
Find these metrics in Thoughtly Analytics under the Calls tab. Filter by agent and disposition to see how the qualification agent is performing. Compare against your historical ISA performance to measure lift.
Yes. Use the buyer_or_seller variable to branch the flow. Buyers go through pre-approval, budget, and timeline qualification. Sellers go through property details, motivation, and listing status. Define separate outcomes for each path.
Thoughtly's voicemail detectionVoicemail detectionVoicemail detection is the ability to identify when a call reaches a voicemail greeting instead of a live person, then trigger the right message, callback, or alternate-channel follow-up. handles this automatically. If the agent detects voicemail, it can leave a short message and end the call. Set up an Automation to send an SMS follow-up after a no-answer disposition, and schedule a retry call based on your cadence — for example, 2 hours later, then the next morning.
Yes. Use the Send SMS Action on a Speak node to send links to relevant listings, lender recommendations, or a booking link. The SMS sends mid-call so the lead has the information while still on the phone.
Use the target_area variable in a rule-based outcome or Automation Condition. If target_area matches a specific neighborhood, route to the corresponding listing agent's phone number via a Phone Router transfer. For teams with multiple agents covering the same area, use round-robin routing or route to the agent with the fewest active showings.
Thoughtly integrates natively with HubSpot, Salesforce, GoHighLevel, Pipedrive, Zoho CRM, and Keap. The integration is bidirectional: Thoughtly reads lead data to populate call context, and writes call summaries, dispositions, and qualification variables back to the contact record. For other CRMs, use the Webhook action or Zapier to sync data.