Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Uses rotating lenses (7 different daily perspectives) to discover trending topics from HackerNews, HN Algolia, DEV.to, GitHub, arXiv, Stack Exchange, GDELT, SerpAPI, YouTube, Reddit, Twitter/X, and Instagram. Generates actionable Micro-SaaS ideas using deep research with viability scoring (0-100), enhanced templates, and JTBD framework. Daily automated discovery with deduplication. Use when: (1) User asks for SaaS/startup ideas, (2) User wants to discover trending topics in tech/business, (3) Da
.claude/skills/valtterimelkko-saas-idea-finder/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 298% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 198% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 155% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 269% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 286% | 0% |
Automatically discover trending topics from multiple sources and generate actionable Micro-SaaS ideas based on real research and market signals.
This skill implements a 3-stage pipeline that:
Uses a rotating lens system (7 daily perspectives) to ensure fresh, diverse ideas with automatic deduplication.
Total Pipeline Duration: ~3-6 minutes per topic
| Stage | Component | Expected Time | Notes | |-------|-----------|---------------|-------| | Stage 1: Discovery | | ~30-60s | | | | HackerNews | 2-3s | Fast, reliable | | | GitHub | 3-5s | Depends on API response | | | DEV.to | 2-3s | Usually fast | | | HN Algolia | 2-3s | Fast | | | NewsAPI | 2-3s | Fast | | | Product Hunt | 2-3s | Fast | | | arXiv | 2-3s | Fast | | | Stack Exchange | 2-3s | Fast | | | GDELT | 2-3s | May timeout occasionally | | | SerpAPI | 2-3s | Optional, may be skipped | | | YouTube | 2-3s | Fast | | | Reddit | ~18-25s | Sequential fetches with rate limiting (4 subreddits × ~5s) | | | Twitter/X | ~15-25s | 8 parallel queries with 15s timeout each | | Stage 2: Research | GPT Researcher | ~2-4 min | Web scraping + LLM analysis | | Stage 3: Synthesis | Idea Generation | ~30-60s | LLM idea generation + viability scoring |
Factors that increase time:
Factors that decrease time:
Maximum acceptable time: 10 minutes (with 600s timeout buffer)
If pipeline exceeds 10 minutes, it likely indicates:
This skill uses the shared credential loading system with the following hierarchy:
~/.bashrcExample shell startup file setup:
bashexport GITHUB_TOKEN="ghp_your_token" export OPENROUTER_API_KEY="sk-or-v1-your_key" export STACK_KEY="your_stack_key" export SERPAPI_KEY="your_serpapi_key" export YOUTUBE_API_KEY="your_youtube_key" export TWITTERAPI_KEY="your_twitterapi_key"
For openclaw service user (add to vault):
bash# GitHub token (optional, only for GitHub trend discovery) vault kv put secret/skills-apis/github token="ghp_your_token" # OpenRouter API key (required for research and idea generation) vault kv put secret/skills-apis/openrouter api_key="sk-or-v1-your_key" # Stack Exchange API (for Stack Overflow pain point discovery) vault kv put secret/skills-apis/stackexchange value="your_stack_key" # SerpAPI (for search validation and keyword trends) vault kv put secret/skills-apis/serpapi value="your_serpapi_key" # YouTube Data API (for content gap analysis) vault kv put secret/skills-apis/youtube value="your_youtube_key" # TwitterAPI.io (for Twitter/X trend discovery) vault kv put secret/skills-apis/twitterapi/api_key value="your_twitterapi_key"
Environment variables (for testing or CI/CD):
bashexport GITHUB_TOKEN="ghp_your_token" export OPENROUTER_API_KEY="sk-or-v1-your_key" export STACK_KEY="your_stack_key" export SERPAPI_KEY="your_serpapi_key" export YOUTUBE_API_KEY="your_youtube_key"
| API | Free Tier | Key Required | |-----|-----------|--------------| | Stack Exchange | 10,000 requests/day | STACK_KEY | | arXiv | Unlimited | No key required | | GDELT | Unlimited | No key required | | SerpAPI | 250 searches/month | SERPAPI_KEY | | YouTube Data API | 10,000 units/day | YOUTUBE_API_KEY | | TwitterAPI.io | $0.10-$1.00 free credits | TWITTERAPI_KEY | | Xpoz Social | 5,000 credits (one-time) | Xpoz OAuth (Instagram only) |
TwitterAPI.io Credit Information:
Xpoz Credit Information (Instagram only):
Credits = (Queries × 5) + (Results × 0.005)Note: Reddit and Twitter/X are now self-hosted/managed API and do NOT use Xpoz credits. Only Instagram requires Xpoz.
The skill includes social media trend detection from:
| Platform | Source | Authentication | Rate Limit | |----------|--------|----------------|------------| | Reddit | Self-hosted JSON API | OAuth2 (recommended) or None | 100/min with OAuth2, 10/min without | | Twitter/X | TwitterAPI.io | TWITTERAPI_KEY | 1,000+ req/sec | | Instagram | Xpoz MCP | Xpoz OAuth (optional) | Via Xpoz credits |
Reddit: Uses Reddit's public .json endpoints with automatic rate limiting and User-Agent rotation.
Twitter/X: Uses TwitterAPI.io direct REST API. Fast, cost-effective ($0.15/1k tweets).
Instagram: Optional Xpoz MCP integration (requires Xpoz credits).
For reliable Reddit scraping, set up OAuth2:
SaaSIdeaFinder (or any name)http://localhost:8080 (not used but required)bash export REDDIT_CLIENT_ID="your_client_id" export REDDIT_CLIENT_SECRET="your_client_secret"
Or add to vault:
bashvault kv put secret/skills-apis/reddit client_id="your_id" client_secret="your_secret"
To enable Twitter/X scraping via TwitterAPI.io:
bash export TWITTERAPI_KEY="your_api_key"
Or add to vault:
bashvault kv put secret/skills-apis/twitterapi/api_key value="your_api_key"
To enable Instagram scraping via Xpoz:
~/.xpoz/token.txt (or vault: secret/skills-apis/xpoz/bearer_token)See ~/.xpoz/SETUP_INSTRUCTIONS.md for detailed steps.
Note: The skill works without Xpoz - Reddit and Twitter/X are always available via self-hosted/managed APIs.
Each lens includes social platform configurations:
| Lens | Reddit | Twitter | Instagram | |------|--------|---------|-----------| | DevTools & AI | webdev, programming, MachineLearning | #buildinpublic, #AIdev, #devtools | codelife, developer, aitools | | Business SaaS | Flipping, Etsy, AmazonFBA | #reseller, #ecommerce, #smallbusiness | etsyshop, smallbusinessowner | | AI/ML | MachineLearning, ChatGPT, LocalLLaMA | #AI, #LLM, #ChatGPT | aitools, artificialintelligence | | Data & Analytics | dataengineering, datascience | #dataviz, #analytics | datavisualization, analytics | | Productivity | devops, nocode, selfhosted | #automation, #nocode | automation, productivity | | Design & Frontend | webdev, reactjs, css | #frontend, #webdesign | webdesign, uidesign | | Infrastructure | devops, kubernetes, docker | #DevOps, #Kubernetes | devops, cloudcomputing |
bashcd ./skills/saas-idea-finder python3 scripts/run_full_pipeline.py
This automatically:
~/.saas-idea-finder/outputs/bash# Generate more ideas per topic python3 scripts/run_full_pipeline.py --topics 2 # Include detailed viability analysis python3 scripts/run_full_pipeline.py --include-viability # Filter by minimum viability score python3 scripts/run_full_pipeline.py --min-viability 60 # Filter by pain threshold python3 scripts/run_full_pipeline.py --pain-threshold 50 ### Advanced Options
python3 scripts/run_full_pipeline.py --include-viability
python3 scripts/run_full_pipeline.py --pain-threshold 60
python3 scripts/run_full_pipeline.py --min-viability 70
python3 scripts/run_full_pipeline.py --pain-threshold 70 --min-viability 75
## How It Works
### Smart Topic Discovery
The skill uses an **intelligent topic extraction system** that:
1. **Filters non-SaaS topics**: Automatically removes open-source lists ("awesome-X"), tutorials, courses, free books, and other non-commercial content
2. **Deduplicates**: Merges similar topics (e.g., "local-first software" and "software: local first")
3. **Cross-source validation**: Prefers topics appearing in multiple sources
4. **Smart scoring**: Weights engagement metrics differently per source
Topics are excluded if they contain keywords like:
- `free`, `open source`, `tutorial`, `course`, `book`, `roadmap`
- `awesome-list`, `cheatsheet`, `guide`, `curated`
- High-star repos without monetization indicators
### Rotating Lens System
7 lenses rotate daily (Monday-Sunday), each focusing on different domains:
| Day | Lens | Focus |
|-----|------|-------|
| Mon | **Developer Tools** | CLI tools, dev productivity |
| Tue | **Business SaaS** | B2B solutions for SMBs |
| Wed | **AI/ML** | AI-powered tools, LLMs |
| Thu | **Data & Analytics** | BI, dashboards |
| Fri | **Productivity & Automation** | Workflow tools, no-code |
| Sat | **Design & Frontend** | UI components, design systems |
| Sun | **Infrastructure & DevOps** | Cloud, Kubernetes, monitoring |
### 3-Stage Pipeline
**Stage 1: Trend Discovery** - Aggregates from:
- **HackerNews**: Top stories, Show HN, Ask HN (55+ posts)
- **HN Algolia**: Keyword-based search for lens-specific topics (15-20 stories)
- **DEV.to**: Trending articles from developer community (20-30 posts)
- **GitHub**: Trending repositories (30 repos, requires token)
- **arXiv**: Research trends and emerging tech papers (recent submissions)
- **Stack Exchange**: Unanswered questions = pain points (high-engagement questions)
- **GDELT**: Global news events and technology trends (breaking tech news)
- **SerpAPI**: Search validation and keyword trends (Google search insights)
- **YouTube**: Content gaps and trending tech videos (tech tutorial analysis)
- **Reddit (Self-Hosted)**: Subreddit-specific pain points via public JSON API
- No authentication required
- Automatic rate limiting and User-Agent rotation
- Real pain point detection from discussions
- **Twitter/X (TwitterAPI.io)**: Hashtag-based trend discovery
- Direct REST API integration
- Fast, cost-effective data extraction
- Pain point detection from tweets
- **Instagram (Xpoz)** (Optional): Engagement-based trend discovery
- Cross-platform validation for trending topics
- Requires Xpoz credits
**Stage 2: Deep Investigation** - GPT Researcher analyzes with 40+ sources
**Stage 3: SaaS Synthesis** - AI generates 3-5 structured Micro-SaaS ideas with:
- Viability scoring (0-100)
- Pain point severity scoring (0-100)
- JTBD (Jobs-to-be-Done) framework analysis
- Market sizing (TAM/SAM/SOM estimates)
- Competition analysis
- Unit economics projections
## Viability Scoring (0-100)
Each generated SaaS idea receives a viability score based on 8 weighted categories:
| Category | Weight | Description |
|----------|--------|-------------|
| **Market Size** | 15% | TAM/SAM/SOM analysis and growth potential |
| **Competition** | 15% | Competitive landscape and differentiation |
| **Technical Feasibility** | 15% | Implementation complexity and tech stack requirements |
| **Pain Severity** | 15% | How critical is the problem being solved |
| **Monetization Potential** | 15% | Revenue model viability and pricing power |
| **Time to MVP** | 10% | Speed of initial product launch |
| **Network Effects** | 10% | Potential for viral growth and user lock-in |
| **Regulatory Risk** | 5% | Compliance requirements and legal barriers |
**Score Interpretation:**
- **90-100**: Exceptional opportunity, low risk
- **80-89**: Strong viability, proceed with confidence
- **70-79**: Good potential, address flagged concerns
- **60-69**: Moderate, requires significant refinement
- **50-59**: Weak viability, major issues to resolve
- **<50**: Not recommended without fundamental changes
## Enhanced Idea Template
Each SaaS idea now includes comprehensive business analysis:
Viability Score: XX/100
One-Liner: Clear value proposition]
Target Users: Specific user personas]
Jobs-to-be-Done (JTBD):
Pain Point Severity: XX/100
Proposed Solution: Feature overview]
Market Size:
Competition: | Competitor | Strengths | Weaknesses | Our Differentiation |
Unit Economics:
Red Flags:
Success Boosters:
Validation Steps:
## Jobs-to-be-Done Framework
Each idea includes JTBD statements following the Clayton Christensen framework:
> "When [situation], I want to [motivation], so I can [outcome]"
**Example JTBD for a Developer Tool:**
- When I'm reviewing PRs with 50+ files, I want to auto-group changes by logic, so I can focus on architectural issues instead of scrolling
**Why JTBD Matters:**
- Focuses on user motivation, not just features
- Identifies the "job" users "hire" a product to do
- Enables better positioning and messaging
- Guides feature prioritization
## Pain Point Severity Scoring
Each identified pain point receives a severity score (0-100) based on:
| Factor | Weight | Description |
|--------|--------|-------------|
| **Frequency** | 30% | How often users encounter this pain |
| **Intensity** | 40% | How severely it impacts their work/life |
| **Willingness to Pay** | 30% | How much they'd pay to solve it |
**Severity Levels:**
- **90-100**: Critical pain, immediate action required
- **80-89**: High severity, actively seeking solutions
- **70-79**: Moderate-high, frequent complaints
- **60-69**: Moderate, occasional frustration
- **50-59**: Low-moderate, tolerable inconvenience
- **<50**: Minor annoyance, low priority
## Red Flags & Success Boosters
### Auto-Detection Features
The system automatically identifies factors that impact idea viability:
**Red Flags (Risk Indicators):**
- High competition with low differentiation
- Regulatory complexity or compliance barriers
- Long sales cycles for B2B ideas
- Technical complexity requiring specialized expertise
- Low willingness to pay relative to CAC
- Network effects required for basic functionality
**Success Boosters (Positive Indicators):**
- Clear, specific target user segment
- Existing budget for the problem category
- Growing market with tailwinds
- Product-led growth potential
- Integration with existing workflows
- Recurring revenue model fit
## Individual Stage Usage
### Discover Trends
python3 scripts/discover_trends.py --lens "AI/ML Wednesday" --limit 5
### Investigate Topic
python3 scripts/investigate_topic.py --topic "local-first software" --lens "Developer Tools Monday"
### Generate SaaS Ideas
python3 scripts/synthesize_saas_ideas.py --research path/to/research.md --num-ideas 5
## Output Locations
~/.saas-idea-finder/outputs/ ├── 2026-02-08_discover/trends.json ├── 2026-02-08_research/topic.md └── 2026-02-08_ideas/topic_ideas.md
## Error Handling
- **Missing API Keys**: Add to your environment, shell startup file, or secret store
- **All Sources Failed**: Check internet, try --since 14
- **Already Analyzed**: Use --force to re-analyze
- **Rate Limits Exceeded**: Wait and retry, or check API quotas
All errors return JSON: `{"success": false, "error": "type", "message": "solution"}`
## Usage Examples
### Daily Automated
0 9 cd /path/to/skills/saas-idea-finder && python3 scripts/run_full_pipeline.py
### Ad-Hoc Research
python3 scripts/run_full_pipeline.py --topics 2 --lens "Business SaaS Tuesday"
### Filter by Viability
python3 scripts/run_full_pipeline.py --min-viability 75 --include-viability
### High-Pain-Point Focus
python3 scripts/run_full_pipeline.py --pain-threshold 70
### Comprehensive Analysis
python3 scripts/run_full_pipeline.py \ --breadth 3 \ --depth 2 \ --pain-threshold 65 \ --min-viability 70 \ --include-viability
### Validate Specific Trend
python3 scripts/investigate_topic.py \ --topic "AI code review tools" \ --lens "Developer Tools Monday" \ --output ~/.saas-idea-finder/outputs/custom_research.md
python3 scripts/synthesize_saas_ideas.py \ --research ~/.saas-idea-finder/outputs/custom_research.md \ --num-ideas 5
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 29,807 | 5,946 | -80% | 1 | 1 | 0% | 5,034 | 5,758 | +14% | 0 | 0 | — |
case-02 | fail→fail | 74,429 | 6,049 | -92% | 1 | 1 | 0% | 6,189 | 5,773 | -7% | 0 | 0 | — |
case-03 | fail→fail | 27,963 | 5,810 | -79% | 1 | 1 | 0% | 3,630 | 5,704 | +57% | 0 | 0 | — |
case-04 | fail→pass | 10,493 | 8,448 | -19% | 1 | 1 | 0% | 1,727 | 6,867 | +298% | 0 | 0 | — |
case-05 | fail→pass | 12,665 | 2,787 | -78% | 1 | 1 | 0% | 2,001 | 5,959 | +198% | 0 | 0 | — |
case-06 | fail→pass | 13,645 | 3,247 | -76% | 1 | 1 | 0% | 2,413 | 6,146 | +155% | 0 | 0 | — |
case-07 | fail→pass | 10,549 | 3,315 | -69% | 1 | 1 | 0% | 1,681 | 6,206 | +269% | 0 | 0 | — |
case-08 | fail→pass | 10,355 | 2,622 | -75% | 1 | 1 | 0% | 1,529 | 5,907 | +286% | 0 | 0 | — |
case-09 | pass→pass | 11,999 | 7,802 | -35% | 1 | 1 | 0% | 1,990 | 6,772 | +240% | 0 | 0 | — |
case-10 | pass→pass | 7,705 | 3,464 | -55% | 1 | 1 | 0% | 1,251 | 6,089 | +387% | 0 | 0 | — |
case-11 | fail→pass | 10,845 | 3,244 | -70% | 1 | 1 | 0% | 2,062 | 6,083 | +195% | 0 | 0 | — |
case-12 | fail→pass | 17,086 | 2,638 | -85% | 1 | 1 | 0% | 1,324 | 5,977 | +351% | 0 | 0 | — |
case-13 | fail→pass | 10,938 | 4,158 | -62% | 1 | 1 | 0% | 1,970 | 6,161 | +213% | 0 | 0 | — |
case-14 | fail→pass | 9,626 | 2,444 | -75% | 1 | 1 | 0% | 1,663 | 5,864 | +253% | 0 | 0 | — |
case-15 | fail→pass | 11,468 | 3,657 | -68% | 1 | 1 | 0% | 1,945 | 5,788 | +198% | 0 | 0 | — |
case-16 | fail→pass | 13,410 | 2,721 | -80% | 1 | 1 | 0% | 1,776 | 5,858 | +230% | 0 | 0 | — |
case-17 | pass→pass | 15,679 | 13,250 | -15% | 1 | 1 | 0% | 2,724 | 7,825 | +187% | 0 | 0 | — |
case-18 | fail→pass | 11,453 | 2,414 | -79% | 1 | 1 | 0% | 1,960 | 5,850 | +198% | 0 | 0 | — |
case-19 | fail→pass | 6,437 | 2,881 | -55% | 1 | 1 | 0% | 996 | 6,013 | +504% | 0 | 0 | — |
case-20 | fail→fail | 18,484 | 19,937 | +8% | 1 | 1 | 0% | 3,893 | 9,646 | +148% | 0 | 0 | — |
case-21 | fail→fail | 14,526 | 15,700 | +8% | 1 | 1 | 0% | 2,976 | 8,657 | +191% | 0 | 0 | — |
case-22 | fail→fail | 17,998 | 17,640 | -2% | 1 | 1 | 0% | 3,286 | 7,784 | +137% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 19 counted toward the lift figure. The other 3 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +59 percentage points is the difference between those two pass rates over the 19 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.