diff --git a/README.md b/README.md index ee59b68..7e5378f 100644 --- a/README.md +++ b/README.md @@ -131,6 +131,7 @@ MRR×12仅作为显示单位转换,不改写为公司ARR;公司ARR、估算 逐条读取对应 YC 官方公开页面,以页面中的成立年份、团队字段和业务描述筛选。 962 条初筛匹配,其中 34 条与原表 URL 重合,实际新增 928 条;268 条年份不符或缺失、 192 条 AI 业务待确认、6 条成立年份晚于批次年份未纳入本批新增。 +`content/research/ai-companies.sources.json` 保留最初12项来源与后续补充渠道、用途、覆盖边界及下一步;覆盖报告逐渠道复算证据、公司及观测数量。背景报告、入口可读和候选池逐条读取分别标记,零计数不表示没有公司。 `content/research/ai-companies.coverage.json` 保留逐条筛选结果、来源与响应摘要, 数据快照中的 `coverage` 也随版本进入同一 SQLite 数据库。只覆盖该候选池,不能称全球全量。 diff --git a/content/docs/ai-company-research/02-coverage-and-gaps.md b/content/docs/ai-company-research/02-coverage-and-gaps.md index 1e3e8d2..d323cf1 100644 --- a/content/docs/ai-company-research/02-coverage-and-gaps.md +++ b/content/docs/ai-company-research/02-coverage-and-gaps.md @@ -66,6 +66,34 @@ | Sacra | 3 | 3 | 第三方估算;与直接披露分开 | | 其他官网、评测及公开资料 | 72 | 68 | 按每条来源限制理解,不能统一当作独立证据 | +## 来源清单与验收边界 + +S01—S12恢复自已提交用户的《AI公司研究_来源与分类模板》来源清单;S13—S16单列后续已使用的补充证据渠道,不将使用次数当作全量覆盖。 + +每条证据在下表只计入一个渠道:先按所列域名归属,再将类型明确标为官方/公司自述/公司披露的剩余项计入S12,其余计入S16。公司可跨渠道出现,所以公司数不可跨行相加。零条证据表示尚未进入研究表,不表示该来源没有相关公司。背景报告不承担公司发现全集的角色。 + +| 来源 | 当前状态 | 证据 / 公司 / 观测数 | 已核对范围 | 剩余核查 | +| --- | --- | --- | --- | --- | +| S01 [Y Combinator](https://www.ycombinator.com/companies) | 候选池逐条已读 | 984 / 969 / 82 | 已读取八个2025—2026批次镜像候选池1428条,再核YC官方页面;不声称覆盖全部YC历年或未公开公司。 | 继续复核规则初分和缺项;候选明细见逐条台账。 | +| S02 [TechCrunch AI](https://techcrunch.com/category/artificial-intelligence/) | 定向使用,未穷尽 | 3 / 2 / 1 | 已使用公司相关新闻;尚未逐条清点2025—2026栏目档案。 | 建立两年公司报道候选表,排除老公司新产品及重复转述。 | +| S03 [Dealroom](https://dealroom.co/) | 候选台账待建 | 0 / 0 / 0 | 仅核对官网入口与产品介绍,尚无两年筛选结果集;首页示例不是候选全集。 | 确认公开可取得的成立年筛选清单;受权限限制时明确记缺,不填完成。 | +| S04 [Product Hunt](https://www.producthunt.com/) | 候选台账待建 | 0 / 0 / 0 | 仅确认首页及发布档案入口可读,尚无两年AI产品候选池;发布不等于公司成立。 | 按发布档案建立候选并回查官网成立信息、区分产品和法人。 | +| S05 [Sacra](https://sacra.com/) | 定向使用,未穷尽 | 3 / 1 / 3 | 已用于定向估算及日期口径交叉核查;无全站公司名录读取台账。 | 保留估算与公司披露差异,核实历史截至日。 | +| S06 [Bessemer](https://www.bvp.com/atlas/the-state-of-ai-2025) | 背景研究 | 0 / 0 / 0 | 用于行业分类和增长研究背景;不是新成立公司普查。 | 核报告样本、方法与年份,不能将组合公司清单当总体。 | +| S07 [Menlo Ventures](https://menlovc.com/perspective/2025-the-state-of-generative-ai-in-the-enterprise/) | 背景研究 | 0 / 0 / 0 | 用于企业采购背景;不把调研比例转换为公司ARR。 | 保留调研方法、采购样本及与新公司样本的差异。 | +| S08 [Stripe](https://stripe.com/annual-updates/2025) | 背景研究 | 1 / 0 / 0 | 年度平台观察,不提供可公开穷尽的新AI商户名录。 | 与TrustMRR支付重建数据分开;不据平台总量推算单家公司。 | +| S09 [SaaS Capital](https://www.saas-capital.com/research/) | 背景研究 | 0 / 0 / 0 | B2B订阅软件基准,不能直接代表新AI公司、硬件或服务企业。 | 按报告样本及营收规模使用,不强套为行业ARR分布。 | +| S10 [机器之心](https://www.jiqizhixin.com/) | 候选台账待建 | 0 / 0 / 0 | 首页及文章库入口可读,部分内容需会员;当前研究表尚无该站公司级证据,未穷尽两年档案。 | 建立中文公司候选台账,会员正文不可读时标明。 | +| S11 [36氪](https://www.36kr.com/) | 访问受限 | 0 / 0 / 0 | 2026-10-30仍返回安全检测页面,未把首页作为已读文章。 | 使用可公开读取的具体文章或其他原始来源;不绕过访问保护。 | +| S12 公司官网与官方博客 | 随公司逐条核对 | 28 / 14 / 11 | 公司官网和官方材料逐条绑定证据;不是可预先列尽的全站候选池。 | 核定价、主体、交付与收入定义,自述与独立验证分开。 | +| S13 [TrustMRR](https://trustmrr.com/) | 定向使用,未穷尽 | 18 / 17 / 51 | 已采集产品与支付快照;公开者自选,不是全部商户或独立财务审计。 | 核同步日、连接失效、支付平台公式及产品/法人归属。 | +| S14 [a16z Speedrun](https://speedrun.a16z.com/) | 定向使用,未穷尽 | 11 / 10 / 19 | 投资机构公司介绍定向样本,收入数字仍多来自公司。 | 核币种、相对时间及管线/履历;未读取的页面保持缺项。 | +| S15 [Artificial Analysis](https://artificialanalysis.ai/) | 定向使用,未穷尽 | 2 / 1 / 3 | 第三方已发表技术评测,仅覆盖所列模型版本和任务。 | 核榜单版本、测评方法及置信区间,不将排名变成企业整体能力。 | +| S16 其他公开补充资料 | 定向使用,未穷尽 | 41 / 21 / 13 | 未归入上述来源的公开材料按原始证据链接逐条保留;不视为新增已批准的完整候选池。 | 逐项核来源归属、可靠性及可读正文,不能将搜索摘要当全文。 | + +Dealroom、Product Hunt、机器之心与36氪入口于2026-10-30重新访问。官网首页可读不证明已取得完整筛选结果;安全检测页面不作为文章内容。候选池之外的来源边界尚需建立可回查条目,完成前不宣布来源清单已全部覆盖。 + + ## 尚未满足的研究条件 行业ARR比较仍缺统一业务截止日、币种、经常性定义和业务边界。现有平台MRR可描述已采集产品,不足以代表全部新公司。技术评测只覆盖所列版本与任务,不宜跨领域汇总为统一强弱分数。 diff --git a/content/research/ai-companies.sources.json b/content/research/ai-companies.sources.json new file mode 100644 index 0000000..4b8d159 --- /dev/null +++ b/content/research/ai-companies.sources.json @@ -0,0 +1,241 @@ +{ + "version": "2026-10-30-1", + "scopeConfirmedAt": "2026-10-30", + "acceptance": "以确认的公开来源清单为边界,逐条核对并标明缺项。", + "provenance": "S01—S12恢复自已提交用户的《AI公司研究_来源与分类模板》来源清单;S13—S16单列后续已使用的补充证据渠道,不将使用次数当作全量覆盖。", + "sources": [ + { + "id": "S01", + "name": "Y Combinator", + "url": "https://www.ycombinator.com/companies", + "role": "discovery", + "status": "candidate-audit", + "hosts": [ + "www.ycombinator.com" + ], + "initialAccess": "官网目录可访问", + "boundary": "已读取八个2025—2026批次镜像候选池1428条,再核YC官方页面;不声称覆盖全部YC历年或未公开公司。", + "nextCheck": "继续复核规则初分和缺项;候选明细见逐条台账。", + "limitation": "批次不等于成立年;不代表全部公司" + }, + { + "id": "S02", + "name": "TechCrunch AI", + "url": "https://techcrunch.com/category/artificial-intelligence/", + "role": "reporting", + "status": "targeted", + "hosts": [ + "techcrunch.com" + ], + "initialAccess": "AI栏目可读取", + "boundary": "已使用公司相关新闻;尚未逐条清点2025—2026栏目档案。", + "nextCheck": "建立两年公司报道候选表,排除老公司新产品及重复转述。", + "limitation": "需追溯原始披露,部分文章受访问限制" + }, + { + "id": "S03", + "name": "Dealroom", + "url": "https://dealroom.co/", + "role": "discovery", + "status": "pending", + "hosts": [ + "dealroom.co", + "app.dealroom.co" + ], + "initialAccess": "官网可读取", + "boundary": "仅核对官网入口与产品介绍,尚无两年筛选结果集;首页示例不是候选全集。", + "nextCheck": "确认公开可取得的成立年筛选清单;受权限限制时明确记缺,不填完成。", + "limitation": "明细或批量访问取决于权限", + "accessRecheckedAt": "2026-10-30" + }, + { + "id": "S04", + "name": "Product Hunt", + "url": "https://www.producthunt.com/", + "role": "discovery", + "status": "pending", + "hosts": [ + "www.producthunt.com", + "producthunt.com" + ], + "initialAccess": "官网可读取", + "boundary": "仅确认首页及发布档案入口可读,尚无两年AI产品候选池;发布不等于公司成立。", + "nextCheck": "按发布档案建立候选并回查官网成立信息、区分产品和法人。", + "limitation": "上线时间不等于成立时间", + "accessRecheckedAt": "2026-10-30" + }, + { + "id": "S05", + "name": "Sacra", + "url": "https://sacra.com/", + "role": "estimation", + "status": "targeted", + "hosts": [ + "sacra.com" + ], + "initialAccess": "官网可读取", + "boundary": "已用于定向估算及日期口径交叉核查;无全站公司名录读取台账。", + "nextCheck": "保留估算与公司披露差异,核实历史截至日。", + "limitation": "部分付费;不能把估算当审计数" + }, + { + "id": "S06", + "name": "Bessemer", + "url": "https://www.bvp.com/atlas/the-state-of-ai-2025", + "role": "context", + "status": "context", + "hosts": [ + "www.bvp.com", + "bvp.com" + ], + "initialAccess": "报告页面可读取", + "boundary": "用于行业分类和增长研究背景;不是新成立公司普查。", + "nextCheck": "核报告样本、方法与年份,不能将组合公司清单当总体。", + "limitation": "投资机构选样偏差" + }, + { + "id": "S07", + "name": "Menlo Ventures", + "url": "https://menlovc.com/perspective/2025-the-state-of-generative-ai-in-the-enterprise/", + "role": "context", + "status": "context", + "hosts": [ + "menlovc.com", + "www.menlovc.com" + ], + "initialAccess": "报告页面可读取", + "boundary": "用于企业采购背景;不把调研比例转换为公司ARR。", + "nextCheck": "保留调研方法、采购样本及与新公司样本的差异。", + "limitation": "口径与样本需查看方法说明" + }, + { + "id": "S08", + "name": "Stripe", + "url": "https://stripe.com/annual-updates/2025", + "role": "context", + "status": "context", + "hosts": [ + "stripe.com", + "www.stripe.com" + ], + "initialAccess": "年度信可读取", + "boundary": "年度平台观察,不提供可公开穷尽的新AI商户名录。", + "nextCheck": "与TrustMRR支付重建数据分开;不据平台总量推算单家公司。", + "limitation": "平台样本不能代表全部AI公司" + }, + { + "id": "S09", + "name": "SaaS Capital", + "url": "https://www.saas-capital.com/research/", + "role": "context", + "status": "context", + "hosts": [ + "www.saas-capital.com", + "saas-capital.com" + ], + "initialAccess": "研究页可读取", + "boundary": "B2B订阅软件基准,不能直接代表新AI公司、硬件或服务企业。", + "nextCheck": "按报告样本及营收规模使用,不强套为行业ARR分布。", + "limitation": "不直接套用硬件与项目制业务" + }, + { + "id": "S10", + "name": "机器之心", + "url": "https://www.jiqizhixin.com/", + "role": "reporting", + "status": "pending", + "hosts": [ + "www.jiqizhixin.com", + "jiqizhixin.com", + "pro.jiqizhixin.com" + ], + "initialAccess": "首页可读取", + "boundary": "首页及文章库入口可读,部分内容需会员;当前研究表尚无该站公司级证据,未穷尽两年档案。", + "nextCheck": "建立中文公司候选台账,会员正文不可读时标明。", + "limitation": "部分会员内容;财务数据需追溯", + "accessRecheckedAt": "2026-10-30" + }, + { + "id": "S11", + "name": "36氪", + "url": "https://www.36kr.com/", + "role": "reporting", + "status": "access-limited", + "hosts": [ + "www.36kr.com", + "36kr.com" + ], + "initialAccess": "安全检测,内容未核验", + "boundary": "2026-10-30仍返回安全检测页面,未把首页作为已读文章。", + "nextCheck": "使用可公开读取的具体文章或其他原始来源;不绕过访问保护。", + "limitation": "暂不作为已读取内容证据", + "accessRecheckedAt": "2026-10-30" + }, + { + "id": "S12", + "name": "公司官网与官方博客", + "url": null, + "role": "primary", + "status": "per-company", + "hosts": [], + "initialAccess": "按公司逐一核验", + "boundary": "公司官网和官方材料逐条绑定证据;不是可预先列尽的全站候选池。", + "nextCheck": "核定价、主体、交付与收入定义,自述与独立验证分开。", + "limitation": "自述不等于独立审计" + }, + { + "id": "S13", + "name": "TrustMRR", + "url": "https://trustmrr.com/", + "role": "platform", + "status": "targeted", + "hosts": [ + "trustmrr.com" + ], + "initialAccess": "见具体证据访问记录", + "boundary": "已采集产品与支付快照;公开者自选,不是全部商户或独立财务审计。", + "nextCheck": "核同步日、连接失效、支付平台公式及产品/法人归属。", + "limitation": "来源可读不等于声明已独立验证。" + }, + { + "id": "S14", + "name": "a16z Speedrun", + "url": "https://speedrun.a16z.com/", + "role": "investor", + "status": "targeted", + "hosts": [ + "speedrun.a16z.com" + ], + "initialAccess": "见具体证据访问记录", + "boundary": "投资机构公司介绍定向样本,收入数字仍多来自公司。", + "nextCheck": "核币种、相对时间及管线/履历;未读取的页面保持缺项。", + "limitation": "来源可读不等于声明已独立验证。" + }, + { + "id": "S15", + "name": "Artificial Analysis", + "url": "https://artificialanalysis.ai/", + "role": "technical", + "status": "targeted", + "hosts": [ + "artificialanalysis.ai" + ], + "initialAccess": "见具体证据访问记录", + "boundary": "第三方已发表技术评测,仅覆盖所列模型版本和任务。", + "nextCheck": "核榜单版本、测评方法及置信区间,不将排名变成企业整体能力。", + "limitation": "来源可读不等于声明已独立验证。" + }, + { + "id": "S16", + "name": "其他公开补充资料", + "url": null, + "role": "supplement", + "status": "targeted", + "hosts": [], + "initialAccess": "见具体证据访问记录", + "boundary": "未归入上述来源的公开材料按原始证据链接逐条保留;不视为新增已批准的完整候选池。", + "nextCheck": "逐项核来源归属、可靠性及可读正文,不能将搜索摘要当全文。", + "limitation": "来源可读不等于声明已独立验证。" + } + ] +} diff --git a/scripts/audit-ai-research.py b/scripts/audit-ai-research.py index 58b72ec..0a646b2 100644 --- a/scripts/audit-ai-research.py +++ b/scripts/audit-ai-research.py @@ -9,10 +9,49 @@ from urllib.parse import urlsplit ROOT = Path(__file__).resolve().parents[1] DATA = json.loads((ROOT / 'content/research/ai-companies.seed.json').read_text()) AUDIT = json.loads((ROOT / 'content/research/ai-companies.coverage.json').read_text()) +SOURCES = json.loads((ROOT / 'content/research/ai-companies.sources.json').read_text()) TARGET = ROOT / 'content/docs/ai-company-research/02-coverage-and-gaps.md' BASE = '/docs/other-research/ai-company-research/overview' + +def source_register(): + sources = SOURCES['sources'] + ids = {s['id'] for s in sources} + assert len(ids) == len(sources) and ids == {f'S{i:02}' for i in range(1, 17)} + assert SOURCES['scopeConfirmedAt'] <= DATA['asOf'] + host_map = {} + for source in sources: + assert source['status'] in {'candidate-audit', 'targeted', 'pending', 'context', 'access-limited', 'per-company'} + assert source['boundary'] and source['nextCheck'] + if source['url']: + assert urlsplit(source['url']).scheme in {'http', 'https'} and urlsplit(source['url']).netloc + for host in source['hosts']: + assert host not in host_map, f'Duplicate source host: {host}' + host_map[host] = source['id'] + assigned = {key: [] for key in ids} + for evidence in DATA['evidence']: + owner = host_map.get(urlsplit(evidence['url']).netloc) + if owner is None: + owner = 'S12' if any(word in evidence['kind'] for word in ('官方', '公司自述', '公司披露')) else 'S16' + assigned[owner].append(evidence) + assert sum(len(v) for v in assigned.values()) == len(DATA['evidence']) + statuses = {'candidate-audit': '候选池逐条已读', 'targeted': '定向使用,未穷尽', 'pending': '候选台账待建', + 'context': '背景研究', 'access-limited': '访问受限', 'per-company': '随公司逐条核对'} + lines = ['', '## 来源清单与验收边界', '', SOURCES['provenance'], '', + '每条证据在下表只计入一个渠道:先按所列域名归属,再将类型明确标为官方/公司自述/公司披露的剩余项计入S12,其余计入S16。公司可跨渠道出现,所以公司数不可跨行相加。零条证据表示尚未进入研究表,不表示该来源没有相关公司。背景报告不承担公司发现全集的角色。', '', + '| 来源 | 当前状态 | 证据 / 公司 / 观测数 | 已核对范围 | 剩余核查 |', '| --- | --- | --- | --- | --- |'] + for source in sources: + evidence = assigned[source['id']] + evidence_ids = {e['id'] for e in evidence} + company_ids = {e['companyId'] for e in evidence if e['companyId']} + observations = sum(o['evidence'] in evidence_ids for o in DATA['observations']) + name = f"[{source['name']}]({source['url']})" if source['url'] else source['name'] + lines.append(f"| {source['id']} {name} | {statuses[source['status']]} | {len(evidence)} / {len(company_ids)} / {observations} | {source['boundary']} | {source['nextCheck']} |") + lines += ['', 'Dealroom、Product Hunt、机器之心与36氪入口于2026-10-30重新访问。官网首页可读不证明已取得完整筛选结果;安全检测页面不作为文章内容。候选池之外的来源边界尚需建立可回查条目,完成前不宣布来源清单已全部覆盖。', ''] + return lines + + def render(): cov = DATA['coverage'] companies = DATA['companies'] @@ -85,6 +124,7 @@ def render(): lines.append(f"| {name} | {len(entries)} | {len({e['url'] for e in entries})} | {note} |") others = [e for e in DATA['evidence'] if urlsplit(e['url']).netloc not in included] lines.append(f"| 其他官网、评测及公开资料 | {len(others)} | {len({e['url'] for e in others})} | 按每条来源限制理解,不能统一当作独立证据 |") + lines += source_register() lines += ['', '## 尚未满足的研究条件', '', '行业ARR比较仍缺统一业务截止日、币种、经常性定义和业务边界。现有平台MRR可描述已采集产品,不足以代表全部新公司。技术评测只覆盖所列版本与任务,不宜跨领域汇总为统一强弱分数。', '', '下一轮优先补收入线索的日期及合同定义、非YC和非英文来源、规则初分的人工复核,以及停止服务或被收购案例。这样能减少“只见赢家”和“只见融资公司”的偏差。公开来源池之外的未披露公司仍无法证明已被穷尽。', '',