diff --git a/apps/docs/scripts/auth-cli.ts b/apps/docs/scripts/auth-cli.ts index 46f1524..0ece61b 100644 --- a/apps/docs/scripts/auth-cli.ts +++ b/apps/docs/scripts/auth-cli.ts @@ -183,7 +183,7 @@ async function main() { const research = await researchResponse.json(); assert.equal(research.companies.length, 1023); assert.equal(research.categories.length, 11); - assert.equal(research.evidence.length, 1251); + assert.equal(research.evidence.length, 1259); assert.equal(research.observations.length, 189); assert.equal((await request("/api/research/ai-companies", { method: "POST", headers })).status, 405); const researchPage = await request("/docs/other-research/ai-company-research/overview", { headers }); diff --git a/apps/docs/tests/research.test.ts b/apps/docs/tests/research.test.ts index d03f46a..ad9fd6f 100644 --- a/apps/docs/tests/research.test.ts +++ b/apps/docs/tests/research.test.ts @@ -24,7 +24,7 @@ test("research revisions share the authentication database and preserve replay l assert.equal(consumeCode(config, "invalid"), "limited"); const initial = readResearchSnapshot(); assert.equal(initial.companies.length, 1023); - assert.equal(initial.evidence.length, 1251); + assert.equal(initial.evidence.length, 1259); assert.equal(initial.observations.length, 189); assert.deepEqual(initial.candidateBatches, seed.candidateBatches, "candidate gaps persist in the same database metadata"); assert.deepEqual(initial.directoryRechecks, seed.directoryRechecks, "follow-up classifications persist without rewriting the discovery audit"); @@ -64,9 +64,9 @@ test("research validation rejects broken evidence and unsafe source links", () = test("reviews link explicit companies without turning global or excluded cases into companies", () => { const snapshot = structuredClone(seed) as ResearchSnapshot; - assert.equal(snapshot.reviews.filter((r) => r.scope === "companies").length, 59); - assert.equal(snapshot.reviews.filter((r) => r.scope === "dataset").length, 8); - assert.equal(snapshot.reviews.filter((r) => r.scope === "excluded-candidate").length, 28); + assert.equal(snapshot.reviews.filter((r) => r.scope === "companies").length, 60); + assert.equal(snapshot.reviews.filter((r) => r.scope === "dataset").length, 9); + assert.equal(snapshot.reviews.filter((r) => r.scope === "excluded-candidate").length, 29); const review = snapshot.reviews.find((r) => r.id === "R4")!; assert.deepEqual(reviewCompanyIds(snapshot, review), ["AI007", "AI013", "AI021", "AI034"]); assert.deepEqual(reviewCompanyIds(snapshot, snapshot.reviews.find((r) => r.id === "CN-R-PSI")!), []); @@ -307,7 +307,7 @@ test("unreconciled directory financials remain source reviews instead of income assert.ok(review.evidenceIds.includes("PH-TANA-DR")); assert.equal(reviewCompanyIds(snapshot, review).length, 0); assert.ok(!snapshot.observations.some((o) => o.evidence === "PH-TANA-DR")); - assert.equal(snapshot.candidateBatches!.flatMap((b) => b.records).filter((r) => r.status === "pending-year").length, 5); + assert.equal(snapshot.candidateBatches!.flatMap((b) => b.records).filter((r) => r.status === "pending-year").length, 8); }); test("product pivots and founder histories do not become new company years or current revenue", () => { diff --git a/content/research/ai-companies.seed.json b/content/research/ai-companies.seed.json index 2964c5f..0e7e8ce 100644 --- a/content/research/ai-companies.seed.json +++ b/content/research/ai-companies.seed.json @@ -1,5 +1,5 @@ { - "version": "2026-10-30-thrive-brila-1", + "version": "2026-10-30-archives-1", "asOf": "2026-10-30", "scope": "全球公开资料研究:保留首批个案,并扩展核查2025—2026八个YC批次候选池;成立年份以官方公司页面字段为依据。", "limitations": [ @@ -10387,7 +10387,7 @@ "id": "YC30879", "name": "Hypercubic", "url": "https://www.ycombinator.com/companies/hypercubic", - "cat": "C05", + "cat": "C04", "year": 2025, "team": 3, "location": "San Francisco", @@ -10401,11 +10401,12 @@ "stage": "目录公开,商业成熟度待核验", "sourceType": "YC官方页面中的公司自述", "evidenceIds": [ - "YC-E-30879" + "YC-E-30879", + "TC-BF25-HYPER" ], "revenueStatus": "unknown", "profileOnly": true, - "classificationBasis": "主营简介的规则初分", + "classificationBasis": "人工复核YC当前主营:大型机与COBOL开发、维护和现代化工具,按开发者交付任务归C04;目录其他业务与财务字段尚未逐项核验。", "directoryTags": [] }, { @@ -45778,6 +45779,94 @@ "kind": "公司官方历史条款", "summary": "官方条款页面日期2023-10-16,服务合同方列Generated Media, Inc.,业务为生成图像许可。", "limitation": "单看同名条款不唯一识别主体,需与注册号7627361的隐私政策及Brila政策合看;不能把图像许可收入当新建站产品ARR。" + }, + { + "id": "TC-ARCHIVE-2025", + "companyId": null, + "title": "TechCrunch 2025普通年度档案入口", + "url": "https://techcrunch.com/2025/", + "publishedAt": null, + "accessedAt": "2026-10-30", + "kind": "媒体档案索引", + "summary": "年度档案首屏可读并提供Next链接,可从普通页面继续回查2025报道。", + "limitation": "本次只核入口和可见首屏,不代表已穷尽分页;综合档案包含非AI内容,新闻日期不当成立年。" + }, + { + "id": "TC-ARCHIVE-AI2", + "companyId": null, + "title": "TechCrunch AI栏目第二页读取范围", + "url": "https://techcrunch.com/category/artificial-intelligence/page/2/", + "publishedAt": null, + "accessedAt": "2026-10-30", + "kind": "媒体档案索引", + "summary": "普通AI栏目第二页可读,页面存在跨公司、产品和行业报道。", + "limitation": "只证明本次页面可读;动态相对时间和当前分页位置不是稳定的两年候选池,不以栏目名保证每条均为新AI公司。" + }, + { + "id": "TC-BF25", + "companyId": null, + "title": "2025企业竞赛名单的定向发现入口", + "url": "https://techcrunch.com/2025/12/29/the-32-top-enterprise-tech-startups-from-disrupt-startup-battlefield/", + "publishedAt": "2025-12-29", + "accessedAt": "2026-10-30", + "kind": "媒体候选发现", + "summary": "从2025企业竞赛精选名单选择五条线索,逐项另查原始资料。", + "limitation": "仅读取并核查五项,不声称32项、全部200参赛者或两年档案完成;参赛年不等成立年,不复用文章宣传评价为独立能力判断。" + }, + { + "id": "TC-BF25-HYPER", + "companyId": "YC30879", + "title": "Hypercubic当前YC主营与年份复核", + "url": "https://www.ycombinator.com/companies/hypercubic", + "publishedAt": null, + "accessedAt": "2026-10-30", + "kind": "YC官方公司资料", + "summary": "页面列Founded 2025,描述面向大型机与COBOL的维护现代化及Hopper开发环境。", + "limitation": "同一公司复用YC30879;公开演示、客户行业或目标企业不等付费客户,未测试性能或核收入。" + }, + { + "id": "TC-BF25-BILLOW", + "companyId": null, + "title": "Billow AI Labs的YC资料与成立年缺项", + "url": "https://www.ycombinator.com/companies/billow-ai-labs", + "publishedAt": null, + "accessedAt": "2026-10-30", + "kind": "YC官方公司资料", + "summary": "页面链接thebillow.ai,列Summer 2026批次,介绍会计和财务流程服务,本次可读正文无Founded字段。", + "limitation": "批次不等成立年;与2025竞赛发现线索的时序和实体需补证,不仅按相同域名和批次新增2026公司。创始人旧平台用户、交易量和客户企业价值不当Billow收入。" + }, + { + "id": "TC-BF25-DOBS", + "companyId": null, + "title": "Dobs AI公司主页的范围外年份", + "url": "https://www.linkedin.com/company/dobs-ai", + "publishedAt": null, + "accessedAt": "2026-10-30", + "kind": "公司公开主页自述", + "summary": "公司主页链接dobs.ai并列Founded 2024,介绍财务尽调与盈利质量分析。", + "limitation": "2024为公司自述,精确注册未核;准确率及合规宣传不是本轮独立测试,客户数据分析金额不作其自身收入。" + }, + { + "id": "TC-BF25-CASHEW", + "companyId": null, + "title": "Cashew Research官方业务与同名边界", + "url": "https://www.cashewresearch.com/about", + "publishedAt": null, + "accessedAt": "2026-10-30", + "kind": "公司官方材料", + "summary": "公开公司介绍页可读,关联市场研究业务与cashewresearch.com。", + "limitation": "成立年及运营主体仍待可靠材料补证;不是YC的Cashew Labs,不能套用后者2025年份、团队或技术。" + }, + { + "id": "TC-BF25-ZINNIA", + "companyId": null, + "title": "Zinnia发现域名的当前访问缺项", + "url": "https://www.getzinnia.ai/", + "publishedAt": null, + "accessedAt": "2026-10-30", + "kind": "公司官网访问核查", + "summary": "从发现链接访问getzinnia.ai,本次重定向getzinnia.com后无法读取正文。", + "limitation": "不以搜索摘录或其他同名Zinnia公司填补成立年、团队或收入;当前无法核实该域名的主体连续性。" } ], "reviews": [ @@ -47143,6 +47232,46 @@ ], "handling": "归范围外既有主体;保留精确注册日未知,不因产品发布新增公司,不将图像业务收入或团队规模转作Brila建站业务。", "scope": "excluded-candidate" + }, + { + "id": "TC-R-ARCHIVE-SCOPE", + "type": "档案入口与读取边界", + "company": "资料来源整体", + "summary": "2025普通年度档案与AI第二页可读,说明RSS/API受限不代表所有普通档案页面不可读。", + "evidenceIds": [ + "TC-ARCHIVE-2025", + "TC-ARCHIVE-AI2", + "TC-BF25" + ], + "handling": "补2025定向候选台账,继续保留未读分页与未核名单;不把入口可读、竞赛选样或新闻时点写成两年新公司全集。", + "scope": "dataset" + }, + { + "id": "HYPER-R-CLASSIFICATION", + "type": "主营人工分类复核", + "company": "Hypercubic", + "companyIds": [ + "YC30879" + ], + "summary": "当前YC材料显示大型机/COBOL开发维护与现代化,归开发者工具。", + "evidenceIds": [ + "YC-E-30879", + "TC-BF25-HYPER" + ], + "handling": "复用既有公司记录,不重复新增;仍为目录基础记录,商业模式、定价及财务继续留缺,不把演示当独立测试。", + "scope": "companies" + }, + { + "id": "DOBS-R-COHORT", + "type": "参赛与成立年边界", + "company": "Dobs AI(既有公司候选)", + "summary": "2025参赛发现线索由公司主页2024自述年份补证为范围外。", + "evidenceIds": [ + "TC-BF25", + "TC-BF25-DOBS" + ], + "handling": "不新增公司或收入观测,不将客户盈利分析结果、准确率或合规宣传转为公司收入或独立技术验证。", + "scope": "excluded-candidate" } ], "coverage": { @@ -47886,6 +48015,87 @@ "companyId": "AI079" } ] + }, + { + "id": "TC-2025-battlefield-targeted-1", + "sourceId": "S02", + "url": "https://techcrunch.com/2025/12/29/the-32-top-enterprise-tech-startups-from-disrupt-startup-battlefield/", + "accessedAt": "2026-10-30", + "scope": "从2025-12-29企业竞赛名单中选取五条线索,按另列原始资料补证;不是该文32项全表、全部参赛者或两年档案。名录、参赛和报道时点均不直接作成立年。", + "complete": false, + "records": [ + { + "id": "TC25-BF-01", + "name": "Billow AI Labs", + "url": "https://www.ycombinator.com/companies/billow-ai-labs", + "categoryId": "C07", + "kind": "company", + "profileStatus": "readable", + "status": "pending-year", + "evidenceIds": [ + "TC-BF25", + "TC-BF25-BILLOW" + ], + "note": "YC仅列S2026批次且无可读Founded字段;与2025发现线索的实体/时序待核。旧创业业绩、客户企业价值和交易量不作新公司收入。" + }, + { + "id": "TC25-BF-02", + "name": "Cashew Research", + "url": "https://www.cashewresearch.com/about", + "categoryId": "C06", + "kind": "company", + "profileStatus": "readable", + "status": "pending-year", + "evidenceIds": [ + "TC-BF25", + "TC-BF25-CASHEW" + ], + "note": "成立年与主体未补齐;不与Cashew Labs混用,也不从参赛或新闻年推成立年。" + }, + { + "id": "TC25-BF-03", + "name": "Dobs AI", + "url": "https://www.linkedin.com/company/dobs-ai", + "categoryId": "C07", + "kind": "company", + "profileStatus": "readable", + "status": "outside-cohort", + "evidenceIds": [ + "TC-BF25", + "TC-BF25-DOBS" + ], + "note": "公司主页自述2024成立,按范围外保留,不凭2025参赛新增公司;精确注册与财务未核。" + }, + { + "id": "TC25-BF-04", + "name": "Hypercubic", + "url": "https://www.ycombinator.com/companies/hypercubic", + "categoryId": "C04", + "kind": "company", + "profileStatus": "readable", + "status": "linked", + "evidenceIds": [ + "TC-BF25", + "TC-BF25-HYPER" + ], + "note": "复用既有YC30879,2025年份由YC自述;当前主营复核为大型机开发维护工具,收入未知。", + "companyId": "YC30879" + }, + { + "id": "TC25-BF-05", + "name": "Zinnia(getzinnia.ai线索)", + "url": "https://www.getzinnia.ai/", + "categoryId": "C06", + "kind": "company", + "profileStatus": "unavailable", + "status": "pending-year", + "evidenceIds": [ + "TC-BF25", + "TC-BF25-ZINNIA" + ], + "note": "官方域名重定向后的正文不可读,成立年和主体连续性留缺,不套用其他同名公司资料。" + } + ] } ], "directoryRechecks": [ diff --git a/content/research/ai-companies.sources.json b/content/research/ai-companies.sources.json index 0023b3c..080fd66 100644 --- a/content/research/ai-companies.sources.json +++ b/content/research/ai-companies.sources.json @@ -1,5 +1,5 @@ { - "version": "2026-10-30-18", + "version": "2026-10-30-19", "scopeConfirmedAt": "2026-10-30", "acceptance": "以确认的公开来源清单为边界,逐条核对并标明缺项。", "provenance": "S01—S12恢复自已提交用户的《AI公司研究_来源与分类模板》来源清单;S13—S16单列后续已使用的补充证据渠道,不将使用次数当作全量覆盖。", @@ -28,8 +28,8 @@ "techcrunch.com" ], "initialAccess": "AI栏目可读取", - "boundary": "栏目首页选择的3条公司线索已追溯原始资料:Wabi据公开名录2025年份、Thrive Holdings据公司主页2025自述关联公司,DreamHQ成立年仍待核。Thrive控股改造与收购/有机收入边界单列;非首页全部条目或两年档案,公开分类接口与RSS普通HTTP请求返回403。", - "nextCheck": "补可公开取得的2025、2026档案及剩余分页;核DreamHQ成立依据与Wabi、Thrive Holdings精确注册、团队及收入边界。", + "boundary": "栏目首页选择的3条公司线索已追溯原始资料:Wabi据公开名录2025年份、Thrive Holdings据公司主页2025自述关联公司,DreamHQ成立年仍待核。Thrive控股改造与收购/有机收入边界单列;非首页全部条目或两年档案,公开分类接口与RSS普通HTTP请求返回403。 已补读2025年度档案入口、AI第二页,并从2025企业竞赛报道定向核5条:复用1条、范围外1条、待核3条;不是完整32项名单或两年全量。", + "nextCheck": "沿已验证可读的普通2025档案及AI分页继续补台账;记录未读分页,补DreamHQ、Billow、Cashew Research和Zinnia成立与主体依据,区分竞赛年、批次、产品和公司成立年。", "limitation": "需追溯原始披露,部分文章受访问限制", "accessRecheckedAt": "2026-10-30" }, diff --git a/content/research/ai-income-analysis.json b/content/research/ai-income-analysis.json index 522c22e..891417d 100644 --- a/content/research/ai-income-analysis.json +++ b/content/research/ai-income-analysis.json @@ -1,5 +1,5 @@ { - "sourceVersion": "2026-10-30-thrive-brila-1", + "sourceVersion": "2026-10-30-archives-1", "asOf": "2026-10-30", "metric": "platform-mrr-usd", "sampleUnit": "product-or-business",