Freelancers spend hours each week copying leads from LinkedIn, drafting cold emails, and chasing invoices. That time adds up to missed billable work and burnout. After reading this, you’ll be able to stitch together a simple AI agent that pulls leads, writes personalized outreach, and logs follow‑ups — all without writing a single line of traditional code.
It’s easier than you think.
How do you turn a cold email into a booked call without writing each line?
Start with a trigger: a new row in a Google Sheet where you add a lead’s name, company, and LinkedIn URL. Use Make to watch that sheet and send the data to an AI agent. The agent runs a prompt that asks GPT-4 to write a short, personalized email based on the lead’s recent activity. You can give the model a few examples of your own tone so it mimics you.
Make then sends the generated draft back to the sheet, where you review it in seconds. If it looks good, you click a button that pushes the email to Gmail via Make’s SMTP module. No copy‑pasting, no staring at a blank screen.
What you gain is a repeatable loop: lead → AI draft → quick check → send. The whole cycle can run under five minutes per lead once the workflow is live.
What most guides get wrong about AI agent chaining
Many tutorials treat each AI call as a isolated magic step. They show you how to ask GPT-4 for a subject line, then separately ask for a body, then again for a follow‑up. In practice, that creates a brittle chain where each step depends on the exact output of the previous one. If the model returns a subject line with extra punctuation, the next prompt fails because it expects plain text.
A better approach is to bundle the entire email into a single completion. Ask the model to return a JSON object with keys subject and body. Then parse that JSON in Make and feed the fields directly into your email module. This reduces the number of API calls and eliminates the hand‑off points where formatting errors creep in.
A concrete named example: building a lead‑gen scraper with Apify and GPT-4
Let’s walk through a real workflow I use for outbound consulting gigs. First, I run an Apify actor that scrapes LinkedIn for people with the title “Marketing Manager” in SaaS companies located in the US. The actor outputs a CSV with name, company, profile URL, and recent post snippet.
Next, I use Make to watch a Dropbox folder where the CSV lands. For each row, Make calls GPT-4 with a prompt that turns the snippet into a personalized ice‑breaker. The prompt looks like this:
You are a friendly freelancer who helps SaaS founders grow. Use the lead’s recent LinkedIn post to craft a one‑sentence comment that shows you read it and adds value. Keep it under 20 words.
Post: "{{post_snippet}}"
Ice‑breaker:
The double curly braces are Make’s syntax for inserting data from the previous step. The model returns a short line like “Loved your take on AI‑driven analytics — curious how you’re measuring ROI on the new dashboard?”
Make then writes that line back into the CSV, creates a draft email in Gmail that includes the ice‑breaker, and logs the run in Airtable for tracking. The whole process runs automatically every morning.
What I love: GPT-4’s ability to adopt my voice with just two or three examples. I gave it a couple of my own LinkedIn comments and it now mirrors my tone without sounding robotic.
My gripe: Apify’s error messages are vague. When the actor hits a rate limit, it simply says “Failed” with no hint about retrying after a pause. I had to dig into the forum to find that adding a 30‑second delay between runs solves it.
Price note: The Apify actor I use costs $15 per month for 10 k rows. Make’s core plan is $29/mo, which gives me enough operations for this workflow plus a few others. Airtable’s Plus tier at $20/mo holds my logs and is plenty for a solo freelancer. Altogether I spend under $70/mo to keep the pipeline running.
