If you’re tired of manual lead work, this ai automation tools tutorial shows you how to scrape fresh contacts, enrich them with AI‑written intro lines, and send them through Gmail — all without touching a keyboard. The core stack uses Make, Apify, and GPT‑4. After reading you’ll have a working automation that runs on autopilot.
What most guides get wrong about AI automation
Many tutorials treat AI like a magic button that solves everything. They show a single prompt and claim the job is done. In reality the brittle parts are the data collection and the handoff between services. If the scraper returns malformed JSON, the whole chain stops. If the AI output exceeds the token limit, the email gets cut off. Guides rarely mention that you need validation steps and fallback paths.
Another common mistake is ignoring rate limits. Apify actors can be throttled if you run them too often, and Make will silently drop operations once you exceed your plan. I’ve seen pipelines that look perfect in a test run but fail after a few hundred leads because nobody added a delay or a retry block.
How do you stop GPT‑4 from making up phone numbers?
When you ask the model to enrich a contact with a phone number, it sometimes hallucinates a plausible‑looking string. That’s a problem because you’ll end up sending SMS to a random person or, worse, triggering spam filters. The fix is simple: ask the model to return “null” when it isn’t sure, then replace null with a placeholder that your later step can filter out.
AI Side Hustles
Practical setups for building real income streams with AI tools. No coding needed. 12 tested models with real numbers.
Get the Guide → $14
Here’s the prompt I use in a Make HTTP module that calls the OpenAI API:
Given the following business name and address, return a JSON object with the fields “email” and “phone”. If you cannot find a reliable phone number, set phone to null. Do not invent anything.
Business: {{1}}
Address: {{2}}Return only valid JSON.
The double curly braces are Make’s syntax for mapping data from previous steps. After the AI step I add a router: if phone is null, send the record to a “needs review” branch; otherwise continue to the email composer.
A concrete example: scraping Google Maps with Apify and writing intros in Make
Let’s walk through a real scenario I ran last month for a local SEO agency. The goal was to get 500 verified dentists in Austin, TX, then send each a personalized cold email offering a free website audit.
- In Apify I used the Google Maps Scraper actor. I set the search query to “dentist Austin TX” and limited results to 500. The actor costs $0.01 per result, so the scrape ran for about $5.00.
- The output was a JSON array with fields like “name”, “address”, “website”, and “phone”. I fed this into Make via a webhook.
- Make’s first module parsed the JSON and passed each record to an OpenAI call (GPT‑4‑turbo). The prompt asked for a short, friendly intro line that mentions a recent review or a service offered on the website. I limited the response to 20 tokens to keep costs low.
- Next I used Gmail’s “Send Email” action. The subject line was static: “Quick question about {{name}}”. The body combined the AI‑generated intro, a one‑sentence pitch, and a Calendly link.
- Finally I added a error handler: if any module returned a non‑200 status, the scenario posted a message to a Slack channel and paused the run for manual inspection.
The whole scenario cost roughly $8 for the Apify scrape, $0.002 per OpenAI call (about $1 for 500 contacts), and nothing for Make because I stayed within the free tier’s 1,000 operations. In total it was under $10 for a full batch.
One thing I love about this setup is how Make’s error handling lets you route failed scrapes to a Slack alert so you never miss a broken run. — and good luck finding docs for this — but once you see the pattern it’s trivial to copy.
