| name | marketing-for-founders-saas-growth |
| description | Access curated marketing strategies and channels to acquire the first 10/100/1000 users for SaaS products and startups |
| triggers | ["how do I get my first users for my startup","where can I launch my SaaS product","show me marketing strategies for early stage startups","help me create a product hunt launch plan","what are the best channels to promote my app","how do I do cold outreach for my SaaS","give me a go-to-market strategy for founders","where should I post about my new product"] |
Marketing for Founders - SaaS Growth Skill
Skill by ara.so — Marketing Skills collection.
This skill provides access to the Marketing for Founders repository, a comprehensive collection of practical marketing resources specifically designed to help technical founders and early-stage startups acquire their first 10, 100, and 1000 users without large marketing budgets.
What This Resource Covers
The Marketing for Founders collection provides actionable strategies across multiple marketing channels:
- Launch Platforms: 50+ directories and communities to announce your product
- Product Hunt Strategy: Complete launch playbooks and templates
- Social Media Marketing: Building in public and social listening tactics
- Cold Outreach: Sales frameworks and ICP templates
- SEO & Content: Organic growth strategies
- Reddit Marketing: Community engagement guidelines
- Email Marketing: List building and nurturing
- Conversion Optimization: Landing page and pricing strategies
- Idea Validation: User research frameworks
Installation & Access
This is a curated resource list, not an installable package. Access it via:
git clone https://github.com/EdoStra/Marketing-for-Founders.git
cd Marketing-for-Founders
cat README.md
Or bookmark the GitHub repository: https://github.com/EdoStra/Marketing-for-Founders
Key Marketing Channels & Strategies
1. Launch Platform Strategy
When launching a new product, target multiple platforms simultaneously:
## Launch Checklist Template
### Pre-Launch (1 week before)
- [ ] Product Hunt: Prepare hunter, gallery images, tagline
- [ ] Hacker News: Draft Show HN post
- [ ] Reddit: Identify 3-5 relevant subreddits
- [ ] Indie Hackers: Complete product profile
- [ ] Betalist/Microlaunch: Submit application
### Launch Day
- [ ] Post to Product Hunt (12:01 AM PST)
- [ ] Share on Hacker News
- [ ] Post to Reddit communities (check rules)
- [ ] Announce on LinkedIn/Twitter
- [ ] Email existing subscribers
### Post-Launch (1 week after)
- [ ] Submit to 10+ directories (G2, Capterra, AlternativeTo)
- [ ] Respond to all comments/feedback
- [ ] Document metrics (traffic, signups, conversions)
Primary Launch Platforms:
- Product Hunt: Best for tech products, prepare 2 weeks in advance
- Hacker News: Show HN format, honest/technical approach
- Betalist: Early-stage products, focus on beta testers
- Indie Hackers: Community-first, build relationships before launching
2. Product Hunt Launch Framework
const productHuntLaunch = {
preparation: {
timeline: "2-3 weeks before launch",
tasks: [
"Create compelling gallery (6+ images)",
"Write clear tagline (60 chars max)",
"Prepare maker comment (explain problem/solution)",
"Line up 10+ supporters for launch day",
"Schedule launch for Tuesday-Thursday 12:01 AM PST"
]
},
launchDay: {
schedule: [
{ time: "00:01 PST", action: "Go live on Product Hunt" },
{ time: "00:05 PST", action: "Post maker comment" },
{ time: "06:00 PST", action: "Tweet announcement" },
{ time: "09:00 PST", action: "LinkedIn post" },
{ time: "All day", action: "Respond to every comment within 1 hour" }
]
},
metrics: {
target: {
upvotes: 300,
comments: 50,
clickthrough: "15%",
signups: 200
}
}
};
function trackLaunchMetrics() {
{
source,
signups,
conversions,
: (conversions / signups * ).() + ,
: ().()
};
}
.((, , ));
3. Building in Public on Social Media
from datetime import datetime, timedelta
def generate_bip_content_calendar(product_name, launch_date):
"""
Generate a 30-day Building in Public content calendar
"""
calendar = []
start_date = datetime.strptime(launch_date, "%Y-%m-%d") - timedelta(days=30)
content_themes = [
"Problem Discovery", "Solution Design", "Tech Stack Choice",
"Development Update", "Design Decisions", "Feature Showcase",
"Challenges & Learnings", "Metrics Update", "User Feedback",
"Launch Preparation"
]
for i in range(30):
post_date = start_date + timedelta(days=i)
theme = content_themes[i % len(content_themes)]
calendar.append({
"date": post_date.strftime("%Y-%m-%d"),
"theme": theme,
"platforms": ["Twitter", "LinkedIn"],
"format": "Text + Screenshot" if i % 3 == 0 else "Text only"
})
return calendar
launch_plan = generate_bip_content_calendar("MyStartup", "2025-06-15")
for post in launch_plan[:]:
()
Building in Public Best Practices:
- Share weekly progress updates with metrics
- Post behind-the-scenes development screenshots
- Ask questions to engage your audience
- Share failures and lessons learned (builds trust)
- Use consistent posting schedule (3-5x per week)
4. Cold Outreach & Sales Strategy
class IdealCustomerProfile {
constructor(config) {
this.firmographics = config.firmographics || {};
this.demographics = config.demographics || {};
this.psychographics = config.psychographics || {};
this.behaviors = config.behaviors || {};
}
validate(prospect) {
const scores = {
company_size: this.matchCompanySize(prospect.employees),
industry: this.matchIndustry(prospect.industry),
role: this.matchRole(prospect.job_title),
pain_point: this.matchPainPoint(prospect.challenges)
};
const totalScore = Object.values(scores).reduce((a, b) => a + b, 0);
return totalScore / Object.keys(scores).length;
}
() {
{ min, max } = ..;
(employees >= min && employees <= max) ? : ;
}
() {
...(industry) ? : ;
}
() {
...(
title.().(t.())
) ? : ;
}
() {
...(
challenges.(p)
) ? : ;
}
}
devToolICP = ({
: {
: { : , : },
: [, , ],
:
},
: {
: [, , , ],
: [, , , ]
},
: {
: [
,
,
,
],
: [, , ]
}
});
prospect = {
: ,
: ,
: ,
: ,
: [, ]
};
.();
Cold Email Template Structure:
Subject: Quick question about [specific pain point] at [Company]
Hi [First Name],
I noticed [specific trigger - recent funding/job post/company news] and
thought you might be dealing with [pain point].
We're helping [similar companies] [specific outcome] by [brief solution].
[Social proof - "Company X reduced Y by Z%"]
Worth a 15-min chat?
[Your Name]
[Title]
P.S. [Personalized note about their company/content]
5. Social Listening & Engagement
import os
from datetime import datetime
class SocialListeningSetup:
"""
Setup social listening for high-intent mentions
"""
def __init__(self, product_name, category):
self.product_name = product_name
self.category = category
self.keywords = self.generate_keywords()
def generate_keywords(self):
"""Generate BOFU (Bottom of Funnel) keywords to track"""
return {
"problem_aware": [
f"struggling with {self.category}",
f"{self.category} problems",
f"frustrated with {self.category}",
f"{self.category} not working"
],
"solution_aware": [
f"looking for {self.category} tool",
f"recommendations for {self.category}",
f"best {self.category} software",
f"{self.category} alternatives"
],
"competitor_mentions": [
f"[Competitor] vs",
f"alternative to [Competitor]",
f"[Competitor] review",
f"switching from [Competitor]"
]
}
():
all_keywords = []
category, keywords .keywords.items():
all_keywords.extend(keywords)
{
: ,
: all_keywords,
: [, ],
: ,
:
}
():
base_url =
urls = []
category, keywords .keywords.items():
keyword keywords:
search_query = keyword.replace(, )
urls.append({
: category,
: keyword,
:
})
urls
listener = SocialListeningSetup(, )
f5_config = listener.f5bot_setup()
()
()
kw f5_config[][:]:
()
reddit_urls = listener.reddit_search_urls()
()
url reddit_urls[:]:
()
6. SEO & Content Marketing Strategy
const seoContentStrategy = {
primaryKeywords: [
{ keyword: "[tool category] for developers", difficulty: "medium", volume: 2400 },
{ keyword: "best [tool] for [framework]", difficulty: "medium", volume: 1800 },
{ keyword: "[problem] solution", difficulty: "low", volume: 900 }
],
contentFormats: [
{
type: "Comparison Guide",
template: "[Your Tool] vs [Competitor] vs [Competitor]",
example: "Vite vs Webpack vs Parcel: Complete Comparison 2025",
seoValue: "high",
conversionValue: "high"
},
{
type: "Integration Tutorial",
template: "How to integrate [Your Tool] with [Popular Framework]",
example: "How to use Tailwind CSS with Next.js 14",
seoValue: "medium",
conversionValue: "medium"
},
{
type: ,
: ,
: ,
: ,
:
},
{
: ,
: ,
: ,
: ,
:
}
],
() {
postsPerMonth = .(monthlyBudget / );
{
: [, , ],
: [, , ],
: [, , ],
:
};
}
};
() {
ideas = [];
competitors.( {
ideas.({
: ,
: ,
:
});
});
competitors.( {
ideas.({
: ,
: ,
:
});
});
ideas;
}
contentIdeas = (
,
,
[, , ]
);
.();
contentIdeas.(, ).( {
.();
});
7. Reddit Marketing Strategy
class RedditMarketingStrategy:
"""
Track Reddit marketing activities across relevant subreddits
"""
def __init__(self):
self.subreddits = self.get_relevant_subreddits()
def get_relevant_subreddits(self):
"""
Categorized subreddits for SaaS/startup marketing
"""
return {
"launch": [
{"name": "r/SideProject", "rules": "Use Show & Tell flair", "size": "500k+"},
{"name": "r/alphaandbetausers", "rules": "Alpha/Beta only", "size": "100k+"},
{"name": "r/roastmystartup", "rules": "Open to feedback", "size": "50k+"},
{"name": "r/IMadeThis", "rules": "Original work only", "size": "200k+"}
],
"developer_tools": [
{"name": "r/webdev", "rules": "Showoff Saturday only", "size": "1M+"},
{"name": , : , : },
{: , : , : }
],
: [
{: , : , : },
{: , : , : }
]
}
():
subreddit_name.lower():
subreddit_name.lower():
:
():
{
: [, , ],
: [, , ],
: [
,
,
],
:
}
():
[
,
,
,
,
,
,
]
reddit_strategy = RedditMarketingStrategy()
()
()
category, subreddits reddit_strategy.subreddits.items():
()
sub subreddits:
()
()
timing = reddit_strategy.timing_strategy()
()
()
()
(reddit_strategy.generate_post_template())
8. Email Marketing & List Building
class EmailMarketingCampaign {
constructor(config) {
this.listSize = config.listSize || 0;
this.sequences = this.initializeSequences();
}
initializeSequences() {
return {
welcome: {
name: "New User Onboarding",
emails: [
{
day: 0,
subject: "Welcome to [Product]! Here's how to get started",
goal: "Activate user",
cta: "Complete setup"
},
{
day: 2,
subject: "[First Name], stuck? Here's a quick tutorial",
goal: "Drive feature adoption",
cta: "Watch 2-min video"
},
{
day: 5,
subject: "3 ways [Product] saves you time every day",
goal: "Show value",
cta: "Explore features"
},
{
day: 10,
subject: ,
: ,
:
}
]
},
: {
: ,
: [
{
: ,
: ,
: ,
:
},
{
: ,
: ,
: ,
:
},
{
: ,
: ,
: ,
:
},
{
: ,
: ,
: ,
:
},
{
: ,
: ,
: ,
:
}
]
},
: {
: ,
: [
{
: ,
: ,
: ,
:
},
{
: ,
: ,
: ,
:
},
{
: ,
: ,
: ,
:
}
]
}
};
}
() {
{
sent,
opened,
clicked,
converted,
: ((opened / sent) * ).() + ,
: ((clicked / opened) * ).() + ,
: ((converted / sent) * ).() +
};
}
() {
.[type];
}
}
emailCampaign = ({ : });
welcomeSequence = emailCampaign.();
.();
welcomeSequence..( {
.();
.();
.();
.();
});
campaignMetrics = emailCampaign.(
,
,
,
);
.();
.();
.();
.();
9. Conversion Rate Optimization
class LandingPageOptimizer:
"""
Framework for testing and improving SaaS landing page conversions
"""
def __init__(self, product_name):
self.product_name = product_name
self.elements = self.critical_elements()
def critical_elements(self):
"""
Critical elements that impact conversion rates
"""
return {
"hero_section": {
"headline": {
"formula": "[Outcome] for [Audience] without [Pain Point]",
"example": "Ship features faster without technical debt",
"test_variations": [
"Outcome-focused",
"Problem-focused",
"Audience-focused"
]
},
"subheadline": {
"formula": "Explain how in 1-2 sentences",
"max_length": 150,
"include_social_proof": True
},
"cta": {
"primary": "Start Free Trial",
"alternatives": [
"Get Started Free",
"Try [Product] Now",
"Start Building"
],
: ,
:
}
},
: {
: [
,
,
,
,
],
:
},
: {
: ,
: {
: ,
: ,
:
},
:
},
: {
: [
,
,
,
]
}
}
():
{
: [
{
: ,
: ,
: ,
:
},
{
: ,
: ,
: ,
:
},
{
: ,
: ,
: ,
:
},
{
: ,
: ,
: ,
:
}
],
: ,
: ,
:
}
():
{
: [
{
: ,
: ,
:
},
{
: ,
: ,
:
},
{
: ,
: ,
:
},
{
: ,
: ,
:
},
{
: ,
: ,
:
},
{
: ,
: ,
:
}
],
: :
}
():
optimizer = LandingPageOptimizer()
()
()
section, details optimizer.elements.items():
()
()
()
test_framework = optimizer.ab_test_framework()
test test_framework[]:
test[]:
(