CAC/LTV 计算、免费→付费转化率行业基准 (2-5%)、何时砍免费层、用量限制怎么设。用数学而不是直觉做免费层决策。
免费层不是"做慈善"。它的本质是一个获客渠道——用基础设施成本代替广告成本。理解这个等式,你就理解了免费层的全部经济逻辑:
当 R_freemium > 0 时,免费层是正 ROI 的获客渠道。当 R_freemium < 0 时,你在烧钱养不付费的人。
| 指标 | 广告获客 | 免费层获客 |
|---|---|---|
| 获取 1 个付费用户的前置成本 | $150-500(CAC) | ~$25-100(含免费用户服务成本) |
| 成本发生时间 | 获客前(先花钱再获客) | 获客后(先获客再付费) |
| 现金流模式 | 先出后进(负现金流周期) | 渐进积累(更平滑) |
| 规模弹性 | 线性增长(广告费 ≈ 用户数) | 亚线性增长(口碑/网络效应) |
| 风险 | 广告效率递减、渠道竞争 | 免费用户占满资源、低转化率 |
数据来源:综合 OpenView 2024 SaaS Benchmarks、Reforge PLG 课程、David Skok "SaaS Metrics 2.0"。CAC 范围基于 B2B SaaS 行业公开数据。
从上面的公式可以推导出盈亏平衡转化率——低于这个数字,免费层就在亏钱:
如果你的免费用户每月服务成本是 $0.50,付费用户 ARPU $25/月、平均留存 12 个月,那么只要转化率 > 1%,免费层就是正 ROI。这就是为什么很多产品即使只有 2% 的转化率,免费层仍然划算。
Customer Acquisition Cost(CAC)是 SaaS 经济学中最被滥用的指标。大多数人只算了广告费,忽略了真正的全量成本。
包含所有 Sales + Marketing 费用 / 所有新付费用户。
适合:整体业务健康度评估
B2B SaaS 典型值:$150-$500
来源:OpenView 2024 Benchmarks, KeyBanc SaaS Survey
按获客渠道拆分:SEO CAC、付费广告 CAC、免费层 CAC。
适合:优化获客组合
免费层 CAC 典型值:$10-$50
来源:Reforge PLG 课程、OpenView Benchmarks
只算付费广告 / 广告获取的用户数。
适合:广告投放 ROI 评估
典型值:$200-$1000+(取决于赛道)
来源:Lenny Rachitsky Newsletter 调查数据
对于 Freemium 产品,真正的"免费层 CAC"应该这样算:
# Freemium 产品的有效 CAC 计算
monthly_free_users = 100_000 # 每月免费用户(活跃)
conversion_rate = 0.025 # 2.5% 月度免费→付费转化率
cost_per_free_user_monthly = 0.30 # 每免费用户每月基础设施成本
paid_marketing_spend = 5_000 # 每月付费营销(内容、SEO 工具等)
support_cost_per_free_user = 0.10 # 免费用户支持成本(工单/社区)
# 免费层总成本
free_layer_cost = (
monthly_free_users * cost_per_free_user_monthly +
monthly_free_users * support_cost_per_free_user +
paid_marketing_spend
)
# = 100,000 × $0.30 + 100,000 × $0.10 + $5,000 = $35,000
# 新付费用户
new_paid_users = monthly_free_users * conversion_rate
# = 100,000 × 2.5% = 2,500
# 有效 CAC
effective_cac = free_layer_cost / new_paid_users
# = $35,000 / 2,500 = $14/付费用户
print(f"免费层有效 CAC: ${effective_cac:.0f}/付费用户")
print(f"对比:付费广告 CAC 通常 $200-$500")
print(f"免费层获客效率: {200/effective_cac:.0f}x 更优")
Life-Time Value(LTV)是判断"一个付费用户值多少钱"的核心指标。和 CAC 配合,就是你定价决策的罗盘。
LTV 不是"收入",是毛利。AI 产品尤其危险——API 调用成本可能占收入的 40-60%。
例:$25/月订阅,API 成本 $12/月 → Gross Margin 只有 52%,不是 100%。
修正后 LTV = $25 × 20 × 0.52 = $260(不是 $500)
月 Churn 3% 听起来不多,但年化 = 1 - (1-0.03)^12 = 30.6%。近 1/3 的用户每年会流失。
平均生命周期 = 1/0.03 = 33 个月 ≈ 2.75 年,不是 5 年。
好的 SaaS 有 Net Revenue Retention (NRR) > 100%——现有用户付的钱越来越多(加座位、升级、用量增长)。
如果 NRR = 120%,LTV 应该乘以 ~1.2x。但早期产品往往 NRR < 100%。
| LTV:CAC | 评价 | 行动 |
|---|---|---|
| < 1:1 | 🚨 每花 1 元获客只能收回不到 1 元 | 立即停止付费获客,检查定价和留存 |
| 1:1 - 3:1 | ⚠️ 勉强回本,增长不健康 | 优化转化率或提高 ARPU |
| 3:1 - 5:1 | ✅ 健康的 SaaS 单位经济学 | 加大获客投入 |
| > 5:1 | 🤔 可能获客投入不足 | 你可能在"省钱"而非增长——考虑加大获客 |
来源:David Skok "SaaS Metrics 2.0" (2012, 持续更新的行业标杆)、Sequoia Capital 投资备忘录参考值。3:1 是行业公认的健康下限。
Freemium → Paid 的转化率是最被误读的指标。2-5% 听起来很低,但在正确的框架下,它可能是你能找到的最便宜的获客方式。
| 产品类型 | 典型转化率 | 顶级表现 | 关键因素 | 代表产品 |
|---|---|---|---|---|
| 开发者工具 (DevTools) | 3-8% | 10%+ | 用户技术能力强、付费意愿高;但免费替代品多 | Cursor, Raycast, Linear |
| 协作/项目管理 | 2-5% | 7%+ | 协作墙驱动团队付费,但单人可能永远免费用 | Notion, Slack, Trello |
| 设计/Creative 工具 | 2-4% | 6%+ | 免费层通常功能足够,视觉产出物驱动升级 | Figma, Canva |
| 基础设施/API | 5-10% | 15%+ | 用量墙非常明确,超量就必须付费 | Vercel, Supabase, OpenAI |
| AI Consumer 工具 | 1-3% | 5%+ | 消费者付费意愿低、替代品多、AI 成本高 | ChatGPT Plus, Perplexity Pro |
| B2B Enterprise | 0.5-2% | 3%+ | 免费层主要用于 PoC,销售团队跟进转化 | AWS Free Tier, GCP |
数据来源:综合 OpenView 2024 SaaS Benchmarks、ProfitWell/Paddle State of SaaS Pricing 报告、Reforge PLG 指标库、各产品公开披露数据。具体数字因定义不同(月度 vs 年度、注册 vs 活跃)会有差异。
免费→付费不是"第 1 个月 2%"。用户在不同时间点转化,时间分布决定了你的耐心应该有多大。
| 时间段 | 累计转化率 | 特征 |
|---|---|---|
| 第 1-7 天 | 0.5-1.5% | "快速评估型"用户——试用后立即决定付费或离开 |
| 第 8-30 天 | 1.5-3% | "渐进发现型"——逐渐发现免费层不够,撞墙后升级 |
| 第 31-90 天 | 3-4.5% | "深度依赖型"——重度使用后产生依赖,团队扩大触发协作墙 |
| 第 90+ 天 | 4.5-5.5% | "组织推动型"——个人免费使用→团队/公司引入→企业采购 |
来源:OpenView Benchmarks、Reforge "Freemium vs Free Trial" 框架。分布模型基于 B2B SaaS 中位数。
撞墙时不是"对不起功能不可用",而是"你刚触达免费上限,升级后你可以...(具体价值描述)"。
在用户达到"啊哈时刻"后推荐付费,而非注册就推销。Notion 在创建第 100 个 block 后推荐 Plus。
"你的同行中有 X% 选择了 Pro"比"升级获取更多功能"有效 3-5 倍。
月付 $20 → 年付 $16/月(8 折)。年付用户的 LTV 是月付的 1.5-2x(因为切换成本高、Churn 低)。
"首月半价"比"永久折扣"更有效——降低了首次付费的心理门槛,但不贬低产品价值。
免费层不是万能药。选错场景,它会变成一个无底洞。以下是决策框架。
| 条件 | 为什么 | 验证方法 |
|---|---|---|
| 边际成本 ≈ 0 | 每多一个免费用户几乎不增加成本(纯软件、非 AI 推理) | 计算 Cost_per_free_user,如果 < $0.10/月 → ✅ |
| 网络效应存在 | 更多免费用户 = 更好的产品(市场、社区、数据飞轮) | 用户量增加是否直接提升产品价值? |
| 自传播 / PLG | 免费用户会带来更多用户(邀请、分享、口碑) | Viral Coefficient > 0.3?NPS > 40? |
| 产品有明确的"撞墙"时刻 | 用户自然触达用量/功能/协作限制 | 观察:活跃免费用户 30 天内是否撞墙 > 20% |
| Top-down 采购路径 | 个人免费 → 团队 → 企业(Bottom-up PLG) | 付费用户中 X% 来自免费层升级?> 30% → ✅ |
| 竞争激烈的市场 | 免费层是差异化武器——竞品收费你免费 | 目标用户搜索替代方案的频率高? |
| 信号 | 为什么危险 | 行动 |
|---|---|---|
| 免费用户服务成本 > $1/月/人 | AI 推理、GPU 计算、视频转码等高成本操作 | 改为 Free Trial(限时)或 Demo |
| 转化率 < 0.5% | 200 个免费用户才换来 1 个付费——成本效率极低 | 检查免费层是否有"完整价值"而非"残缺体验" |
| 免费用户占满支持资源 | 付费用户等 Support 排在 100 个免费用户后面 | 免费用户限 Support 通道(社区/文档 only) |
| 没有自然的"撞墙"时刻 | 用户可以永远免费用下去且体验良好 | 增加用量限制或功能墙 |
| ARR > $10M 且 Sales-led | 免费层不再驱动增长,销售团队才是主力 | 弱化免费层,转为 Free Trial 或 Guided Demo |
| 产品极度垂直/小众 | 总 TAM 有限,免费层无法形成规模效应 | 直接收费,用 Free Trial 降低入门门槛 |
| 模式 | 机制 | 优势 | 劣势 | 适合谁 |
|---|---|---|---|---|
| Free Trial | 14-30 天免费试用,之后必须付费 | 无免费用户负担、高紧迫感 | 试用后流失率高、无自传播 | B2B、高 ACV 产品 |
| Money-back Guarantee | 付费但有 30 天退款保证 | 付费用户质量高、低风险 | 退款率 5-15%、需要退款流程 | 自信产品留存率高的团队 |
| Freemium Lite | 极简免费层(1 个项目/50 条记录) | 控制成本、保留获客 | 免费体验可能不够"上瘾" | 边际成本中等的 AI 产品 |
| Guided Demo | 销售团队引导的定制化演示 | 高转化率(20-40%)、高 ACV | 需要销售团队、不可扩展 | Enterprise SaaS |
| Open Source + Hosted | 开源免费,托管版收费 | 社区驱动增长、高信任度 | 部分用户自托管流失、支持负担 | 基础设施/DevTools |
用量限制是免费层最精妙的杠杆。设太低 → 用户还没"上瘾"就撞墙,直接流失;设太高 → 用户永远不需要升级。正确答案在中间——让轻度用户满足,让重度用户"正好不够"。
| 产品类型 | 轻度用户(周活跃) | 重度用户(周活跃) | 建议免费上限 |
|---|---|---|---|
| 代码补全 (Cursor) | ~100 次/周 | ~500 次/周 | ~450 次/月(让轻度用户自由,重度用户 1 周撞墙) |
| 项目管理 (Linear) | ~5 issues/周 | ~50 issues/周 | 250 issues(约 5 周重度使用量) |
| AI 对话 (ChatGPT) | ~10 次/天 | ~50 次/天 | ~15-20 次/天(轻度够用,重度每天撞墙) |
| 数据库 (Supabase) | ~100 queries/天 | ~10K queries/天 | 500MB 存储 + 500K rows(项目级够用,产品级不够) |
| 部署 (Vercel) | ~5 deploys/天 | ~50 deploys/天 | 100 GB-hr Serverless(Hobby 项目够用,生产不够) |
数据来源:各产品官网定价页面 2024-2025 数据 + 社区讨论推断的使用量级。实际限制值以官网为准。
免费上限应该至少覆盖"上瘾时间" × 轻度使用量。常见产品的上瘾时间:
| 产品 | 上瘾时间 | 为什么 |
|---|---|---|
| 代码编辑器 | 3-7 天 | 开发者一旦习惯了 AI 补全,手写代码会感觉"退化" |
| 项目管理 | 2-4 周 | 需要完整 Sprint 周期才能体会价值 |
| 笔记/知识库 | 2-4 周 | 需要积累足够的笔记量才能形成"第二大脑"依赖 |
| AI 对话 | 1-3 天 | 即时价值——第一次有效对话就会上瘾 |
| 部署/基础设施 | 1-2 周 | 第一个项目部署成功 → 尝试更多功能 |
不要猜——测。用量限制的最佳值需要数据验证。
# 用量限制 A/B 测试框架
import random
class UsageLimitExperiment:
def __init__(self):
self.variants = {
'control': 2000, # 当前免费上限
'variant_a': 1500, # 降低 25%
'variant_b': 3000, # 提高 50%
}
self.metrics = {v: {'free_users': 0, 'conversions': 0,
'churn_at_wall': 0, 'avg_time_to_wall': 0}
for v in self.variants}
def assign_variant(self, user_id):
"""随机分配实验组"""
return random.choice(list(self.variants.keys()))
def record_wall_hit(self, variant, converted=False, churned=False):
"""记录撞墙事件"""
self.metrics[variant]['free_users'] += 1
if converted:
self.metrics[variant]['conversions'] += 1
if churned:
self.metrics[variant]['churn_at_wall'] += 1
def results(self):
"""输出实验结果"""
print(f"{'Variant':<12} {'Limit':<8} {'Users':<8} "
f"{'Conv Rate':<12} {'Churn@Wall':<12}")
print("-" * 52)
for v, limit in self.variants.items():
m = self.metrics[v]
conv = m['conversions'] / max(m['free_users'], 1) * 100
churn = m['churn_at_wall'] / max(m['free_users'], 1) * 100
print(f"{v:<12} {limit:<8} {m['free_users']:<8} "
f"{conv:<12.1f}% {churn:<12.1f}%")
# 关键指标:
# 1. 转化率:哪个限制下转化率最高?
# 2. 撞墙流失率:降低限制是否导致流失?
# 3. 时间到撞墙:用户多久触达上限?
# 4. 转化后 ARPU:不同限制下的付费用户价值是否不同?
| 限制类型 | 机制 | 校准难度 | 最适合 | 代表产品 |
|---|---|---|---|---|
| 用量限制(次数/额度) | X 次/天 或 X 次/月 | ⭐⭐⭐ 中等 | AI 功能、API 调用 | Cursor 2000 补全/月 |
| 容量限制(存储/项目数) | X GB 存储 或 X 个项目 | ⭐⭐ 简单 | 数据库、文件管理 | Supabase 500MB DB |
| 功能限制(高级功能锁) | Pro 功能仅付费可用 | ⭐⭐⭐⭐ 较难 | 功能差异明显的工具 | Notion AI 附加、Linear 自定义视图 |
| 人数限制(团队规模) | 免费最多 X 人 | ⭐ 简单 | 协作工具 | Notion 5 人、Slack 无限人但功能受限 |
| 时间限制(历史数据) | 仅保留 X 天数据 | ⭐⭐ 简单 | 消息、日志类产品 | Slack 90 天消息 |
| 速度限制(速率/性能) | 免费层排队/低优先级 | ⭐⭐⭐ 中等 | 计算密集型产品 | OpenAI Free Tier Rate Limit |
| 水印/品牌限制 | 免费版带产品水印 | ⭐ 简单 | 设计/内容创作工具 | Canva 免费版带水印 |
调整参数,实时查看免费层的经济可行性。
| 指标 | 值 | 分析 |
|---|---|---|
| 免费层 | 2000 补全/月 + 50 高级请求/月 | ≈ 66 次/天补全,轻度开发者刚好够用 |
| Pro 价格 | $20/月(无限补全) | DevTools 中偏高,但目标用户付费意愿强 |
| 估算转化率 | 5-8%(截至写作时未能确认官方数据) | DevTools 高端、用户付费意愿强、用量墙明确 |
| 免费用户成本 | 低(补全是轻量 API 调用) | AI 推理有成本但单次极低,免费层是可控的获客渠道 |
| 核心墙 | 用量墙(补全次数)+ 功能墙(GPT-4/Claude 仅 Pro) | 双重墙:轻度用户撞用量墙,功能用户撞模型墙 |
经济模型分析:假设 100 万月活免费用户,2 美分/用户/月 API 成本 = $20K/月。3% 转化率 = 30,000 付费用户 × $20 = $600K MRR。免费层成本仅占 MRR 的 3.3%——极其高效。
| 指标 | 值 | 分析 |
|---|---|---|
| 免费层 | 无限 block、5 人协作、7 天页面历史 | 个人用户几乎永远够用——这是故意的 |
| Plus 价格 | $10/人/月 | 协作驱动:6+ 人团队必须付费 |
| AI 附加 | $10/人/月 | 独立于层级——AI 成本结构不同,必须单独定价 |
| 估算转化率 | 2-4%(截至写作时未能确认官方数据) | 个人用户大量免费使用,团队用户高转化 |
| 核心墙 | 协作墙(5 人限制)+ 功能墙(AI) | 个人免费 → 团队付费的自然路径 |
经济模型分析:Notion 的免费层成本极低(纯软件、无 AI 推理),1000 万免费用户的存储和带宽成本远低于广告获客成本。关键转化路径:个人用户在团队内推广 → 6 人以上触发协作墙 → $10/人/月起步。LTV 极高(Notion 用户 Churn 低,平均留存 > 24 个月)。
| 指标 | 值 | 分析 |
|---|---|---|
| 免费层 | 无限人、无限频道、90 天消息历史 | 人越多越"上瘾",但 90 天后看不到老消息 |
| Pro 价格 | $8.75/人/月 | 核心价值是"完整历史"——团队知识库 |
| 估算转化率 | 2-3%(截至写作时未能确认官方数据) | 小团队可能永远够用,大团队历史搜索需求强 |
| 核心墙 | 时间墙(90 天消息)+ 功能墙(App 集成数) | 时间墙精妙:不需要的消息不是痛点,需要的消息就是付费理由 |
经济模型分析:Slack 的免费层成本主要是消息存储——90 天限制精确控制了存储成本增长率。消息量是线性增长的,但 90 天截断使存储成本变为常量(而非无限增长)。一个 500 人团队每天产生 ~10K 条消息,90 天 ≈ 90 万条。超过 90 天的历史 = 付费理由,同时也是成本控制机制。
| 指标 | 值 | 分析 |
|---|---|---|
| 免费层 | GPT-4o mini 限次访问、基础功能 | OpenAI 2025 年逐步给免费用户提供 GPT-4o 访问,但 Rate Limit 严格 |
| Plus 价格 | $20/月 | 包含 GPT-4o、DALL-E、高级数据分析 |
| 估算转化率 | 1-3%(截至写作时未能确认官方数据) | 消费者付费意愿低、竞品多(Claude、Gemini) |
| 免费用户成本 | 高(每次对话都有推理成本) | 与 Notion 等纯软件产品完全不同 |
| 核心墙 | 速度墙(排队等待)+ 功能墙(高级模型/功能) | 速度是最有效的墙——免费用户排队,付费用户即时 |
经济模型分析:ChatGPT 的免费层是典型的"高成本免费层"。每个免费用户每次对话都有 GPU 推理成本。假设 1 亿月活免费用户,每人每天 3 次对话,每次 $0.002 推理成本 = 每日 $600K = 每月 $18M 免费层成本。2% 转化率 = 200 万付费用户 × $20 = $40M MRR。免费层成本占 MRR 的 45%——远高于 Cursor 的 3.3%。这就是 AI 产品免费层的困境。
推理成本估算基于 OpenAI API 定价 和公开的用户量级报告。实际内部成本可能更低(自有基础设施、模型优化),但量级差是真实的。
| 指标 | 值 | 分析 |
|---|---|---|
| 免费层 | Hobby: 100 GB-hr Serverless、1 人 | 个人项目完全够用——这就是 Vercel 的意图 |
| Pro 价格 | $20/人/月 + 用量计费 | 团队 + 生产流量 → 必须付费 |
| 估算转化率 | 5-10%(截至写作时未能确认官方数据) | 基础设施类产品转化率高——用量墙非常明确 |
| 核心墙 | 用量墙(带宽/计算)+ 协作墙(1 人限制)+ 功能墙(分析/Preview Deployments) | 三重墙确保个人 Hobby 和生产 Pro 清晰分界 |
经济模型分析:Vercel 的免费层成本主要是 CDN 带宽和 Serverless 计算时间。Hobby 项目流量低,边际成本极小。但 Hobby 用户是 Vercel 最有效的广告——每个部署了项目的开发者都是活广告。Vercel 的 Pro 层不是"更多功能"而是"生产级保障"——这个定位让免费→付费的升级理由极其自然。
AI 产品颠覆了传统 Freemium 经济学的核心假设:边际成本 ≈ 0。对于传统 SaaS(Notion、Linear、Slack),多一个免费用户几乎不增加成本。但对于 AI 产品(ChatGPT、Cursor、Perplexity),每个免费用户每次交互都有真实的 GPU 推理成本。
| 维度 | 传统 SaaS (Notion/Linear) | AI SaaS (ChatGPT/Cursor) |
|---|---|---|
| 每免费用户月成本 | $0.01-0.10(存储/带宽) | $0.50-5.00(API/GPU 推理) |
| 成本增长模式 | 亚线性(存储有规模效应) | 线性(每次推理都有成本) |
| 免费层占 MRR 比例 | 1-5% | 20-50% |
| Gross Margin | 80-90% | 40-70% |
| 盈亏平衡转化率 | ~0.5-1% | ~3-8% |
| 风险特征 | 免费用户多 = 网络效应 | 免费用户多 = 成本爆炸 |
每天/每月固定次数。最简单最可控。
例:Cursor 50 高级请求/月
推荐 成本可预测
免费用户排队/低优先级,付费用户即时。
例:ChatGPT Free 排队、Plus 即时
推荐 不限次数但限体验
免费用小模型,付费用大模型。
例:GPT-4o mini vs GPT-4o
有效 成本和体验双控
7-14 天免费,之后必须付费。
例:Midjourney 25 次免费后付费
保守 控制风险但无增长飞轮
注册送 Credits,用完即止。不自动续。
例:Anthropic $5 免费 Credit
灵活 适合 API 产品
免费用户看到"思考中...",付费用户秒出。
例:部分 AI 编程助手
体验差 可能导致流失
"""
Freemium Economics Model — 完整的单位经济学计算
用于评估免费层的经济可行性
"""
from dataclasses import dataclass, field
from typing import Optional
@dataclass
class FreemiumModel:
"""免费层经济学模型"""
# === 免费层参数 ===
monthly_free_users: int = 100_000 # 月活跃免费用户
cost_per_free_user: float = 0.30 # 每免费用户月成本 ($)
support_cost_per_free: float = 0.05 # 免费用户支持成本/月 ($)
free_layer_marketing: float = 5_000 # 免费层相关营销/月 ($)
# === 转化参数 ===
conversion_rate: float = 0.025 # 免费→付费月度转化率
trial_to_paid_rate: float = 0.0 # 如果有 Free Trial,试用→付费
paid_cac: float = 200 # 付费获客渠道 CAC ($)
# === 付费层参数 ===
arpu: float = 25 # 每付费用户月收入 ($)
monthly_churn: float = 0.05 # 月度 Churn Rate
gross_margin: float = 0.80 # 毛利率
expansion_rate: float = 0.0 # 月度扩展收入率 (NRR > 1 时 > 0)
# === 运营参数 ===
team_size: int = 5 # 支持/运营团队人数
avg_salary: float = 80_000 # 年均薪资 ($)
infra_base: float = 10_000 # 基础设施固定成本/月 ($)
@property
def new_paid_users_monthly(self) -> int:
"""月新增付费用户"""
return int(self.monthly_free_users * self.conversion_rate)
@property
def free_layer_total_cost(self) -> float:
"""免费层月总成本"""
return (
self.monthly_free_users * self.cost_per_free_user +
self.monthly_free_users * self.support_cost_per_free +
self.free_layer_marketing
)
@property
def effective_cac(self) -> float:
"""有效 CAC(免费层)"""
users = max(self.new_paid_users_monthly, 1)
return self.free_layer_total_cost / users
@property
def lifespan_months(self) -> float:
"""平均用户生命周期(月)"""
return 1 / self.monthly_churn
@property
def ltv(self) -> float:
"""用户生命周期价值"""
return self.arpu * self.lifespan_months * self.gross_margin
@property
def ltv_cac_ratio(self) -> float:
"""LTV:CAC 比率"""
return self.ltv / max(self.effective_cac, 0.01)
@property
def breakeven_conversion_rate(self) -> float:
"""盈亏平衡转化率"""
total_ltv = self.arpu * self.lifespan_months
return self.cost_per_free_user / max(total_ltv, 0.01)
@property
def monthly_paid_revenue(self) -> float:
"""月新增付费收入"""
return self.new_paid_users_monthly * self.arpu
@property
def annualized_churn(self) -> float:
"""年化 Churn"""
return 1 - (1 - self.monthly_churn) ** 12
@property
def net_freemium_value(self) -> float:
"""免费层月度净值 = 新用户 LTV 总和 - 免费层成本"""
return self.new_paid_users_monthly * self.ltv - self.free_layer_total_cost
@property
def free_cost_as_pct_mrr(self) -> float:
"""免费层成本占月度经常性收入比例"""
# 需要假设总 MRR(简化:用新增 + 假设存量)
return 0 # 需要更完整的模型
def health_check(self) -> dict:
"""单位经济学健康度检查"""
checks = {
"LTV:CAC > 3:1": self.ltv_cac_ratio >= 3,
"LTV:CAC > 5:1": self.ltv_cac_ratio >= 5,
"转化率 > 盈亏平衡": self.conversion_rate > self.breakeven_conversion_rate,
"免费层正 ROI": self.net_freemium_value > 0,
"年化 Churn < 30%": self.annualized_churn < 0.30,
"Gross Margin > 70%": self.gross_margin > 0.70,
"有效 CAC < 付费 CAC": self.effective_cac < self.paid_cac,
}
return checks
def summary(self) -> str:
"""打印经济模型摘要"""
health = self.health_check()
lines = [
"=" * 60,
"📊 FREEMIUM 经济模型摘要",
"=" * 60,
f"",
f"📥 免费层",
f" 月活跃免费用户: {self.monthly_free_users:>12,}",
f" 每免费用户月成本: ${self.cost_per_free_user:>10.2f}",
f" 免费层月总成本: ${self.free_layer_total_cost:>10,.0f}",
f"",
f"🔄 转化",
f" 月度转化率: {self.conversion_rate*100:>11.1f}%",
f" 盈亏平衡转化率: {self.breakeven_conversion_rate*100:>11.2f}%",
f" 月新增付费用户: {self.new_paid_users_monthly:>12,}",
f"",
f"💰 付费层",
f" ARPU: ${self.arpu:>14.0f}/月",
f" Gross Margin: {self.gross_margin*100:>12.0f}%",
f" 月度 Churn: {self.monthly_churn*100:>12.1f}%",
f" 年化 Churn: {self.annualized_churn*100:>12.1f}%",
f" 平均生命周期: {self.lifespan_months:>10.1f} 月",
f"",
f"📐 单位经济学",
f" LTV: ${self.ltv:>15,.0f}",
f" 有效 CAC: ${self.effective_cac:>12,.0f}",
f" LTV:CAC: {self.ltv_cac_ratio:>14.1f}:1",
f" 免费层月净价值: ${self.net_freemium_value:>8,.0f}",
f"",
f"🏥 健康检查",
]
for check, passed in health.items():
emoji = "✅" if passed else "❌"
lines.append(f" {emoji} {check}")
return "\n".join(lines)
# 运行模型
if __name__ == "__main__":
# 场景 1: 健康的传统 SaaS
model = FreemiumModel(
monthly_free_users=100_000,
cost_per_free_user=0.10,
conversion_rate=0.03,
arpu=25,
monthly_churn=0.04,
gross_margin=0.85,
)
print(model.summary())
# 场景 2: AI 产品(高成本免费层)
model_ai = FreemiumModel(
monthly_free_users=500_000,
cost_per_free_user=1.50, # GPU 推理成本
conversion_rate=0.02, # 消费者付费意愿低
arpu=20,
monthly_churn=0.08, # AI 产品 Churn 通常更高
gross_margin=0.55, # API 成本吃掉大量毛利
)
print("\n\n" + model_ai.summary())
"""
Usage Wall Middleware — 限流 + 转化引导
适用于 Node.js / Express API
"""
const usageWall = (config) => {
const {
freeLimit, // 免费上限(次数/月)
planField = 'plan', // 用户对象上的计划字段
wallMessage, // 撞墙消息
upgradeUrl, // 升级链接
} = config;
return async (req, res, next) => {
const user = req.user;
if (!user) return next(); // 未登录,交给后续处理
// 付费用户不受限
if (user[planField] !== 'free') return next();
// 获取当月使用量
const usage = await getMonthlyUsage(user.id);
const remaining = freeLimit - usage.count;
// 设置响应头(帮助前端展示进度)
res.setHeader('X-Usage-Limit', freeLimit);
res.setHeader('X-Usage-Remaining', Math.max(remaining, 0));
res.setHeader('X-Usage-Percentage', Math.round(usage.count / freeLimit * 100));
// 接近上限时预警(80%)
if (remaining > 0 && remaining <= freeLimit * 0.2) {
res.setHeader('X-Usage-Warning', 'approaching_limit');
res.setHeader('X-Upgrade-Url', upgradeUrl);
}
// 硬墙:超过上限
if (usage.count >= freeLimit) {
return res.status(402).json({
error: 'usage_limit_reached',
message: wallMessage || 'You have reached your free tier limit.',
upgrade: {
url: upgradeUrl,
benefit: `Unlimited usage starts at $20/month`,
},
current_usage: {
limit: freeLimit,
used: usage.count,
period_end: usage.periodEnd,
},
});
}
// 通过墙,继续处理
next();
};
};
// 使用示例
app.post('/api/completions',
authenticate,
usageWall({
freeLimit: 2000,
wallMessage: 'You\'ve used all 2,000 free completions this month. Upgrade to Pro for unlimited AI-powered completions.',
upgradeUrl: '/pricing?ref=wall_completions',
}),
handleCompletion
);
// 关键设计决策:
// 1. 响应头暴露使用量进度 → 前端可以显示进度条
// 2. 80% 预警 → 在用户撞墙前就引导升级
// 3. 402 状态码 → 语义清晰(Payment Required)
// 4. 升级信息包含具体价值描述 → 不只是"升级",而是"无限补全"
// 5. period_end → 告诉用户免费额度何时重置,减少焦虑