One week ago I've launched my first cold mail campaign for Produkt.so platform. At the time, the only users of Produkt.so was me and my friend from university. We both used Produkt.so for hosting Help Center for two sideprojects, with pretty big audience (AED Map has about 800 Daily Active Users if you're curious). However I felt that state of product was mature enough to show it to the world.
My plan was simple:
- Get few hundreds of emails
- Write very simple mail copy
- Launch campaign
- Analyze numbers
Getting emails
The idea to get emails wasn't that much elegant. Because my target audience is basically other SaaS founders, I've
scraped few SaaS directory sites - such as ProductHunt, IndieHackers and few others.
Cursor wrote for me very simple BeautifulSoup-based script in Python that will extract startups urls into txt file.
After running it I got about 1000 urls to various SaaS products. Entire processing took about 1 hour (50 minutes was a busy scraper time, not code development). I checked few links and it seemed that around ~30-40% of links navigated me to some scrappy products.
Next, I've imported those urls into Google Sheets and made n8n workflow that will connect to another Golang-written tool which will extract emails for given url. Source code for the Email Extractor is here.
After workflow run, I got about 370 startup urls with filled email.

Mail Copy
I knew that trustworthy mail copy is crucial. Before mail campaign I have read some advices from Y Combinator materials and they suggested, that for first mail campaign mail copy should be extremely simple and it should feel that it was done manually. I've decided to use following copy:
And for mail subject I used:
My main goal during this campaign was to make those emails personalized. I've heavily utilized n8n and OpenAI gpt-5-nano model.
I used LLM to fetch informations about startup (using web capability) and write personalized mail copy and subject by replacing XYZ fragments.
Full prompt can be found here.
Also I've placed ?utm_source=coldmail query param in links to Produkt.so, in order to track opens.

Campaign launch
The next step was to send emails. I've also created n8n workflow to do this. To build credibility, I was sending emails from my personal Gmail account - I'm not sure if it was good idea, but deliverability was very strong.

Numbers
I did not track open rate, however I knew number of link clicks due to ?utm_source=coldmail tag. I knew that emails for 307 startups were successfully delivered.
To summarize, 11.5% of emails resulted in actual link open. I consider it quite good.

However, 35 clicks resulted in only one sign-up on platform. This is strong indicator that landing page is not converting well and next weeks will be focused on optimizing it. Probably I will rerun campaign after improving landing page.
Also 5 people replied to mail email and show interest in Produkt.so.
Summary
Overall I'm surprised over those results, because it was my first attempt to do cold mail campaign. Key insights that this experiment will teach me:
- my mail copy was okay, I think I will continue to use it.
- landing page is not converting well - I'm not surprised by that, because I also feel that landing page is very scrappy right now.
Thanks for reading - if you have any questions, feel free to ask me at mateusz@produkt.so.


