Most "AI cold email" setups are mail merge with extra steps: Hi {{first_name}}, I love what {{company}} is doing! The model has never seen the company. So it guesses — wrong industry, invented product names, imaginary funding rounds. Reply rate: zero. Domain reputation: worse.
I wanted the opposite: an n8n workflow where the model cannot write about a lead without evidence. Here's how it works, and the part that surprised me — teaching it to refuse was more valuable than teaching it to write.
The pipeline
Google Sheet (leads) → filter new rows → HTTP fetch each lead's website
→ extract body text → LLM writes ONE email grounded in that text






