竞争对手
你正在做什么
你被问及某家创业公司所在市场中还有哪些参与者、他们的定价如何、背后资金来自何方——以及类似公司曾以什么价格被收购。
编写测试 ──► 扫描 ──► 分类 ──► 定价 ──► 融资 ──► 并购可比
什么才算? 多条路径 直接 / 对等 谁支持 谁收购了谁、
间接 比较 他们 什么价格
交付物——在当前工作目录下的 <company-slug>/competitor-research/ 中,恰好四个文件:
competitor-report.md– 分析笔记。主要交付物。competitors.csv– 每个竞争对手占一行,包含分类、定价、融资、证据。price-ladder.png– 一张价格对比图表。<company-slug>_market_analysis.xlsx– 可共享的两工作表工作簿: 竞争对手 + 并购可比(步骤 9)。
外加 raw/ 文件夹保存所有获取到的原始页面,以及 workbook-data.json – 工作簿的结构化输入。
输入
从 $ARGUMENTS 或对话中获取:一家公司。可以是文件夹、松散演示文稿、或者仅一个名称或 URL——三种方式皆可(步骤 0)。如果两家公司重名,在发起抓取前先进行询问。
步骤 0 – 构建缺失的信息
永远不要报告“无数据”。
公司卡片
<company-slug>/company-profile.md – 首先读取它。如果不存在,则创建它。如果某个字段为空并且你了解到信息,则填写它,并更新 updated / updated_by 字段。永远不要覆盖已填写的字段:如果你发现不同的值,则在 ## 冲突 部分新增一行,包含两个值和来源。卡片以 ## 冲突 部分结束(如果缺失则创建),其表格标题必须为 | 字段 | 卡片值 | 卡片来源 | 新值 | 新来源 | 发现者 | 日期 |。
| 字段 | 允许的值 |
|---|---|
| 为客户完成的工作 | 一句话,用公司自己的话引用,附带 URL |
| 谁支付 | 自由文本 |
| 商业模式 | B2B · B2C · B2G |
| 收入模式 | 订阅 · 交易 · 广告 · 一次性 · 不适用 |
| 市场 | 仅限一个:金融科技与保险 · 健康与生物 · 商业与零售 · 物流与供应链 · AI 与数据基础设施 · 企业软件 · 网络安全 · 法律、合规与治理 · 销售与营销 · 人力资源与人才 · 教育 · 媒体、游戏与娱乐 · 房地产与建筑 · 能源、气候与农业 · 工业与机器人 · 消费生活方式与服务 · 其他 |
| 垂直领域 | 自由文本 |
| 阶段 | 种子轮前 · 种子轮 · A 轮 · B+ 轮 · 不适用 |
| 地理位置 | 总部所在国家;销售国家 |
| 正在进行的融资轮 | 金额 + 货币 + 工具,或“未说明” |
| 可用的指标 | 位置(updates/、导出),或“无” |
前言元数据:company、slug、website、updated(ISO 日期)、updated_by(技能名称)。
卡片的表格有第三列 来源,每个字段都必须填写。
使用卡片而不是重新研究已有信息:其“为客户完成的工作”行就是下面需要的核心任务。仅调查公司中尚为空白的字段。
有文件夹和演示文稿 → 读取它,开始
仅有演示文稿 → 构建文件夹,将演示文稿放入 <company-slug>/deck/
仅有名称 → 构建文件夹,然后研究该公司销售什么
在步骤 1 之前你需要了解一件事:这家公司为其客户完成什么工作? 如果卡片已填写,则从中获取;否则从公司官网获取,使用其自己的语言,而不是类别标签,并将其写入卡片。将每次抓取的文件保存到 raw/。
创建公司文件夹 <company-slug>/:任何演示文稿放入 deck/,你的输出放入 competitor-research/。
步骤 1 – 编写测试
在命名任何一个竞争对手之前,写下什么样的公司才算是一个竞争对手。将核心任务分解为可观察的组成部分。
一项物理服务可能包含三个组成部分:
从客户处收集 · 场外存储 · 按需重新配送
一个 B2B 工具可能包含两个组成部分:
服务同一买家 · 替代同一预算项目
然后是三个类别:
直接 完成整个任务,在自家网站上提供证据
前直接 曾经做到过——不再独立运营
间接 至少缺少一个组成部分,但与同一客户 / 价格点 / 资本竞争
测试结果将打印在报告中,以便读者可以自行对扫描遗漏的公司进行分类。这也是防止两种失败模式(将相邻公司视为竞争对手,以及遗漏以不同方式描述自己的竞争对手)的唯一防御。
⚠️ 类别很少有共同词汇。 同一产品由不同卖家以不同词汇出售。如果你只扫描公司用于描述自己的词汇,你将系统地遗漏那些使用成熟行业术语的更大、更老、分布更广的运营商。基于功能而非自我描述来编写测试。
步骤 2 – 通过多条独立路径进行扫描
一次搜索不算一次扫描。运行至少四条路径,每条路径都可能找到其他路径遗漏的竞争对手:
1 词汇 类别使用的所有词汇,而不仅仅是公司使用的
2 客户 买家实际会搜索什么?
3 注册机构 Companies House SIC 代码 · SEC EDGAR · 行业协会
4 供应侧 谁向这些运营商销售软件/服务?
他们的客户名单就是一份普查
5 反向追踪 竞争对手对比页面、“X 的替代品”页面、
评论网站类别
6 资本 融资新闻、加速器和投资者投资组合、以及
`<company-slug>/competitor-candidates/candidates.csv`(如果存在)
路径 6 读取候选文件。 <company-slug>/competitor-candidates/candidates.csv(由 thesis-fit 编写)包含列 name,domain,fund,portfolio_url,why_flagged,found_by,date_found。
每一行是一个候选:它像其他任何名称一样接受步骤 1 的测试,并在步骤 3 中做出裁决。
如果某行的 name 是 none found,表示该基金的投资组合已被扫描——不要再次扫描。
如果某个候选未能通过步骤 1 的测试并且不竞争同一买家,则被排除(步骤 3):它不会出现在 CSV 中,而是在方法部分列为“已排除 – 缺失 <哪个组成部分>”,不得静默丢弃。
笔记的方法部分说明有多少候选来自基金投资组合,以及每个如何被裁决。
停止规则: 当连续两条路径未增加新的实质性竞争对手时停止。只有在没有路径留下未检查的命名列表(目录、客户名单、“X 的替代品”页面,其名称未被全部测试)时,扫描才算收敛;否则计数是最低值。如果你在此之前停止——由于预算、阻碍、时间等原因——在笔记中说明这一点,并将计数称为最低值。 未收敛的普查是最低值,不是最高值,读者必须被告知他们拥有哪一个。
⚠️ 付费的公司画像数据库不是第七条路径。 Apollo.io 于 2026-08-06 针对手工构建的 34 家运营商普查进行了测量:它仅恢复了 56%,误报率达 50%,并且有 8 家运营商完全不在其索引中。 它只是一个信息增强层,而非发现路径。该测试得出的两条规则适用于任何此类来源:
数据库中的一行是候选,绝不是竞争对手
→ 它仍然需要步骤 1 的测试,并以公司自家网站上的证据为准。
数据库自己的描述文本是第三方信息,不计为证据。
未匹配的行表示未知,绝不是小公司
→ 覆盖缺失是它的问题:数据库缺少的公司
返回空结果,而不是标记。
随着扫描进行,为每个运营商评级:
实质性 多城市、有融资、特许经营或明显规模化
次要 在运营中,但单一市场或规模不足
微型 单人、预启动或无法验证的运营实体
步骤 3 – 分类
对每个候选应用步骤 1 的测试。每个分类的证据必须是来自公司自家网站的引用,记录在 CSV 中。
需要明确处理的边界情况:
看起来相似,但缺少一个组成部分 → 间接,并且说明缺少哪个
同样的任务,不同的劳动方式 → 通常为间接 – 指出差异
已停业或被收购 → 前直接,说明发生了什么
缺少一个组成部分 并且 不竞争 → 已排除 – 不是竞争对手:无 CSV 行;在方法部分中
同一买家 列为“已排除 – 缺失 <组成部分>”
前直接竞争对手值得付出真正的努力。 那些已经尝试过此事的公司发生了什么,通常是报告中最具决策相关性的部分:谁收购了他们、以什么价格、相对于他们筹集了多少资金。
步骤 4 – 定价
对等比较 相同单位、相同市场、逐层对比 ← 真正的比较
仅入门价格 “起价 $X” – 基础不同 ← 标注为如此
规则:
- 仅采用运营商自家页面上公开的价格。 不是演示文稿中关于竞争对手价格的版本。自己重新提取它们。
- 对比标题与标题,以及匹配的层级与匹配的层级。以一家公司的折扣价报价,同时以列表价报价其他公司,是这个表格标准的不诚实方式。
- 如果单位确实不同,说明差异,而不是强行比较。
- 记录排除项 – 设置费、配送费、入职费、最低消费。
步骤 5 – 每个竞争对手的融资情况
对于找到的每家公司:
总融资金额 货币 + 金额
最新轮次 阶段 + 日期
投资者 谁领投
来源 信息来源
标记 D / E / N/A ← N/A = 未披露,绝不是零
按照信任顺序查找:
SEC EDGAR / Form D ─┐
Companies House ├─ 备案文件 → 标记 D
公司自家网页 ─┘
融资新闻 ── 已报道 → 标记 E
聚合网站 ── 有噪音 → 标记 E,并指明具体网站
⚠️ 实体检查——跳过它已经在实际运行中产生了两个虚假数据。
“Boombox 从 Forerunner + Ulu 融资 700 万美元”
│
└─► 该轮融资属于 boombox.io——一家生成式 AI 音乐公司。
同名的存储公司没有任何融资记录。
同一来源:“BOXIE24,550 万美元 A 轮” → 没有这样的轮次存在。
融资轮必须明确指向这家公司 – 此域名、此市场、此国家。同名不代表同一公司。如果你无法关联,标记为
N/A。切勿借用融资轮。
上述两个虚假数据均来自公司提供的可比数据。将公司提供的竞争对手融资信息视为需要验证的线索,而不是来源。
步骤 6 – 并购可比交易
谁收购了类似这家公司的企业,以什么价格?在该类别中扫描并购事件——收购新闻、收购方公告、SEC 文件、Companies House、以及来自步骤 3 的前直接公司线索(那些退出交易也应属于此处)。
三个级别的可比交易,并且每一行在其自己的描述单元格中说明其属于哪一级别——仅阅读工作表的人必须知道他们在看什么样的可比交易:
1 直接产品类比 同类产品,被收购
2 客户/ICP 类比 同一买家和预算项目,不同产品
(ICP = 理想客户画像)
3 财务基准 规模更大的横向参与者,其交易锚定了
估值倍数区间 – 标注为“财务基准,
非产品类比”
针对每笔交易,收集:收购方 · 交易年份 · 交易价值/企业价值(附结构说明) · 交易时收入 · 企业价值/收入 · EBITDA · 企业价值/EBITDA · 交易时其他指标 · 交易理由(收购方声称购买的动机)。
纪律——这个表格是倍数编造的重灾区,因此:
“无法计算” 是一个答案。 切勿从以下任何一项中推导倍数:
· 部分股权(80% 的权益不是企业价值)
· 盈利支付公式(4.25 倍 EBITDA 作为支付公式不是实际倍数)
· 期间不匹配(2021 年交易价格对应 2018 年收入)
· 集团层面数据(母公司的收入不是子公司的收入)
在该单元格中写入“无法计算”并说明原因。
“未披露” 需要拼写完整。 绝不能是简单的 N/A 或留空——
未披露 ≠ 零,空单元格会被解读为“没有信息”。
实体检查同样适用于交易。 交易必须明确指向这家公司——
相同域名、相同市场。绝不能比借用一个融资轮更随意地借用一笔收购。
每个数字都需附带来源(作为工作簿中的超链接(步骤 9)以及报告来源表中的一行)。如果媒体报道的价格未经任何一方确认,请在数字旁说明。
用一段总结性段落结束该步骤——它将成为工作簿中并购工作表的底部行:交易市场是否已得到验证,这家公司的潜在收购方是谁,以及已披露的交易实际上支持什么倍数区间——指出构成区间的公司是哪些(由一家横向 SaaS 公司和一家服务公司构成的区间不是直接产品类比的区间,并且必须告知读者这一点)。
步骤 7 – 编写 CSV
competitors.csv,列必须完全为:
name, domain, country, classification, grade, legs_matched, evidence, status, price_entry, price_basis, price_like_for_like, total_raised, last_round, investors, funding_flag, funding_source, confidential, note, url
classification–direct·former direct·indirect·unverifiedgrade–material·minor·microevidence– 能够确定其分类地位的逐字引用confidential–no(默认,可公开验证)·yes(来自数据室)
一个 CSV,不要分成两个。 如果稍后需要可共享版本,将 confidential = yes 行的字段留空并保留这些行 – 过滤行会删除报告描述到的竞争对手,这种情况曾经不得不撤销过一次。
步骤 8 – 图表
使用任何安装了 matplotlib 的 Python 3。
[内容被截断以进行翻译]