[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6X7Y5GHKXC295FGVJN4Y93R":3,"skill-same:01M6X7Y5GHKXC295FGVJN4Y93R":66},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":44,"commitSha":45,"skillDirectory":46,"forksCount":47,"repositoryHtmlUrl":48,"repositoryHomepageUrl":6,"ownerHtmlUrl":49,"ownerBlogUrl":6,"ownerDescription":50,"updatedAt":51,"install":52,"resources":65},"01M6X7Y5GHKXC295FGVJN4Y93R","tam-sam-som-builder",null,"Estimates TAM, SAM, and realistic SOM for a B2C app idea using triangulated bottom-up methodology anchored to market_insights trend data, competitor revenue proxies, and community size signals. Includes indie capture rate benchmarks and growth-rate adjustments by trend velocity.","MaxKmet\u002Fidea-validation-agents","MaxKmet","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F19517077?v=4","01M6X7QNAFCSMWXN7FDJS2KFGY","Max Kmet","01M6X7QNEEA69XPH7DCQRS5NJE",511,"MIT","https:\u002F\u002Fgithub.com\u002FMaxKmet\u002Fidea-validation-agents\u002Fblob\u002Fmain\u002Fskills\u002Ftam-sam-som-builder\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"tam sam som builder","builder","sam","trend","competitor","rate","for","insights","revenue","app","proxies","data","signals","velocity","idea","community","benchmarks","Market","up","growth","2026-11-10 10:12:30",false,"---\nname: tam-sam-som-builder\ndescription: Estimates TAM, SAM, and realistic SOM for a B2C app idea using triangulated bottom-up methodology anchored to market_insights trend data, competitor revenue proxies, and community size signals. Includes indie capture rate benchmarks and growth-rate adjustments by trend velocity.\n---\n\n\u003C!-- version: 0.2.0 | outputs: memory\u002Fideas\u002F\u003Cslug>\u002Fmarket_size.json -->\n\n# Skill: tam-sam-som-builder\n\n## Purpose\n\nProvide a realistic market size estimate that an indie developer can actually use for decisions. Most TAM estimates are useless because they use top-down analyst numbers designed to impress VCs, not to inform a solo builder deciding where to spend the next 6 months. This skill uses **triangulated bottom-up methodology** — multiple independent estimation approaches cross-checked against each other — anchored to real signals from `market_insights\u002F` trend data.\n\n## Input\n\n- Idea slug (or market research slug for pre-idea deep dives)\n- `memory\u002Fideas\u002F\u003Cslug>\u002Fkeywords.json` (search volume estimates — if available)\n- `memory\u002Fideas\u002F\u003Cslug>\u002Fcompetitors.json` (competitor scale and pricing signals)\n- `memory\u002Fideas\u002F\u003Cslug>\u002Fpricing.json` (target price — if available)\n- `memory\u002Fmarket_insights\u002F\u003Cniche>-*-\u003CYYYY>-\u003CMM>.md` (trend analysis files — **use all available platform files for this niche**)\n\n### Using Market Insights\n\nTrend analysis files from `memory\u002Fmarket_insights\u002F` provide critical calibration data. Extract the following from each available file's YAML frontmatter and narrative:\n\n| Field | How it informs TAM\u002FSAM\u002FSOM |\n|---|---|\n| `trend_velocity` | Adjusts growth rate projections (see Step 5) |\n| `top_signals` | Validates that real demand exists; calibrates bottom-up search volume estimates |\n| `monetization_evidence` | Confirms WTP — if no monetization evidence exists across any platform, discount TAM by 30–50% |\n| `overall_verdict` (hot\u002Fwarm\u002Fcool\u002Fcold) | Sanity-check on whether the market is worth sizing at all |\n| Platform narrative (Reddit pain points, TikTok engagement, App Store reviews) | Source for community size proxy estimation (see Approach B) |\n\nIf `overall_verdict` across platforms is \"cold\", flag the entire estimate as speculative and note that market demand is unvalidated.\n\n## Methodology\n\n### Approach A — Search Volume (primary when keywords.json available)\n\n```\nTAM = monthly_search_volume × 12 × intent_conversion_rate × annual_price\n```\n\nWhere:\n- `monthly_search_volume` = total from `keywords.json` across all relevant keywords\n- `intent_conversion_rate` = % of searchers who have genuine purchase intent (see benchmarks below)\n- `annual_price` = from `pricing.json` target WTP, annualized\n\n**Intent conversion benchmarks by search type:**\n\n| Search intent | Conversion rate | Example query |\n|---|---|---|\n| Direct solution search (\"app to track X\") | 8–15% | \"habit tracker app\", \"budget planner iOS\" |\n| Problem-aware search (\"how to X\") | 3–8% | \"how to save money\", \"how to build habits\" |\n| Category browsing (\"best X apps\") | 5–12% | \"best workout apps 2026\", \"top meditation apps\" |\n| Tangential interest (\"X tips\") | 1–3% | \"productivity tips\", \"healthy eating advice\" |\n\n### Approach B — Community Size Proxy (primary when market_insights available)\n\nWhen keyword data is weak but trend analysis reveals active communities, estimate from community engagement:\n\n```\nTAM = active_community_members × platform_multiplier × annual_price\n```\n\nWhere:\n- `active_community_members` = sum of engaged users across platforms (subreddit subscribers, TikTok hashtag creators, App Store review volume)\n- `platform_multiplier` = ratio of total interested population to active community members (see below)\n\n**Platform multipliers** (how many silent interested people per active community member):\n\n| Signal source | Multiplier | Rationale |\n|---|---|---|\n| Reddit subscribers in niche subreddit | 20–50× | ~2–5% of interested people join a subreddit |\n| TikTok hashtag creators (not views) | 100–500× | Tiny fraction of interested people create content |\n| App Store reviews for top competitor | 50–100× | ~1–2% of users leave reviews |\n| Newsletter subscribers in niche | 10–30× | Email subscribers are a warmer proxy |\n\n### Approach C — Competitor Revenue Proxy (supplementary)\n\nEstimate from competitor data in `competitors.json`:\n\n```\nTAM = sum of estimated annual revenue across all mapped competitors × market_coverage_factor\n```\n\nWhere:\n- Estimate competitor revenue from: `estimated_users × competitor_price × 12 × estimated_conversion_rate`\n- `market_coverage_factor` = 1.3–2.0× (competitors don't capture the full market). Use 1.3× for saturated markets, 2.0× for markets with few competitors.\n\n### Triangulation\n\nRun all available approaches and compare:\n- If estimates agree within 2× → high confidence. Use the geometric mean.\n- If estimates disagree by 2–5× → medium confidence. Use the most conservative estimate and note the range.\n- If estimates disagree by > 5× → low confidence. Flag assumptions that cause the divergence.\n\nAlways report which approaches were used and their individual estimates in the output.\n\n## SAM Filtering\n\nSAM narrows TAM to the segment actually reachable by the app. Apply these filters in order:\n\n### Geographic & Platform Filters\n\n| Filter | How to apply | Data source |\n|---|---|---|\n| **Platform** | iOS-only → multiply TAM by iOS market share in target geography | See benchmarks below |\n| **Geography** | English-only → US + UK + CA + AU + NZ + IE. Specific country → that country only | App concept language |\n| **Age range** | If app targets a demographic (teens, 50+), apply population % | Idea description |\n| **Income bracket** | If app requires disposable income for subscription, filter by income | Pricing model |\n\n**iOS market share by region** (for iOS-only apps):\n\n| Region | iOS share (approximate) |\n|---|---|\n| United States | 55–58% |\n| United Kingdom | 50–53% |\n| Canada | 53–56% |\n| Australia | 55–58% |\n| Western Europe (avg) | 30–35% |\n| Global | 25–28% |\n| Southeast Asia | 10–15% |\n| India | 4–6% |\n| Latin America | 12–18% |\n\nFor Android-only or cross-platform, apply the inverse or use 100%.\n\n### Segment Filters\n\nBeyond geography and platform, apply any filters that narrow the market to people who would actually consider this specific app:\n\n- Niche focus (e.g., \"fitness\" → \"climbing-specific fitness\")\n- Prerequisite behavior (e.g., \"already tracks workouts\" → subset of fitness app users)\n- Tech-savviness requirement (if the app requires unusual setup, filter out casual users)\n\n**SAM should typically be 10–40% of TAM.** If SAM > 50% of TAM, the filters are too loose. If SAM \u003C 5% of TAM, the niche may be too narrow for viable economics.\n\n## SOM Estimation\n\nSOM is what an indie developer can realistically capture. This is where most estimates go wrong — indie builders don't have the resources to capture meaningful market share in crowded categories.\n\n### SOM Capture Rate Benchmarks by Category\n\n| App category | Year 1 capture rate | Year 3 capture rate | Notes |\n|---|---|---|---|\n| **Utility \u002F tool** (calculator, converter, scanner) | 0.1–0.5% of SAM | 0.5–2.0% | Discoverable via ASO, many competitors |\n| **Niche productivity** (specific workflow tool) | 0.5–2.0% | 2.0–5.0% | Smaller SAM but higher capture in the niche |\n| **Health & fitness (niche)** | 0.3–1.5% | 1.0–4.0% | Loyal users if retention is strong |\n| **Health & fitness (broad)** | 0.05–0.2% | 0.2–0.8% | Dominated by incumbents |\n| **Social \u002F community** | 0.01–0.1% | 0.1–0.5% | Network effects favor incumbents; cold start is brutal |\n| **Content \u002F media** | 0.1–0.5% | 0.5–2.0% | Depends heavily on content quality and curation |\n| **Finance \u002F budgeting** | 0.1–0.5% | 0.5–2.0% | High trust barrier, but sticky once adopted |\n| **Creative tools** (photo, video, design) | 0.2–1.0% | 1.0–3.0% | Shareable output drives organic growth |\n| **Education \u002F learning** | 0.2–1.0% | 1.0–3.0% | Retention is the main challenge |\n| **Lifestyle \u002F habit** | 0.3–1.5% | 1.0–4.0% | Success varies wildly by habit loop quality |\n\nUse the **lower end** of the range when:\n- `market_saturation` from `competitors.json` is \"high\"\n- Founder is beginner tier (from `user_profile.md`)\n- No distribution advantage identified\n\nUse the **upper end** when:\n- Founder has an existing audience or distribution edge\n- Strong ASO opportunity or viral loop exists\n- Market is growing fast (trend_velocity = \"rising-fast\")\n\n### SOM Calculation\n\n```\nSOM_year_1 = SAM × capture_rate_year_1\nSOM_year_3 = SAM × capture_rate_year_3 × growth_multiplier\n```\n\n## Growth Rate Adjustment (from market_insights)\n\nTrend velocity from market_insights directly affects the year-3 projection:\n\n| Trend velocity | Growth multiplier (applied to year-3 SOM) | Rationale |\n|---|---|---|\n| `rising-fast` | 1.5–2.0× | Market is expanding — your share of a growing pie grows faster |\n| `rising` | 1.2–1.5× | Moderate tailwind |\n| `stable` | 1.0× | No adjustment — capture rate is the only growth driver |\n| `declining` | 0.5–0.8× | Shrinking market — your absolute numbers may drop even if capture rate improves |\n\nIf multiple platform files have different velocities, use the **median** velocity.\n\n## Reality Check Layer\n\nBefore finalizing, run these sanity checks:\n\n| Check | Threshold | Action if triggered |\n|---|---|---|\n| **TAM inflation** | TAM > $10B for a niche indie app | Almost certainly using top-down numbers. Redo with bottom-up only. |\n| **SAM too broad** | SAM > 50% of TAM | Filters are too loose. Add platform\u002Fgeography\u002Fniche constraints. |\n| **SOM fantasy** | SOM year 1 > $500K for a solo developer | Reality-check the capture rate. Most indie apps earn $0–$50K in year 1. |\n| **No monetization evidence** | `monetization_evidence` from market_insights is empty across all platforms | Discount TAM by 30–50%. People may want this but not pay for it. |\n| **Cold market** | All market_insights files show `overall_verdict` = \"cold\" or \"cool\" | Flag as speculative. Note that market demand is unvalidated. |\n\n## Market Size Verdict Thresholds\n\nBased on **SOM year 1** (the number that actually matters for an indie developer deciding whether to build):\n\n| SOM year 1 | Verdict | Meaning for an indie dev |\n|---|---|---|\n| > $200K | **large** | Significant indie opportunity. Even partial execution could be life-changing. |\n| $50K–$200K | **medium** | Viable as a primary project. Can sustain a solo developer if retention is good. |\n| $10K–$50K | **niche** | Side-project scale. Viable if build cost is low and the founder has another income source. |\n| \u003C $10K | **micro-niche** | Hobby scale. Only worth building if the founder has a personal reason to build it or can expand the niche. |\n\n## Process\n\n1. Load all available inputs: `keywords.json`, `competitors.json`, `pricing.json`, and all matching `memory\u002Fmarket_insights\u002F\u003Cniche>-*-\u003CYYYY>-\u003CMM>.md` files.\n2. Extract calibration data from market_insights (trend velocity, top signals, monetization evidence, overall verdict).\n3. Run Approach A (search volume) if `keywords.json` is available.\n4. Run Approach B (community size proxy) if market_insights contain community signals.\n5. Run Approach C (competitor revenue proxy) if `competitors.json` has user\u002Fpricing data.\n6. Triangulate: compare estimates, determine confidence, select final TAM.\n7. Apply SAM filters (geography, platform, demographics, niche).\n8. Estimate SOM using category-appropriate capture rate benchmark.\n9. Apply growth multiplier from trend velocity.\n10. Run reality checks. Adjust if any are triggered.\n11. Determine market size verdict from SOM year 1 thresholds.\n12. Write output.\n\n## Output\n\nWrite to `memory\u002Fideas\u002F\u003Cslug>\u002Fmarket_size.json`:\n\n```json\n{\n  \"methodology\": \"bottom-up | community-proxy | competitor-proxy | triangulated\",\n  \"estimation_approaches\": [\n    {\n      \"approach\": \"search-volume | community-proxy | competitor-proxy\",\n      \"tam_estimate\": 0,\n      \"key_assumptions\": []\n    }\n  ],\n  \"triangulation_confidence\": \"high | medium | low\",\n  \"tam\": {\n    \"value\": 0,\n    \"currency\": \"USD\",\n    \"period\": \"annual\",\n    \"assumptions\": []\n  },\n  \"sam\": {\n    \"value\": 0,\n    \"filter_criteria\": [],\n    \"sam_to_tam_ratio\": 0\n  },\n  \"som\": {\n    \"year_1\": 0,\n    \"year_3\": 0,\n    \"capture_rate_year_1_pct\": 0,\n    \"capture_rate_year_3_pct\": 0,\n    \"growth_multiplier\": 1.0,\n    \"growth_multiplier_source\": \"\"\n  },\n  \"market_insights_used\": [],\n  \"trend_velocity_observed\": \"rising-fast | rising | stable | declining\",\n  \"monetization_evidence_found\": true,\n  \"reality_checks_triggered\": [],\n  \"market_size_verdict\": \"large | medium | niche | micro-niche\"\n}\n```\n\n## Notes\n\n- When used in the `market-deep-dive` workflow, `pricing.json` may not exist yet. In that case, use the median competitive price from `competitors.json` or a category benchmark ($3–$7\u002Fmo for typical B2C subscription apps).\n- When used in `idea-validation` (if the orchestrator includes it), the output feeds into `idea-scoring`'s Monetization dimension. The `market_size_verdict` and SOM values are used alongside pricing and CAC data to assess overall monetization viability.\n- Market_insights files have a `stale_after` date. If all available files are past their stale date, flag the estimates as potentially outdated and recommend re-running `trend-analysis` before making a build decision.\n","\u003C!-- version: 0.2.0 | outputs: memory\u002Fideas\u002F\u003Cslug>\u002Fmarket_size.json -->\n\n# Skill: tam-sam-som-builder\n\n## Purpose\n\nProvide a realistic market size estimate that an indie developer can actually use for decisions. Most TAM estimates are useless because they use top-down analyst numbers designed to impress VCs, not to inform a solo builder deciding where to spend the next 6 months. This skill uses **triangulated bottom-up methodology** — multiple independent estimation approaches cross-checked against each other — anchored to real signals from `market_insights\u002F` trend data.\n\n## Input\n\n- Idea slug (or market research slug for pre-idea deep dives)\n- `memory\u002Fideas\u002F\u003Cslug>\u002Fkeywords.json` (search volume estimates — if available)\n- `memory\u002Fideas\u002F\u003Cslug>\u002Fcompetitors.json` (competitor scale and pricing signals)\n- `memory\u002Fideas\u002F\u003Cslug>\u002Fpricing.json` (target price — if available)\n- `memory\u002Fmarket_insights\u002F\u003Cniche>-*-\u003CYYYY>-\u003CMM>.md` (trend analysis files — **use all available platform files for this niche**)\n\n### Using Market Insights\n\nTrend analysis files from `memory\u002Fmarket_insights\u002F` provide critical calibration data. Extract the following from each available file's YAML frontmatter and narrative:\n\n| Field | How it informs TAM\u002FSAM\u002FSOM |\n|---|---|\n| `trend_velocity` | Adjusts growth rate projections (see Step 5) |\n| `top_signals` | Validates that real demand exists; calibrates bottom-up search volume estimates |\n| `monetization_evidence` | Confirms WTP — if no monetization evidence exists across any platform, discount TAM by 30–50% |\n| `overall_verdict` (hot\u002Fwarm\u002Fcool\u002Fcold) | Sanity-check on whether the market is worth sizing at all |\n| Platform narrative (Reddit pain points, TikTok engagement, App Store reviews) | Source for community size proxy estimation (see Approach B) |\n\nIf `overall_verdict` across platforms is \"cold\", flag the entire estimate as speculative and note that market demand is unvalidated.\n\n## Methodology\n\n### Approach A — Search Volume (primary when keywords.json available)\n\n```\nTAM = monthly_search_volume × 12 × intent_conversion_rate × annual_price\n```\n\nWhere:\n- `monthly_search_volume` = total from `keywords.json` across all relevant keywords\n- `intent_conversion_rate` = % of searchers who have genuine purchase intent (see benchmarks below)\n- `annual_price` = from `pricing.json` target WTP, annualized\n\n**Intent conversion benchmarks by search type:**\n\n| Search intent | Conversion rate | Example query |\n|---|---|---|\n| Direct solution search (\"app to track X\") | 8–15% | \"habit tracker app\", \"budget planner iOS\" |\n| Problem-aware search (\"how to X\") | 3–8% | \"how to save money\", \"how to build habits\" |\n| Category browsing (\"best X apps\") | 5–12% | \"best workout apps 2026\", \"top meditation apps\" |\n| Tangential interest (\"X tips\") | 1–3% | \"productivity tips\", \"healthy eating advice\" |\n\n### Approach B — Community Size Proxy (primary when market_insights available)\n\nWhen keyword data is weak but trend analysis reveals active communities, estimate from community engagement:\n\n```\nTAM = active_community_members × platform_multiplier × annual_price\n```\n\nWhere:\n- `active_community_members` = sum of engaged users across platforms (subreddit subscribers, TikTok hashtag creators, App Store review volume)\n- `platform_multiplier` = ratio of total interested population to active community members (see below)\n\n**Platform multipliers** (how many silent interested people per active community member):\n\n| Signal source | Multiplier | Rationale |\n|---|---|---|\n| Reddit subscribers in niche subreddit | 20–50× | ~2–5% of interested people join a subreddit |\n| TikTok hashtag creators (not views) | 100–500× | Tiny fraction of interested people create content |\n| App Store reviews for top competitor | 50–100× | ~1–2% of users leave reviews |\n| Newsletter subscribers in niche | 10–30× | Email subscribers are a warmer proxy |\n\n### Approach C — Competitor Revenue Proxy (supplementary)\n\nEstimate from competitor data in `competitors.json`:\n\n```\nTAM = sum of estimated annual revenue across all mapped competitors × market_coverage_factor\n```\n\nWhere:\n- Estimate competitor revenue from: `estimated_users × competitor_price × 12 × estimated_conversion_rate`\n- `market_coverage_factor` = 1.3–2.0× (competitors don't capture the full market). Use 1.3× for saturated markets, 2.0× for markets with few competitors.\n\n### Triangulation\n\nRun all available approaches and compare:\n- If estimates agree within 2× → high confidence. Use the geometric mean.\n- If estimates disagree by 2–5× → medium confidence. Use the most conservative estimate and note the range.\n- If estimates disagree by > 5× → low confidence. Flag assumptions that cause the divergence.\n\nAlways report which approaches were used and their individual estimates in the output.\n\n## SAM Filtering\n\nSAM narrows TAM to the segment actually reachable by the app. Apply these filters in order:\n\n### Geographic & Platform Filters\n\n| Filter | How to apply | Data source |\n|---|---|---|\n| **Platform** | iOS-only → multiply TAM by iOS market share in target geography | See benchmarks below |\n| **Geography** | English-only → US + UK + CA + AU + NZ + IE. Specific country → that country only | App concept language |\n| **Age range** | If app targets a demographic (teens, 50+), apply population % | Idea description |\n| **Income bracket** | If app requires disposable income for subscription, filter by income | Pricing model |\n\n**iOS market share by region** (for iOS-only apps):\n\n| Region | iOS share (approximate) |\n|---|---|\n| United States | 55–58% |\n| United Kingdom | 50–53% |\n| Canada | 53–56% |\n| Australia | 55–58% |\n| Western Europe (avg) | 30–35% |\n| Global | 25–28% |\n| Southeast Asia | 10–15% |\n| India | 4–6% |\n| Latin America | 12–18% |\n\nFor Android-only or cross-platform, apply the inverse or use 100%.\n\n### Segment Filters\n\nBeyond geography and platform, apply any filters that narrow the market to people who would actually consider this specific app:\n\n- Niche focus (e.g., \"fitness\" → \"climbing-specific fitness\")\n- Prerequisite behavior (e.g., \"already tracks workouts\" → subset of fitness app users)\n- Tech-savviness requirement (if the app requires unusual setup, filter out casual users)\n\n**SAM should typically be 10–40% of TAM.** If SAM > 50% of TAM, the filters are too loose. If SAM \u003C 5% of TAM, the niche may be too narrow for viable economics.\n\n## SOM Estimation\n\nSOM is what an indie developer can realistically capture. This is where most estimates go wrong — indie builders don't have the resources to capture meaningful market share in crowded categories.\n\n### SOM Capture Rate Benchmarks by Category\n\n| App category | Year 1 capture rate | Year 3 capture rate | Notes |\n|---|---|---|---|\n| **Utility \u002F tool** (calculator, converter, scanner) | 0.1–0.5% of SAM | 0.5–2.0% | Discoverable via ASO, many competitors |\n| **Niche productivity** (specific workflow tool) | 0.5–2.0% | 2.0–5.0% | Smaller SAM but higher capture in the niche |\n| **Health & fitness (niche)** | 0.3–1.5% | 1.0–4.0% | Loyal users if retention is strong |\n| **Health & fitness (broad)** | 0.05–0.2% | 0.2–0.8% | Dominated by incumbents |\n| **Social \u002F community** | 0.01–0.1% | 0.1–0.5% | Network effects favor incumbents; cold start is brutal |\n| **Content \u002F media** | 0.1–0.5% | 0.5–2.0% | Depends heavily on content quality and curation |\n| **Finance \u002F budgeting** | 0.1–0.5% | 0.5–2.0% | High trust barrier, but sticky once adopted |\n| **Creative tools** (photo, video, design) | 0.2–1.0% | 1.0–3.0% | Shareable output drives organic growth |\n| **Education \u002F learning** | 0.2–1.0% | 1.0–3.0% | Retention is the main challenge |\n| **Lifestyle \u002F habit** | 0.3–1.5% | 1.0–4.0% | Success varies wildly by habit loop quality |\n\nUse the **lower end** of the range when:\n- `market_saturation` from `competitors.json` is \"high\"\n- Founder is beginner tier (from `user_profile.md`)\n- No distribution advantage identified\n\nUse the **upper end** when:\n- Founder has an existing audience or distribution edge\n- Strong ASO opportunity or viral loop exists\n- Market is growing fast (trend_velocity = \"rising-fast\")\n\n### SOM Calculation\n\n```\nSOM_year_1 = SAM × capture_rate_year_1\nSOM_year_3 = SAM × capture_rate_year_3 × growth_multiplier\n```\n\n## Growth Rate Adjustment (from market_insights)\n\nTrend velocity from market_insights directly affects the year-3 projection:\n\n| Trend velocity | Growth multiplier (applied to year-3 SOM) | Rationale |\n|---|---|---|\n| `rising-fast` | 1.5–2.0× | Market is expanding — your share of a growing pie grows faster |\n| `rising` | 1.2–1.5× | Moderate tailwind |\n| `stable` | 1.0× | No adjustment — capture rate is the only growth driver |\n| `declining` | 0.5–0.8× | Shrinking market — your absolute numbers may drop even if capture rate improves |\n\nIf multiple platform files have different velocities, use the **median** velocity.\n\n## Reality Check Layer\n\nBefore finalizing, run these sanity checks:\n\n| Check | Threshold | Action if triggered |\n|---|---|---|\n| **TAM inflation** | TAM > $10B for a niche indie app | Almost certainly using top-down numbers. Redo with bottom-up only. |\n| **SAM too broad** | SAM > 50% of TAM | Filters are too loose. Add platform\u002Fgeography\u002Fniche constraints. |\n| **SOM fantasy** | SOM year 1 > $500K for a solo developer | Reality-check the capture rate. Most indie apps earn $0–$50K in year 1. |\n| **No monetization evidence** | `monetization_evidence` from market_insights is empty across all platforms | Discount TAM by 30–50%. People may want this but not pay for it. |\n| **Cold market** | All market_insights files show `overall_verdict` = \"cold\" or \"cool\" | Flag as speculative. Note that market demand is unvalidated. |\n\n## Market Size Verdict Thresholds\n\nBased on **SOM year 1** (the number that actually matters for an indie developer deciding whether to build):\n\n| SOM year 1 | Verdict | Meaning for an indie dev |\n|---|---|---|\n| > $200K | **large** | Significant indie opportunity. Even partial execution could be life-changing. |\n| $50K–$200K | **medium** | Viable as a primary project. Can sustain a solo developer if retention is good. |\n| $10K–$50K | **niche** | Side-project scale. Viable if build cost is low and the founder has another income source. |\n| \u003C $10K | **micro-niche** | Hobby scale. Only worth building if the founder has a personal reason to build it or can expand the niche. |\n\n## Process\n\n1. Load all available inputs: `keywords.json`, `competitors.json`, `pricing.json`, and all matching `memory\u002Fmarket_insights\u002F\u003Cniche>-*-\u003CYYYY>-\u003CMM>.md` files.\n2. Extract calibration data from market_insights (trend velocity, top signals, monetization evidence, overall verdict).\n3. Run Approach A (search volume) if `keywords.json` is available.\n4. Run Approach B (community size proxy) if market_insights contain community signals.\n5. Run Approach C (competitor revenue proxy) if `competitors.json` has user\u002Fpricing data.\n6. Triangulate: compare estimates, determine confidence, select final TAM.\n7. Apply SAM filters (geography, platform, demographics, niche).\n8. Estimate SOM using category-appropriate capture rate benchmark.\n9. Apply growth multiplier from trend velocity.\n10. Run reality checks. Adjust if any are triggered.\n11. Determine market size verdict from SOM year 1 thresholds.\n12. Write output.\n\n## Output\n\nWrite to `memory\u002Fideas\u002F\u003Cslug>\u002Fmarket_size.json`:\n\n```json\n{\n  \"methodology\": \"bottom-up | community-proxy | competitor-proxy | triangulated\",\n  \"estimation_approaches\": [\n    {\n      \"approach\": \"search-volume | community-proxy | competitor-proxy\",\n      \"tam_estimate\": 0,\n      \"key_assumptions\": []\n    }\n  ],\n  \"triangulation_confidence\": \"high | medium | low\",\n  \"tam\": {\n    \"value\": 0,\n    \"currency\": \"USD\",\n    \"period\": \"annual\",\n    \"assumptions\": []\n  },\n  \"sam\": {\n    \"value\": 0,\n    \"filter_criteria\": [],\n    \"sam_to_tam_ratio\": 0\n  },\n  \"som\": {\n    \"year_1\": 0,\n    \"year_3\": 0,\n    \"capture_rate_year_1_pct\": 0,\n    \"capture_rate_year_3_pct\": 0,\n    \"growth_multiplier\": 1.0,\n    \"growth_multiplier_source\": \"\"\n  },\n  \"market_insights_used\": [],\n  \"trend_velocity_observed\": \"rising-fast | rising | stable | declining\",\n  \"monetization_evidence_found\": true,\n  \"reality_checks_triggered\": [],\n  \"market_size_verdict\": \"large | medium | niche | micro-niche\"\n}\n```\n\n## Notes\n\n- When used in the `market-deep-dive` workflow, `pricing.json` may not exist yet. In that case, use the median competitive price from `competitors.json` or a category benchmark ($3–$7\u002Fmo for typical B2C subscription apps).\n- When used in `idea-validation` (if the orchestrator includes it), the output feeds into `idea-scoring`'s Monetization dimension. The `market_size_verdict` and SOM values are used alongside pricing and CAC data to assess overall monetization viability.\n- Market_insights files have a `stale_after` date. If all available files are past their stale date, flag the estimates as potentially outdated and recommend re-running `trend-analysis` before making a build decision.\n",{"name":5,"description":7},"main","3a4c800a3022e73e9997533b603c79b60ee7597a","skills\u002Ftam-sam-som-builder",58,"https:\u002F\u002Fgithub.com\u002FMaxKmet\u002Fidea-validation-agents","https:\u002F\u002Fgithub.com\u002FMaxKmet","Senior AI Engineer","2026-06-16 23:18:56",{"source":8,"skillName":5,"commands":53,"prompt":63,"zipAvailable":64},[54,57,60],{"tool":55,"command":56},"npx","npx skills add MaxKmet\u002Fidea-validation-agents --skill tam-sam-som-builder",{"tool":58,"command":59},"bunx","bunx skills add MaxKmet\u002Fidea-validation-agents --skill tam-sam-som-builder",{"tool":61,"command":62},"pnpm","pnpm dlx skills add MaxKmet\u002Fidea-validation-agents --skill tam-sam-som-builder","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FMaxKmet\u002Fidea-validation-agents\u002Fblob\u002Fmain\u002Fskills\u002Ftam-sam-som-builder\u002FSKILL.md",true,[],[67,82,106,124,150,169],{"skillNo":68,"name":69,"nameZh":6,"description":70,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":71,"categories":72,"keywords":73,"publishedAt":39},"01M6X7YZ5WBGSAB23K0DAARY1N","weakness-detection","Analyzes idea-scoring output to identify the weakest dimensions, root causes of low scores, and probable failure modes if the idea were pursued as-is.","https:\u002F\u002Fgithub.com\u002FMaxKmet\u002Fidea-validation-agents\u002Fblob\u002Fmain\u002Fskills\u002Fweakness-detection\u002FSKILL.md",[],[74,75,33,76,77,78,79,80,81],"weakness detection","detection","scoring","dimensions","as","output","root","modes",{"skillNo":83,"name":84,"nameZh":6,"description":85,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":86,"categories":87,"keywords":93,"publishedAt":39},"01M6X7YRHWXGBHBT70ZY1YTCC6","user-segmentation-profiler","Classifies the user into an ICP tier (beginner\u002Fbuilder\u002Fgrowth) based on experience, constraints, and goals. Run once per user session before any workflow.","https:\u002F\u002Fgithub.com\u002FMaxKmet\u002Fidea-validation-agents\u002Fblob\u002Fmain\u002Fskills\u002Fuser-segmentation-profiler\u002FSKILL.md",[88],{"categoryNo":89,"categoryName":90,"taxonomyType":91,"taxonomyTypeDesc":92},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[94,95,96,97,98,99,100,101,102,38,20,103,104,105],"segmentation","user","user segmentation","profiler","user segmentation profiler","workflow","run","constraints","session","goals","icp","beginner",{"skillNo":107,"name":108,"nameZh":6,"description":109,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":112,"publishedAt":39},"01M6X7YJKM9DRPMEDW22PETKDE","user-background-interviewer","Conducts a deep background interview to understand what types of app ideas this specific user is most likely to succeed with based on their domain knowledge, networks, and skills.","https:\u002F\u002Fgithub.com\u002FMaxKmet\u002Fidea-validation-agents\u002Fblob\u002Fmain\u002Fskills\u002Fuser-background-interviewer\u002FSKILL.md",[],[113,114,95,115,116,117,28,118,119,120,121,122,123],"user background interviewer","background","domain","interview","understand","types","with","deep","ideas","knowledge","networks",{"skillNo":125,"name":126,"nameZh":6,"description":127,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":128,"categories":129,"keywords":135,"publishedAt":39},"01M6X7YEX3NTXGXAY8SQRSK7YG","trend-to-product-mapper","Maps viral social content and trending topics to concrete app opportunities by extracting the underlying problem and validating monetization fit.","https:\u002F\u002Fgithub.com\u002FMaxKmet\u002Fidea-validation-agents\u002Fblob\u002Fmain\u002Fskills\u002Ftrend-to-product-mapper\u002FSKILL.md",[130],{"categoryNo":131,"categoryName":132,"taxonomyType":133,"taxonomyTypeDesc":134},"01JBSEEDCAT000000000000031","产品经理","PROFESSION","适用职业",[136,22,137,138,139,140,141,142,143,144,28,145,146,147,148,149],"product","trend to product mapper","mapper","extracting","social","topics","trending","problem","fit","viral","monetization","maps","social content","content",{"skillNo":151,"name":152,"nameZh":6,"description":153,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":154,"categories":155,"keywords":156,"publishedAt":39},"01M6X7Y9PJGB5W9Y2RGC7MMC8T","trend-analysis","Analyzes market trends across platforms (TikTok, Reddit, App Store, Google Trends) for a given topic or category. Writes a new file to memory\u002Fmarket_insights\u002F.","https:\u002F\u002Fgithub.com\u002FMaxKmet\u002Fidea-validation-agents\u002Fblob\u002Fmain\u002Fskills\u002Ftrend-analysis\u002FSKILL.md",[],[157,158,22,159,160,28,161,162,163,36,164,165,166,167,25,168,26],"analysis","trend analysis","google","trends","across","tiktok","reddit","file","memory","store","app store","google trends",{"skillNo":170,"name":171,"nameZh":6,"description":172,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":173,"categories":174,"keywords":175,"publishedAt":39},"01M6X7Y2P6FGZWH8GNJMDNZ2E0","retention-predictor","Predicts retention potential by evaluating usage frequency, habit formation mechanics, and churn risk factors for a B2C app idea.","https:\u002F\u002Fgithub.com\u002FMaxKmet\u002Fidea-validation-agents\u002Fblob\u002Fmain\u002Fskills\u002Fretention-predictor\u002FSKILL.md",[],[176,177,178,25,179,180,28,181,33,182,183],"retention predictor","retention","churn risk","usage","churn","mechanics","habit","risk"]