I spent three weeks manually copy-pasting lead information from my contact form into a spreadsheet, then writing individual follow-up emails to every person who asked about properties in Madeira. Three weeks. For a one-person operation, that’s not a workflow — that’s a slow drain on every hour that could go toward actual client work. When I finally sat down and built a proper waitlist funnel using the Claude API, I recovered roughly 6 hours a week. That number still surprises me when I say it out loud.
This is the honest account of how I did it, what broke along the way, and what I’d do differently if I were starting from scratch in 2026.
The Problem I Was Actually Trying to Solve
My real estate consulting business runs on inbound interest. People find me through referrals, my website, or social media, then fill out a form expressing interest in buying or renting property in Madeira. The volume isn’t massive — I get between 15 and 30 new leads a month — but the quality varies wildly, and so does the timing of follow-up I was giving them.
Some leads got a detailed personal email within an hour. Others sat for three days while I was showing properties or on calls. That inconsistency was costing me deals. I knew it. I just hadn’t fixed it.
I’d looked at off-the-shelf CRM automation tools. Most of them — ActiveCampaign, HubSpot’s free tier, even some Zapier templates — gave me rigid email sequences that felt canned. Every lead got the same four emails on the same schedule, regardless of what they’d told me in their intake form. A retired couple looking for a long-term rental got the same sequence as a crypto-flush 30-year-old hunting for a Golden Visa investment property. That mismatch showed, and leads told me so.
What I wanted was a funnel that read what the lead had written, understood their context, and wrote a first response that actually matched their situation. That meant AI — specifically, an AI I could talk to programmatically with my own data piped in.
Why I Chose the Claude API Over Other Options
I’d been using Claude through the regular interface for about eight months before this project. I’d tested it heavily for property descriptions and market summaries — work I’ve written about before. I trusted the output quality, particularly for nuanced writing tasks where tone matters.
The Claude API (Anthropic’s direct API access, not a third-party wrapper) gave me a few things the chat interface couldn’t:
- The ability to feed structured lead data directly into a system prompt
- Programmatic control over response length and format
- Integration with my existing tools via Python scripts
- Consistent output I could log and audit
I also looked at OpenAI’s API and Gemini’s API. OpenAI’s GPT-4o was a genuine competitor here. But after running test outputs side by side on 20 sample lead intake responses, Claude’s emails read more naturally and required less editing before I’d feel comfortable sending them with my name on them. Gemini’s outputs were fine but slightly more generic in tone. For something representing my personal brand, “fine” wasn’t good enough.
API pricing at the time I built this: Claude 3.5 Sonnet was running at $3 per million input tokens and $15 per million output tokens. For the volume I was processing — 20-30 leads a month, each generating one initial email and potentially two follow-ups — my monthly API cost came out to under $4. That’s not a typo.
The Exact Build: What I Actually Put Together
I want to be specific here because most articles about “using AI to build a funnel” stay vague enough to be useless. Here’s what the actual stack looked like:
- Lead intake form: Typeform (I was already using this)
- Webhook receiver: A simple Python script running on a $6/month DigitalOcean droplet
- AI layer: Claude API via Anthropic’s Python SDK
- Email delivery: SendGrid (free tier, up to 100 emails/day)
- Logging: Airtable, where every lead and generated email gets stored
When someone submits my intake form, Typeform fires a webhook to my Python script. The script pulls the form data — name, nationality, budget range, property type interest, timeline, how they found me — and constructs a prompt for Claude. The system prompt establishes my voice, my business context, and a set of rules (never quote specific prices, always mention the NHR tax regime for non-Portuguese leads, ask one clarifying question at the end). Claude generates the email. SendGrid sends it. Everything logs to Airtable so I can review and, if needed, manually intervene before a follow-up goes out.
I built the initial version in about 14 hours spread over four evenings. I’m not a developer by training — I know enough Python to be dangerous, and I used Claude itself to help me write and debug several parts of the script. That loop was genuinely useful: describe what I needed, get working code back, test it, ask Claude to fix the errors it generated. It worked better than I expected.
My Real-World Experience Running This for 4 Months
I went live with this funnel in late February 2026. Between then and the end of May, 94 leads came through. Of those, 91 received an AI-generated first email within four minutes of submitting the form. The other three had form submissions with corrupted data — a webhook issue I fixed in week two.
The specific anecdote I keep coming back to: in March I had a week where I was personally handling a complicated property transfer for a British couple — one of those transactions where something goes sideways every day and you spend half your time on the phone with notaries and solicitors. That week I received 11 new leads. In the old world, maybe 4 of them would have gotten a timely, thoughtful response. The rest would have gotten a rushed reply or a delay that cost me goodwill.
With the funnel running, all 11 got personalized first emails within minutes. Two of them replied the same day with questions. The system flagged those replies in Airtable (I have a Zapier step that watches the SendGrid reply-to inbox and logs responses). I handled those two conversations manually when I came up for air that evening. The other nine got a seven-day follow-up email — also Claude-generated, also logged — while I was still buried in the transaction paperwork.
One of those nine converted into a paid consultation three weeks later. I genuinely don’t know if I would have closed that without the automated follow-up, because she told me she’d been comparing three different consultants. Response speed and personalization were her stated reasons for choosing me.
Time savings over four months: I tracked this carefully because I was curious. Before the funnel, my average time spent on initial lead response and first follow-up per lead was about 22 minutes. With the funnel, I spend roughly 5 minutes per lead — reviewing the Airtable log, occasionally editing an email before the follow-up goes, and handling real replies. Across 94 leads, that’s roughly 1,600 minutes (26 hours) I would have spent, versus about 470 minutes (8 hours) I actually spent. Eighteen hours recovered in four months. Not life-changing on its own, but noticeable in a one-person business where time is the actual constraint.
What Didn’t Work: Honest Limitations from Testing
I want to be direct about where this approach struggled, because the setup isn’t for everyone and some of the friction points are real.
The Technical Barrier Is Genuine
If you have no Python experience and no appetite to learn any, this specific build won‘t work for you. I’ve seen people suggest using Make.com or Zapier to connect form submissions to the Claude API without code — that’s possible with Claude’s API and Zapier’s webhooks — but you lose flexibility in how you structure the prompt, and you can’t do the kind of conditional logic I use (different prompt variations based on budget range, for example). The no-code version works, but it’s blunter.
Claude Sometimes Ignores Formatting Instructions
I have a rule in my system prompt: emails should be no longer than 200 words. Claude respects this maybe 85% of the time. Occasionally — usually when the lead’s intake response is long and detailed — the output comes back at 280 or 320 words. It’s not catastrophic, but it means I can’t fully set-and-forget the output. I built a character count check into my script that flags anything over 220 words for manual review before sending. That catches it. But it was an extra build step I hadn’t anticipated.
It’s Not a CRM Replacement
This funnel handles first contact and one follow-up. After that, every lead is still managed manually by me. I don’t have a full automated pipeline — I have an automated top-of-funnel. Anyone expecting this to replace actual client relationship management will be disappointed. The AI generates good opening emails. It can’t read a reply, understand the emotional temperature of a negotiation, or know when a lead is cold versus just slow. That’s still my job.
How This Compares to Simpler Alternatives
| Approach | Setup Time | Monthly Cost | Personalization | Technical Skill Needed |
|---|---|---|---|---|
| Manual email writing | None | $0 | High (when done) | None |
| CRM email sequences (HubSpot/ActiveCampaign) | 3–6 hours | $0–$50 | Low (template-based) | Low |
| Zapier + Claude API (no-code) | 4–8 hours | $20–$40 | Medium | Low |
| Python + Claude API (my build) | 14+ hours | ~$10 total | High | Medium |
The Zapier + Claude API no-code route is a legitimate middle path. If I were starting from zero today with no Python experience, that’s probably where I’d begin. You’d use Typeform’s Zapier integration, a Zapier step to call the Claude API via its HTTP action, and a Gmail or SendGrid step to send the result. You lose the fine-grained conditional logic, but you gain an hour of headache for every hour of Python debugging you avoid.
What I’d Do Differently Starting Today
Four things I’d change if I were rebuilding this from scratch in 2026:
1. Add a reply-parsing layer from the start. Right now, when a lead replies to my automated first email, I get notified manually and handle it myself. I could build a second Claude API call that reads the reply, classifies the lead’s intent, and either sends a relevant follow-up or flags it for me with a suggested response draft. I haven’t done this yet. It’s the next build on my list.
2. Use Claude’s structured output from day one. Anthropic added reliable JSON output modes that make parsing API responses much cleaner. I built my initial version before I fully understood this feature and spent time doing fragile string parsing on outputs. Using structured output from the start would have saved me two or three debugging hours.
3. Set up a simple dashboard earlier. Airtable works, but I didn’t build a proper view of lead-to-consultation conversion rates until month three. I should have set that up in week one. Now I can actually see that leads who received the automated email within 5 minutes converted at about 14%, versus 6% for leads who waited over an hour for a manual reply. That data changes how I prioritize this work.
4. Build a test mode. For the first two weeks, every email went live. I caught two awkward outputs only because I happened to check Airtable before the lead read the email. A staging step — where every email sits for 30 minutes and I get a summary notification before it sends — would have caught those without slowing down the funnel meaningfully.
Practical Summary: Is This Worth Building?
For a solopreneur with inconsistent lead response times and some technical tolerance: yes, absolutely. The Claude API’s output quality for personalized email writing is genuinely good — good enough that I’ve had leads compliment the first email they received without knowing it was AI-assisted. The cost is negligible. The time recovery is real.
For someone with zero interest in writing any code and no appetite for a 14-hour build: start with the Zapier + Claude API no-code version first. Get the concept working, see if the output quality meets your standard, then decide whether to invest in a more custom build.
The funnel didn’t transform my business. It fixed a specific, expensive problem — slow, inconsistent first contact — and gave me back time I now use on work that actually requires me specifically. That’s the honest version of what it does.
If you’re at the point where you’re losing leads to slow follow-up and you’ve been meaning to fix it for months, stop meaning to and start building. The Claude API documentation at docs.anthropic.com is clear enough that you can get a basic version running in a weekend. I did it in four evenings while running a full client week in parallel. If I can do it, the barrier is lower than it looks from the outside.
Want to see the exact prompt structure I use for my Madeira real estate leads? I’m putting together a short guide with the system prompt template, the Python script skeleton, and the Airtable setup I use. Drop your email in the form below and I’ll send it when it’s ready.
Robson Penassi
Real estate consultant in Madeira, Portugal. Solopreneur since 2012. Testing AI tools since 2023 to automate his one-person business. Writes about what actually works — and what does not.
More articles by Robson →