[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6X7WP3SQVQ17RP3D4BNPVVN":3,"skill-same:01M6X7WP3SQVQ17RP3D4BNPVVN":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":26,"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},"01M6X7WP3SQVQ17RP3D4BNPVVN","cac-modeler",null,"Models LTV, CAC by channel, LTV:CAC ratios, and payback period for an indie developer. Uses market_insights to calibrate channel CPMs and competitive intensity. Includes indie budget tier definitions and viability thresholds.","MaxKmet\u002Fidea-validation-agents","MaxKmet","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F19517077?v=4","01M6X7QNAFCSMWXN7FDJS2KFGY","Max Kmet","01M6X7QNEEA69XPH7DCQRS5NJE",513,"MIT","https:\u002F\u002Fgithub.com\u002FMaxKmet\u002Fidea-validation-agents\u002Fblob\u002Fmain\u002Fskills\u002Fcac-modeler\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000040","财务",[27,28,29,30,31,32,33,34,35,36,37,38],"cac modeler","calibrate","developer","Budget","channel","Market","models","thresholds","intensity","competitive","insights","for","2026-11-10 10:12:30",false,"---\nname: cac-modeler\ndescription: Models LTV, CAC by channel, LTV:CAC ratios, and payback period for an indie developer. Uses market_insights to calibrate channel CPMs and competitive intensity. Includes indie budget tier definitions and viability thresholds.\n---\n\n\u003C!-- version: 0.2.0 | outputs: memory\u002Fideas\u002F\u003Cslug>\u002Fcac.json -->\n\n# Skill: cac-modeler\n\n## Purpose\n\nDetermine whether this indie developer can realistically acquire users profitably given their budget and the competitive landscape. Many ideas fail not because of bad products but because CAC exceeds LTV at indie scale. This skill builds a complete unit economics picture: LTV from retention and pricing, CAC from channel benchmarks calibrated by market_insights signals, and a payback timeline that tells the founder how long they need to fund growth before the business sustains itself.\n\n## Input\n\n- Idea slug\n- `memory\u002Fuser_profile.md` (budget constraint, ICP tier)\n- `memory\u002Fideas\u002F\u003Cslug>\u002Fpricing.json` (target price → revenue per user)\n- `memory\u002Fideas\u002F\u003Cslug>\u002Fretention.json` (D30 retention, churn risk → estimated lifespan)\n- `memory\u002Fideas\u002F\u003Cslug>\u002Fdistribution.json` (viable channels, k-factor, ASO opportunity, creator fit)\n- `memory\u002Fideas\u002F\u003Cslug>\u002Fcompetitors.json` (competitor pricing and scale signals — optional)\n- `memory\u002Fmarket_insights\u002F\u003Cniche>-*-\u003CYYYY>-\u003CMM>.md` (trend data — **use all available platform files**)\n\n### Using Market Insights\n\nTrend analysis files provide critical calibration for CAC estimates. Extract the following:\n\n| Field | How it informs CAC |\n|---|---|\n| `trend_velocity` | Rising markets have lower organic CAC (more discovery demand) but higher paid CAC (more advertisers bidding). Declining markets have the inverse. |\n| `top_signals` (TikTok hashtags, Reddit threads, App Store categories) | Validate which organic channels have real activity — a niche trending on TikTok means TikTok organic CAC is at the lower end of the range |\n| `monetization_evidence` | If competitors are already running ads (visible in trend narratives), paid CPMs in that niche are likely elevated. Adjust paid CAC estimates upward. |\n| Platform narrative (Reddit pain points, creator engagement) | Identifies which communities are already activated — lower cost to reach an audience that's already discussing the problem |\n\n## LTV Estimation\n\nLTV is the foundation. Without an accurate LTV, CAC ratios are meaningless.\n\n### LTV Formula\n\n```\nLTV = ARPU_monthly × average_lifespan_months\n```\n\nWhere:\n- **ARPU_monthly** (Average Revenue Per User per month):\n  - Subscription: `target_price × (1 - churn_rate_monthly)`\n  - Freemium: `target_price × freemium_conversion_estimate`\n  - One-time purchase: `price \u002F 12` (annualized for comparison)\n  - Consumables: `average_monthly_spend` (estimate from category)\n\n- **average_lifespan_months** (derived from retention.json):\n\n| D30 retention | Estimated avg lifespan | Rationale |\n|---|---|---|\n| ≥ 25% | 12–18 months | Strong retention; users who survive D30 tend to stay long |\n| 15–24% | 6–12 months | Decent; typical for well-executed niche apps |\n| 8–14% | 3–6 months | Below average; expect significant churn in months 2–3 |\n| \u003C 8% | 1–3 months | Disposable; most users gone within a billing cycle |\n\nIf `retention.json` is unavailable, use category median D30 benchmarks:\n\n| Category | Median D30 |\n|---|---|\n| Social \u002F messaging | 15–25% |\n| Health & fitness | 10–18% |\n| Finance \u002F budgeting | 12–20% |\n| Productivity \u002F tools | 8–15% |\n| Games (casual) | 5–12% |\n| Education | 6–12% |\n| Lifestyle \u002F habit | 10–18% |\n| Creative tools | 12–20% |\n\n### LTV Confidence\n\n| Data available | Confidence |\n|---|---|\n| `pricing.json` + `retention.json` with D30 data | High |\n| `pricing.json` only (using category median retention) | Medium |\n| Neither (using category defaults for both) | Low — flag prominently |\n\n## CAC by Channel\n\n### Indie Budget Tiers\n\nDefine the founder's budget context before estimating per-channel CAC:\n\n| Tier | Monthly ad\u002Fmarketing spend | Who this is | Implication |\n|---|---|---|---|\n| **Bootstrap** | $0–$100\u002Fmo | Beginner or side-project builder | Paid channels are off the table. Must rely entirely on organic. |\n| **Lean** | $100–$500\u002Fmo | Builder with some runway | Can test one paid channel with tight creative constraints. |\n| **Moderate** | $500–$2,000\u002Fmo | Growth-tier or funded builder | Can run proper paid campaigns with A\u002FB testing on one platform. |\n| **Serious** | > $2,000\u002Fmo | Rare for indie; growth stage | Multi-platform paid, retargeting, influencer budgets. |\n\nMap from `user_profile.md`: `budget_constraint` = \"low\" → Bootstrap. \"medium\" → Lean. \"high\" → Moderate or Serious (ask if ambiguous).\n\n### Channel CAC Estimation\n\nFor each channel, estimate CAC using the funnel model:\n\n```\nCAC = cost_per_impression \u002F (CTR × install_rate × activation_rate)\n```\n\nFor organic channels, \"cost\" is time-valued at $0 but the skill reports the **effective CAC** — the opportunity cost of the founder's time, normalized per acquired user.\n\n#### Channel benchmarks with market_insights adjustments\n\n| Channel | Base CAC range | Adjust down if | Adjust up if |\n|---|---|---|---|\n| **ASO organic** | $0.50–$3.00 | ASO opportunity = \"high\" (from distribution.json); niche category with low competition | Saturated category; `market_saturation` = \"high\" from competitors.json |\n| **Content \u002F SEO** | $1.00–$8.00 | Niche has high search volume with low-quality top results; `rising` or `rising-fast` trend velocity | Competitive keywords dominated by established brands |\n| **TikTok organic** | $0.50–$5.00 | Niche is trending on TikTok (visible in market_insights top_signals); app produces shareable output (content-as-distribution loop) | Low TikTok engagement for this category; no visual hook |\n| **Reddit \u002F community** | $0.50–$4.00 | Active communities discussing this problem (from Reddit market_insights); founder is an active community member | Small or inactive communities; product is hard to discuss authentically |\n| **Paid social (Meta)** | $3.00–$40.00 | Broad audience, visual product, low CPM niche | Competitive niche with high CPMs; narrow targeting required |\n| **Paid social (TikTok)** | $2.00–$25.00 | Trending niche (lower CPMs due to content volume); strong creative hook | Niche with limited content; poor demo-ability |\n| **Influencer \u002F creator** | $2.00–$25.00 | Creator economy fit = \"high\" (from distribution.json); micro-influencers available in niche | Low creator fit; only macro-influencers relevant (expensive) |\n| **Word of mouth \u002F referral** | $0.00–$2.00 | k-factor ≥ 0.3 (from distribution.json); inherent or collaborative viral loop | k-factor \u003C 0.1; no natural sharing mechanic |\n| **Press \u002F Product Hunt** | $0.00–$5.00 | Novel concept with clear narrative; uses new platform feature | Crowded launch day; \"me too\" product |\n\n> Press\u002FProduct Hunt provides a one-time spike, not sustained acquisition. Model it as a fixed user cohort (typically 500–5,000 installs), not a recurring channel.\n\n### Channel Relevance Filter\n\nNot all channels apply to every idea. Skip channels that score \"not applicable\":\n\n| Skip condition | Channels to exclude |\n|---|---|\n| App has no visual output or demo hook | TikTok organic, influencer |\n| `budget_constraint` = \"low\" (Bootstrap tier) | Paid social (both), influencer (unless micro\u002Fbarter) |\n| No relevant online communities exist | Reddit \u002F community |\n| `viral_loop_exists` = false AND k_factor \u003C 0.1 | Word of mouth \u002F referral |\n| Utility app with no narrative angle | Press \u002F Product Hunt |\n\n## LTV:CAC Ratio Thresholds\n\nAfter computing LTV and per-channel CAC, classify each channel:\n\n| LTV:CAC ratio | Classification | Meaning |\n|---|---|---|\n| ≥ 5:1 | **Excellent** | Strong unit economics. Scale this channel aggressively. |\n| 3:1–5:1 | **Healthy** | Viable and sustainable. Standard target for indie apps. |\n| 2:1–3:1 | **Marginal** | Barely works. Viable only if the founder can optimize over time or retention improves. |\n| 1:1–2:1 | **Unprofitable** | Losing money after overhead. Not viable unless LTV increases significantly. |\n| \u003C 1:1 | **Cash burn** | Every user costs more than they ever return. Do not use this channel. |\n\nA minimum of **one channel at ≥ 3:1** is required for the overall viability verdict to be \"viable.\"\n\n## Payback Period Calculation\n\nPayback period answers: \"How many months until a user has paid back their acquisition cost?\"\n\n```\npayback_months = CAC \u002F ARPU_monthly\n```\n\nReport the payback period for the **recommended first channel** and any channel with LTV:CAC ≥ 3:1.\n\n| Payback period | Assessment |\n|---|---|\n| ≤ 1 month | Excellent — cash flow positive almost immediately |\n| 1–3 months | Good — sustainable for a funded indie builder |\n| 3–6 months | Acceptable — requires patience and runway |\n| 6–12 months | Risky — the founder needs alternative income during this period |\n| > 12 months | Dangerous — cash flow negative for over a year. Not viable at indie scale unless lifetime deal covers upfront cost. |\n\nFor **Bootstrap tier** founders, any payback period > 3 months is a red flag — they likely can't sustain the cash gap.\n\n## Viability Verdict\n\n| Condition | Verdict |\n|---|---|\n| At least 2 channels with LTV:CAC ≥ 3:1, at least one organic | **viable** |\n| Exactly 1 channel with LTV:CAC ≥ 3:1, OR organic channels at 2:1–3:1 with improvement potential | **marginal** |\n| No channel achieves LTV:CAC ≥ 2:1, OR only paid channels viable but founder is Bootstrap tier | **not-viable** |\n\nIf market_insights show `trend_velocity` = \"rising-fast\", add a note that organic CAC may improve as the market grows (more search volume, more platform promotion of trending content). This is speculative but worth flagging.\n\n## Process\n\n1. Load all inputs: `pricing.json`, `retention.json`, `distribution.json`, `competitors.json`, `user_profile.md`, and all matching `memory\u002Fmarket_insights\u002F\u003Cniche>-*-\u003CYYYY>-\u003CMM>.md` files.\n2. Extract market_insights calibration signals (trend velocity, platform activity, monetization evidence, competitor ad activity).\n3. Determine founder's budget tier from `user_profile.md`.\n4. Compute LTV using the formula, pricing data, and retention data. Note confidence level.\n5. For each applicable channel (after relevance filter), estimate CAC using benchmarks adjusted by market_insights and distribution.json signals.\n6. Compute LTV:CAC ratio per channel. Classify each.\n7. Compute payback period for viable channels.\n8. Rank channels by LTV:CAC ratio. Select recommended first channel — must be executable by this founder at their budget tier.\n9. Determine viability verdict.\n10. Write output.\n\n## Output\n\nWrite to `memory\u002Fideas\u002F\u003Cslug>\u002Fcac.json`:\n\n```json\n{\n  \"ltv\": {\n    \"estimated_ltv\": 0,\n    \"arpu_monthly\": 0,\n    \"average_lifespan_months\": 0,\n    \"ltv_confidence\": \"high | medium | low\",\n    \"ltv_assumptions\": []\n  },\n  \"founder_budget_tier\": \"bootstrap | lean | moderate | serious\",\n  \"cac_by_channel\": {\n    \"aso_organic\": { \"cac\": 0, \"ltv_cac_ratio\": 0, \"classification\": \"\", \"payback_months\": 0 },\n    \"content_seo\": { \"cac\": 0, \"ltv_cac_ratio\": 0, \"classification\": \"\", \"payback_months\": 0 },\n    \"tiktok_organic\": { \"cac\": 0, \"ltv_cac_ratio\": 0, \"classification\": \"\", \"payback_months\": 0 },\n    \"reddit_community\": { \"cac\": 0, \"ltv_cac_ratio\": 0, \"classification\": \"\", \"payback_months\": 0 },\n    \"paid_social_meta\": { \"cac\": 0, \"ltv_cac_ratio\": 0, \"classification\": \"\", \"payback_months\": 0 },\n    \"paid_social_tiktok\": { \"cac\": 0, \"ltv_cac_ratio\": 0, \"classification\": \"\", \"payback_months\": 0 },\n    \"influencer\": { \"cac\": 0, \"ltv_cac_ratio\": 0, \"classification\": \"\", \"payback_months\": 0 },\n    \"word_of_mouth\": { \"cac\": 0, \"ltv_cac_ratio\": 0, \"classification\": \"\", \"payback_months\": 0 },\n    \"press_product_hunt\": { \"cac\": 0, \"ltv_cac_ratio\": 0, \"classification\": \"\", \"payback_months\": 0, \"one_time_cohort_estimate\": 0 }\n  },\n  \"skipped_channels\": [],\n  \"viable_channels\": [],\n  \"marginal_channels\": [],\n  \"non_viable_channels\": [],\n  \"recommended_first_channel\": \"\",\n  \"recommended_first_channel_rationale\": \"\",\n  \"payback_period_months\": 0,\n  \"market_insights_adjustments\": [],\n  \"viability_verdict\": \"viable | marginal | not-viable\",\n  \"viability_verdict_rationale\": \"\"\n}\n```\n\n## Notes\n\n- The `recommended_first_channel` must be achievable by the founder at their current tier. Don't recommend paid social to a Bootstrap founder. Don't recommend Reddit community marketing to someone with no community presence. Cross-reference `user_profile.md` distribution advantages.\n- If `retention.json` is unavailable, LTV confidence drops to medium at best. Flag this prominently — CAC ratios are only as good as the LTV estimate, and LTV depends entirely on retention.\n- When `distribution.json` shows a strong viral loop (k-factor ≥ 0.3), the effective CAC for word-of-mouth should account for the viral multiplier: `effective_CAC = base_CAC \u002F (1 \u002F (1 - k))`. A k-factor of 0.5 halves the effective CAC.\n- Press\u002FProduct Hunt is not a channel strategy — it's a launch event. Model it as a one-time cohort (estimate 500–5,000 installs) and do not include it in recurring channel viability.\n- If all market_insights files are past their `stale_after` date, note that CAC benchmarks may have shifted and recommend refreshing trend analysis.\n","\u003C!-- version: 0.2.0 | outputs: memory\u002Fideas\u002F\u003Cslug>\u002Fcac.json -->\n\n# Skill: cac-modeler\n\n## Purpose\n\nDetermine whether this indie developer can realistically acquire users profitably given their budget and the competitive landscape. Many ideas fail not because of bad products but because CAC exceeds LTV at indie scale. This skill builds a complete unit economics picture: LTV from retention and pricing, CAC from channel benchmarks calibrated by market_insights signals, and a payback timeline that tells the founder how long they need to fund growth before the business sustains itself.\n\n## Input\n\n- Idea slug\n- `memory\u002Fuser_profile.md` (budget constraint, ICP tier)\n- `memory\u002Fideas\u002F\u003Cslug>\u002Fpricing.json` (target price → revenue per user)\n- `memory\u002Fideas\u002F\u003Cslug>\u002Fretention.json` (D30 retention, churn risk → estimated lifespan)\n- `memory\u002Fideas\u002F\u003Cslug>\u002Fdistribution.json` (viable channels, k-factor, ASO opportunity, creator fit)\n- `memory\u002Fideas\u002F\u003Cslug>\u002Fcompetitors.json` (competitor pricing and scale signals — optional)\n- `memory\u002Fmarket_insights\u002F\u003Cniche>-*-\u003CYYYY>-\u003CMM>.md` (trend data — **use all available platform files**)\n\n### Using Market Insights\n\nTrend analysis files provide critical calibration for CAC estimates. Extract the following:\n\n| Field | How it informs CAC |\n|---|---|\n| `trend_velocity` | Rising markets have lower organic CAC (more discovery demand) but higher paid CAC (more advertisers bidding). Declining markets have the inverse. |\n| `top_signals` (TikTok hashtags, Reddit threads, App Store categories) | Validate which organic channels have real activity — a niche trending on TikTok means TikTok organic CAC is at the lower end of the range |\n| `monetization_evidence` | If competitors are already running ads (visible in trend narratives), paid CPMs in that niche are likely elevated. Adjust paid CAC estimates upward. |\n| Platform narrative (Reddit pain points, creator engagement) | Identifies which communities are already activated — lower cost to reach an audience that's already discussing the problem |\n\n## LTV Estimation\n\nLTV is the foundation. Without an accurate LTV, CAC ratios are meaningless.\n\n### LTV Formula\n\n```\nLTV = ARPU_monthly × average_lifespan_months\n```\n\nWhere:\n- **ARPU_monthly** (Average Revenue Per User per month):\n  - Subscription: `target_price × (1 - churn_rate_monthly)`\n  - Freemium: `target_price × freemium_conversion_estimate`\n  - One-time purchase: `price \u002F 12` (annualized for comparison)\n  - Consumables: `average_monthly_spend` (estimate from category)\n\n- **average_lifespan_months** (derived from retention.json):\n\n| D30 retention | Estimated avg lifespan | Rationale |\n|---|---|---|\n| ≥ 25% | 12–18 months | Strong retention; users who survive D30 tend to stay long |\n| 15–24% | 6–12 months | Decent; typical for well-executed niche apps |\n| 8–14% | 3–6 months | Below average; expect significant churn in months 2–3 |\n| \u003C 8% | 1–3 months | Disposable; most users gone within a billing cycle |\n\nIf `retention.json` is unavailable, use category median D30 benchmarks:\n\n| Category | Median D30 |\n|---|---|\n| Social \u002F messaging | 15–25% |\n| Health & fitness | 10–18% |\n| Finance \u002F budgeting | 12–20% |\n| Productivity \u002F tools | 8–15% |\n| Games (casual) | 5–12% |\n| Education | 6–12% |\n| Lifestyle \u002F habit | 10–18% |\n| Creative tools | 12–20% |\n\n### LTV Confidence\n\n| Data available | Confidence |\n|---|---|\n| `pricing.json` + `retention.json` with D30 data | High |\n| `pricing.json` only (using category median retention) | Medium |\n| Neither (using category defaults for both) | Low — flag prominently |\n\n## CAC by Channel\n\n### Indie Budget Tiers\n\nDefine the founder's budget context before estimating per-channel CAC:\n\n| Tier | Monthly ad\u002Fmarketing spend | Who this is | Implication |\n|---|---|---|---|\n| **Bootstrap** | $0–$100\u002Fmo | Beginner or side-project builder | Paid channels are off the table. Must rely entirely on organic. |\n| **Lean** | $100–$500\u002Fmo | Builder with some runway | Can test one paid channel with tight creative constraints. |\n| **Moderate** | $500–$2,000\u002Fmo | Growth-tier or funded builder | Can run proper paid campaigns with A\u002FB testing on one platform. |\n| **Serious** | > $2,000\u002Fmo | Rare for indie; growth stage | Multi-platform paid, retargeting, influencer budgets. |\n\nMap from `user_profile.md`: `budget_constraint` = \"low\" → Bootstrap. \"medium\" → Lean. \"high\" → Moderate or Serious (ask if ambiguous).\n\n### Channel CAC Estimation\n\nFor each channel, estimate CAC using the funnel model:\n\n```\nCAC = cost_per_impression \u002F (CTR × install_rate × activation_rate)\n```\n\nFor organic channels, \"cost\" is time-valued at $0 but the skill reports the **effective CAC** — the opportunity cost of the founder's time, normalized per acquired user.\n\n#### Channel benchmarks with market_insights adjustments\n\n| Channel | Base CAC range | Adjust down if | Adjust up if |\n|---|---|---|---|\n| **ASO organic** | $0.50–$3.00 | ASO opportunity = \"high\" (from distribution.json); niche category with low competition | Saturated category; `market_saturation` = \"high\" from competitors.json |\n| **Content \u002F SEO** | $1.00–$8.00 | Niche has high search volume with low-quality top results; `rising` or `rising-fast` trend velocity | Competitive keywords dominated by established brands |\n| **TikTok organic** | $0.50–$5.00 | Niche is trending on TikTok (visible in market_insights top_signals); app produces shareable output (content-as-distribution loop) | Low TikTok engagement for this category; no visual hook |\n| **Reddit \u002F community** | $0.50–$4.00 | Active communities discussing this problem (from Reddit market_insights); founder is an active community member | Small or inactive communities; product is hard to discuss authentically |\n| **Paid social (Meta)** | $3.00–$40.00 | Broad audience, visual product, low CPM niche | Competitive niche with high CPMs; narrow targeting required |\n| **Paid social (TikTok)** | $2.00–$25.00 | Trending niche (lower CPMs due to content volume); strong creative hook | Niche with limited content; poor demo-ability |\n| **Influencer \u002F creator** | $2.00–$25.00 | Creator economy fit = \"high\" (from distribution.json); micro-influencers available in niche | Low creator fit; only macro-influencers relevant (expensive) |\n| **Word of mouth \u002F referral** | $0.00–$2.00 | k-factor ≥ 0.3 (from distribution.json); inherent or collaborative viral loop | k-factor \u003C 0.1; no natural sharing mechanic |\n| **Press \u002F Product Hunt** | $0.00–$5.00 | Novel concept with clear narrative; uses new platform feature | Crowded launch day; \"me too\" product |\n\n> Press\u002FProduct Hunt provides a one-time spike, not sustained acquisition. Model it as a fixed user cohort (typically 500–5,000 installs), not a recurring channel.\n\n### Channel Relevance Filter\n\nNot all channels apply to every idea. Skip channels that score \"not applicable\":\n\n| Skip condition | Channels to exclude |\n|---|---|\n| App has no visual output or demo hook | TikTok organic, influencer |\n| `budget_constraint` = \"low\" (Bootstrap tier) | Paid social (both), influencer (unless micro\u002Fbarter) |\n| No relevant online communities exist | Reddit \u002F community |\n| `viral_loop_exists` = false AND k_factor \u003C 0.1 | Word of mouth \u002F referral |\n| Utility app with no narrative angle | Press \u002F Product Hunt |\n\n## LTV:CAC Ratio Thresholds\n\nAfter computing LTV and per-channel CAC, classify each channel:\n\n| LTV:CAC ratio | Classification | Meaning |\n|---|---|---|\n| ≥ 5:1 | **Excellent** | Strong unit economics. Scale this channel aggressively. |\n| 3:1–5:1 | **Healthy** | Viable and sustainable. Standard target for indie apps. |\n| 2:1–3:1 | **Marginal** | Barely works. Viable only if the founder can optimize over time or retention improves. |\n| 1:1–2:1 | **Unprofitable** | Losing money after overhead. Not viable unless LTV increases significantly. |\n| \u003C 1:1 | **Cash burn** | Every user costs more than they ever return. Do not use this channel. |\n\nA minimum of **one channel at ≥ 3:1** is required for the overall viability verdict to be \"viable.\"\n\n## Payback Period Calculation\n\nPayback period answers: \"How many months until a user has paid back their acquisition cost?\"\n\n```\npayback_months = CAC \u002F ARPU_monthly\n```\n\nReport the payback period for the **recommended first channel** and any channel with LTV:CAC ≥ 3:1.\n\n| Payback period | Assessment |\n|---|---|\n| ≤ 1 month | Excellent — cash flow positive almost immediately |\n| 1–3 months | Good — sustainable for a funded indie builder |\n| 3–6 months | Acceptable — requires patience and runway |\n| 6–12 months | Risky — the founder needs alternative income during this period |\n| > 12 months | Dangerous — cash flow negative for over a year. Not viable at indie scale unless lifetime deal covers upfront cost. |\n\nFor **Bootstrap tier** founders, any payback period > 3 months is a red flag — they likely can't sustain the cash gap.\n\n## Viability Verdict\n\n| Condition | Verdict |\n|---|---|\n| At least 2 channels with LTV:CAC ≥ 3:1, at least one organic | **viable** |\n| Exactly 1 channel with LTV:CAC ≥ 3:1, OR organic channels at 2:1–3:1 with improvement potential | **marginal** |\n| No channel achieves LTV:CAC ≥ 2:1, OR only paid channels viable but founder is Bootstrap tier | **not-viable** |\n\nIf market_insights show `trend_velocity` = \"rising-fast\", add a note that organic CAC may improve as the market grows (more search volume, more platform promotion of trending content). This is speculative but worth flagging.\n\n## Process\n\n1. Load all inputs: `pricing.json`, `retention.json`, `distribution.json`, `competitors.json`, `user_profile.md`, and all matching `memory\u002Fmarket_insights\u002F\u003Cniche>-*-\u003CYYYY>-\u003CMM>.md` files.\n2. Extract market_insights calibration signals (trend velocity, platform activity, monetization evidence, competitor ad activity).\n3. Determine founder's budget tier from `user_profile.md`.\n4. Compute LTV using the formula, pricing data, and retention data. Note confidence level.\n5. For each applicable channel (after relevance filter), estimate CAC using benchmarks adjusted by market_insights and distribution.json signals.\n6. Compute LTV:CAC ratio per channel. Classify each.\n7. Compute payback period for viable channels.\n8. Rank channels by LTV:CAC ratio. Select recommended first channel — must be executable by this founder at their budget tier.\n9. Determine viability verdict.\n10. Write output.\n\n## Output\n\nWrite to `memory\u002Fideas\u002F\u003Cslug>\u002Fcac.json`:\n\n```json\n{\n  \"ltv\": {\n    \"estimated_ltv\": 0,\n    \"arpu_monthly\": 0,\n    \"average_lifespan_months\": 0,\n    \"ltv_confidence\": \"high | medium | low\",\n    \"ltv_assumptions\": []\n  },\n  \"founder_budget_tier\": \"bootstrap | lean | moderate | serious\",\n  \"cac_by_channel\": {\n    \"aso_organic\": { \"cac\": 0, \"ltv_cac_ratio\": 0, \"classification\": \"\", \"payback_months\": 0 },\n    \"content_seo\": { \"cac\": 0, \"ltv_cac_ratio\": 0, \"classification\": \"\", \"payback_months\": 0 },\n    \"tiktok_organic\": { \"cac\": 0, \"ltv_cac_ratio\": 0, \"classification\": \"\", \"payback_months\": 0 },\n    \"reddit_community\": { \"cac\": 0, \"ltv_cac_ratio\": 0, \"classification\": \"\", \"payback_months\": 0 },\n    \"paid_social_meta\": { \"cac\": 0, \"ltv_cac_ratio\": 0, \"classification\": \"\", \"payback_months\": 0 },\n    \"paid_social_tiktok\": { \"cac\": 0, \"ltv_cac_ratio\": 0, \"classification\": \"\", \"payback_months\": 0 },\n    \"influencer\": { \"cac\": 0, \"ltv_cac_ratio\": 0, \"classification\": \"\", \"payback_months\": 0 },\n    \"word_of_mouth\": { \"cac\": 0, \"ltv_cac_ratio\": 0, \"classification\": \"\", \"payback_months\": 0 },\n    \"press_product_hunt\": { \"cac\": 0, \"ltv_cac_ratio\": 0, \"classification\": \"\", \"payback_months\": 0, \"one_time_cohort_estimate\": 0 }\n  },\n  \"skipped_channels\": [],\n  \"viable_channels\": [],\n  \"marginal_channels\": [],\n  \"non_viable_channels\": [],\n  \"recommended_first_channel\": \"\",\n  \"recommended_first_channel_rationale\": \"\",\n  \"payback_period_months\": 0,\n  \"market_insights_adjustments\": [],\n  \"viability_verdict\": \"viable | marginal | not-viable\",\n  \"viability_verdict_rationale\": \"\"\n}\n```\n\n## Notes\n\n- The `recommended_first_channel` must be achievable by the founder at their current tier. Don't recommend paid social to a Bootstrap founder. Don't recommend Reddit community marketing to someone with no community presence. Cross-reference `user_profile.md` distribution advantages.\n- If `retention.json` is unavailable, LTV confidence drops to medium at best. Flag this prominently — CAC ratios are only as good as the LTV estimate, and LTV depends entirely on retention.\n- When `distribution.json` shows a strong viral loop (k-factor ≥ 0.3), the effective CAC for word-of-mouth should account for the viral multiplier: `effective_CAC = base_CAC \u002F (1 \u002F (1 - k))`. A k-factor of 0.5 halves the effective CAC.\n- Press\u002FProduct Hunt is not a channel strategy — it's a launch event. Model it as a one-time cohort (estimate 500–5,000 installs) and do not include it in recurring channel viability.\n- If all market_insights files are past their `stale_after` date, note that CAC benchmarks may have shifted and recommend refreshing trend analysis.\n",{"name":5,"description":7},"main","3a4c800a3022e73e9997533b603c79b60ee7597a","skills\u002Fcac-modeler",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 cac-modeler",{"tool":58,"command":59},"bunx","bunx skills add MaxKmet\u002Fidea-validation-agents --skill cac-modeler",{"tool":61,"command":62},"pnpm","pnpm dlx skills add MaxKmet\u002Fidea-validation-agents --skill cac-modeler","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FMaxKmet\u002Fidea-validation-agents\u002Fblob\u002Fmain\u002Fskills\u002Fcac-modeler\u002FSKILL.md",true,[],[67,83,109,128,153,172],{"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,76,77,78,79,80,81,82],"detection","weakness detection","modes","root","output","as","dimensions","scoring","idea",{"skillNo":84,"name":85,"nameZh":6,"description":86,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":87,"categories":88,"keywords":94,"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",[89],{"categoryNo":90,"categoryName":91,"taxonomyType":92,"taxonomyTypeDesc":93},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[95,96,97,98,99,100,101,102,103,104,105,106,107,108],"segmentation","user","user segmentation","profiler","user segmentation profiler","constraints","run","workflow","session","beginner","icp","goals","builder","growth",{"skillNo":110,"name":111,"nameZh":6,"description":112,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":113,"categories":114,"keywords":115,"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",[],[116,96,117,118,119,120,121,122,123,124,125,126,127],"background","user background interviewer","with","types","understand","app","deep","ideas","domain","interview","networks","knowledge",{"skillNo":129,"name":130,"nameZh":6,"description":131,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":132,"categories":133,"keywords":137,"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",[134],{"categoryNo":135,"categoryName":136,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000031","产品经理",[138,139,140,141,121,142,143,144,145,146,147,148,149,150,151,152],"product","mapper","trend to product mapper","trend","topics","extracting","trending","problem","fit","viral","monetization","social","maps","social content","content",{"skillNo":154,"name":155,"nameZh":6,"description":156,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":157,"categories":158,"keywords":159,"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",[],[160,141,161,162,38,163,37,164,165,121,166,167,168,32,169,170,171],"analysis","trend analysis","across","google trends","store","trends","app store","tiktok","reddit","file","memory","google",{"skillNo":173,"name":174,"nameZh":6,"description":175,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":176,"categories":177,"keywords":178,"publishedAt":39},"01M6X7Y5GHKXC295FGVJN4Y93R","tam-sam-som-builder","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.","https:\u002F\u002Fgithub.com\u002FMaxKmet\u002Fidea-validation-agents\u002Fblob\u002Fmain\u002Fskills\u002Ftam-sam-som-builder\u002FSKILL.md",[],[179,180,107,181,82,182,183,141,184,108,32,185,186,37,38,187,188,189,121,190],"tam sam som builder","sam","community","velocity","signals","up","benchmarks","revenue","rate","competitor","proxies","data"]