diff --git a/apps/docs/scripts/auth-cli.ts b/apps/docs/scripts/auth-cli.ts index ad17459..7c91a36 100644 --- a/apps/docs/scripts/auth-cli.ts +++ b/apps/docs/scripts/auth-cli.ts @@ -182,10 +182,10 @@ async function main() { assert.equal(researchResponse.status, 200, "authenticated research API"); assert.ok(researchResponse.headers.get("cache-control")?.includes("no-store")); const research = await researchResponse.json(); - assert.equal(research.companies.length, 1047); + assert.equal(research.companies.length, 1050); assert.equal(research.categories.length, 11); - assert.equal(research.evidence.length, 1579); - assert.equal(research.observations.length, 220); + assert.equal(research.evidence.length, 1593); + assert.equal(research.observations.length, 229); 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 }); assert.equal(researchPage.status, 200); diff --git a/apps/docs/tests/research.test.ts b/apps/docs/tests/research.test.ts index 53d1677..d512cf5 100644 --- a/apps/docs/tests/research.test.ts +++ b/apps/docs/tests/research.test.ts @@ -23,9 +23,9 @@ test("research revisions share the authentication database and preserve replay l for (let i = 0; i < 20; i++) consumeCode(config, "invalid"); assert.equal(consumeCode(config, "invalid"), "limited"); const initial = readResearchSnapshot(); - assert.equal(initial.companies.length, 1047); - assert.equal(initial.evidence.length, 1579); - assert.equal(initial.observations.length, 220); + assert.equal(initial.companies.length, 1050); + assert.equal(initial.evidence.length, 1593); + assert.equal(initial.observations.length, 229); 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"); assert.deepEqual(readResearchSnapshot(), initial, "reopening does not duplicate records"); @@ -64,8 +64,8 @@ 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, 97); - assert.equal(snapshot.reviews.filter((r) => r.scope === "dataset").length, 11); + assert.equal(snapshot.reviews.filter((r) => r.scope === "companies").length, 100); + assert.equal(snapshot.reviews.filter((r) => r.scope === "dataset").length, 12); assert.equal(snapshot.reviews.filter((r) => r.scope === "excluded-candidate").length, 41); const review = snapshot.reviews.find((r) => r.id === "R4")!; assert.deepEqual(reviewCompanyIds(snapshot, review), ["AI007", "AI013", "AI021", "AI034"]); @@ -85,10 +85,10 @@ test("reviews link explicit companies without turning global or excluded cases i test("disclosure counts exclude client income, biographies, targets and duplicate milestones", () => { const snapshot = seed as ResearchSnapshot; const summary = categorySummary(snapshot); - assert.equal(summary.reduce((n, c) => n + c.count, 0), 1047); + assert.equal(summary.reduce((n, c) => n + c.count, 0), 1050); assert.equal(summary.reduce((n, c) => n + c.self, 0), 38); assert.equal(summary.reduce((n, c) => n + c.estimate, 0), 2); - assert.equal(summary.reduce((n, c) => n + c.platform, 0), 16); + assert.equal(summary.reduce((n, c) => n + c.platform, 0), 19); assert.equal(summary.reduce((n, c) => n + c.unknown, 0), 991); assert.equal(snapshot.companies.find((c) => c.name === "Rork")?.revenueStatus, "unknown"); assert.equal(snapshot.companies.find((c) => c.name === "Result")?.revenueStatus, "unknown"); @@ -97,7 +97,7 @@ test("disclosure counts exclude client income, biographies, targets and duplicat test("technical reviews keep accessible materials separate from tested capabilities", () => { const snapshot = structuredClone(seed) as ResearchSnapshot; - assert.equal(snapshot.companies.filter((c) => c.technicalReview).length, 48); + assert.equal(snapshot.companies.filter((c) => c.technicalReview).length, 50); assert.equal(snapshot.companies.filter((c) => c.technicalReview?.level === "public-artifact").length, 8); assert.equal(snapshot.companies.filter((c) => c.technicalReview?.level === "independent-test").length, 1); assert.equal(snapshot.companies.find((c) => c.id === "AI051")?.revenueStatus, "unknown"); @@ -248,14 +248,21 @@ test("income descriptions report sample dispersion and maximum-value sensitivity test("platform samples exclude stale data and keep ARR, estimates and collections separate", () => { const snapshot = seed as ResearchSnapshot; const recent = platformIncomeSample(snapshot, { windowDays: 7 }); - assert.equal(recent.points.length, 14); - assert.equal(recent.excluded.length, 3); + assert.equal(recent.points.length, 16); + assert.equal(recent.excluded.length, 4); assert.ok(recent.points.every((p) => p.observation.metric === "mrr" && p.observation.selection === "platform")); - assert.deepEqual(new Set(recent.excluded.map((p) => p.observation.company)), new Set(["AI016", "MR013", "MR014"])); + assert.deepEqual(new Set(recent.excluded.map((p) => p.observation.company)), new Set(["AI016", "MR013", "MR014", "MR017"])); assert.ok(recent.points.some((p) => p.company.name === "TrackAI" && p.observation.connectionExpired), "dated recent value is not a claim of active connection"); const older = platformIncomeSample(snapshot, { windowDays: 90 }); - assert.equal(older.points.length, 15); + assert.equal(older.points.length, 18); assert.ok(older.points.some((p) => p.company.id === "AI016")); + assert.ok(!recent.points.some((p) => p.company.id === "MR017")); + assert.ok(older.points.some((p) => p.company.id === "MR017" && p.observation.connectionExpired), + "an expired connection retains its historical observation date in the wider window"); + assert.equal(recent.points.find((p) => p.company.id === "MR018")?.value, 67864, + "an older Markdown cache must not replace or duplicate the later web snapshot"); + assert.equal(recent.points.find((p) => p.company.id === "MR019")?.value, 65431, + "period-table revenue and revenue snapshots must not replace MRR"); const scaled = platformIncomeSample(snapshot, { windowDays: 7, annualize: true }); const monthlyGroups = groupIncome(recent.points); const annualGroups = groupIncome(scaled.points); diff --git a/content/research/ai-companies.seed.json b/content/research/ai-companies.seed.json index b393f6e..e0da0fa 100644 --- a/content/research/ai-companies.seed.json +++ b/content/research/ai-companies.seed.json @@ -1,5 +1,5 @@ { - "version": "2026-10-30-agent-classification-1", + "version": "2026-10-30-platform-expansion-1", "asOf": "2026-10-30", "scope": "全球公开资料研究:保留首批个案,并扩展核查2025—2026八个YC批次候选池;成立年份以官方公司页面字段为依据。", "limitations": [ @@ -29996,6 +29996,112 @@ "SR25-LOOPS-AI" ] } + }, + { + "id": "MR017", + "name": "LLM Gateway", + "url": "https://llmgateway.io/", + "cat": "C02", + "year": 2025, + "location": "美国(平台资料)", + "business": "多供应商模型API路由、计费、密钥管理及监控,另有模型使用订阅产品。", + "buyer": "开发者及企业模型平台团队", + "price": "API页按token及5%平台费、BYOK免费、企业询价;另有DevPass/Lounge订阅,历史收入分摊未核", + "businessModel": "模型网关订阅与用量", + "entityBasis": "官网条款自述Polar Lights LLC,精确注册和支付账户合并范围未核。", + "notes": "成立年份为平台经营者资料;MRR为9月历史快照且连接过期,充值、使用、供应商成本和订阅须拆分,不能当当前纯SaaS净收入。", + "evidenceIds": [ + "MR2-LLM-WEB", + "MR2-LLM-MD", + "MR2-LLM-HOME", + "MR2-LLM-TERMS", + "MR2-LLM-PRICE", + "MR2-USD", + "MR2-METHOD" + ], + "technicalReview": { + "level": "description", + "reviewedAt": "2026-10-30", + "summary": "已读官网产品与部署说明;未读取源代码、安装运行或独立测试路由/可靠性。", + "evidenceIds": [ + "MR2-LLM-HOME" + ] + }, + "team": null, + "delivery": "平台有支付连接历史,法律主体、全账户收入和实际产品效果未独立验证。", + "cohort": "2025年创立(平台资料),产品/业务口径,非法律注册确认", + "teamBasis": "平台人数及经营者资料未转换为精确团队数", + "stage": "有平台支付数据,实际成本、留存和公司合并口径待核", + "sourceType": "支付平台连接指标、经营者可编辑资料及可读官网", + "revenueStatus": "platform", + "classificationBasis": "按当前交付分类:模型路由基础设施与内容创作软件分开,不能因为均调用模型而合成同一业务。" + }, + { + "id": "MR018", + "name": "Gomotion AI(TrustMRR iker)", + "url": "https://trustmrr.com/startup/iker", + "cat": "C08", + "year": 2026, + "location": "西班牙(平台资料)", + "business": "将主题自动生成YouTube纪录片式视频,包含脚本、配音、素材和编辑。", + "buyer": "视频频道经营者与内容团队", + "price": "平台列Creator $27/月、Studio $59/月、Agency $107/月;当前官网、合同和额度未核", + "businessModel": "软件订阅", + "entityBasis": "本轮仅平台产品记录,无独立官网/注册主体证明;不与同名其他公司合并。", + "notes": "平台2026年7月起步字段,非工商确认;网页与Markdown缓存有不同同步时点,较早数值另列。", + "evidenceIds": [ + "MR2-GOMO-WEB", + "MR2-GOMO-MD", + "MR2-USD", + "MR2-METHOD" + ], + "team": null, + "delivery": "平台有支付连接历史,法律主体、全账户收入和实际产品效果未独立验证。", + "cohort": "2026年创立(平台资料),产品/业务口径,非法律注册确认", + "teamBasis": "平台人数及经营者资料未转换为精确团队数", + "stage": "有平台支付数据,实际成本、留存和公司合并口径待核", + "sourceType": "支付平台连接指标及经营者可编辑资料;独立官网未取得", + "revenueStatus": "platform", + "classificationBasis": "按当前交付分类:模型路由基础设施与内容创作软件分开,不能因为均调用模型而合成同一业务。" + }, + { + "id": "MR019", + "name": "Promptwise(promptwise.com)", + "url": "https://promptwise.com/", + "cat": "C08", + "year": 2025, + "location": "美国(平台资料)", + "business": "聚合图像、视频与音频模型,为创作者提供生成、UGC与流程画布软件。", + "buyer": "创作者、品牌及内容团队", + "price": "官网当前月费含积分,额外额度另计;官网现套餐与平台$9—349范围分开,不用于推实际收入", + "businessModel": "软件订阅", + "entityBasis": "官网和条款自述ZeroTen Media Inc;2025年12月为平台产品起步字段,主体注册与财务合并范围未核。", + "notes": "平台团队为11—25范围,精确人数留空;收入快照与期间表金额不同,保留差异,不混入MRR或据此推断虚报。", + "evidenceIds": [ + "MR2-PROMPT-WEB", + "MR2-PROMPT-MD", + "MR2-PROMPT-HOME", + "MR2-PROMPT-TERMS", + "MR2-USD", + "MR2-METHOD" + ], + "technicalReview": { + "level": "description", + "reviewedAt": "2026-10-30", + "summary": "已读官网创意工作区及模型聚合说明;未独立运行或测试生成质量。", + "evidenceIds": [ + "MR2-PROMPT-HOME", + "MR2-PROMPT-TERMS" + ] + }, + "team": null, + "delivery": "平台有支付连接历史,法律主体、全账户收入和实际产品效果未独立验证。", + "cohort": "2025年创立(平台资料),产品/业务口径,非法律注册确认", + "teamBasis": "平台人数及经营者资料未转换为精确团队数", + "stage": "有平台支付数据,实际成本、留存和公司合并口径待核", + "sourceType": "支付平台连接指标、经营者可编辑资料及可读官网", + "revenueStatus": "platform", + "classificationBasis": "按当前交付分类:模型路由基础设施与内容创作软件分开,不能因为均调用模型而合成同一业务。" } ], "observations": [ @@ -33528,6 +33634,186 @@ "reason": "公司发布自述,软件与定制部署/服务收入未拆;品牌/法律主体边界、币种和合同底表待核,不进入同期比较", "bound": ">", "comparisonGroup": null + }, + { + "id": "MR2-O-LLM-MRR", + "company": "MR017", + "name": "LLM Gateway", + "kind": "平台历史MRR", + "value": 78764, + "unit": "USD", + "timing": "平台最后同步2026-09-07T02:22:35.854Z;连接过期", + "evidence": "MR2-LLM-MD", + "scope": "产品/业务,完整法律主体及账户范围未核", + "selection": "platform", + "reason": "按平台显示取整值保留;平台文档定义美元口径,MRR不等近30日收入或经审计ARR,原始合同及确认口径待核。", + "bound": "=", + "comparisonGroup": "trustmrr-usd-mrr", + "metric": "mrr", + "observedAt": "2026-09-07", + "provider": "Stripe", + "connectionExpired": true, + "origin": "payment-platform" + }, + { + "id": "MR2-O-LLM-30D", + "company": "MR017", + "name": "LLM Gateway", + "kind": "平台历史近30日收入快照", + "value": 259539, + "unit": "USD", + "timing": "同一历史同步快照,非研究日前30天", + "evidence": "MR2-LLM-MD", + "scope": "产品/业务,完整法律主体及账户范围未核", + "selection": "platform", + "reason": "按平台显示取整值保留;平台文档定义美元口径,MRR不等近30日收入或经审计ARR,原始合同及确认口径待核。", + "bound": "=", + "comparisonGroup": "trustmrr-usd-revenue-30d", + "metric": "revenue-30d", + "observedAt": "2026-09-07", + "provider": "Stripe", + "connectionExpired": true, + "origin": "payment-platform" + }, + { + "id": "MR2-O-GOMO-MRR-WEB", + "company": "MR018", + "name": "Gomotion AI(TrustMRR iker)", + "kind": "网页平台MRR", + "value": 67864, + "unit": "USD", + "timing": "网页最后同步2026-10-30 12:27 PM,时区未注明", + "evidence": "MR2-GOMO-WEB", + "scope": "产品/业务,完整法律主体及账户范围未核", + "selection": "platform", + "reason": "按平台显示取整值保留;平台文档定义美元口径,MRR不等近30日收入或经审计ARR,原始合同及确认口径待核。", + "bound": "=", + "comparisonGroup": "trustmrr-usd-mrr", + "metric": "mrr", + "observedAt": "2026-10-30", + "provider": "Stripe", + "connectionExpired": false, + "origin": "payment-platform" + }, + { + "id": "MR2-O-GOMO-30D-WEB", + "company": "MR018", + "name": "Gomotion AI(TrustMRR iker)", + "kind": "网页近30日收入", + "value": 84341, + "unit": "USD", + "timing": "网页标题近30日;最后同步2026-10-30 12:27 PM,时区未注明", + "evidence": "MR2-GOMO-WEB", + "scope": "产品/业务,完整法律主体及账户范围未核", + "selection": "platform", + "reason": "按平台显示取整值保留;平台文档定义美元口径,MRR不等近30日收入或经审计ARR,原始合同及确认口径待核。", + "bound": "=", + "comparisonGroup": "trustmrr-usd-revenue-30d", + "metric": "revenue-30d", + "observedAt": "2026-10-30", + "provider": "Stripe", + "connectionExpired": false, + "origin": "payment-platform" + }, + { + "id": "MR2-O-GOMO-MRR-MD", + "company": "MR018", + "name": "Gomotion AI(TrustMRR iker)", + "kind": "较早Markdown MRR", + "value": 67299, + "unit": "USD", + "timing": "Markdown同步2026-10-29T18:27:36.658Z", + "evidence": "MR2-GOMO-MD", + "scope": "产品/业务,完整法律主体及账户范围未核", + "selection": "crosscheck", + "reason": "不同时间缓存快照,另供核对,不与较晚网页重复计产品或拼接数值", + "bound": "=", + "comparisonGroup": null, + "metric": "mrr", + "observedAt": "2026-10-29", + "provider": "Stripe", + "connectionExpired": false, + "origin": "payment-platform" + }, + { + "id": "MR2-O-GOMO-30D-MD", + "company": "MR018", + "name": "Gomotion AI(TrustMRR iker)", + "kind": "较早Markdown近30日快照", + "value": 83526, + "unit": "USD", + "timing": "Markdown同步2026-10-29T18:27:36.658Z", + "evidence": "MR2-GOMO-MD", + "scope": "产品/业务,完整法律主体及账户范围未核", + "selection": "crosscheck", + "reason": "较早缓存快照不与10月30日网页拼成同一时刻收入", + "bound": "=", + "comparisonGroup": null, + "metric": "revenue-30d", + "observedAt": "2026-10-29", + "provider": "Stripe", + "connectionExpired": false, + "origin": "payment-platform" + }, + { + "id": "MR2-O-PROMPT-MRR", + "company": "MR019", + "name": "Promptwise(promptwise.com)", + "kind": "平台MRR", + "value": 65431, + "unit": "USD", + "timing": "Markdown同步2026-10-30T11:20:20.475Z;网页MRR相同", + "evidence": "MR2-PROMPT-MD", + "scope": "产品/业务,完整法律主体及账户范围未核", + "selection": "platform", + "reason": "按平台显示取整值保留;平台文档定义美元口径,MRR不等近30日收入或经审计ARR,原始合同及确认口径待核。", + "bound": "=", + "comparisonGroup": "trustmrr-usd-mrr", + "metric": "mrr", + "observedAt": "2026-10-30", + "provider": "Stripe", + "connectionExpired": false, + "origin": "payment-platform" + }, + { + "id": "MR2-O-PROMPT-30D-SNAPSHOT", + "company": "MR019", + "name": "Promptwise(promptwise.com)", + "kind": "平台近30日收入快照", + "value": 94596, + "unit": "USD", + "timing": "Markdown快照字段与网页标题相同;同步2026-10-30T11:20:20.475Z", + "evidence": "MR2-PROMPT-MD", + "scope": "产品/业务,完整法律主体及账户范围未核", + "selection": "platform", + "reason": "按平台显示取整值保留;平台文档定义美元口径,MRR不等近30日收入或经审计ARR,原始合同及确认口径待核。", + "bound": "=", + "comparisonGroup": "trustmrr-usd-revenue-30d", + "metric": "revenue-30d", + "observedAt": "2026-10-30", + "provider": "Stripe", + "connectionExpired": false, + "origin": "payment-platform" + }, + { + "id": "MR2-O-PROMPT-30D-TABLE", + "company": "MR019", + "name": "Promptwise(promptwise.com)", + "kind": "Markdown期间表近30日收入", + "value": 94095, + "unit": "USD", + "timing": "与快照同响应中的期间表,窗口对应关系待核", + "evidence": "MR2-PROMPT-MD", + "scope": "产品/业务,完整法律主体及账户范围未核", + "selection": "crosscheck", + "reason": "期间表与快照边界不同,不能取最大、相加或用近30日收入替代MRR", + "bound": "=", + "comparisonGroup": null, + "metric": "revenue-30d", + "observedAt": "2026-10-30", + "provider": "Stripe", + "connectionExpired": false, + "origin": "payment-platform" } ], "evidence": [ @@ -50899,6 +51185,160 @@ "kind": "公司官网访问缺项", "summary": "官网直达超时,未取得当前正文。", "limitation": "不把访问失败当停业证明;YC Inactive状态单列,当前合同及经营状态未知。" + }, + { + "id": "MR2-USD", + "companyId": null, + "title": "TrustMRR收入字段币种和单位", + "url": "https://trustmrr.com/docs/api/get-startup", + "publishedAt": null, + "accessedAt": "2026-10-30", + "kind": "平台方法文档", + "summary": "平台详情接口文档将MRR、近30日和累计收入定义为USD cents。公开展示美元金额按页面取整保留,不把API分单位再次当美元。", + "limitation": "本轮仅读文档,没有申请密钥或访问认证接口;平台归一币种不证明经营者原始合同币种、净收入或财务审计。" + }, + { + "id": "MR2-METHOD", + "companyId": null, + "title": "TrustMRR当前同步与资料边界", + "url": "https://trustmrr.com/faq", + "publishedAt": null, + "accessedAt": "2026-10-30", + "kind": "平台方法说明", + "summary": "平台重建指标可与支付商后台公式有差异;经营者资料与支付指标分开,失效连接需要重连。", + "limitation": "不能由已连接或订阅数推出毛利、留存和主体独立性;本轮未取得逐笔支付、全部账户或完整MRR历史。" + }, + { + "id": "MR2-ACCESS", + "companyId": null, + "title": "TrustMRR公开发现与缓存边界", + "url": "https://trustmrr.com/llms.txt", + "publishedAt": null, + "accessedAt": "2026-10-30", + "kind": "平台公开访问说明", + "summary": "官方列公开Markdown详情与固定缓存发现快照;完整筛选分页和深入历史需认证。", + "limitation": "不声称覆盖全平台;本轮定向三项,公开发现端点在网页工具读取失败,未改用认证或规避访问限制。" + }, + { + "id": "MR2-LLM-WEB", + "companyId": "MR017", + "title": "LLM Gateway网页快照", + "url": "https://trustmrr.com/startup/llm-gateway", + "publishedAt": null, + "accessedAt": "2026-10-30", + "kind": "平台支付连接指标及经营者资料", + "summary": "平台列2025年5月起步、Stripe MRR 78,764及过期连接,最后同步2026-09-07。", + "limitation": "资料年份为经营者字段,非工商核验;页面现时访问不代表收入现时更新。" + }, + { + "id": "MR2-LLM-MD", + "companyId": "MR017", + "title": "LLM Gateway公开Markdown财务快照", + "url": "https://trustmrr.com/startup/llm-gateway.md", + "publishedAt": null, + "accessedAt": "2026-10-30", + "kind": "平台支付连接指标及经营者资料", + "summary": "MRR 78,764、近30日快照259,539,财务最后同步2026-09-07T02:22:35.854Z,连接已过期;当前日期序列中的零值不当已验证零收入。", + "limitation": "历史快照、积分充值、订阅及供应商代收/转付未勾稽,不能直接当净收入、利润或当前ARR。" + }, + { + "id": "MR2-GOMO-WEB", + "companyId": "MR018", + "title": "Gomotion AI网页快照", + "url": "https://trustmrr.com/startup/iker", + "publishedAt": null, + "accessedAt": "2026-10-30", + "kind": "平台支付连接指标及经营者资料", + "summary": "平台列2026年7月起步;页面MRR 67,864,标题近30日84,341,最后同步2026-10-30 12:27 PM,未注明时区。", + "limitation": "未取得独立官网与法律主体;不是同名其他视频/动画公司,资料和订阅数不证明技术效果或付费留存。" + }, + { + "id": "MR2-GOMO-MD", + "companyId": "MR018", + "title": "Gomotion AI较早Markdown快照", + "url": "https://trustmrr.com/startup/iker.md", + "publishedAt": null, + "accessedAt": "2026-10-30", + "kind": "平台支付连接指标及经营者资料", + "summary": "该响应同步2026-10-29T18:27:36.658Z,MRR 67,299、近30日快照83,526;与较晚网页分别保留。", + "limitation": "公开Markdown为缓存,未与较晚网页同刻;不跨响应拼接数值,不把差异推断成虚报。" + }, + { + "id": "MR2-PROMPT-WEB", + "companyId": "MR019", + "title": "Promptwise网页快照", + "url": "https://trustmrr.com/startup/promptwise", + "publishedAt": null, + "accessedAt": "2026-10-30", + "kind": "平台支付连接指标及经营者资料", + "summary": "平台列2025年12月起步;MRR 65,431、近30日快照94,596,Stripe同步2026-10-30。", + "limitation": "11—25团队、用户和定位为经营者可编辑资料;不转换为精确人数或独立核验成立。" + }, + { + "id": "MR2-PROMPT-MD", + "companyId": "MR019", + "title": "Promptwise Markdown及同期口径差异", + "url": "https://trustmrr.com/startup/promptwise.md", + "publishedAt": null, + "accessedAt": "2026-10-30", + "kind": "平台支付连接指标及经营者资料", + "summary": "同步2026-10-30T11:20:20.475Z,MRR 65,431,近30日快照94,596;期间表近30日94,095,另列交叉核对。", + "limitation": "快照与期间表窗口定义未完全对应,不相加、取最大值或用其替代MRR;经营信息和利润率不当支付核验指标。" + }, + { + "id": "MR2-LLM-HOME", + "companyId": "MR017", + "title": "LLM Gateway当前产品和部署", + "url": "https://llmgateway.io/", + "publishedAt": null, + "accessedAt": "2026-10-30", + "kind": "公司官方资料", + "summary": "多模型API路由、密钥管理、监控与托管/自托管;另列DevPass和Lounge订阅产品。", + "limitation": "本轮未打开代码或运行网关;演示账单、吞吐和可靠性宣传不作实测或当前收入。" + }, + { + "id": "MR2-LLM-TERMS", + "companyId": "MR017", + "title": "LLM Gateway运营者与积分计费", + "url": "https://llmgateway.io/legal/terms", + "publishedAt": null, + "accessedAt": "2026-10-30", + "kind": "公司官方条款", + "summary": "条款自述运营者Polar Lights LLC,路由第三方模型,允许积分/按用量及经常性收费,处理时发生供应商成本。", + "limitation": "注册时间和主体财务未独立核;条款不证明支付账户全覆盖,也不决定总额或净额确认。" + }, + { + "id": "MR2-LLM-PRICE", + "companyId": "MR017", + "title": "LLM Gateway API报价与收入拆分", + "url": "https://llmgateway.io/pricing", + "publishedAt": null, + "accessedAt": "2026-10-30", + "kind": "公司官方定价", + "summary": "API页列按token及5%平台费、BYOK免费及企业询价;5%在表中写credit usage、FAQ写买积分,计费触发有歧义。", + "limitation": "不可把充值总额乘5%反推净收入,或把现时API单项价格解释成历史全部MRR;单项API无订阅与其他订阅产品并列。" + }, + { + "id": "MR2-PROMPT-HOME", + "companyId": "MR019", + "title": "Promptwise创意软件及月费额度", + "url": "https://promptwise.com/", + "publishedAt": null, + "accessedAt": "2026-10-30", + "kind": "公司官方资料", + "summary": "图像、视频、音频、UGC及流程画布软件;月费带积分与附加额度,当前套餐和平台旧价范围分开。", + "limitation": "生成结果、模型质量和标价未独立测试或勾稽实际合同;宣传社区人数不作付费人数。" + }, + { + "id": "MR2-PROMPT-TERMS", + "companyId": "MR019", + "title": "Promptwise官方运营者与聚合模式", + "url": "https://promptwise.com/terms/", + "publishedAt": null, + "accessedAt": "2026-10-30", + "kind": "公司官方条款", + "summary": "条款自述ZeroTen Media Inc运营,部分功能路由第三方模型,软件品牌与模型研发分开。", + "limitation": "条款生效/更新不是成立日,文尾仍有模板完善提示;未查工商或核全部签约主体,不据条款认定财务独立。" } ], "reviews": [ @@ -53265,6 +53705,75 @@ "AGENT-HOME-YC31343" ], "handling": "100K以上ARR仅自述,未给日历截至日或币种,不纳入同期收入;六基金使用、250M—5B客户资产范围和客户效率不是公司ARR。保留原始目录来源,不新增第二家公司。" + }, + { + "id": "MR2-R-MR017", + "type": "平台样本、经营模式与财务边界", + "company": "LLM Gateway", + "scope": "companies", + "companyIds": [ + "MR017" + ], + "summary": "成立年份为平台经营者资料;MRR为9月历史快照且连接过期,充值、使用、供应商成本和订阅须拆分,不能当当前纯SaaS净收入。 官网条款自述Polar Lights LLC,精确注册和支付账户合并范围未核。", + "evidenceIds": [ + "MR2-LLM-WEB", + "MR2-LLM-MD", + "MR2-LLM-HOME", + "MR2-LLM-TERMS", + "MR2-LLM-PRICE", + "MR2-USD", + "MR2-METHOD" + ], + "handling": "平台显示数字仅代表所连账户与时间快照;同名实体、法律起步、完整收入、利润及重复账户仍需核验。支付平台公式可不同,快照差异不单独证明造假;MRR年化仅参考。" + }, + { + "id": "MR2-R-MR018", + "type": "平台样本、经营模式与财务边界", + "company": "Gomotion AI(TrustMRR iker)", + "scope": "companies", + "companyIds": [ + "MR018" + ], + "summary": "平台2026年7月起步字段,非工商确认;网页与Markdown缓存有不同同步时点,较早数值另列。 本轮仅平台产品记录,无独立官网/注册主体证明;不与同名其他公司合并。", + "evidenceIds": [ + "MR2-GOMO-WEB", + "MR2-GOMO-MD", + "MR2-USD", + "MR2-METHOD" + ], + "handling": "平台显示数字仅代表所连账户与时间快照;同名实体、法律起步、完整收入、利润及重复账户仍需核验。支付平台公式可不同,快照差异不单独证明造假;MRR年化仅参考。" + }, + { + "id": "MR2-R-MR019", + "type": "平台样本、经营模式与财务边界", + "company": "Promptwise(promptwise.com)", + "scope": "companies", + "companyIds": [ + "MR019" + ], + "summary": "平台团队为11—25范围,精确人数留空;收入快照与期间表金额不同,保留差异,不混入MRR或据此推断虚报。 官网和条款自述ZeroTen Media Inc;2025年12月为平台产品起步字段,主体注册与财务合并范围未核。", + "evidenceIds": [ + "MR2-PROMPT-WEB", + "MR2-PROMPT-MD", + "MR2-PROMPT-HOME", + "MR2-PROMPT-TERMS", + "MR2-USD", + "MR2-METHOD" + ], + "handling": "平台显示数字仅代表所连账户与时间快照;同名实体、法律起步、完整收入、利润及重复账户仍需核验。支付平台公式可不同,快照差异不单独证明造假;MRR年化仅参考。" + }, + { + "id": "MR2-R-METHOD", + "type": "平台字段、缓存和可比样本边界", + "company": "TrustMRR公开平台样本", + "scope": "dataset", + "summary": "文档补足USD字段及公开缓存/访问边界;本轮只定向3项,不是全平台或全部2025—2026公司。", + "evidenceIds": [ + "MR2-USD", + "MR2-METHOD", + "MR2-ACCESS" + ], + "handling": "不注册账户、不读取认证历史。原始$资料与平台归一USD指标分开;7日与90日窗口按同步日期,近期过期快照可按日期保留但明确失效,不当当前连接或审计。" } ], "coverage": { @@ -55601,6 +56110,72 @@ "note": "机构Founded 2025与批次分开;官网读取限制、法律主体和财务口径见公司及核查记录。" } ] + }, + { + "id": "MR-2026-targeted-expansion-1", + "sourceId": "S13", + "url": "https://trustmrr.com/startup/llm-gateway", + "accessedAt": "2026-10-30", + "scope": "从公开排行榜/详情线索定向3项,各自关联平台产品记录;不是全平台或两年完整名录,经营者年份与法律成立分开。", + "complete": false, + "records": [ + { + "id": "MR2B-01", + "name": "LLM Gateway", + "url": "https://trustmrr.com/startup/llm-gateway", + "categoryId": "C02", + "kind": "product", + "profileStatus": "readable", + "status": "linked", + "companyId": "MR017", + "evidenceIds": [ + "MR2-LLM-WEB", + "MR2-LLM-MD", + "MR2-LLM-HOME", + "MR2-LLM-TERMS", + "MR2-LLM-PRICE", + "MR2-USD", + "MR2-METHOD" + ], + "note": "成立年份为平台经营者资料;MRR为9月历史快照且连接过期,充值、使用、供应商成本和订阅须拆分,不能当当前纯SaaS净收入。" + }, + { + "id": "MR2B-02", + "name": "Gomotion AI(TrustMRR iker)", + "url": "https://trustmrr.com/startup/iker", + "categoryId": "C08", + "kind": "product", + "profileStatus": "readable", + "status": "linked", + "companyId": "MR018", + "evidenceIds": [ + "MR2-GOMO-WEB", + "MR2-GOMO-MD", + "MR2-USD", + "MR2-METHOD" + ], + "note": "平台2026年7月起步字段,非工商确认;网页与Markdown缓存有不同同步时点,较早数值另列。" + }, + { + "id": "MR2B-03", + "name": "Promptwise(promptwise.com)", + "url": "https://trustmrr.com/startup/promptwise", + "categoryId": "C08", + "kind": "product", + "profileStatus": "readable", + "status": "linked", + "companyId": "MR019", + "evidenceIds": [ + "MR2-PROMPT-WEB", + "MR2-PROMPT-MD", + "MR2-PROMPT-HOME", + "MR2-PROMPT-TERMS", + "MR2-USD", + "MR2-METHOD" + ], + "note": "平台团队为11—25范围,精确人数留空;收入快照与期间表金额不同,保留差异,不混入MRR或据此推断虚报。" + } + ] } ], "directoryRechecks": [ diff --git a/content/research/ai-companies.sources.json b/content/research/ai-companies.sources.json index e58dca1..3fd05bd 100644 --- a/content/research/ai-companies.sources.json +++ b/content/research/ai-companies.sources.json @@ -1,5 +1,5 @@ { - "version": "2026-10-30-37", + "version": "2026-10-30-38", "scopeConfirmedAt": "2026-10-30", "acceptance": "以确认的公开来源清单为边界,逐条核对并标明缺项。", "provenance": "S01—S12恢复自已提交用户的《AI公司研究_来源与分类模板》来源清单;S13—S16单列后续已使用的补充证据渠道,不将使用次数当作全量覆盖。", @@ -248,8 +248,8 @@ "trustmrr.com" ], "initialAccess": "见具体证据访问记录", - "boundary": "已采集产品与支付快照;公开者自选,不是全部商户或独立财务审计。", - "nextCheck": "核同步日、连接失效、支付平台公式及产品/法人归属。", + "boundary": "已采集产品与支付快照;公开者自选,不是全部商户或独立财务审计。 另定向登记LLM Gateway、Gomotion AI(iker)及Promptwise,补官网、条款、公开Markdown与缓存差异;API文档明确USD分单位,未调用认证接口,不等全平台。", + "nextCheck": "核同步日、连接失效、支付平台公式及产品/法人归属。 补网关充值/供应商成本/订阅收入勾稽、Gomotion独立主体与官网、Promptwise期间表和快照窗口;保留过期连接及不同缓存时点,不用当前访问日刷新财务日期。", "limitation": "来源可读不等于声明已独立验证。" }, { diff --git a/content/research/ai-income-analysis.json b/content/research/ai-income-analysis.json index 3c9d211..a5c8ae4 100644 --- a/content/research/ai-income-analysis.json +++ b/content/research/ai-income-analysis.json @@ -1,5 +1,5 @@ { - "sourceVersion": "2026-10-30-agent-classification-1", + "sourceVersion": "2026-10-30-platform-expansion-1", "asOf": "2026-10-30", "metric": "platform-mrr-usd", "sampleUnit": "product-or-business", @@ -21,7 +21,9 @@ "MR011", "MR012", "MR015", - "MR016" + "MR016", + "MR018", + "MR019" ], "groups": [ { @@ -35,7 +37,7 @@ "MR016" ], "n": 4, - "mean": 34815.0, + "mean": 34815, "median": 36723.0, "sampleDeviation": 16334.54845820151, "cv": 0.46918134304758036, @@ -50,7 +52,7 @@ "MR001" ], "n": 1, - "mean": 53101.0, + "mean": 53101, "median": 53101, "sampleDeviation": null, "cv": null, @@ -65,7 +67,7 @@ "MR002" ], "n": 1, - "mean": 62423.0, + "mean": 62423, "median": 62423, "sampleDeviation": null, "cv": null, @@ -79,15 +81,17 @@ "products": [ "MR003", "MR004", - "MR005" + "MR005", + "MR018", + "MR019" ], - "n": 3, - "mean": 41693.0, - "median": 49069, - "sampleDeviation": 28111.375064197768, - "cv": 0.6742468775141575, - "meanWithoutLargest": 29849.0, - "largestRemovalDrop": 0.2840764636749574 + "n": 5, + "mean": 51674.8, + "median": 65381, + "sampleDeviation": 24138.82269705795, + "cv": 0.4671294847209461, + "meanWithoutLargest": 47627.5, + "largestRemovalDrop": 0.07832250923080501 }, { "category": "C09", @@ -105,7 +109,7 @@ "median": 20483, "sampleDeviation": 11942.947278624319, "cv": 0.4711370488466823, - "meanWithoutLargest": 20046.0, + "meanWithoutLargest": 20046, "largestRemovalDrop": 0.20920581320120557 } ] @@ -127,9 +131,27 @@ "MR012", "MR015", "MR016", - "AI016" + "AI016", + "MR017", + "MR018", + "MR019" ], "groups": [ + { + "category": "C02", + "provider": "Stripe", + "model": "模型网关订阅与用量", + "products": [ + "MR017" + ], + "n": 1, + "mean": 78764, + "median": 78764, + "sampleDeviation": null, + "cv": null, + "meanWithoutLargest": null, + "largestRemovalDrop": null + }, { "category": "C06", "provider": "Stripe", @@ -146,7 +168,7 @@ "median": 40112, "sampleDeviation": 174786.78744916618, "cv": 1.5505509613536426, - "meanWithoutLargest": 34815.0, + "meanWithoutLargest": 34815, "largestRemovalDrop": 0.6911526751687284 }, { @@ -157,7 +179,7 @@ "MR001" ], "n": 1, - "mean": 53101.0, + "mean": 53101, "median": 53101, "sampleDeviation": null, "cv": null, @@ -172,7 +194,7 @@ "MR002" ], "n": 1, - "mean": 62423.0, + "mean": 62423, "median": 62423, "sampleDeviation": null, "cv": null, @@ -186,15 +208,17 @@ "products": [ "MR003", "MR004", - "MR005" + "MR005", + "MR018", + "MR019" ], - "n": 3, - "mean": 41693.0, - "median": 49069, - "sampleDeviation": 28111.375064197768, - "cv": 0.6742468775141575, - "meanWithoutLargest": 29849.0, - "largestRemovalDrop": 0.2840764636749574 + "n": 5, + "mean": 51674.8, + "median": 65381, + "sampleDeviation": 24138.82269705795, + "cv": 0.4671294847209461, + "meanWithoutLargest": 47627.5, + "largestRemovalDrop": 0.07832250923080501 }, { "category": "C09", @@ -212,7 +236,7 @@ "median": 20483, "sampleDeviation": 11942.947278624319, "cv": 0.4711370488466823, - "meanWithoutLargest": 20046.0, + "meanWithoutLargest": 20046, "largestRemovalDrop": 0.20920581320120557 } ] diff --git a/scripts/summarize-ai-income.py b/scripts/summarize-ai-income.py index f7fc65c..c0a44a4 100644 --- a/scripts/summarize-ai-income.py +++ b/scripts/summarize-ai-income.py @@ -89,23 +89,42 @@ def link(cid): def render(): points, excluded = sample(7) + grouped = groups(points) + described = [(key, stats(values)) for key, values in sorted(grouped.items())] + sizes = [value['n'] for _, value in described] + eligible = [(key, value) for key, value in described if value['n'] >= 3] + interpretation = '各组均不足3个样本,暂不比较分组离散度或收入高低。' + if eligible: + highest_key, highest = max(eligible, key=lambda item: item[1]['mean']) + sensitive_key, sensitive = max(eligible, key=lambda item: item[1]['largestRemovalDrop'] or 0) + cvs = [value['cv'] for _, value in eligible if value['cv'] is not None] + cv_text = f"CV范围为{min(cvs):.3f}—{max(cvs):.3f}。" if cvs else '各组CV均不可计算。' + interpretation = ( + f"在至少3个样本的组内,当前均值最高的是{CATEGORIES[highest_key[0]]} · {highest_key[2]}" + f"({highest_key[1]},{money(highest['mean'])}美元每月)。{cv_text}" + f"剔除最大值后均值下降最多的是{CATEGORIES[sensitive_key[0]]} · {sensitive_key[2]}" + f"({sensitive_key[1]},下降{sensitive['largestRemovalDrop'] or 0:.1%})。" + '这些只是当前采集点的描述,不据微小CV差异宣称某领域更稳定。' + ) + size_text = f"各组目前只有{min(sizes)}至{max(sizes)}个产品" if sizes else '当前没有可比较的产品' lines = [ '# AI 公司收入样本分布快照', '', - f"截至 {DATA['asOf']},7日窗口内有 {len(points)} 个产品的美元平台MRR可纳入分组描述。创意软件订阅组的样本均值较高、CV也较大;营销软件组与消费者个人应用组的CV接近。各组只有1至5个产品,尚不足以估计行业总体或造假概率。", '', + f"截至 {DATA['asOf']},7日窗口内有 {len(points)} 个产品的美元平台MRR可纳入分组描述。按业务、支付平台和收费模式分别计算均值、中位数与离散度。{size_text},尚不足以估计行业总体或造假概率。", '', f"这是已采集资料的固定快照。[动态工作台]({BASE})提供筛选与原始证据。窗口按最后同步日计算,不保证所有点同日,也不是{len(DATA['companies']):,}条公司/产品记录的收入普查。", '', '## 7日窗口的分组结果', '', 'MRR单位为美元每月。CV为样本标准差除以均值;最大值剔除降幅表示移除最高收入产品后均值下降的比例。单个样本不计算离散度。', '', '| 业务及收费模式 | 平台 | 样本数 | 均值 | 中位数 | CV | 最大值剔除降幅 |', '| --- | --- | --- | --- | --- | --- | --- |', ] - for key, values in sorted(groups(points).items()): + for key, values in sorted(grouped.items()): cat, provider, model = key v = stats(values) cv = f"{v['cv']:.3f}" if v['cv'] is not None else '不计算' drop = f"{v['largestRemovalDrop']:.1%}" if v['largestRemovalDrop'] is not None else '不计算' lines.append(f"| {CATEGORIES[cat]} · {model} | {provider} | {v['n']} | {money(v['mean'])} | {money(v['median'])} | {cv} | {drop} |") lines += ['', - '在至少3个样本的组内,内容创意软件订阅的均值较高,但移除最大样本后的下降也最大。营销软件与个人应用的CV仅有微小差别,不据此宣称哪个领域更稳定。两个内容类单样本组虽有更高数值,不能作为典型收入或领域排名。', '', + interpretation, '', + '单个样本不计算离散度,也不能作为典型收入或领域排名;不同收费模式和支付平台的分组保留各自含义。', '', '均值和中位数接近只描述当前采集点,并不证明样本具有代表性。平台公开者、成立年、规模、获客渠道与收费方式均可能影响结果。', '', '## 样本与证据入口', '', '点击产品名称可打开公司明细,再查看平台记录及其限制。连接已过期的近期快照仍按所标日期保留,并不表示连接当前有效。', '',