Real estate wholesaling AI ecosystem
This is the plan for your wholesaling AI build. A seller lead arrives from a Carrot website form or a DealMachine list. Make cleans it, checks it is allowed to be called, and hands it to a Vapi voice agent that qualifies the seller in under a minute. After the call, Make routes the result down the right path: book the appointment, alert the acquisitions manager, nurture, retry, or suppress. Everything is logged to the CRM.
1Summary in 60 seconds
A wholesaler makes money by finding motivated sellers fast and talking to them before anyone else does. You want that front end automated. Leads come in from your Carrot website and from DealMachine. An AI voice agent built on Vapi calls or answers the seller, asks the questions a lead manager would ask, and pulls out the answers as clean data. Make.com is the brain in the middle: it decides who may be called and when, starts the call, and after the call sends each lead down the right path into the CRM.
In the demo a "seller" fills in the form, the phone rings within a minute, Ava qualifies them and books a walkthrough, and the CRM, the dashboard and the acquisitions manager's phone all update on their own.
- Intake: Carrot form or DealMachine prospect → Make webhook → clean, de-duplicate, do-not-call and calling-hours checks → lead saved.
- Call: Make starts a Vapi call with the seller's name and property filled into the script. Inbound calls to the campaign number go straight to Ava.
- Qualify: Ava covers the four pillars (motivation, timeline, condition, price) plus occupancy, mortgage and decision makers. She can book a slot during the call.
- Route: Vapi's end-of-call report → Make router → hot / warm / cold / retry / do-not-call, each with its own actions.
- Log: summary, transcript, recording and all fields written to the CRM, plus an instant alert for hot leads.
2How a wholesaling deal flows
1 · Find
DealMachine: driving for dollars, lists, skip tracing (owner phones), equity and loan data, direct mail. Carrot: SEO websites that turn "sell my house fast" searches into form leads.
2 · Qualify
A lead manager calls and checks the four pillars: motivation, timeline, condition, price. Plus who lives there, what is owed, and who decides. CONFIRMED
3 · Close
Hot sellers get an appointment with the acquisitions manager, who runs comps and repairs and makes an offer. Everyone else goes into follow-up.
Contacting a web lead within an hour makes qualifying it about 7x more likely than an hour later (HBR, 2011). Wholesaling is a race to the seller, which is why "call within a minute" is the headline of the demo.
3The big picture
Two Make scenarios, each with one webhook. That fits Make's limits and keeps the logic easy to follow: scenario 1 decides whether and when to call, scenario 2 decides what to do with the result.
4Who the AI may call (the part most builds get wrong)
Since the FCC ruling of 8 Feb 2024, AI-generated voices count as "artificial voice" under the TCPA. Calling a cell phone with an artificial voice needs the person's prior consent, and marketing calls need prior express written consent. So an AI cold-calling skip-traced numbers from a DealMachine list is high-risk, even though some courts say an offer to buy a house is not a "solicitation". CONFIRMED (FCC 24-17, 47 CFR 64.1200). Not legal advice; please confirm with counsel.
| Lead type | What Ava does | Guard rails in Make |
|---|---|---|
| Seller calls the campaign number (postcards, bandit signs, Carrot site) | Answers instantly, 24/7, qualifies, books | Inbound calls are outside the TCPA consent rule. Log everything. |
| Carrot form lead with the consent box ticked | Calls back within 60 s | Consent flag + timestamp stored; Carrot's consent field is off by default, so we switch it on with wording that names AI calls |
| Carrot form lead without consent | No AI call. Instant SMS/email asking for a good time, task for a human | Router path "needs consent" |
| DealMachine list prospect | No AI cold call by default. DNC check, then human call task or mail; AI only if consent exists | DealMachine "Check DNC" API, internal DNC list |
| Any call | Opens with "I'm Ava, an AI assistant for Northwind Home Buyers" | 8am–9pm in the seller's time zone (stricter states like FL and TX handled), max 3 attempts, opt-out honored immediately |
5Scenario 1: lead intake
The Vapi call is started with assistantOverrides.variableValues, so Ava greets the seller by name and already knows the property: {{firstName}}, {{propertyAddress}}, {{leadSource}}. CONFIRMED
6The voice agent "Ava"
How she sounds
- First line: "Hi {{firstName}}, this is Ava, an AI assistant with Northwind Home Buyers. You asked about an offer on {{propertyAddress}}. Is now a good time?"
- Warm and brief: one question at a time, never pushy, mirrors the seller's words.
- Turn-taking tuned for phone audio; she stops talking when the seller cuts in.
- Max 6 minutes. Voicemail detected → leaves a short callback message.
What she covers
- Motivation: why sell, why now
- Timeline: when they want to close
- Condition: repairs, roof, HVAC, updates
- Price: what they'd hope to get
- Occupancy: owner, tenant or vacant
- Mortgage: roughly what's owed
- Decision makers: anyone else on title
- Next step: book a walkthrough or a call with the acquisitions manager
Tools Ava can use during the call
| Tool | What happens | Where it runs |
|---|---|---|
check_availability | Returns the next open walkthrough slots in the seller's time zone | Make scenario 2, answers in < 20 s CONFIRMED (tool timeout 20 s default) |
book_appointment | Books the slot, creates the calendar event, confirms it back to Ava | Make scenario 2 |
endCall | Ends politely when done or when asked | Vapi built-in |
transferCall EXTRA | Warm transfer of a very hot seller to the acquisitions manager's phone | Vapi built-in |
Data pulled from every call (structured outputs)
{ "motivation": "divorce, relocating for work", "motivation_level": 1-10,
"timeline_days": 30, "condition": "needs roof and kitchen", "repair_level": "light|medium|heavy",
"asking_price": 185000, "mortgage_balance": 92000, "occupancy": "owner|tenant|vacant",
"decision_makers_on_call": true, "appointment_booked": true, "opt_out": false,
"best_callback_time": "weekday evenings" }
Built with Vapi Structured Outputs (the newer replacement for the deprecated analysisPlan). A field the seller never answered comes back empty instead of made up. CONFIRMED
7Scenario 2: after the call
Every path writes the summary, transcript, recording link and all structured fields to the CRM first, so nothing is lost if a later step fails. The report is processed once per call id, so a webhook that Vapi re-sends never creates a duplicate note or a second alert.
8Lead scoring
| Temperature | Rule (all from the call data) | Action |
|---|---|---|
| Hot | motivation ≥ 7 and timeline ≤ 90 days and (appointment booked or decision makers on the call) | Alert in seconds, appointment confirmed, CRM stage "Appointment" |
| Warm | motivation 4–6, or timeline 3–6 months, or price far above the estimated value | Callback in 3 days, CRM stage "Follow up" |
| Cold | not really selling, timeline > 6 months | 30-day nurture |
| Equity check EXTRA | asking price vs DealMachine estimated value and equity: flags deals worth the drive | Shown on the lead card |
Rules live in one Make module so you can tune thresholds without touching the agent.
9Data model and CRM fields
leads
id, source (carrot / dealmachine / inbound), name, phone (E.164), email, property address, time zone, consent + timestamp, DNC flag, stage, temperature, all seller fields, estimated value / equity, attempts, last call id
calls
vapi call id (unique), lead id, direction, ended reason, duration, cost, summary, transcript, recording url, structured output JSON, processed_at
appointments
lead id, start, end, type (walkthrough / phone), booked by (Ava / human), calendar event id, status
In your build these map onto Carrot CRM opportunities (stage, notes, tags) and DealMachine prospects (lifecycle, tags, notes). In the demo the same tables live in Supabase so the dashboard can update live.
10Carrot and DealMachine wiring
| Connection | How | Status |
|---|---|---|
| DealMachine → Make | Native webhooks (prospect.added, prospect.lifecycle_changed), signed with HMAC, retried if no 2xx in 20 s | CONFIRMED |
| Make → DealMachine | REST API: Check DNC, add note, change status, tag (HTTP module, Bearer key) | CONFIRMED |
| Carrot form → Make | Carrot's per-form "Zapier feed" posts to a webhook URL; we point it at Make's webhook | TEST documented for Zapier only |
| Make → Carrot CRM | Carrot CRM (formerly InvestorFuse) has no documented public REST API. Options: ask Carrot for API access; use its "Create opportunity" action through a single Zapier step; or let Carrot forms keep creating opportunities natively and push call notes by email-to-lead | TEST first task of milestone 1 |
| Vapi ↔ Make | Custom webhooks + webhook response for tools; Make also has a native Vapi app | CONFIRMED |
11The Deal Desk dashboard
A one-page live view for the demo (and a bonus for you): leads move across New → Calling → Hot / Warm / Cold / Retry / Suppressed in real time. Clicking a lead shows the seller fields, the equity check, Ava's summary, the transcript and the recording player. Built on Supabase with realtime updates, so the video shows the CRM changing the moment the call ends. EXTRA
12Reliability and security
- Webhooks are authenticated: Vapi sends a secret header Make checks; DealMachine requests are HMAC-signed; unknown callers get nothing.
- Idempotent: leads are keyed on phone + address, calls on the Vapi call id. Re-sent webhooks never double-book or double-alert.
- Fast answers to Vapi: tool calls reply within the 20 s limit; slow work (CRM writes, alerts) runs after the reply.
- Failures are visible: error handlers on every external call, failed runs stored and alerted, a daily summary of calls, cost and outcomes.
- No secrets in blueprints: keys live in Make connections or a locked config record.
- Cost per call logged from Vapi (typically about $0.08–0.13 per minute). CONFIRMED
13Milestones and price ($2,500)
1 · Discovery + intake $500
Confirm Carrot CRM access route, connect Carrot forms and DealMachine webhooks, normalization, dedupe, DNC and calling-hours rules, consent capture. Verified by: test leads land in the CRM correctly.
2 · Vapi voice agent $800
Ava's script for their market, voice and turn-taking tuning, voicemail handling, booking tools, structured outputs. Verified by: 10 recorded test calls covering the main seller types.
3 · Post-call routing + CRM $800
Multi-path router, scoring, CRM writes, alerts, calendar, retries, opt-outs, DealMachine updates, error handling. Verified by: every path triggered end to end.
4 · Testing, docs, handover $400
Test run on real leads, cost report, runbook, blueprints, a recorded walkthrough, 2 weeks of fixes. Verified by: client runs it alone.
Alternative: $2,800 if you want inbound answering on a dedicated campaign number and the Deal Desk dashboard included as deliverables.
14Risks and open questions
- Carrot CRM API: no public docs. Handled as the first discovery task with three fallbacks.
- Twilio trial notice: trial calls start with a short message and only reach verified numbers. Fine for a demo; production needs a paid number with A2P/STIR-SHAKEN set up.
- Compliance: we design for consent and DNC, but you own the legal call on cold lists.
- Voice latency: phone audio adds delay; we tune the model and turn-taking and measure it.
- Questions for you: which markets/states, do you want inbound answering too, who gets alerts and how, and your calendar tool.
15Sources
- Vapi: outbound calling, free numbers, structured outputs, server events, custom tools, voicemail detection, TCPA guide, pricing
- DealMachine: API access, webhook events
- Carrot: form webhooks via Zapier feed, Carrot CRM API key, consent field
- Compliance: FCC 24-17, 47 CFR 64.1200
- Speed to lead: Oldroyd et al., HBR 2011
- Make: Vapi app