The Core Stack: What You Actually Need
Let’s get straight to it. Building this system requires four distinct components working together. You can’t just plug ChatGPT into your CRM and expect results. That’s a recipe for generic spam that gets you ignored. This is an operator playbook, not a magic trick.
Here’s the stack I use:
- A Trigger (Your CRM): This is where the process starts. A new contact is added to HubSpot, Pipedrive, Close, or whatever you use. The event is the trigger for everything that follows.
- An Orchestrator (No-Code Glue): This is the brain. It listens for the trigger and tells the other tools what to do. I use Make.com for this. You could also use n8n workflows if you prefer to self-host, but Make’s visual interface is faster for building and debugging. Its free plan is a joke for any real volume, so expect to pay.
- An Enrichment Engine: This is the secret sauce. This tool takes a name and email and finds real, useful data—LinkedIn profile, company details, recent news. My go-to is Clay. It’s built for exactly this kind of chained, waterfall enrichment. It’s not cheap, but it replaces hours of tedious manual work.
- An LLM for Synthesis: This is the writer. It takes the structured data from the enrichment engine and drafts the email. I prefer using the API from Anthropic (specifically Claude 3 Sonnet) over OpenAI for this. It’s fast, cheap, and I find its tone for professional writing is often better out of the box.
That’s it. A trigger, an orchestrator, an enricher, and a writer. Don’t overcomplicate it.
What Most AI-Powered CRM Automation Tutorial Guides Get Wrong
Almost every guide I’ve seen on this topic makes a critical error. They focus entirely on the LLM, showing a simple prompt like: “Write a cold email to {firstName} at {companyName}.”
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
This is fundamentally broken.
An LLM with no context is just a template engine. It produces generic, soulless garbage that screams “I am an automated email.” It fails because the prompt is weak. The magic isn’t in the LLM; it’s in the quality and structure of the data you feed it. My biggest gripe with this whole space is people selling the idea of a one-click AI writer. It doesn’t exist. You have to do the work of gathering the inputs.
The second thing they get wrong is suggesting full automation from the start. Never, ever, have an AI send a cold email without a human reviewing it first. You will eventually send something embarrassing or nonsensical to a high-value lead. The goal here is not to replace the salesperson; it’s to arm them with a perfect, context-aware draft so they can hit “send” in five seconds instead of spending twenty minutes researching.
Finally, they ignore the failure cases. What happens when your enrichment tool finds nothing? A poorly built scenario will either crash or send a broken email with empty variables. A real production system has to account for this.
Step-by-Step: Building the Lead Enrichment and Draft Engine in Make.com
Alright, let’s build the core flow. This is a simplified version, but it’s the 80% that delivers most of the value. We’ll use Make.com as our no code AI orchestrator.
The flow looks like this: CRM Trigger -> Clay Enrichment -> LLM Draft -> CRM Update.
- Set Up the Trigger: In Make.com, create a new scenario. The first module will be your CRM’s app. For HubSpot, you’d choose the “Watch CRM Objects” module and configure it to watch for newly created Contacts. This gives you the initial email and name.
- Enrich with Clay: Next, add a Clay module. You’ll use their “Run Company” action. You’ll need to have a pre-built “table” in Clay that performs a waterfall enrichment. (A waterfall just means it tries multiple methods in order. For example: first, find a person’s LinkedIn using their email. If that succeeds, get their company’s data. If it fails, stop.) This step is the most complex part of the entire system, as it involves setting up the logic inside Clay itself—and good luck finding clear docs for their more advanced features.
- Filter for Success: After the Clay module, add a Router. Create two paths. The first path has a filter: `LinkedIn Profile URL exists`. This is the success path. The second path is the failure path. It can lead to a Slack notification that says “Failed to enrich {email}” or just stop. This prevents errors downstream.
- Structure the LLM Prompt: On the success path, add your LLM module (e.g., Anthropic). This is where you craft the prompt. Do not just dump data in. Structure it. Here’s a prompt that actually works:
You are an expert sales development representative. Your task is to write a brief, personalized, and casual-sounding draft for a first-touch email. The goal is to get a reply.Here is the data about the lead:
- First Name: {{1.firstName}}
- Company Name: {{2.companyName}}
- Company Description: {{2.companyDescription}}
- Their Role: {{2.personRole}}
- Recent Company News: {{2.recentNewsHeadline}}Based ONLY on the data above, write a 3-4 sentence email draft. Start with "Hi {firstName},". Your final sentence must be a clear, low-friction question, like "Is this something you're thinking about?" or "Open to a brief chat next week?" Do not invent any information. If the company news is not relevant, do not mention it. The output should be only the email draft text, with no preamble.
- Update the CRM: The final step is to take the text generated by the LLM and put it back into your CRM. Add a HubSpot “Update a Record” module. Select the original contact ID from the trigger step. Find your custom field (e.g., “AI Email Draft”) and map the LLM’s output to it.
Now, when a new contact comes in, this system will, within a minute, enrich the contact and place a ready-to-send draft right inside their CRM record.
