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.

< 60 sfrom form submit to the AI calling the seller
2Make scenarios, multi-path routers, webhooks only
8seller fields pulled from every call as structured data
5post-call paths: hot, warm, cold, retry, do-not-call
$2.5k4 milestones, verified in escrow
CONFIRMED official docs or the live API spec INFERRED strong reasoning or community reports TEST verify in the prototype or with you EXTRA not asked for; small and worth showing

1Summary in 60 seconds

In plain words

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.

  1. Intake: Carrot form or DealMachine prospect → Make webhook → clean, de-duplicate, do-not-call and calling-hours checks → lead saved.
  2. 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.
  3. Qualify: Ava covers the four pillars (motivation, timeline, condition, price) plus occupancy, mortgage and decision makers. She can book a slot during the call.
  4. Route: Vapi's end-of-call report → Make router → hot / warm / cold / retry / do-not-call, each with its own actions.
  5. 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.

Why speed matters

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

Carrot websiteseller form + consent box DealMachineprospect webhooks · DNC API Seller calls inmail / sign campaign number Make.com Scenario 1 · Lead intake webhook → normalize → dedupe → DNC + consent + hours → save lead → start Vapi call (or schedule it) one webhook for both sources · router by source Scenario 2 · Vapi handler router by message type: tool call (book slot) → answer Vapi in < 20 s end-of-call report → hot / warm / cold / retry / DNC idempotent on call id · secret header checked Vapi · "Ava"LLM + voice + transcriberstructured outputs · voicemaildetection · booking tool CRMCarrot CRM (client) · Deal Deskdashboard on Supabase (demo)leads · calls · appointments Team alertsacquisitions manager: Telegram /SMS / Slack · calendar invite inbound calls go straight to Ava POST /call webhooks

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.

5Scenario 1: lead intake

WebhookCarrot / DealMachine Verifysecret / HMAC NormalizeE.164 phone, address Dedupephone + address key Can we call?DNC · consent · hours Call nowsave lead · Vapi POST /call Call lateroutside hours → schedulePlan 8am local Human / SMSno consent or list lead → task Suppress (DNC / duplicate)

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

  1. Motivation: why sell, why now
  2. Timeline: when they want to close
  3. Condition: repairs, roof, HVAC, updates
  4. Price: what they'd hope to get
  5. Occupancy: owner, tenant or vacant
  6. Mortgage: roughly what's owed
  7. Decision makers: anyone else on title
  8. Next step: book a walkthrough or a call with the acquisitions manager

Tools Ava can use during the call

ToolWhat happensWhere it runs
check_availabilityReturns the next open walkthrough slots in the seller's time zoneMake scenario 2, answers in < 20 s CONFIRMED (tool timeout 20 s default)
book_appointmentBooks the slot, creates the calendar event, confirms it back to AvaMake scenario 2
endCallEnds politely when done or when askedVapi built-in
transferCall EXTRAWarm transfer of a very hot seller to the acquisitions manager's phoneVapi 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

Vapi webhooksecret header Type?tool call / report Tool callslots / book → reply to Vapi End-of-call reportseen this call id? → stopscore the lead Hot → CRM + appointment + instant alert Warm → CRM + callback in 3 days Cold → CRM + 30-day nurture Voicemail / no answer → retry later (max 3) Opt-out / wrong number → DNC + DealMachine tag

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

TemperatureRule (all from the call data)Action
Hotmotivation ≥ 7 and timeline ≤ 90 days and (appointment booked or decision makers on the call)Alert in seconds, appointment confirmed, CRM stage "Appointment"
Warmmotivation 4–6, or timeline 3–6 months, or price far above the estimated valueCallback in 3 days, CRM stage "Follow up"
Coldnot really selling, timeline > 6 months30-day nurture
Equity check EXTRAasking price vs DealMachine estimated value and equity: flags deals worth the driveShown 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

ConnectionHowStatus
DealMachine → MakeNative webhooks (prospect.added, prospect.lifecycle_changed), signed with HMAC, retried if no 2xx in 20 sCONFIRMED
Make → DealMachineREST API: Check DNC, add note, change status, tag (HTTP module, Bearer key)CONFIRMED
Carrot form → MakeCarrot's per-form "Zapier feed" posts to a webhook URL; we point it at Make's webhookTEST documented for Zapier only
Make → Carrot CRMCarrot 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-leadTEST first task of milestone 1
Vapi ↔ MakeCustom webhooks + webhook response for tools; Make also has a native Vapi appCONFIRMED

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