Resolve Ada company registration and shared ChartGen identity

This commit is contained in:
2026-10-31 23:50:49 +08:00
parent 0bd2ce6b02
commit 0a640d75d4
5 changed files with 168 additions and 18 deletions
+2 -2
View File
@@ -182,9 +182,9 @@ 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, 1198);
assert.equal(research.companies.length, 1199);
assert.equal(research.categories.length, 11);
assert.equal(research.evidence.length, 4646);
assert.equal(research.evidence.length, 4653);
assert.equal(research.observations.length, 453);
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 });
+7 -7
View File
@@ -123,8 +123,8 @@ 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, 1198);
assert.equal(initial.evidence.length, 4646);
assert.equal(initial.companies.length, 1199);
assert.equal(initial.evidence.length, 4653);
assert.equal(initial.observations.length, 453);
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");
@@ -164,7 +164,7 @@ 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, 209);
assert.equal(snapshot.reviews.filter((r) => r.scope === "companies").length, 210);
assert.equal(snapshot.reviews.filter((r) => r.scope === "dataset").length, 143);
assert.equal(snapshot.reviews.filter((r) => r.scope === "excluded-candidate").length, 44);
const review = snapshot.reviews.find((r) => r.id === "R4")!;
@@ -185,11 +185,11 @@ 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), 1198);
assert.equal(summary.reduce((n, c) => n + c.count, 0), 1199);
assert.equal(summary.reduce((n, c) => n + c.self, 0), 58);
assert.equal(summary.reduce((n, c) => n + c.estimate, 0), 2);
assert.equal(summary.reduce((n, c) => n + c.platform, 0), 19);
assert.equal(summary.reduce((n, c) => n + c.unknown, 0), 1119);
assert.equal(summary.reduce((n, c) => n + c.unknown, 0), 1120);
assert.equal(snapshot.companies.find((c) => c.name === "Rork")?.revenueStatus, "unknown");
assert.equal(snapshot.companies.find((c) => c.name === "Result")?.revenueStatus, "unknown");
assert.ok(snapshot.observations.filter((o) => o.selection === "signal").every((o) => o.scope === "公司整体"));
@@ -224,7 +224,7 @@ test("service run rates, legacy freight revenue and paid adoption do not become
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, 183);
assert.equal(snapshot.companies.filter((c) => c.technicalReview).length, 184);
assert.equal(snapshot.companies.filter((c) => c.technicalReview?.level === "public-artifact").length, 26);
assert.equal(snapshot.companies.filter((c) => c.technicalReview?.level === "independent-test").length, 1);
assert.equal(snapshot.companies.find((c) => c.id === "AI051")?.revenueStatus, "unknown");
@@ -512,7 +512,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, 131);
assert.equal(snapshot.candidateBatches!.flatMap((b) => b.records).filter((r) => r.status === "pending-year").length, 130);
});
test("product pivots and founder histories do not become new company years or current revenue", () => {
+155 -5
View File
@@ -1,5 +1,5 @@
{
"version": "2026-10-31-sacra-targeted-1",
"version": "2026-10-31-ada-entity-1",
"asOf": "2026-10-31",
"scope": "全球公开资料研究:保留首批个案,并扩展核查2025—2026八个YC批次候选池;成立年份以官方公司页面字段为依据。",
"limitations": [
@@ -37690,6 +37690,51 @@
"SACRA1-GI-CODE"
]
}
},
{
"id": "AI107",
"name": "Ada.im / ChartGen AI",
"url": "https://ada.im/",
"channel": "S04",
"cat": "C05",
"year": 2025,
"team": null,
"location": null,
"business": "以LLM/Agent执行数据清洗、SQL查询、文档及分析报告,提供API/Dify连接。",
"buyer": "业务分析人员、企业团队和个人分析用户",
"delivery": "网页分析应用及API文档;实际质量、企业部署与活跃付费规模未独立验证",
"notes": "Deep Analysis法人2025注册与条款品牌相互对应,按同一公司登记,不将品牌更名拆成两家;业务首次运营/资产沿革仍待核。不合并近名Ada客服公司,示例客户收入和分析结果非本公司收入。",
"cohort": "条款运营者与ACRA同名唯一公司2025-06-04注册;不是仅依据2025产品发布",
"teamBasis": "ACRA董事人数非员工人数,精确现员未知",
"price": "有订阅/日票/积分与免费额度说明,现价入口无公开正文;币种、当前金额及企业合同待核",
"stage": "网页与公开文档可访问,收费规则有说明,未实际使用或独立测效",
"sourceType": "公司条款/文档、ACRA公开注册接口",
"evidenceIds": [
"PHALL25-ADA-PH",
"PHALL25-ADA-HOME",
"PHALL25-ADA-TERMS",
"ADA1-REGISTRY",
"ADA1-TERMS",
"ADA1-HOME",
"ADA1-DOCS",
"ADA1-BILLING",
"ADA1-API",
"ADA1-PRICE-ACCESS"
],
"revenueStatus": "unknown",
"businessModel": "数据分析订阅及积分消耗/API;日票、充值、赠送与经常性收入分开",
"entityBasis": "Deep Analysis Pte. Ltd.,ACRA UEN202524428Z;条款同名且列Ada.im/ChartGen,不把注册地址当实际所在地;集团及业务资产沿革待核",
"classificationBasis": "按横向数据分析/报告应用归C05,未证明自研基础模型或独立技术领先",
"technicalReview": {
"level": "description",
"reviewedAt": "2026-10-31",
"summary": "官网及公开API/功能文档支持产品任务描述;未取得可复现实验、公开代码或独立测试,不接受无幻觉保证为实测结论。",
"evidenceIds": [
"ADA1-HOME",
"ADA1-DOCS",
"ADA1-API"
]
}
}
],
"observations": [
@@ -95915,6 +95960,83 @@
"kind": "公开研究目录/公司与投资方原始资料核查",
"summary": "复核WixQ2附件相关段落:集团期末ARR和分部收入、Base44计算/推理成本及下半年约60%非GAAP毛利预期;定义纳含Base44的订阅MRR年化。",
"limitation": "仅读相关财务/定义段落;集团数字不是Base44独立经营收入,预测不是已实现毛利,不将Sacra估算与管理层预期视独立审计。没有新增或重定旧财务金额/日期。"
},
{
"id": "ADA1-REGISTRY",
"companyId": "AI107",
"title": "Deep Analysis官方注册记录",
"url": "https://data.gov.sg/api/action/datastore_search?resource_id=d_acbc938ec77af18f94cecc4a7c9ec720&q=202524428Z&limit=5",
"publishedAt": null,
"accessedAt": "2026-10-31",
"kind": "公司原始资料与官方注册补核",
"summary": "ACRA公开接口唯一记录:DEEP ANALYSIS PTE. LTD.,UEN202524428Z,2025-06-04注册,Live Company。",
"limitation": "仅读登记字段;董事3名不是员工,登记地址不等实际办公室,注册日不等产品首发或实际经营起点;数据集按月更新。"
},
{
"id": "ADA1-TERMS",
"companyId": "AI107",
"title": "Ada与ChartGen同一条款主体",
"url": "https://ada.im/docs/termOfService",
"publishedAt": "2026-01-16",
"accessedAt": "2026-10-31",
"kind": "公司原始资料与官方注册补核",
"summary": "条款列Deep Analysis Pte. Ltd.,并将ChartGen、Ada.im与Deep Analysis列为公司商标;服务为AI数据分析应用。",
"limitation": "名称与官方登记匹配,但条款未印UEN;不合并加拿大Ada客服等近名公司。自动续费条款表述需以实际订单核,商标自述非独立商标查册。"
},
{
"id": "ADA1-HOME",
"companyId": "AI107",
"title": "Ada当前数据分析产品",
"url": "https://ada.im/",
"publishedAt": null,
"accessedAt": "2026-10-31",
"kind": "公司原始资料与官方注册补核",
"summary": "官网描述LLM/Agent清洗数据、SQL与报告;提供文件上传和多源连接,文档转ChartGen。",
"limitation": "未上传或运行产品;消除幻觉/企业级等宣传不作效果实证,评价人数不作付费规模。"
},
{
"id": "ADA1-DOCS",
"companyId": "AI107",
"title": "ChartGen同域文档与应用范围",
"url": "https://ada.im/docs",
"publishedAt": null,
"accessedAt": "2026-10-31",
"kind": "公司原始资料与官方注册补核",
"summary": "同域介绍ChartGen的数据与文档报告、词汇表及技能功能,给出业务指标分析示例。",
"limitation": "示例收入增长不是公司实际经营结果;工具名称变化不新增另一家公司,首次业务及资产沿革仍待核。"
},
{
"id": "ADA1-BILLING",
"companyId": "AI107",
"title": "ChartGen积分与订阅规则",
"url": "https://ada.im/docs/billingFAQ",
"publishedAt": null,
"accessedAt": "2026-10-31",
"kind": "公司原始资料与官方注册补核",
"summary": "计费文档区分日票、月订阅/邀请、补充积分与免费额度,购买积分三个月失效;订阅可取消续费,原价格跳转billing。",
"limitation": "未取得可读完整价格或合同订单;积分/免费试用/邀请奖励不等已付费收入,名义额度和退款约束不推续费或毛利。"
},
{
"id": "ADA1-API",
"companyId": "AI107",
"title": "ChartGen API与Dify连接说明",
"url": "https://ada.im/docs/api",
"publishedAt": null,
"accessedAt": "2026-10-31",
"kind": "公司原始资料与官方注册补核",
"summary": "文档提供API Key服务及Dify集成,按积分计费、可设每Key月限额。",
"limitation": "只读文档,不生成Key、不执行API或插件;接口说明非独立质量测试,不提升公开代码或独立实测等级。"
},
{
"id": "ADA1-PRICE-ACCESS",
"companyId": "AI107",
"title": "ChartGen现价入口可读缺项",
"url": "https://chartgen.ai/billing",
"publishedAt": null,
"accessedAt": "2026-10-31",
"kind": "公司原始资料与官方注册补核",
"summary": "从官方计费FAQ打开价格入口,公开响应只有跟踪iframe,无套餐价格正文。",
"limitation": "不以旧目录价格替当前值,不登录或下单;确切币种、价格和付费分母仍缺。"
}
],
"reviews": [
@@ -104667,6 +104789,26 @@
"SACRA1-GI-CODE"
],
"handling": "未运行/独立验证代码或数据/模型商用许可,不将公开产物升级独立测试;商业API合作未证付款,融资和Medal旧数据/用户非本公司ARR。需实际API合同、数据权利和训练/推理/支持成本、注册沿革与当前精确团队,收入未知。"
},
{
"id": "ADA1-R-ENTITY",
"type": "登记、品牌统一与积分收入边界",
"company": "Ada.im / ChartGen AI",
"companyIds": [
"AI107"
],
"scope": "companies",
"summary": "ACRA2025注册与同名运营者条款及两品牌相互支持,将PH待核候选关联同一公司;不重复按产品计数。",
"evidenceIds": [
"ADA1-REGISTRY",
"ADA1-TERMS",
"ADA1-HOME",
"ADA1-DOCS",
"ADA1-BILLING",
"ADA1-API",
"ADA1-PRICE-ACCESS"
],
"handling": "注册日不代实际经营起点,品牌/资产历史、条款无UEN仍需后续核。董事非员工、注册地址非办公点;免费/邀请/补充积分和分析示例不作公司ARR,价格/付费用户/成本仍缺。公开文档非公开代码或独立实验,不据无幻觉宣传升级技术等级。"
}
],
"coverage": {
@@ -117059,7 +117201,7 @@
"sourceId": "S04",
"url": "https://www.producthunt.com/leaderboard/yearly/2025/all",
"accessedAt": "2026-10-31",
"scope": "2025年度All入口首次公开响应19张文字卡片,9项为原38卡外产品;复用已有候选对应并逐项记录新资料。14范围外、4年份待核、1推广,仅图片Framer位置和未取得分页保留缺项,不代表全年或新成立公司全量。",
"scope": "2025年度All入口首次公开响应19张文字卡片,9项为原38卡外产品;复用已有候选对应并逐项记录新资料。当前1关联(Ada/ChartGen经ACRA与条款补核AI107)、14范围外、3年份待核、1推广;仅图片Framer位置和未取得分页保留缺项,不代表全年或新成立公司全量。",
"complete": false,
"records": [
{
@@ -117317,14 +117459,22 @@
"categoryId": "C05",
"kind": "product",
"profileStatus": "readable",
"status": "pending-year",
"status": "linked",
"evidenceIds": [
"PHALL25-PAGE",
"PHALL25-ADA-PH",
"PHALL25-ADA-HOME",
"PHALL25-ADA-TERMS"
"PHALL25-ADA-TERMS",
"ADA1-REGISTRY",
"ADA1-TERMS",
"ADA1-HOME",
"ADA1-DOCS",
"ADA1-BILLING",
"ADA1-API",
"ADA1-PRICE-ACCESS"
],
"note": "AI数据清洗/SQL/报告,反链条款为ChartGen/Deep Analysis Pte. Ltd.且含Ada商标;主体成立及品牌沿革未核,2025发布不填成立年。订阅/积分/退款与真实收入分开,不合并近名Ada。"
"note": "ACRA唯一同名Deep Analysis Pte. Ltd.于2025-06-04注册,官网条款同运营者并列Ada.im/ChartGen商标,关联AI107同一公司。现价入口无正文、团队/实际地点及付费收入未知;注册与经营起点分开,业务/资产沿革待核,不合并近名Ada。",
"companyId": "AI107"
},
{
"id": "PHALL25-C18",
+3 -3
View File
@@ -1,5 +1,5 @@
{
"version": "2026-10-31-sacra-targeted-1",
"version": "2026-10-31-ada-entity-1",
"scopeConfirmedAt": "2026-10-30",
"acceptance": "以确认的公开来源清单为边界,逐条核对并标明缺项。",
"provenance": "S01—S12恢复自已提交用户的《AI公司研究_来源与分类模板》来源清单;S13—S16单列后续已使用的补充证据渠道,不将使用次数当作全量覆盖。",
@@ -2810,8 +2810,8 @@
"producthunt.com"
],
"initialAccess": "官网可读取",
"boundary": "两年公开响应各19条,共38条。当前5条关联公司、2条范围外对照、26条范围外/既有业务、3条年份待核、2条推广。旧版本、品牌与法律主体分开,Tapflow据2024原版记录排除,Happycapy仍待核;非两年全量。 Pazi补既有业务链后范围外,保留字段冲突;Happycapy iOS销售方与ACRA注册日已核,全球产品/旧业务沿革仍待核。 后续核All独立入口,2025首屏新增19条发现位置(9项原38卡外产品),逐项登记14范围外/4年份待核/1推广;累计57条位置非独立公司。LilysAI/Readray2023沿革、Dreamina集团、Welltory2016、TrueFoundry2021和VidAU2024旧产品分开;Ada/ChartGen、EZsite/EasySite及Duix主体年份留缺。2026 All另读19卡尚待逐项登记,page=2两年均浏览工具不可访问,非证明无末页;原Featured快照不回写,无主公司/收入新增。 后续2026 All19文字卡逐项登记(9项原Featured之外),3关联位置/2既有范围外/7范围外/6年份待核/1推广;Base44和Goldfish复用,StoreClaw官网2026及第三方LLM电商任务新增AI105。四批累计76发现位置非独立公司,原批次保持,无收入观测新增。Fathom/Tencent/Viktor旧业务、Codity2025/2024与创始差异、Spira合同/占位、Acti与Polly主体年份分开。",
"nextCheck": "继续补两年其余分页/日期、仅图片位置及3条年份待核候选;保留Pazi日期冲突与旧业务排除依据,核清其余品牌与主体,避免转移历史业绩。 Happycapy的新加坡销售法人不自动等新创业;继续补网页签约方与集团业务沿革。 优先登记2026 All19文字卡及与Base44等已有公司映射,补2025 All新增Duix/Ada/EZsite主体成立/合同、Story目录缓存至正文/运营链,保留近名域区别。首次All响应非全量分页,其他日期与图片位置继续缺项。 2026 All本首屏逐项已有记录;继续Codity美印登记与旧域/创始沿革,Acti TypeX、Spira、PollyReach正式主体/成立及产品合同版本,StoreClaw实收/续费和推理工具成本;四批有限首屏不替全年、分页及仅图片位置核查。",
"boundary": "已登记2025/2026 Featured及两年All入口各19张文字卡,共76个发现位置,含重复产品/集团旧业务/推广,非76家独立新公司或全年全量。Featured原38卡当前5关联、2范围外对照、26范围外、3年份待核、2推广;2025 All当前1关联(Ada/ChartGen)、14范围外、3年份待核、1推广;2026 All3关联位置、2范围外对照、7范围外、6年份待核、1推广。StoreClaw新增AI105;Ada/ChartGen据条款同名主体与ACRA2025注册新增AI107;Base44/Goldfish等复用公司。旧业务/更名不重置成立,Happycapy销售法人注册不证明全球新创业,Codity年份/创始人差异未消歧。四批原页面发现范围保留;未取得分页和仅图片位置仍缺,未新增收入观测。",
"nextCheck": "继续补两年其余分页/日期及仅图片位置;Fundraisly、Happycapy、MGX/Atoms、Duix、EZsite、Acti TypeX、Spira、Codity、PollyReach的未决主体/年份/旧业务链。保留Pazi、Zeta旧业务与年份冲突证据,不转移历史收入。Ada/ChartGen已核同名公司注册与品牌关联,仍缺业务资产沿革、实际办公/团队、当前价格/币种、付费/续费和推理/报告成本;StoreClaw实收与工具成本待核。有限首屏不替全年全量。",
"limitation": "上线时间不等于成立时间",
"accessRecheckedAt": "2026-10-30"
},
+1 -1
View File
@@ -1,5 +1,5 @@
{
"sourceVersion": "2026-10-31-sacra-targeted-1",
"sourceVersion": "2026-10-31-ada-entity-1",
"asOf": "2026-10-31",
"metric": "platform-mrr-usd",
"sampleUnit": "product-or-business",