Last month I needed a steady flow of qualified SaaS founders for a new outreach campaign. I had a ChatGPT Plus subscription, a the Make platform account, and a vague idea of how to chain prompts together. After a few failed attempts I built a working pipeline that now delivers 30‑40 fresh leads each day.
By the end of this guide you’ll be able to replicate that system, spot where it tends to break, and decide whether to assemble it yourself or grab the pre‑built vault blueprint.
The scenario: scraping LinkedIn for SaaS founders
I started with a simple goal: pull the names, titles, and company URLs of founders who posted about fundraising in the last 30 days. I used a public LinkedIn scraper (no login required) that outputs a CSV of profile URLs. The scraper runs on a cheap VPS and writes the file to a Dropbox folder that Make.com watches.
Make.com sees the new CSV, reads each row, and passes the LinkedIn URL to an alpha ai prompt that asks the model to extract the founder’s name, current title, and company domain. The prompt is short but specific, and I tell the model to return valid JSON only.
If the model returns JSON, Make.com writes the fields to an Airtable base. If it fails, the scenario logs the error and moves on.
That’s the core loop: scrape → extract → store. It runs every hour and keeps the base fresh.
What most guides get wrong about prompt chaining
Most tutorials treat the AI model like a black box that will magically format its output. They tell you to ask for “a summary” and then hope the model spits out clean text. In practice, the model will add explanations, apologies, or extra punctuation unless you constrain it.
What works better is to force a JSON schema directly in the prompt and to give the model a clear failure mode. I include the line “Return only a JSON object with the keys name, title, domain. If you cannot find the information, return {\”error\”:\”not found\”}.” This reduces the need for post‑processing and cuts down on hallucinated fields.
Another common mistake is to ignore token limits. If you feed the model a huge LinkedIn HTML snippet, you’ll quickly exceed the context window and get truncated responses. I strip the HTML to plain text and keep the payload under 800 tokens.
How to debug when the AI agent stops responding
When the pipeline stalls, the first place to look is the Make.com scenario log. Check the HTTP status code from the alpha ai call. A 429 means you’ve hit the rate limit; a 500 usually indicates malformed JSON from the model.
If you see a 429, pause the scenario for a few minutes and consider upgrading your alpha ai plan or adding a delay node. If you see a 500, examine the raw response in the log. Often the model has returned a markdown code block or an apology sentence.
To fix that, tighten the instruction: add “Do not include any extra text. Do not use markdown.” and re‑run the test with a small sample. You can also enable the “JSON mode” flag if your provider offers it, which guarantees valid JSON output.
Finally, verify that your Airtable base isn’t hitting its record limit per base. If you’re approaching the limit, archive old leads or switch to a different table.
A concrete example: prompt, tool, and cost
Here’s the exact prompt I use in the Make.com HTTP module (POST to https://api.alphaai.com/v1/complete):
{
"model": "alphaai‑pro",
"messages": [
{
"role": "system",
"content": "You are a data extraction assistant. Return only a JSON object with the keys name, title, domain. If you cannot find the information, return {\"error\":\"not found\"}. Do not add any extra text."
},
{
"role": "user",
"content": "Extract the founder's name, current title, and company domain from the following LinkedIn profile text:\n\n{{linkedin_text}}"
}
],
"temperature": 0.2
}
The {{linkedin_text}} placeholder is replaced by Make.com with the cleaned plain‑text snippet from the LinkedIn scraper.
On the cost side, the alpha ai Pro plan is $49 per month and includes 2 M tokens. My pipeline uses roughly 150 k tokens per month, so I’m well within the limit. Make.com’s core plan is $16/mo for the number of operations I need, and Airtable’s Plus tier is $12/mo. Altogether the stack runs under $80/mo, which I consider fair for the volume of leads it delivers.
Reader question: Why does the AI agent stall after 50 leads?
You might notice that after processing about fifty records the scenario starts throwing 429 errors even though your token usage looks low. The culprit is often the LinkedIn scraper: it sends requests too fast and gets temporarily blocked by LinkedIn’s anti‑bot measures.
When the scraper is blocked, it returns empty or error pages, which the alpha ai prompt then fails to parse, causing the model to return an error JSON that Make.com treats as a failure. The failure triggers a retry, and the retry loop quickly consumes your alpha ai rate limit.
The fix is to add a random delay node between each scrape request—between 2 and 5 seconds—and to respect LinkedIn’s robots.txt by limiting the scraper to one request per second per IP. After adding that delay the stall disappeared and the pipeline now runs smoothly for hundreds of leads per day.
One‑sentence paragraph: I’ve seen this pattern break for others who tried to scrape LinkedIn without any throttling.
Putting it all together: the mini‑pipeline
To recap, the flow is:
- Scrape LinkedIn and drop a CSV into Dropbox.
- Make.com watches the folder, reads each row, and extracts plain text from the profile.
- Make.com POSTs the text to alpha ai with the JSON‑forcing prompt above.
- If the response is valid JSON, Make.com writes name, title, domain to Airtable.
- If the response contains an error or fails validation, the scenario logs the issue and continues.
With the delay node and the JSON‑forcing prompt the system is reliable enough to run unattended. I check the Airtable view once a day to pull the latest leads into my outreach sequencer.
For more on this exact angle, deeper coverage of AI agent platforms.
If you’d rather skip the build and deploy a working version in an afternoon, we’ve packaged this workflow as a blueprint at deepusecase.com/vault.
