Cac Modeler logo

Cac Modeler

Community
MaxKmet
cac-modeler

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.

Overview

PublisherMaxKmet
Repositoryidea-validation-agents
Skill namecac-modeler
Stars
488
Forks
56
Bundled files
Instructions only
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by MaxKmet on GitHub. Read the source before you install it.

Installation

Install the Cac Modeler AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/MaxKmet/idea-validation-agents/tree/main/skills/cac-modeler
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/MaxKmet/idea-validation-agents.git /tmp/idea-validation-agents
mkdir -p .claude/skills
cp -r /tmp/idea-validation-agents/skills/cac-modeler .claude/skills/cac-modeler
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Cac Modeler in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Cac Modeler on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Cac Modeler is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Skill: cac-modeler

Purpose

Determine 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.

Input

  • Idea slug
  • memory/user_profile.md (budget constraint, ICP tier)
  • memory/ideas/<slug>/pricing.json (target price → revenue per user)
  • memory/ideas/<slug>/retention.json (D30 retention, churn risk → estimated lifespan)
  • memory/ideas/<slug>/distribution.json (viable channels, k-factor, ASO opportunity, creator fit)
  • memory/ideas/<slug>/competitors.json (competitor pricing and scale signals — optional)
  • memory/market_insights/<niche>-*-<YYYY>-<MM>.md (trend data — use all available platform files)

Using Market Insights

Trend analysis files provide critical calibration for CAC estimates. Extract the following:

FieldHow it informs CAC
trend_velocityRising markets have lower organic CAC (more discovery demand) but higher paid CAC (more advertisers bidding). Declining markets have the inverse.
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
monetization_evidenceIf competitors are already running ads (visible in trend narratives), paid CPMs in that niche are likely elevated. Adjust paid CAC estimates upward.
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

LTV Estimation

LTV is the foundation. Without an accurate LTV, CAC ratios are meaningless.

LTV Formula

LTV = ARPU_monthly × average_lifespan_months

Where:

  • ARPU_monthly (Average Revenue Per User per month):

    • Subscription: target_price × (1 - churn_rate_monthly)
    • Freemium: target_price × freemium_conversion_estimate
    • One-time purchase: price / 12 (annualized for comparison)
    • Consumables: average_monthly_spend (estimate from category)
  • average_lifespan_months (derived from retention.json):

D30 retentionEstimated avg lifespanRationale
≥ 25%12–18 monthsStrong retention; users who survive D30 tend to stay long
15–24%6–12 monthsDecent; typical for well-executed niche apps
8–14%3–6 monthsBelow average; expect significant churn in months 2–3
< 8%1–3 monthsDisposable; most users gone within a billing cycle

If retention.json is unavailable, use category median D30 benchmarks:

CategoryMedian D30
Social / messaging15–25%
Health & fitness10–18%
Finance / budgeting12–20%
Productivity / tools8–15%
Games (casual)5–12%
Education6–12%
Lifestyle / habit10–18%
Creative tools12–20%

LTV Confidence

Data availableConfidence
pricing.json + retention.json with D30 dataHigh
pricing.json only (using category median retention)Medium
Neither (using category defaults for both)Low — flag prominently

CAC by Channel

Indie Budget Tiers

Define the founder's budget context before estimating per-channel CAC:

TierMonthly ad/marketing spendWho this isImplication
Bootstrap$0–$100/moBeginner or side-project builderPaid channels are off the table. Must rely entirely on organic.
Lean$100–$500/moBuilder with some runwayCan test one paid channel with tight creative constraints.
Moderate$500–$2,000/moGrowth-tier or funded builderCan run proper paid campaigns with A/B testing on one platform.
Serious> $2,000/moRare for indie; growth stageMulti-platform paid, retargeting, influencer budgets.

Map from user_profile.md: budget_constraint = "low" → Bootstrap. "medium" → Lean. "high" → Moderate or Serious (ask if ambiguous).

Channel CAC Estimation

For each channel, estimate CAC using the funnel model:

CAC = cost_per_impression / (CTR × install_rate × activation_rate)

For 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.

Channel benchmarks with market_insights adjustments
ChannelBase CAC rangeAdjust down ifAdjust up if
ASO organic$0.50–$3.00ASO opportunity = "high" (from distribution.json); niche category with low competitionSaturated category; market_saturation = "high" from competitors.json
Content / SEO$1.00–$8.00Niche has high search volume with low-quality top results; rising or rising-fast trend velocityCompetitive keywords dominated by established brands
TikTok organic$0.50–$5.00Niche 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
Reddit / community$0.50–$4.00Active communities discussing this problem (from Reddit market_insights); founder is an active community memberSmall or inactive communities; product is hard to discuss authentically
Paid social (Meta)$3.00–$40.00Broad audience, visual product, low CPM nicheCompetitive niche with high CPMs; narrow targeting required
Paid social (TikTok)$2.00–$25.00Trending niche (lower CPMs due to content volume); strong creative hookNiche with limited content; poor demo-ability
Influencer / creator$2.00–$25.00Creator economy fit = "high" (from distribution.json); micro-influencers available in nicheLow creator fit; only macro-influencers relevant (expensive)
Word of mouth / referral$0.00–$2.00k-factor ≥ 0.3 (from distribution.json); inherent or collaborative viral loopk-factor < 0.1; no natural sharing mechanic
Press / Product Hunt$0.00–$5.00Novel concept with clear narrative; uses new platform featureCrowded launch day; "me too" product

Press/Product 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.

Channel Relevance Filter

Not all channels apply to every idea. Skip channels that score "not applicable":

Skip conditionChannels to exclude
App has no visual output or demo hookTikTok organic, influencer
budget_constraint = "low" (Bootstrap tier)Paid social (both), influencer (unless micro/barter)
No relevant online communities existReddit / community
viral_loop_exists = false AND k_factor < 0.1Word of mouth / referral
Utility app with no narrative anglePress / Product Hunt

LTV:CAC Ratio Thresholds

After computing LTV and per-channel CAC, classify each channel:

LTV:CAC ratioClassificationMeaning
≥ 5:1ExcellentStrong unit economics. Scale this channel aggressively.
3:1–5:1HealthyViable and sustainable. Standard target for indie apps.
2:1–3:1MarginalBarely works. Viable only if the founder can optimize over time or retention improves.
1:1–2:1UnprofitableLosing money after overhead. Not viable unless LTV increases significantly.
< 1:1Cash burnEvery user costs more than they ever return. Do not use this channel.

A minimum of one channel at ≥ 3:1 is required for the overall viability verdict to be "viable."

Payback Period Calculation

Payback period answers: "How many months until a user has paid back their acquisition cost?"

payback_months = CAC / ARPU_monthly

Report the payback period for the recommended first channel and any channel with LTV:CAC ≥ 3:1.

Payback periodAssessment
≤ 1 monthExcellent — cash flow positive almost immediately
1–3 monthsGood — sustainable for a funded indie builder
3–6 monthsAcceptable — requires patience and runway
6–12 monthsRisky — the founder needs alternative income during this period
> 12 monthsDangerous — cash flow negative for over a year. Not viable at indie scale unless lifetime deal covers upfront cost.

For Bootstrap tier founders, any payback period > 3 months is a red flag — they likely can't sustain the cash gap.

Viability Verdict

ConditionVerdict
At least 2 channels with LTV:CAC ≥ 3:1, at least one organicviable
Exactly 1 channel with LTV:CAC ≥ 3:1, OR organic channels at 2:1–3:1 with improvement potentialmarginal
No channel achieves LTV:CAC ≥ 2:1, OR only paid channels viable but founder is Bootstrap tiernot-viable

If 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.

Process

  1. Load all inputs: pricing.json, retention.json, distribution.json, competitors.json, user_profile.md, and all matching memory/market_insights/<niche>-*-<YYYY>-<MM>.md files.
  2. Extract market_insights calibration signals (trend velocity, platform activity, monetization evidence, competitor ad activity).
  3. Determine founder's budget tier from user_profile.md.
  4. Compute LTV using the formula, pricing data, and retention data. Note confidence level.
  5. For each applicable channel (after relevance filter), estimate CAC using benchmarks adjusted by market_insights and distribution.json signals.
  6. Compute LTV:CAC ratio per channel. Classify each.
  7. Compute payback period for viable channels.
  8. Rank channels by LTV:CAC ratio. Select recommended first channel — must be executable by this founder at their budget tier.
  9. Determine viability verdict.
  10. Write output.

Output

Write to memory/ideas/<slug>/cac.json:

json
{
  "ltv": {
    "estimated_ltv": 0,
    "arpu_monthly": 0,
    "average_lifespan_months": 0,
    "ltv_confidence": "high | medium | low",
    "ltv_assumptions": []
  },
  "founder_budget_tier": "bootstrap | lean | moderate | serious",
  "cac_by_channel": {
    "aso_organic": { "cac": 0, "ltv_cac_ratio": 0, "classification": "", "payback_months": 0 },
    "content_seo": { "cac": 0, "ltv_cac_ratio": 0, "classification": "", "payback_months": 0 },
    "tiktok_organic": { "cac": 0, "ltv_cac_ratio": 0, "classification": "", "payback_months": 0 },
    "reddit_community": { "cac": 0, "ltv_cac_ratio": 0, "classification": "", "payback_months": 0 },
    "paid_social_meta": { "cac": 0, "ltv_cac_ratio": 0, "classification": "", "payback_months": 0 },
    "paid_social_tiktok": { "cac": 0, "ltv_cac_ratio": 0, "classification": "", "payback_months": 0 },
    "influencer": { "cac": 0, "ltv_cac_ratio": 0, "classification": "", "payback_months": 0 },
    "word_of_mouth": { "cac": 0, "ltv_cac_ratio": 0, "classification": "", "payback_months": 0 },
    "press_product_hunt": { "cac": 0, "ltv_cac_ratio": 0, "classification": "", "payback_months": 0, "one_time_cohort_estimate": 0 }
  },
  "skipped_channels": [],
  "viable_channels": [],
  "marginal_channels": [],
  "non_viable_channels": [],
  "recommended_first_channel": "",
  "recommended_first_channel_rationale": "",
  "payback_period_months": 0,
  "market_insights_adjustments": [],
  "viability_verdict": "viable | marginal | not-viable",
  "viability_verdict_rationale": ""
}

Notes

  • 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.
  • 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.
  • 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 / (1 / (1 - k)). A k-factor of 0.5 halves the effective CAC.
  • Press/Product 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.
  • If all market_insights files are past their stale_after date, note that CAC benchmarks may have shifted and recommend refreshing trend analysis.

Frequently asked questions

What does the Cac Modeler AI skill do?

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.

Why use Cac Modeler on TypingMind?

Because you install it once and use it with any model. Cac Modeler is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Cac Modeler in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/MaxKmet/idea-validation-agents/tree/main/skills/cac-modeler. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Cac Modeler?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Cac Modeler?

As many as you like. As long as a model supports skills, you can use Cac Modeler with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Cac Modeler AI skill free?

Yes. It is published on GitHub by MaxKmet under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇