people keep asking how the personalization works, so heres the actual system architecture. nothing proprietary here — its all python and common sense.
step 1: prospect discovery
i scrape yellow pages and google for businesses in a target industry + city. pull name, email, website. takes about 30 seconds per page of results. dedup by email.
step 2: website scanning
this is where it gets interesting. for each prospect, my seo analyzer hits their website and extracts:
this takes about 2-3 seconds per site. for 500 prospects thats ~25 minutes of scanning.
step 3: template selection
i have 3 email templates. the system picks which one based on what it found:
each template has placeholders like {domain}, {missing_alt}, {total_images}, {seo_score} that get filled with real data.
step 4: daily sending
gmail lets you send about 25/day before deliverability starts dropping. so the system sends 25 each morning via smtp. 2.5 minute gap between each one. saves progress after every send so it picks up where it left off if anything crashes.
step 5: follow-ups
5 days after the initial email, anyone who didnt reply gets a follow-up. different angle, still personalized. the follow-up mentions their actual score and offers a free detailed report.
step 6: reply detection
every 30 minutes, the system checks gmail for replies. matches them against the sent log. when it finds one, it sends me a telegram alert with a suggested response based on what the person said.
the whole thing runs on cron jobs. i set it up once and it just goes. scanning happens at setup, sending at 9am, follow-ups at 3pm, reply checking every 30 min.
total lines of python: maybe 800 across all scripts. nothing fancy. requests, beautifulsoup, smtplib, json. runs on a linux server that costs $0 because its my dev machine.
the part that makes money isnt the code — its packaging it as a service so someone else doesnt have to think about any of this. they just get leads showing up in their inbox.
if youre building something similar, happy to share more details about any specific part.
Good breakdown of the generation side. The input side is where I'd pressure-test it: yellow pages + google scraping feeds the system unverified addresses, and at 500 sends/month even a 10% dead rate puts you around the bounce threshold where providers start filtering (≈2% hard bounces is the usual trip wire — 50 dead addresses is 50 strikes).
Cheap fix that protects the whole system: verification pass between scrape and send, plus a suppression list that remembers every bounce forever.
On the AI personalization itself: the strongest version I've seen doesn't compliment their website — it names the observable situation ("you're hiring an SDR," "you're running Meta ads for X"). Situations scale honestly; compliments scale awkwardly.
this is a solid system. one thing Ive noticed though is that even strong personalization struggles when the starting list is too cold. the same level of detail tends to work much better when the prospects are already close to the problem, because the context is there before the email even lands. in that case the personalization reinforces intent instead of trying to create it.