Screen the startup idea backlog — research competitive landscape, score viability, surface the strongest picks from memory/topics/startup-ideas.md
Scanned 9/5/2026
Install to Claude Code
npx -y skills add anajuliabit/aeon --skill idea-validator --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Idea Validator?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/anajuliabit-idea-validator)More formats (shields.io, HTML) on the badges page.
---
name: idea-validator
category: productivity
description: Screen the startup idea backlog — research competitive landscape, score viability, surface the strongest picks from memory/topics/startup-ideas.md
var: ""
tags: [creative, meta]
---
> **${var}** — Optional theme filter (e.g. "crypto", "AI agents", "consumer", "solo-buildable"). If empty, picks the oldest unscreened batch.
Today is ${today}. Read `memory/MEMORY.md` before starting. If `soul/SOUL.md` + `soul/STYLE.md` exist and are populated, read them to ground "operator fit" scoring; otherwise score on solo-buildability and timing only.
## Why this skill exists
Idea backlogs accumulate weekly with no evaluation. Without a screening pass, the backlog is noise — no way to know which ideas are wide open vs already crowded, which match current market conditions, which are solo-buildable vs team-dependent. This skill turns the list from an archive into an active pipeline.
## Steps
### 1. Load the idea backlog
Read `memory/topics/startup-ideas.md`. If it doesn't exist, log `IDEA_VALIDATOR_SKIP: no backlog at memory/topics/startup-ideas.md` and stop.
Read `memory/topics/startup-ideas-screened.md` (create if missing — it's the screening database).
From the main ideas table, extract ideas that have NOT yet appeared in `startup-ideas-screened.md`. If `${var}` is set, additionally filter by theme/domain match.
Pick up to **8 ideas** to screen this run — prioritize oldest unscreened (earliest date first).
If fewer than 2 unscreened ideas remain: send a "backlog current" notification and stop.
### 2. Screen each idea
For each idea (name + one-liner from the table), run:
**a) Competition scan**
```
WebSearch: "[idea name] startup ${year}"
WebSearch: "[core problem/domain] tool app platform"
```
Classify competition density:
- `open` — no direct competitors found, or market clearly nascent
- `sparse` — 1–2 players, no clear winner
- `crowded` — 3+ established players with traction
- `saturated` — category has a dominant incumbent
**b) Funding signal**
```
WebSearch: "[domain] startup funding ${year}"
```
Note: any recent raises in the space? Is VC money flowing in (market heating) or absent (too early or too late)?
**c) Timing fit**
Score 1–5 based on:
- What's the tailwind right now? (regulatory shift, new infra, behavior change)
- Does recent context from `memory/logs/` match this domain? (market signals, papers, tweets)
- 5 = this could launch today and hit demand; 1 = needs 2+ years of market development
**d) Operator fit**
Score 1–5. If `soul/SOUL.md` exists and is populated:
- Does the operator have relevant domain expertise or network (per soul)?
- Is this solo-buildable or requires a team?
- Does it connect to current projects named in MEMORY.md or topic files?
- 5 = operator could validate this in a week with the current stack.
If no soul file exists, score this dimension as 3 by default (neutral) and rely on the other axes — operator fit is unknowable without the soul.
**e) Market size**
Quick estimate: small (<$1B TAM), medium ($1–10B), large (>$10B). Use WebSearch if unclear.
### 3. Score and rank
Compute a **viability score** for each idea:
```
viability = timing_fit + operator_fit + competition_bonus + size_bonus
competition_bonus: open=4, sparse=3, crowded=1, saturated=0
size_bonus: large=2, medium=1, small=0
```
Max ~16. Sort descending.
### 4. Update the screening database
Append to `memory/topics/startup-ideas-screened.md` (create if missing):
```markdown
# Startup Ideas — Screening Notes
Each idea screened by idea-validator. Sorted by date screened.
| Date Screened | Idea | Competition | Timing | Operator Fit | Market | Viability | Key Finding |
|---------------|------|-------------|--------|--------------|--------|-----------|-------------|
| YYYY-MM-DD | Idea Name | open/sparse/crowded/saturated | 1-5 | 1-5 | small/medium/large | score/16 | one-line finding |
```
### 5. Decide whether to notify
Always notify — screened ideas are always worth surfacing.
### 6. Format and send notification
Write to a temp file, then send:
```bash
mkdir -p .pending-notify-temp
TEMP=".pending-notify-temp/idea-validator-${today}.md"
# (write the body below to $TEMP)
./notify -f "$TEMP"
```
**Notification format** — match the operator's voice if soul files are populated, otherwise direct and neutral:
```
idea screener — ${today}
screened: N ideas. top picks:
1. [Name] — [one-liner]
competition: open/sparse | timing: X/5 | operator-fit: X/5
gap: [why the space is open or under-served]
tailwind: [what makes now the right time]
2. [Name] — [one-liner]
competition: [density] | timing: X/5 | operator-fit: X/5
gap: [...]
tailwind: [...]
3. [Name] — [one-liner]
competition: [density] | timing: X/5 | operator-fit: X/5
gap: [...]
tailwind: [...]
skipped: [Name] — [crowded/saturated], [Name] — [too early]
full notes: memory/topics/startup-ideas-screened.md
```
Surface top 3 by viability score. List the rest as "skipped" with one-word reason.
Keep total under 4000 chars.
### 7. Log to memory
Append to `memory/logs/${today}.md`:
```
## Idea Validator
- **Screened:** N ideas (oldest: [name], newest: [name])
- **Top pick:** [name] — [viability score]/16
- **Competition open:** N ideas
- **Saturated/skipped:** N ideas
- **Filter used:** [var or "none"]
- **Notification:** sent
- IDEA_VALIDATOR_OK
```
## Required Env Vars
None. Uses WebSearch (built-in) and local file reads only.
## Sandbox Note
WebSearch bypasses sandbox network restrictions — use it for all competition/funding research. No curl or auth-required API calls needed.
## Notes on Screening Approach
- The goal is signal, not thoroughness. Two good WebSearch queries per idea beats five mediocre ones.
- Competition density is the most important signal. If the space is open and operator-fit is high, that's a strong pick regardless of market size.
- Flag ideas where the timing score changed significantly from when they were filed — markets move fast.
- Don't evaluate based on the operator's current bandwidth. Just score the opportunity.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!