Market Validate
Turn a raw / half-baked idea into an evidence-backed validation report for an
independent developer (solo founder / OPC). Bias toward honest negatives
as much as positives. Prefer primary signals from real people complaining, paying,
or shipping — not generic “AI market size” fluff.
When not to use
- Ready for real user interviews (Mom Test) → prefer
z-customer-discovery
- Ready to test demand with a page + waitlist → prefer
z-landing-smoke
- Idea is already shipping and needs growth experiments (different skill later)
- Pure technical design / architecture (use eng planning skills)
- Legal/compliance deep dive only
Output language
Write the final report in the same language the user used for the idea
(Chinese → Chinese report; English → English). Keep source quotes in original
language with short translations when helpful.
Non-negotiables
- No empty confidence. Every major claim needs a source link or a clear “not found”.
- Seek disconfirming evidence. Actively search for “scam”, “hate”, “cancelled”, “alternative”, “too expensive”, “doesn’t work”.
- Indie lens. Score suitability for one person (scope, support burden, distribution, regulation, capital).
- Short-term return is hard. Call out when “quick money” claims are weak; prefer 30/90-day plausible paths over fantasy ARR.
- Do not invent numbers. If you cannot measure volume, say so and use qualitative bands.
- Tools are host-specific. Use whatever the host provides: web search, X/Twitter search, page fetch/browse, Reddit search, etc. If a channel is unreachable, mark it
blocked and continue.
- Evidence does not upgrade on handoff. Preserve whether a claim is a
secondary public signal, observed behavior, experiment result, search signal,
or assumption when another skill consumes it.
- The handoff is a fixed interface. End the primary report with exactly
one two-column, seven-row Evidence handoff table headed
Field | Value
using these exact labels: Current decision, Evidence classes, Supported claims, Still unproven,
Contradictions / exclusions, Source anchors, and Next validation.
The class cell may contain only applicable names from primary behavior,
observed experiment, secondary public, search signal, and assumption;
put provenance and confidence qualifiers in the other fields. Include a
class only when supplied inputs or actual results in this report belong to
it; a planned next research action does not make that class current.
Never leave the class cell empty. If the report has only missing, invalid,
or unverified inputs, use assumption and state the limitation elsewhere.
Workflow
Phase 0 — Intake (≤ 5 questions if needed)
If the idea is too vague to search, ask only what blocks research. Prefer
inferring the rest and stating assumptions.
Minimum to proceed:
| Field |
Example |
| One-liner |
“AI that turns meeting notes into client invoices for freelancers” |
| Who suffers |
Freelancers / agencies / Chinese SMBs / … |
| Geography |
Global / US / CN / … |
| Rough shape |
SaaS / template / content / marketplace / CLI / mobile |
Optional (ask only if missing and material): willingness-to-pay guess, skills the
founder already has, hard constraints (no marketplace, no hardware, offline only).
Record assumptions explicitly in the report.
Phase 1 — Research frame (do this before searching)
Produce a short internal frame (can be in notes, not full user-facing yet):
- Problem statement (user pain in their words, not product words)
- Search query pack (8–20 queries), including:
- problem phrases (“I hate…”, “looking for…”, “alternative to…”)
- competitor / category names
- “vs”, “pricing”, “worth it”, “shutdown”, “refund”
- language variants (EN + local language if geography is CN or bilingual)
- Success signals (what would count as “real demand”)
- Kill signals (what would make this a no-go for an indie)
Read references/sources.md for channel tactics and query recipes.
Read references/report-template.md before writing the final doc.
Phase 2 — Multi-channel demand scan
Scan at least 4 channels when tools allow. Mark each channel status:
searched | partial | blocked | skipped (reason).
Default global stack (priority order):
| Priority |
Channel |
What to extract |
| 1 |
X / Twitter |
Recent complaints, wishlists, builder threads, pricing talk |
| 2 |
Reddit |
Subreddit pain posts, “how do you…”, competitor hate/love |
| 3 |
Hacker News |
Show HN, Ask HN, “who is hiring” is less useful; pain/launch comments |
| 4 |
Product Hunt |
Similar launches, upvotes as weak signal, comment objections |
| 5 |
Indie Hackers |
Revenue posts, failed builds, “I built X” retrospectives |
| 6 |
App Store / Play / G2 / Capterra (if category fits) |
1★ themes, feature requests |
| 7 |
SEO / public keyword pages |
Only if accessible; treat volumes as rough |
If user / idea is China-primary or bilingual, also scan when reachable:
| Channel |
Notes |
| 即刻 / 微博 / 小红书 / 知乎 / 抖音评论 |
Demand + trend language; watch for ad spam |
| V2EX / 少数派 / 即刻产品圈 |
Indie / tech-adjacent CN signal |
For each useful hit, capture a signal card:
- channel:
- url:
- date: (if known)
- quote/summary: (short)
- polarity: demand | praise | objection | churn | competitor | pricing | noise
- weight: high | med | low # high = recent + specific + emotional/paying intent
- indie_relevance: high | med | low
Aim for 12–30 signal cards, not 200 dumps. Prefer quality and diversity
(different channels and polarities).
Phase 3 — Competition & substitutes
Identify 3–8 alternatives people already use (including “do nothing”, Excel,
agencies, manual process). For each:
- Who it’s for
- Pricing (if public)
- Gaps people complain about
- Why an indie might still win a wedge (or why not)
Phase 4 — Scoring (explicit, humble)
Score each dimension 1–5 with one-line evidence. Midpoint (3) means mixed
or weak evidence — not “good”.
| Dimension |
1 |
5 |
Direction |
| Demand reality |
Almost no organic pain |
Frequent, specific, recurring pain |
higher = better |
| Willingness to pay |
Free-only / toy |
Clear paid substitutes or budget talk |
higher = better |
| Competition intensity |
Open field / weak substitutes |
Brutal giants + free tools everywhere |
higher = worse |
| Indie fit |
Needs team, heavy support, capital, heavy compliance |
Solo can ship + distribute MVP |
higher = better |
| Time-to-signal |
>6 months to know |
Can learn in days–weeks |
higher = better |
| Short-term return odds |
Near-zero in 90 days |
Plausible first paid outcomes in 30–90 days |
higher = better |
When averaging a composite, invert competition first: competition_fit = 6 - competition_intensity, then average the six “higher = better” values (demand, pay, competition_fit, indie, time-to-signal, short-term).
Calculate that composite once from the six displayed inputs. Round it once to
two decimal places and treat that result as the report's single display value.
Copy the exact same value into the score table, executive summary, and any later
prose; never recompute or reround it from memory. Before delivery, search every
composite mention and reconcile it with the visible formula. Any mismatch is an
invalid report, even when the formula itself is correct.
Also pick a recommendation band:
| Band |
Meaning |
| Build wedge now |
Enough pain + indie-shaped + learning path |
| Explore with spike |
Unclear; 1–2 week research/build spike only |
| Park / reshape |
Weak demand, bad indie fit, or only vanity market |
| Avoid (as stated) |
Kill criteria hit; only proceed if idea changes |
Never let a high “market size story” override empty primary signals.
Phase 5 — Indie short-term return judgment
Answer explicitly (no hedging without saying why):
- Commercial value? Yes / Mixed / Weak — in one paragraph with evidence.
- Fit for independent developer? Yes / Conditional / No — scope, support, channels, skills.
- Short-term return (30–90 days) odds? High / Medium / Low — what “return” means (first $100, first 10 users, consulting lead, etc.).
- If going deeper, best entry direction — pick one primary wedge + 1–2 backups; say what to ship first and what to measure.
Prefer wedges that are:
- Narrow ICP
- Manual-first or uglier MVP OK
- Distribution via communities already scanned
- Avoid winner-take-all platforms on day one
Phase 6 — Deliver the report
Use the structure in references/report-template.md. Apply
references/quality-bar.md before delivery.
Do not rename, split, or replace the template's seven Evidence handoff rows with
equivalent prose or custom fields.
Delivery options:
- Default: paste the full report in chat.
- If the user is in a product repo and wants a file: write
docs/z-market-validate-<slug>-<YYYYMMDD>.md (or path they specify).
End with:
- Top 5 evidence links
- Top 5 disconfirming links
- Next 48-hour actions (3 concrete tasks, not “keep researching forever”)
- Evidence handoff with supported claims, unproven claims, source anchors,
and the next validation
Method notes (anti-BS)
- Upvotes ≠ revenue. PH medals ≠ retention.
- Loud Twitter ≠ paying customers.
- “I’d use this” comments are cheap; “I pay for X and hate Y” is gold.
- Founder echo chambers overstate novelty; search the buyer’s habitat, not only builder habitats.
- If everything looks positive, you under-sampled objections — go back to Phase 2.
- If everything looks negative, separate “bad idea” from “bad positioning / wrong ICP”.
Guardrails
- Do not claim survey statistical significance from a few posts.
- Do not recommend illegal, spammy, or ToS-abusive growth tactics.
- Do not scrape behind logins if the host cannot; mark
blocked.
- Do not shame the user’s idea; be direct and constructive.
- If tools fail entirely, say so and give a manual research checklist from
references/sources.md instead of fabricating a report.
1---2name: z-market-validate-43description: Use when an independent developer needs public market research to decide whether an early product idea is worth deeper validation. Scans communities and competitors for demand, objections, alternatives, solo-founder fit, entry wedges, and a go, narrow, or stop recommendation.4---56# Market Validate78Turn a **raw / half-baked idea** into an evidence-backed validation report for an9**independent developer** (solo founder / OPC). Bias toward **honest negatives**10as much as positives. Prefer primary signals from real people complaining, paying,11or shipping — not generic “AI market size” fluff.1213## When not to use1415- Ready for real user interviews (Mom Test) → prefer `z-customer-discovery`16- Ready to test demand with a page + waitlist → prefer `z-landing-smoke`17- Idea is already shipping and needs growth experiments (different skill later)18- Pure technical design / architecture (use eng planning skills)19- Legal/compliance deep dive only2021## Output language2223Write the **final report in the same language the user used** for the idea24(Chinese → Chinese report; English → English). Keep source quotes in original25language with short translations when helpful.2627## Non-negotiables28291. **No empty confidence.** Every major claim needs a source link or a clear “not found”.302. **Seek disconfirming evidence.** Actively search for “scam”, “hate”, “cancelled”, “alternative”, “too expensive”, “doesn’t work”.313. **Indie lens.** Score suitability for **one person** (scope, support burden, distribution, regulation, capital).324. **Short-term return is hard.** Call out when “quick money” claims are weak; prefer 30/90-day *plausible* paths over fantasy ARR.335. **Do not invent numbers.** If you cannot measure volume, say so and use qualitative bands.346. **Tools are host-specific.** Use whatever the host provides: web search, X/Twitter search, page fetch/browse, Reddit search, etc. If a channel is unreachable, mark it `blocked` and continue.357. **Evidence does not upgrade on handoff.** Preserve whether a claim is a36 secondary public signal, observed behavior, experiment result, search signal,37 or assumption when another skill consumes it.388. **The handoff is a fixed interface.** End the primary report with exactly39 one two-column, seven-row Evidence handoff table headed `Field | Value`40 using these exact labels: `Current41 decision`, `Evidence classes`, `Supported claims`, `Still unproven`,42 `Contradictions / exclusions`, `Source anchors`, and `Next validation`.43 The class cell may contain only applicable names from `primary behavior`,44 `observed experiment`, `secondary public`, `search signal`, and `assumption`;45 put provenance and confidence qualifiers in the other fields. Include a46 class only when supplied inputs or actual results in this report belong to47 it; a planned next research action does not make that class current.48 Never leave the class cell empty. If the report has only missing, invalid,49 or unverified inputs, use `assumption` and state the limitation elsewhere.5051---5253## Workflow5455### Phase 0 — Intake (≤ 5 questions if needed)5657If the idea is too vague to search, ask only what blocks research. Prefer58inferring the rest and stating assumptions.5960Minimum to proceed:6162| Field | Example |63|-------|---------|64| **One-liner** | “AI that turns meeting notes into client invoices for freelancers” |65| **Who suffers** | Freelancers / agencies / Chinese SMBs / … |66| **Geography** | Global / US / CN / … |67| **Rough shape** | SaaS / template / content / marketplace / CLI / mobile |6869Optional (ask only if missing and material): willingness-to-pay guess, skills the70founder already has, hard constraints (no marketplace, no hardware, offline only).7172Record assumptions explicitly in the report.7374### Phase 1 — Research frame (do this before searching)7576Produce a short internal frame (can be in notes, not full user-facing yet):77781. **Problem statement** (user pain in their words, not product words)792. **Search query pack** (8–20 queries), including:80 - problem phrases (“I hate…”, “looking for…”, “alternative to…”)81 - competitor / category names82 - “vs”, “pricing”, “worth it”, “shutdown”, “refund”83 - language variants (EN + local language if geography is CN or bilingual)843. **Success signals** (what would count as “real demand”)854. **Kill signals** (what would make this a no-go for an indie)8687Read `references/sources.md` for channel tactics and query recipes.88Read `references/report-template.md` before writing the final doc.8990### Phase 2 — Multi-channel demand scan9192Scan **at least 4 channels** when tools allow. Mark each channel status:93`searched` | `partial` | `blocked` | `skipped (reason)`.9495**Default global stack (priority order):**9697| Priority | Channel | What to extract |98|----------|---------|-----------------|99| 1 | **X / Twitter** | Recent complaints, wishlists, builder threads, pricing talk |100| 2 | **Reddit** | Subreddit pain posts, “how do you…”, competitor hate/love |101| 3 | **Hacker News** | Show HN, Ask HN, “who is hiring” is less useful; pain/launch comments |102| 4 | **Product Hunt** | Similar launches, upvotes as weak signal, comment objections |103| 5 | **Indie Hackers** | Revenue posts, failed builds, “I built X” retrospectives |104| 6 | **App Store / Play / G2 / Capterra** (if category fits) | 1★ themes, feature requests |105| 7 | **SEO / public keyword pages** | Only if accessible; treat volumes as rough |106107**If user / idea is China-primary or bilingual, also scan when reachable:**108109| Channel | Notes |110|---------|--------|111| 即刻 / 微博 / 小红书 / 知乎 / 抖音评论 | Demand + trend language; watch for ad spam |112| V2EX / 少数派 / 即刻产品圈 | Indie / tech-adjacent CN signal |113114For each useful hit, capture a **signal card**:115116```text117- channel:118- url:119- date: (if known)120- quote/summary: (short)121- polarity: demand | praise | objection | churn | competitor | pricing | noise122- weight: high | med | low # high = recent + specific + emotional/paying intent123- indie_relevance: high | med | low124```125126Aim for **12–30 signal cards**, not 200 dumps. Prefer quality and diversity127(different channels and polarities).128129### Phase 3 — Competition & substitutes130131Identify 3–8 alternatives people already use (including “do nothing”, Excel,132agencies, manual process). For each:133134- Who it’s for135- Pricing (if public)136- Gaps people complain about137- Why an indie might still win a **wedge** (or why not)138139### Phase 4 — Scoring (explicit, humble)140141Score each dimension **1–5** with one-line evidence. Midpoint (3) means mixed142or weak evidence — not “good”.143144| Dimension | 1 | 5 | Direction |145|-----------|---|---|-----------|146| **Demand reality** | Almost no organic pain | Frequent, specific, recurring pain | higher = better |147| **Willingness to pay** | Free-only / toy | Clear paid substitutes or budget talk | higher = better |148| **Competition intensity** | Open field / weak substitutes | Brutal giants + free tools everywhere | **higher = worse** |149| **Indie fit** | Needs team, heavy support, capital, heavy compliance | Solo can ship + distribute MVP | higher = better |150| **Time-to-signal** | >6 months to know | Can learn in days–weeks | higher = better |151| **Short-term return odds** | Near-zero in 90 days | Plausible first paid outcomes in 30–90 days | higher = better |152153When averaging a **composite**, invert competition first: `competition_fit = 6 - competition_intensity`, then average the six “higher = better” values (demand, pay, competition_fit, indie, time-to-signal, short-term).154155Calculate that composite **once** from the six displayed inputs. Round it once to156two decimal places and treat that result as the report's single display value.157Copy the exact same value into the score table, executive summary, and any later158prose; never recompute or reround it from memory. Before delivery, search every159composite mention and reconcile it with the visible formula. Any mismatch is an160invalid report, even when the formula itself is correct.161162Also pick a **recommendation band**:163164| Band | Meaning |165|------|---------|166| **Build wedge now** | Enough pain + indie-shaped + learning path |167| **Explore with spike** | Unclear; 1–2 week research/build spike only |168| **Park / reshape** | Weak demand, bad indie fit, or only vanity market |169| **Avoid (as stated)** | Kill criteria hit; only proceed if idea changes |170171Never let a high “market size story” override empty primary signals.172173### Phase 5 — Indie short-term return judgment174175Answer explicitly (no hedging without saying why):1761771. **Commercial value?** Yes / Mixed / Weak — in one paragraph with evidence.1782. **Fit for independent developer?** Yes / Conditional / No — scope, support, channels, skills.1793. **Short-term return (30–90 days) odds?** High / Medium / Low — what “return” means (first $100, first 10 users, consulting lead, etc.).1804. **If going deeper, best entry direction** — pick **one primary wedge** + 1–2 backups; say what to ship first and what to measure.181182Prefer wedges that are:183184- Narrow ICP185- Manual-first or uglier MVP OK186- Distribution via communities already scanned187- Avoid winner-take-all platforms on day one188189### Phase 6 — Deliver the report190191Use the structure in `references/report-template.md`. Apply192`references/quality-bar.md` before delivery.193194Do not rename, split, or replace the template's seven Evidence handoff rows with195equivalent prose or custom fields.196197Delivery options:1981991. **Default:** paste the full report in chat.2002. If the user is in a product repo and wants a file: write201 `docs/z-market-validate-<slug>-<YYYYMMDD>.md` (or path they specify).202203End with:204205- **Top 5 evidence links**206- **Top 5 disconfirming links**207- **Next 48-hour actions** (3 concrete tasks, not “keep researching forever”)208- **Evidence handoff** with supported claims, unproven claims, source anchors,209 and the next validation210211---212213## Method notes (anti-BS)214215- Upvotes ≠ revenue. PH medals ≠ retention.216- Loud Twitter ≠ paying customers.217- “I’d use this” comments are cheap; “I pay for X and hate Y” is gold.218- Founder echo chambers overstate novelty; search the buyer’s habitat, not only builder habitats.219- If everything looks positive, you under-sampled objections — go back to Phase 2.220- If everything looks negative, separate “bad idea” from “bad positioning / wrong ICP”.221222## Guardrails223224- Do not claim survey statistical significance from a few posts.225- Do not recommend illegal, spammy, or ToS-abusive growth tactics.226- Do not scrape behind logins if the host cannot; mark `blocked`.227- Do not shame the user’s idea; be direct and constructive.228- If tools fail entirely, say so and give a **manual research checklist** from `references/sources.md` instead of fabricating a report.