diff --git a/README.md b/README.md index 3fb3026..9d9c97d 100644 --- a/README.md +++ b/README.md @@ -98,13 +98,26 @@ AUTH_CONFIG_FILE=/private/tmp/tabularium-auth/config.json AUTH_COOKIE_SECURE=fal 同一版本内容变化会拒绝导入,避免静默读取旧数据。回退代码时继续读取对应旧版本。 所有修改都经过工作分支和 PR,部署仍等待人工合并主线。 -当前资料包含 986 条公司记录、10 类业务及待分类组、1,035 条证据记录和 75 条经营观测。 -其中保留 58 家个案资料,新增 928 条目录基础资料;目录项不等于完成财务和技术核验。 +当前资料包含 1,002 条公司/产品记录、10 类业务及待分类组、1,055 条证据记录和 126 条经营观测。 +其中保留 58 家个案资料、928 条目录基础资料,并新增 16 个平台产品/业务样本;目录项不等于完成财务和技术核验。 它是定向试样,收入披露不足且统计时点不统一,不代表全部 AI 公司。 界面将公司自述、第三方估算、融资、客户收入和履历收入分开,未知收入不记为零。 保留被撤回的声明作为核查记录,并排除收入比较;并购后业务、管理层预测与历史里程碑单列。 团队规模下界在列表中显示比较符,商业成熟度展示公开交付证据,不等于技术能力排名。 -当前尚不能可靠计算领域 ARR 均值、离散排名或财务造假概率。 +公司披露的 ARR 尚未建立同期同口径比较组。新增平台 MRR 单独计算探索性样本统计, +不能称行业平均 ARR、总体离散排名或财务造假概率。 + +收入分布:`IncomeDistribution.tsx` 从数据库返回的观测中筛选平台 USD MRR, +每个产品只保留符合条件的最新值,默认数据日期距截止日不超过7天。 +按业务类别、支付来源及可选收费模式分组,显示均值、中位数、样本CV(标准差分母n−1)、 +均值/中位数和移除最大值后的均值敏感性。n<3标注样本不足;n=1不计算CV。 +MRR×12仅作为显示单位转换,不改写为公司ARR;公司ARR、估算与近30日收入均不混入。 +`ai-income-analysis.json` 是独立Python复算的7日/90日快照参考,用于检查统计选择和计算, +页面本身从同一SQLite中的公司与观测记录计算,不读取第二个数据库。 + +平台同步时间、连接过期状态、业务描述的可编辑性和产品/法律主体未去重限制均保留。 +默认7日样本14个产品;90日窗口新增Gojiberry的8月历史点,营销样本的均值和CV随之明显变化。 +这提示先核查时间与样本构成,不能将高离散度直接解释为造假。两个近名营养应用按不同App Store ID分别建档。 覆盖核查:从 yc-oss 非官方镜像发现 2025—2026 八个 YC 批次的 1,428 条候选, 逐条读取对应 YC 官方公开页面,以页面中的成立年份、团队字段和业务描述筛选。 @@ -126,6 +139,8 @@ AI 关键词可能出现在业务背景中,收入、买家和交付状态仍 ## CI/CD 与缓存 `.gitea/workflows/ci-deploy.yml` 使用已有 ces-control Runner,不修改共享 Runner 配置。 +当前工作流仅在 main 推送或针对 main 的手动运行时执行。工作分支PR完成本地静态核查后, +完整类型、测试、构建与容器检查在用户手动合并后的主线CI运行;报告须区分未运行与已通过。 1. 对实际构建输入计算 SHA-256:前端源码、Markdown、图片、Python 制图源码、依赖锁文件、Dockerfile 和构建脚本。 2. 命中 `verified--<摘要>` 镜像时跳过依赖安装和 Next.js build,只做认证、实际路由与资源冒烟检查。 diff --git a/apps/docs/scripts/auth-cli.ts b/apps/docs/scripts/auth-cli.ts index a98e99b..e5bf459 100644 --- a/apps/docs/scripts/auth-cli.ts +++ b/apps/docs/scripts/auth-cli.ts @@ -185,10 +185,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, 986); + assert.equal(research.companies.length, 1002); assert.equal(research.categories.length, 11); - assert.equal(research.evidence.length, 1035); - assert.equal(research.observations.length, 75); + assert.equal(research.evidence.length, 1055); + assert.equal(research.observations.length, 126); 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/src/components/AICompanyResearch.tsx b/apps/docs/src/components/AICompanyResearch.tsx index 5eaaffa..dbf4f7d 100644 --- a/apps/docs/src/components/AICompanyResearch.tsx +++ b/apps/docs/src/components/AICompanyResearch.tsx @@ -1,13 +1,14 @@ import { useEffect, useMemo, useRef, useState } from "react"; +import IncomeDistribution from "./IncomeDistribution"; import { categorySummary, evidenceUrl, type ResearchEvidence, type ResearchSnapshot, } from "@/lib/ai-research"; const pageSize = 12; const evidencePageSize = 30; -const revenueLabels = { self: "公司披露,待核口径", estimate: "仅第三方估算", unknown: "暂无可用收入数字" }; +const revenueLabels = { self: "公司披露,待核口径", estimate: "仅第三方估算", platform: "仅支付平台记录", unknown: "暂无可用收入数字" }; const useLabels: Record = { - signal: "公司披露信号", estimate: "第三方估算", historical: "历史里程碑", + platform: "支付平台记录", signal: "公司披露信号", estimate: "第三方估算", historical: "历史里程碑", "historical-estimate": "其他时点估算", excluded: "排除收入比较", scale: "团队规模", adoption: "采用规模", funding: "融资", crosscheck: "同一里程碑的其他资料", }; @@ -70,7 +71,8 @@ export default function AICompanyResearch() { const categories = new Map(data.categories.map((c) => [c.id, c])); const selectedCompany = data.companies.find((c) => c.id === selected); const observed = data.observations.filter((o) => ["signal", "estimate"].includes(o.selection)); - const revenueCompanies = new Set(observed.map((o) => o.company)).size; + const disclosedCompanies = new Set(observed.map((o) => o.company)).size; + const revenueCompanies = new Set(data.observations.filter((o) => ["signal", "estimate", "platform"].includes(o.selection)).map((o) => o.company)).size; const selectedObservations = data.observations.filter((o) => o.company === selected); const selectedEvidenceIds = new Set([ ...(selectedCompany?.evidenceIds ?? []), ...(selectedCompany?.pricingEvidence ? [selectedCompany.pricingEvidence] : []), @@ -84,7 +86,7 @@ export default function AICompanyResearch() { return
资料截至 {data.asOf}首批研究 · 持续补全
-
{data.companies.length}已收录公司
+
{data.companies.length}公司/产品记录
{data.categories.length}业务类别
{revenueCompanies}找到收入信号的公司
{data.evidence.length}证据记录
@@ -97,7 +99,7 @@ export default function AICompanyResearch() {

业务分类

点击类别查看对应公司。数量反映本次采集覆盖,不是市场份额。

-
{summaries.map((c) => )}
{tab === "companies" && <> @@ -116,10 +118,10 @@ export default function AICompanyResearch() { - +
-
{filtered.length} 家匹配公司
-
+
{filtered.length} 条匹配记录
+
公司分类与经营资料。选择公司名称查看指标和原始证据。
公司 / 地区业务与买家成立 / 发布组别团队规模商业成熟度收入资料
{filtered.slice(page * pageSize, (page + 1) * pageSize).map((c) => @@ -130,22 +132,24 @@ export default function AICompanyResearch() { {filtered.length > pageSize && } } {tab === "revenue" && <> -

目前找到 {revenueCompanies} 家公司的收入信号。大多是缺少日历时点的历史里程碑,且 ARR 与年化收入尚未统一。领域均值和离散度暂不计算。

+ +

公司披露与估算的历史里程碑

+

这一组包含 {disclosedCompanies} 家公司的披露或估算信号,多为异时点历史里程碑,ARR 与年化收入口径仍待核对,暂不计算其同期领域均值。上面的平台MRR统计与这一组分开。

{observed.map((o) =>
{o.bound !== "=" && o.bound}{money(o.value, o.unit)}
{o.kind} · {useLabels[o.selection]} · {o.timing}
)}
-
公司/产品分类与经营资料。选择名称查看指标和原始证据。
公司或产品 / 地区业务与买家成立 / 发布组别团队规模商业成熟度收入资料
{c.location ?? "地区未注明"} {categories.get(c.cat)?.name}{c.profileOnly && 规则初分 · 待复核}

{c.business}

买家:{c.buyer}
{summaries.map((c) => )}
当前研究数据中的收入可得性,目录项未逐一检索;未建立同期、同龄、同口径比较组
业务分类公司披露数仅估算数暂无可用数字同期均值 / 离散度
{c.self}{c.estimate}{c.unknown}条件不足
+
{summaries.map((c) => )}
当前研究数据中的收入可得性,目录项未逐一检索;未建立同期、同龄、同口径比较组
业务分类公司披露数仅估算数仅平台数暂无可用数字同期均值 / 离散度
{c.self}{c.estimate}{c.platform}{c.unknown}条件不足

离散度用于筛选值得核查的异常,还需排除公司年龄、口径和披露偏差;不能据此认定财务造假。

} {tab === "sources" && <>

来源链接保留原始位置。相同 URL 的记录可能属于同一披露,不能按记录数计算独立证据数量。

    {data.evidence.slice(sourcePage * evidencePageSize, (sourcePage + 1) * evidencePageSize).map((e) => )}
{data.evidence.length > evidencePageSize && }} {tab === "reviews" &&
    {data.reviews.map((r) =>
  • {r.type}

    {r.company}

    {r.summary}

    {r.handling}

    {r.evidenceIds.map((id) => { const e=data.evidence.find((item) => item.id === id); return e ? {id} : null; })}
  • )}
} - {selectedCompany &&
+ {selectedCompany &&

{selectedCompany.name}

-

公司资料入口 {selectedCompany.extraUrl && 额外核验入口}

-
主营业务
{selectedCompany.business}
样本组别
{selectedCompany.cohort}
买家
{selectedCompany.buyer}
收费方式
{selectedCompany.price}
交付证据
{selectedCompany.delivery}
团队口径
{selectedCompany.teamBasis ?? "本轮未核验人数"}
分类依据
{selectedCompany.classificationBasis ?? "原有个案分类;随研究复核"}
技术水平
尚未独立测试,不据融资或收入作能力排名。
身份与限制
{selectedCompany.notes}
+

资料入口 {selectedCompany.extraUrl && 额外核验入口}

+
主营业务
{selectedCompany.business}
样本组别
{selectedCompany.cohort}
买家
{selectedCompany.buyer}
收费/交付模式
{selectedCompany.businessModel ?? "待进一步核验"}
收费方式
{selectedCompany.price}
交付证据
{selectedCompany.delivery}
团队口径
{selectedCompany.teamBasis ?? "本轮未核验人数"}
分类依据
{selectedCompany.classificationBasis ?? "原有个案分类;随研究复核"}
技术水平
尚未独立测试,不据融资或收入作能力排名。
观测主体
{selectedCompany.entityBasis ?? "公司或经营品牌,法律主体未逐一核验"}
身份与限制
{selectedCompany.notes}

经营指标与排除记录

{selectedObservations.length ?
{selectedObservations.map((o) => )}
指标 / 归属原始数值数据时点用途及限制证据
{o.kind}{o.scope}{o.bound !== "=" && o.bound}{money(o.value,o.unit)}{o.timing}{useLabels[o.selection] ?? o.selection}{o.reason}{o.evidence}
:

本轮尚未找到可记录的量化经营指标。收入保持未知。

}

原始证据

    {selectedEvidence.map((e) => )}
diff --git a/apps/docs/src/components/IncomeDistribution.tsx b/apps/docs/src/components/IncomeDistribution.tsx new file mode 100644 index 0000000..611b3d0 --- /dev/null +++ b/apps/docs/src/components/IncomeDistribution.tsx @@ -0,0 +1,75 @@ +import { useMemo, useState } from "react"; +import type { ResearchSnapshot } from "@/lib/ai-research"; +import { groupIncome, platformIncomeSample } from "@/lib/research-statistics"; + +const usd = (value: number | null) => value === null ? "—" : new Intl.NumberFormat("zh-CN", { + style: "currency", currency: "USD", maximumFractionDigits: 0, +}).format(value); +const percent = (value: number | null) => value === null ? "—" : `${(value * 100).toFixed(1)}%`; + +export default function IncomeDistribution({ data, onSelect }: { + data: ResearchSnapshot; onSelect: (id: string) => void; +}) { + const [dateWindow, setDateWindow] = useState("7"); + const [year, setYear] = useState(""); + const [annualize, setAnnualize] = useState(false); + const [splitModels, setSplitModels] = useState(true); + const [logScale, setLogScale] = useState(true); + const sample = useMemo(() => platformIncomeSample(data, { + windowDays: dateWindow === "all" ? null : Number(dateWindow), foundedYear: year ? Number(year) : undefined, annualize, + }), [data, dateWindow, year, annualize]); + const groups = useMemo(() => groupIncome(sample.points, splitModels).sort((a, b) => + a.category.localeCompare(b.category) || a.provider.localeCompare(b.provider) || a.model.localeCompare(b.model)), [sample.points, splitModels]); + const categories = new Map(data.categories.map((category) => [category.id, category.name])); + const metric = annualize ? "MRR×12参考年化" : "平台MRR"; + const values = sample.points.map((point) => point.value); + const minValue = Math.min(...values); + const maxValue = Math.max(1, ...values); + const axisMin = logScale && minValue > 0 && Number.isFinite(minValue) ? 10 ** Math.floor(Math.log10(minValue)) : 0; + const axisMax = Math.max(axisMin * 10, 10 ** Math.ceil(Math.log10(maxValue))); + const scale = logScale ? (value: number) => Math.log10(value + 1) : (value: number) => value; + const left = 250, right = 865; + const x = (value: number) => left + (scale(value) - scale(axisMin)) / (scale(axisMax) - scale(axisMin)) * (right - left); + const ticks = logScale ? [0, 1, 10, 100, 1000, 10000, 100000, 1000000, 10000000] + .filter((value) => value >= axisMin && value <= axisMax) : [0, .25, .5, .75, 1].map((fraction) => fraction * axisMax); + return
+

收入分布与均值敏感性

+

单独比较支付平台显示的 USD MRR。每个点是一个产品或业务,法律主体与支付账户的独立性尚未全部核实;这不是行业总体或公司财报样本。

+
+ + + +
+
+

资料截至 {data.asOf},纳入 {sample.points.length} 个产品,另有 {sample.excluded.length} 个 MRR 观测未纳入。{annualize ? "乘12只改变显示单位,不证明全年收入、续约或ARR;CV与相对敏感性不变。" : "MRR不等于近30日收款;平台数据连接也不等于财务审计。"}{dateWindow === "all" && " 当前包含不同时间的历史观测,不能称为同期对照。"}

+ {sample.points.length ? <> +
+
+ {ticks.map((tick) => {usd(tick)})} + {groups.map((group, index) => { + const y = index * 70 + 40; + return + {categories.get(group.category)} + {group.provider} · {group.model} · n={group.stats.n} + + 样本均值 {usd(group.stats.mean)} + 样本中位数 {usd(group.stats.median)} + {group.points.map((point, position) => onSelect(point.company.id)} onKeyDown={(event) => { if (event.key === "Enter" || event.key === " ") { event.preventDefault(); onSelect(point.company.id); } }}> + {point.company.name} · {usd(point.value)} · 数据日期 {point.observation.observedAt}{point.observation.connectionExpired ? " · 连接提示过期" : ""} + + + )} + ; + })} +
+
圆点:产品观测 竖线:样本均值 菱形:样本中位数。按业务类别与支付来源分组,点击点或下表产品名可看原始证据。
+
+
{groups.map((group) => + + + )}
{metric}样本统计;金额按显示值计算,CV使用样本标准差
类别 / 来源 / 模式n均值中位数均值/中位数CV去除最大值后的均值 / 下降幅度产品与限制
{categories.get(group.category)}{group.provider} · {group.model}{group.stats.n}{usd(group.stats.mean)}{usd(group.stats.median)}{group.stats.meanMedianRatio?.toFixed(2) ?? "—"}{group.stats.cv?.toFixed(2) ?? "—"}{usd(group.stats.meanWithoutLargest)}{percent(group.stats.largestRemovalDrop)}{group.points.map((point) => {" "})}{group.stats.n < 3 ? "样本少于3,不能据此判断领域典型收入。" : "自选的小样本,须结合产品年龄、成本与留存评估。"}
+ :

当前窗口和创立年份没有符合条件的 MRR 记录。

} +
统计规则与解释

每个产品只取符合条件的最新一条平台 MRR;币种为美元,要求有效数据日期、确定数值及支付来源。公司 ARR、估算、融资、目标和近30日收入均不进入这里。未知值不补零。

CV=样本标准差÷均值,标准差分母为 n−1;n=1 不算 CV。n=2 时均值必然等于中位数,不能据此认为均值有代表性。较大的均值/中位数差距、CV或移除最大值的变化,仅提示进一步核查样本构成。

支付商与平台的退款、试用、年付、币种及指标计算可能不同(平台方法说明)。不能将 MRR 与收款差异、单个高值或高离散度直接解释为财务造假。比较商业模式还需要毛利、获客成本、留存、人工交付和客户集中度。

+ {sample.excluded.length > 0 &&
未纳入的 MRR 记录({sample.excluded.length})
    {sample.excluded.map(({ observation, reason }) =>
  • :{usd(observation.value)} / 月,{observation.observedAt ?? "日期未知"};{reason}
  • )}
} +
; +} diff --git a/apps/docs/src/lib/ai-research.ts b/apps/docs/src/lib/ai-research.ts index 97679a3..8d3282a 100644 --- a/apps/docs/src/lib/ai-research.ts +++ b/apps/docs/src/lib/ai-research.ts @@ -4,14 +4,17 @@ export type ResearchCompany = { team: number | null; teamBound?: ">" | "≥"; location: string | null; business: string; buyer: string; delivery: string; notes: string; cohort: string; teamBasis: string | null; price: string; stage: string; sourceType: string; evidenceIds: string[]; - revenueStatus: "self" | "estimate" | "unknown"; + revenueStatus: "self" | "estimate" | "platform" | "unknown"; extraUrl?: string; pricingEvidence?: string; + businessModel?: string; entityBasis?: string; profileOnly?: boolean; classificationBasis?: string; directoryTags?: string[]; }; export type ResearchObservation = { id: string; company: string; name: string; kind: string; value: number; unit: string; timing: string; evidence: string; scope: string; selection: string; reason: string; bound: string; comparisonGroup: string | null; + metric?: "mrr" | "arr" | "revenue-30d" | "annualized-revenue"; + observedAt?: string; provider?: string; connectionExpired?: boolean; origin?: "payment-platform"; }; export type ResearchEvidence = { id: string; companyId: string | null; title: string; url: string; @@ -88,6 +91,7 @@ export function categorySummary(snapshot: ResearchSnapshot) { const companies = snapshot.companies.filter((c) => c.cat === category.id); return { ...category, count: companies.length, self: companies.filter((c) => c.revenueStatus === "self").length, + platform: companies.filter((c) => c.revenueStatus === "platform").length, estimate: companies.filter((c) => c.revenueStatus === "estimate").length, unknown: companies.filter((c) => c.revenueStatus === "unknown").length }; }); diff --git a/apps/docs/src/lib/research-statistics.ts b/apps/docs/src/lib/research-statistics.ts new file mode 100644 index 0000000..14e8bb7 --- /dev/null +++ b/apps/docs/src/lib/research-statistics.ts @@ -0,0 +1,82 @@ +import type { ResearchCompany, ResearchObservation, ResearchSnapshot } from "./ai-research"; + +export type IncomePoint = { company: ResearchCompany; observation: ResearchObservation; value: number }; +export type IncomeStats = { + n: number; mean: number; median: number; min: number; max: number; + sampleDeviation: number | null; cv: number | null; meanMedianRatio: number | null; + largestShare: number | null; meanWithoutLargest: number | null; largestRemovalDrop: number | null; +}; + +/** Describes the supplied sample only; missing values never become zero. */ +export function describeIncome(values: number[]): IncomeStats | null { + if (!values.length || values.some((value) => !Number.isFinite(value) || value < 0)) return null; + const ordered = [...values].sort((a, b) => a - b); + const n = ordered.length; + const total = ordered.reduce((sum, value) => sum + value, 0); + const mean = total / n; + const median = n % 2 ? ordered[(n - 1) / 2] : (ordered[n / 2 - 1] + ordered[n / 2]) / 2; + const sampleDeviation = n > 1 ? Math.sqrt(ordered.reduce((sum, value) => sum + (value - mean) ** 2, 0) / (n - 1)) : null; + const max = ordered[n - 1]; + const meanWithoutLargest = n > 1 ? (total - max) / (n - 1) : null; + return { n, mean, median, min: ordered[0], max, sampleDeviation, + cv: sampleDeviation !== null && mean > 0 ? sampleDeviation / mean : null, + meanMedianRatio: median > 0 ? mean / median : null, + largestShare: total > 0 ? max / total : null, meanWithoutLargest, + largestRemovalDrop: meanWithoutLargest !== null && mean > 0 ? (mean - meanWithoutLargest) / mean : null }; +} + +function calendarDay(value: string | undefined): number | null { + if (!value || !/^\d{4}-\d{2}-\d{2}$/.test(value)) return null; + const time = Date.parse(`${value}T00:00:00Z`); + return Number.isFinite(time) && new Date(time).toISOString().slice(0, 10) === value ? time / 86400000 : null; +} + +/** Latest dated platform MRR per product, never ARR, cash collections or estimates. */ +export function platformIncomeSample(snapshot: ResearchSnapshot, options: { + windowDays: number | null; foundedYear?: number; annualize?: boolean; +}) { + const end = calendarDay(snapshot.asOf); + if (end === null || (options.windowDays !== null && (!Number.isInteger(options.windowDays) || options.windowDays < 0))) + throw new Error("Invalid income sample window"); + const companies = new Map(snapshot.companies.map((company) => [company.id, company])); + const latest = new Map(); + const excluded: { observation: ResearchObservation; reason: string }[] = []; + const candidates = snapshot.observations.filter((o) => o.selection === "platform" && o.metric === "mrr"); + for (const observation of candidates) { + const company = companies.get(observation.company); + const day = calendarDay(observation.observedAt); + let reason = ""; + if (!company || ![2025, 2026].includes(company.year ?? 0)) reason = "创立年份未纳入2025—2026组"; + else if (options.foundedYear && company.year !== options.foundedYear) reason = "不属于所选创立年份"; + else if (observation.origin !== "payment-platform" || observation.unit !== "USD" || observation.bound !== "=" || + observation.comparisonGroup !== "trustmrr-usd-mrr" || !observation.provider || !Number.isFinite(observation.value) || observation.value < 0) + reason = "来源、币种、指标或数值口径不满足条件"; + else if (day === null) reason = "缺少有效数据日期"; + else if (day > end) reason = "数据日期晚于研究截止日"; + else if (options.windowDays !== null && end - day > options.windowDays) reason = "最后同步日期超出所选窗口"; + if (reason) { excluded.push({ observation, reason }); continue; } + const previous = latest.get(observation.company); + if (!previous || observation.observedAt! > previous.observedAt!) { + if (previous) excluded.push({ observation: previous, reason: "同一产品的较早观测" }); + latest.set(observation.company, observation); + } else excluded.push({ observation, reason: "同一产品已选较新或同日观测" }); + } + const points: IncomePoint[] = [...latest.values()].map((observation) => ({ + company: companies.get(observation.company)!, observation, + value: observation.value * (options.annualize ? 12 : 1), + })); + return { points, excluded }; +} + +export function groupIncome(points: IncomePoint[], splitModels = true) { + const groups = new Map(); + for (const point of points) { + const category = point.company.cat; + const provider = point.observation.provider!; + const model = splitModels ? point.company.businessModel ?? "收费模式未核验" : "全部收费模式"; + const key = JSON.stringify([category, provider, model]); + if (!groups.has(key)) groups.set(key, { category, provider, model, points: [] }); + groups.get(key)!.points.push(point); + } + return [...groups.entries()].map(([key, group]) => ({ key, ...group, stats: describeIncome(group.points.map((point) => point.value))! })); +} diff --git a/apps/docs/src/styles/globals.css b/apps/docs/src/styles/globals.css index 9a8beb7..7fc3b38 100644 --- a/apps/docs/src/styles/globals.css +++ b/apps/docs/src/styles/globals.css @@ -1470,3 +1470,13 @@ svg { flex-shrink: 0; } .research-tabs { gap: 16px; } .research-layout .reading-main { padding: 22px 16px 0; } } + +.research-distribution { margin: 24px 0 38px; } +.research-distribution figure { margin: 20px 0; } +.income-distribution-chart { display: block; width: 100%; min-width: 900px; height: auto; } +.income-distribution-chart [role="button"] { cursor: pointer; outline: none; } +.income-distribution-chart [role="button"]:focus circle:last-child { stroke: #b17725; stroke-width: 3; } +.research-distribution figcaption { color: var(--muted); font-size: 11px; line-height: 1.7; margin: 10px 0; } +.income-options { display: flex; flex-wrap: wrap; gap: 18px; margin: 12px 0; font-size: 12px; } +.income-options label { display: flex; gap: 6px; align-items: center; } +.research-distribution details { margin: 16px 0; font-size: 12px; line-height: 1.8; } diff --git a/apps/docs/tests/research.test.ts b/apps/docs/tests/research.test.ts index 6e5e61d..ea5cd09 100644 --- a/apps/docs/tests/research.test.ts +++ b/apps/docs/tests/research.test.ts @@ -5,11 +5,13 @@ import { join } from "node:path"; import { tmpdir } from "node:os"; import seed from "../../../content/research/ai-companies.seed.json"; import coverageAudit from "../../../content/research/ai-companies.coverage.json"; +import incomeReference from "../../../content/research/ai-income-analysis.json"; import { readResearchSnapshot } from "../src/lib/ai-research-store"; import { openSiteDatabase } from "../src/lib/site-database"; import { categorySummary, evidenceUrl, validateResearch, type ResearchSnapshot } from "../src/lib/ai-research"; import { consumeCode, initializeStore } from "../src/lib/auth-store"; import { newAuthConfig } from "../src/lib/auth"; +import { describeIncome, groupIncome, platformIncomeSample } from "../src/lib/research-statistics"; test("research revisions share the authentication database and preserve replay limits", () => { const dir = mkdtempSync(join(tmpdir(), "site-research-")); @@ -21,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, 986); - assert.equal(initial.evidence.length, 1035); - assert.equal(initial.observations.length, 75); + assert.equal(initial.companies.length, 1002); + assert.equal(initial.evidence.length, 1055); + assert.equal(initial.observations.length, 126); assert.deepEqual(readResearchSnapshot(), initial, "reopening does not duplicate records"); const db = openSiteDatabase(); const tables = db.prepare("SELECT name FROM sqlite_master WHERE type='table'").all() as { name: string }[]; @@ -61,9 +63,10 @@ test("research validation rejects broken evidence and unsafe source links", () = 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), 986); + assert.equal(summary.reduce((n, c) => n + c.count, 0), 1002); assert.equal(summary.reduce((n, c) => n + c.self, 0), 8); assert.equal(summary.reduce((n, c) => n + c.estimate, 0), 1); + assert.equal(summary.reduce((n, c) => n + c.platform, 0), 16); assert.equal(summary.reduce((n, c) => n + c.unknown, 0), 977); assert.equal(snapshot.companies.find((c) => c.name === "Rork")?.revenueStatus, "unknown"); assert.equal(snapshot.companies.find((c) => c.name === "Result")?.revenueStatus, "unknown"); @@ -110,3 +113,74 @@ test("directory coverage reconciles every candidate and keeps profile-only incom invalid.coverage!.newProfiles += 1; assert.throws(() => validateResearch(invalid), /coverage accounting/); }); + +test("income descriptions report sample dispersion and maximum-value sensitivity", () => { + const stats = describeIncome([100, 200, 300])!; + assert.equal(stats.mean, 200); + assert.equal(stats.median, 200); + assert.equal(stats.sampleDeviation, 100); + assert.equal(stats.cv, .5); + assert.equal(stats.largestShare, .5); + assert.equal(stats.meanWithoutLargest, 150); + assert.equal(stats.largestRemovalDrop, .25); + assert.equal(describeIncome([5])!.cv, null); + assert.equal(describeIncome([0, 0])!.mean, 0, "observed zero is distinct from missing"); + assert.equal(describeIncome([0, 0])!.cv, null); + assert.equal(describeIncome([]), null); + assert.equal(describeIncome([100, NaN]), null); + assert.equal(describeIncome([-1]), null); + assert.ok(describeIncome([1, 2, 100])!.largestRemovalDrop! > .95); +}); + +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.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.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.ok(older.points.some((p) => p.company.id === "AI016")); + const scaled = platformIncomeSample(snapshot, { windowDays: 7, annualize: true }); + const monthlyGroups = groupIncome(recent.points); + const annualGroups = groupIncome(scaled.points); + for (const group of monthlyGroups) { + const annual = annualGroups.find((g) => g.key === group.key)!; + assert.ok(Math.abs(annual.stats.mean - group.stats.mean * 12) < 1e-6); + if (group.stats.cv !== null) assert.ok(Math.abs(annual.stats.cv! - group.stats.cv) < 1e-10); + } + const invalid = structuredClone(snapshot); + invalid.observations = invalid.observations.filter((o) => o.company === "MR001" && o.metric === "mrr"); + const first = invalid.observations[0]; + invalid.observations.push({ ...first, id: "future", observedAt: "2026-11-01", value: 999999 }); + invalid.observations.push({ ...first, id: "bad-date", observedAt: "2026-02-30", value: 999999 }); + invalid.observations.push({ ...first, id: "currency", unit: "EUR", value: 999999 }); + invalid.observations.push({ ...first, id: "older", observedAt: "2026-10-28", value: 1 }); + const selected = platformIncomeSample(invalid, { windowDays: 7 }); + assert.equal(selected.points.length, 1); + assert.equal(selected.points[0].observation.id, first.id, "bad newer data and older duplicate must not replace latest valid point"); + assert.equal(selected.excluded.length, 4); + assert.throws(() => platformIncomeSample(snapshot, { windowDays: -1 }), /window/); +}); + +test("distribution statistics match independently calculated snapshot references", () => { + const snapshot = seed as ResearchSnapshot; + assert.equal(incomeReference.sourceVersion, snapshot.version); + for (const reference of incomeReference.windows) { + const sample = platformIncomeSample(snapshot, { windowDays: reference.days }); + assert.deepEqual(new Set(sample.points.map((p) => p.company.id)), new Set(reference.products)); + const groups = groupIncome(sample.points); + assert.equal(groups.length, reference.groups.length); + for (const expected of reference.groups) { + const actual = groups.find((g) => g.category === expected.category && g.provider === expected.provider && g.model === expected.model)!; + assert.equal(actual.stats.n, expected.n); + for (const metric of ["mean", "median", "sampleDeviation", "cv", "meanWithoutLargest", "largestRemovalDrop"] as const) { + const value = expected[metric]; + if (value === null) assert.equal(actual.stats[metric], null); + else assert.ok(Math.abs(actual.stats[metric]! - value) < 1e-6, metric); + } + } + } +}); diff --git a/content/research/ai-companies.seed.json b/content/research/ai-companies.seed.json index 235aa4d..60d789d 100644 --- a/content/research/ai-companies.seed.json +++ b/content/research/ai-companies.seed.json @@ -1,5 +1,5 @@ { - "version": "2026-10-30-coverage-1", + "version": "2026-10-30-income-1", "asOf": "2026-10-30", "scope": "全球公开资料研究:保留首批个案,并扩展核查2025—2026八个YC批次候选池;成立年份以官方公司页面字段为依据。", "limitations": [ @@ -9,7 +9,10 @@ "新增并购业务、收入声明撤回与第三方后续估算案例;仍未建立同日、同龄、同口径的领域ARR比较组。", "新增目录记录为规则初分,未完成逐家商业与技术核验;原有个案资料与目录基础资料可分别筛选。", "AI关键词可出现在业务背景或介绍中,因此本批筛选结果仍需人工复核,不能当作全部经过验证的AI公司。", - "目录项尚未逐一检索收入;无可用收入数字不代表未披露或零收入。" + "目录项尚未逐一检索收入;无可用收入数字不代表未披露或零收入。", + "新增支付平台产品样本,创立年来自可编辑平台资料,不等于工商注册年份;支付连接不是财务审计。", + "平台MRR与公司披露ARR分开展示;默认7天数据窗口,过期历史值可查看但不充当当期值。", + "产品样本与法律实体未完成去重;均值、CV与最大值敏感性是样本描述,不是行业总体估计或造假概率。" ], "categories": [ { @@ -450,9 +453,11 @@ "sourceType": "公司在YC的自述资料", "pricingEvidence": "E131", "evidenceIds": [ - "E016" + "E016", + "MR-E-superfruits" ], - "revenueStatus": "self" + "revenueStatus": "self", + "businessModel": "软件订阅" }, { "id": "AI017", @@ -27760,6 +27765,408 @@ "Productivity", "Collaboration" ] + }, + { + "id": "MR001", + "name": "Boothie", + "url": "https://trustmrr.com/startup/boothie", + "cat": "C08", + "year": 2026, + "team": null, + "location": "土耳其", + "business": "自拍风格转换与AI照片生成", + "buyer": "个人用户", + "delivery": "平台记录存在付费订阅;效果与留存未独立验证", + "notes": "产品/业务样本,法律主体未核验。平台资料称2026-06创立,非工商确认日期。简介、定价、人数与利润可能由经营者填写;支付连接只为收入指标提供交叉信号。", + "cohort": "2026年创立(平台资料)", + "teamBasis": "本轮未将平台人数范围或经营者自述转换成精确员工数", + "price": "免费编辑+订阅及积分包;仅平台资料,不代表已核验当期官网价格", + "stage": "平台有支付数据,商业效果与成本待核验", + "sourceType": "平台支付连接指标+经营者可编辑简介", + "evidenceIds": [ + "MR-E-boothie", + "MR-METHOD" + ], + "revenueStatus": "platform", + "businessModel": "消费者订阅", + "entityBasis": "产品或业务,法律主体未核验" + }, + { + "id": "MR002", + "name": "White Glove Content", + "url": "https://trustmrr.com/startup/white-glove-content", + "cat": "C08", + "year": 2026, + "team": null, + "location": "美国", + "business": "按订阅交付脚本、配音、剪辑及缩略图成品", + "buyer": "创作者与品牌", + "delivery": "平台记录存在付费订阅;效果与留存未独立验证", + "notes": "产品/业务样本,法律主体未核验。平台资料称2026-04创立,非工商确认日期。简介、定价、人数与利润可能由经营者填写;支付连接只为收入指标提供交叉信号。", + "cohort": "2026年创立(平台资料)", + "teamBasis": "本轮未将平台人数范围或经营者自述转换成精确员工数", + "price": "按月/年订阅,交付成品视频;仅平台资料,不代表已核验当期官网价格", + "stage": "平台有支付数据,商业效果与成本待核验", + "sourceType": "平台支付连接指标+经营者可编辑简介", + "evidenceIds": [ + "MR-E-white-glove-content", + "MR-METHOD" + ], + "revenueStatus": "platform", + "businessModel": "内容制作服务", + "entityBasis": "产品或业务,法律主体未核验" + }, + { + "id": "MR003", + "name": "Speel.co", + "url": "https://trustmrr.com/startup/speel-co", + "cat": "C08", + "year": 2025, + "team": null, + "location": "法国", + "business": "生成用于广告和社交媒体的UGC风格视频与图片", + "buyer": "品牌与代理机构", + "delivery": "平台记录存在付费订阅;效果与留存未独立验证", + "notes": "产品/业务样本,法律主体未核验。平台资料称2025-08创立,非工商确认日期。简介、定价、人数与利润可能由经营者填写;支付连接只为收入指标提供交叉信号。", + "cohort": "2025年创立(平台资料)", + "teamBasis": "本轮未将平台人数范围或经营者自述转换成精确员工数", + "price": "分档月订阅;仅平台资料,不代表已核验当期官网价格", + "stage": "平台有支付数据,商业效果与成本待核验", + "sourceType": "平台支付连接指标+经营者可编辑简介", + "evidenceIds": [ + "MR-E-speel-co", + "MR-METHOD" + ], + "revenueStatus": "platform", + "businessModel": "软件订阅", + "entityBasis": "产品或业务,法律主体未核验" + }, + { + "id": "MR004", + "name": "Laper", + "url": "https://trustmrr.com/startup/laper", + "cat": "C08", + "year": 2025, + "team": null, + "location": "中国香港", + "business": "编剧、分镜与视觉叙事工作软件", + "buyer": "编剧、导演与分镜师", + "delivery": "平台记录存在付费订阅;效果与留存未独立验证", + "notes": "产品/业务样本,法律主体未核验。平台资料称2025-09创立,非工商确认日期。简介、定价、人数与利润可能由经营者填写;支付连接只为收入指标提供交叉信号。", + "cohort": "2025年创立(平台资料)", + "teamBasis": "本轮未将平台人数范围或经营者自述转换成精确员工数", + "price": "订阅,当前官网套餐未核验;仅平台资料,不代表已核验当期官网价格", + "stage": "平台有支付数据,商业效果与成本待核验", + "sourceType": "平台支付连接指标+经营者可编辑简介", + "evidenceIds": [ + "MR-E-laper", + "MR-METHOD" + ], + "revenueStatus": "platform", + "businessModel": "软件订阅", + "entityBasis": "产品或业务,法律主体未核验" + }, + { + "id": "MR005", + "name": "GETebook.ai", + "url": "https://trustmrr.com/startup/getebook-ai", + "cat": "C08", + "year": 2025, + "team": null, + "location": "罗马尼亚", + "business": "生成电子书内容、封面及排版并导出", + "buyer": "作者、创作者与营销人员", + "delivery": "平台记录存在付费订阅;效果与留存未独立验证", + "notes": "产品/业务样本,法律主体未核验。平台资料称2025-07创立,非工商确认日期。简介、定价、人数与利润可能由经营者填写;支付连接只为收入指标提供交叉信号。", + "cohort": "2025年创立(平台资料)", + "teamBasis": "本轮未将平台人数范围或经营者自述转换成精确员工数", + "price": "平台资料称订阅起价29美元/月;仅平台资料,不代表已核验当期官网价格", + "stage": "平台有支付数据,商业效果与成本待核验", + "sourceType": "平台支付连接指标+经营者可编辑简介", + "evidenceIds": [ + "MR-E-getebook-ai", + "MR-METHOD" + ], + "revenueStatus": "platform", + "businessModel": "软件订阅", + "entityBasis": "产品或业务,法律主体未核验" + }, + { + "id": "MR006", + "name": "TrackAI", + "url": "https://trustmrr.com/startup/trackai", + "cat": "C09", + "year": 2025, + "team": null, + "location": "波兰", + "business": "照片识别食物并记录热量与营养", + "buyer": "个人用户", + "delivery": "平台记录存在付费订阅;效果与留存未独立验证", + "notes": "产品/业务样本,法律主体未核验。平台资料称2025-06创立,非工商确认日期。简介、定价、人数与利润可能由经营者填写;支付连接只为收入指标提供交叉信号。", + "cohort": "2025年创立(平台资料)", + "teamBasis": "本轮未将平台人数范围或经营者自述转换成精确员工数", + "price": "免费+周/月/年订阅;仅平台资料,不代表已核验当期官网价格", + "stage": "平台有支付数据,商业效果与成本待核验", + "sourceType": "平台支付连接指标+经营者可编辑简介", + "evidenceIds": [ + "MR-E-trackai", + "MR-METHOD" + ], + "revenueStatus": "platform", + "businessModel": "消费者订阅", + "entityBasis": "产品或业务,法律主体未核验" + }, + { + "id": "MR007", + "name": "nutrIA(Nutria Inc)", + "url": "https://trustmrr.com/startup/nutria", + "cat": "C09", + "year": 2025, + "team": null, + "location": "智利", + "business": "饮食识别、营养记录与习惯反馈", + "buyer": "个人用户", + "delivery": "平台记录存在付费订阅;效果与留存未独立验证", + "notes": "产品/业务样本,法律主体未核验。平台资料称2025-04创立,非工商确认日期。简介、定价、人数与利润可能由经营者填写;支付连接只为收入指标提供交叉信号。", + "cohort": "2025年创立(平台资料)", + "teamBasis": "本轮未将平台人数范围或经营者自述转换成精确员工数", + "price": "免费+应用内购买;仅平台资料,不代表已核验当期官网价格", + "stage": "平台有支付数据,商业效果与成本待核验", + "sourceType": "平台支付连接指标+经营者可编辑简介", + "evidenceIds": [ + "MR-E-nutria", + "MR-METHOD", + "MR-APP-NUTRIA" + ], + "revenueStatus": "platform", + "businessModel": "消费者订阅", + "entityBasis": "产品或业务,法律主体未核验" + }, + { + "id": "MR008", + "name": "Calyra(平台名Nutria 9e3eaa)", + "url": "https://trustmrr.com/startup/nutria-9e3eaa", + "cat": "C09", + "year": 2025, + "team": null, + "location": null, + "business": "AI热量与营养记录", + "buyer": "个人用户", + "delivery": "平台记录存在付费订阅;效果与留存未独立验证", + "notes": "产品/业务样本,法律主体未核验。平台资料称2025-07创立,非工商确认日期。简介、定价、人数与利润可能由经营者填写;支付连接只为收入指标提供交叉信号。", + "cohort": "2025年创立(平台资料)", + "teamBasis": "本轮未将平台人数范围或经营者自述转换成精确员工数", + "price": "免费+应用内购买;仅平台资料,不代表已核验当期官网价格", + "stage": "平台有支付数据,商业效果与成本待核验", + "sourceType": "平台支付连接指标+经营者可编辑简介", + "evidenceIds": [ + "MR-E-nutria-9e3eaa", + "MR-METHOD", + "MR-APP-CALYRA" + ], + "revenueStatus": "platform", + "businessModel": "消费者订阅", + "entityBasis": "产品或业务,法律主体未核验" + }, + { + "id": "MR009", + "name": "Verbi", + "url": "https://trustmrr.com/startup/verbi", + "cat": "C09", + "year": 2026, + "team": null, + "location": "加拿大", + "business": "AI语言对话练习", + "buyer": "个人学习者", + "delivery": "平台记录存在付费订阅;效果与留存未独立验证", + "notes": "产品/业务样本,法律主体未核验。平台资料称2026-04创立,非工商确认日期。简介、定价、人数与利润可能由经营者填写;支付连接只为收入指标提供交叉信号。", + "cohort": "2026年创立(平台资料)", + "teamBasis": "本轮未将平台人数范围或经营者自述转换成精确员工数", + "price": "免费+应用内购买;仅平台资料,不代表已核验当期官网价格", + "stage": "平台有支付数据,商业效果与成本待核验", + "sourceType": "平台支付连接指标+经营者可编辑简介", + "evidenceIds": [ + "MR-E-verbi", + "MR-METHOD" + ], + "revenueStatus": "platform", + "businessModel": "消费者订阅", + "entityBasis": "产品或业务,法律主体未核验" + }, + { + "id": "MR010", + "name": "AbMaxx", + "url": "https://trustmrr.com/startup/abmaxx", + "cat": "C09", + "year": 2026, + "team": null, + "location": null, + "business": "AI体态分析与健身计划", + "buyer": "个人用户", + "delivery": "平台记录存在付费订阅;效果与留存未独立验证", + "notes": "产品/业务样本,法律主体未核验。平台资料称2026-03创立,非工商确认日期。简介、定价、人数与利润可能由经营者填写;支付连接只为收入指标提供交叉信号。", + "cohort": "2026年创立(平台资料)", + "teamBasis": "本轮未将平台人数范围或经营者自述转换成精确员工数", + "price": "订阅与应用内购买;仅平台资料,不代表已核验当期官网价格", + "stage": "平台有支付数据,商业效果与成本待核验", + "sourceType": "平台支付连接指标+经营者可编辑简介", + "evidenceIds": [ + "MR-E-abmaxx", + "MR-METHOD" + ], + "revenueStatus": "platform", + "businessModel": "消费者订阅", + "entityBasis": "产品或业务,法律主体未核验" + }, + { + "id": "MR011", + "name": "traxy.ai", + "url": "https://trustmrr.com/startup/traxy-ai", + "cat": "C06", + "year": 2026, + "team": null, + "location": "美国", + "business": "用社交监听发现销售线索", + "buyer": "B2B销售团队", + "delivery": "平台记录存在付费订阅;效果与留存未独立验证", + "notes": "产品/业务样本,法律主体未核验。平台资料称2026-01创立,非工商确认日期。简介、定价、人数与利润可能由经营者填写;支付连接只为收入指标提供交叉信号。", + "cohort": "2026年创立(平台资料)", + "teamBasis": "本轮未将平台人数范围或经营者自述转换成精确员工数", + "price": "平台资料称Pro149美元/月,企业询价;仅平台资料,不代表已核验当期官网价格", + "stage": "平台有支付数据,商业效果与成本待核验", + "sourceType": "平台支付连接指标+经营者可编辑简介", + "evidenceIds": [ + "MR-E-traxy-ai", + "MR-METHOD" + ], + "revenueStatus": "platform", + "businessModel": "软件订阅", + "entityBasis": "产品或业务,法律主体未核验" + }, + { + "id": "MR012", + "name": "NotFair", + "url": "https://trustmrr.com/startup/notfair", + "cat": "C06", + "year": 2026, + "team": null, + "location": "美国", + "business": "AI广告账户分析与经授权执行优化", + "buyer": "企业与代理机构", + "delivery": "平台记录存在付费订阅;效果与留存未独立验证", + "notes": "产品/业务样本,法律主体未核验。平台资料称2026-04创立,非工商确认日期。简介、定价、人数与利润可能由经营者填写;支付连接只为收入指标提供交叉信号。", + "cohort": "2026年创立(平台资料)", + "teamBasis": "本轮未将平台人数范围或经营者自述转换成精确员工数", + "price": "免费层+付费订阅;仅平台资料,不代表已核验当期官网价格", + "stage": "平台有支付数据,商业效果与成本待核验", + "sourceType": "平台支付连接指标+经营者可编辑简介", + "evidenceIds": [ + "MR-E-notfair", + "MR-METHOD" + ], + "revenueStatus": "platform", + "businessModel": "软件订阅", + "entityBasis": "产品或业务,法律主体未核验" + }, + { + "id": "MR013", + "name": "Adspirer", + "url": "https://trustmrr.com/startup/adspirer", + "cat": "C06", + "year": 2026, + "team": null, + "location": "美国", + "business": "通过对话管理广告投放", + "buyer": "企业与代理机构", + "delivery": "平台记录存在付费订阅;效果与留存未独立验证", + "notes": "产品/业务样本,法律主体未核验。平台资料称2026-01创立,非工商确认日期。简介、定价、人数与利润可能由经营者填写;支付连接只为收入指标提供交叉信号。", + "cohort": "2026年创立(平台资料)", + "teamBasis": "本轮未将平台人数范围或经营者自述转换成精确员工数", + "price": "免费层+分档年订阅;仅平台资料,不代表已核验当期官网价格", + "stage": "平台有支付数据,商业效果与成本待核验", + "sourceType": "平台支付连接指标+经营者可编辑简介", + "evidenceIds": [ + "MR-E-adspirer", + "MR-METHOD" + ], + "revenueStatus": "platform", + "businessModel": "软件订阅", + "entityBasis": "产品或业务,法律主体未核验" + }, + { + "id": "MR014", + "name": "PROSP", + "url": "https://trustmrr.com/startup/prosp", + "cat": "C06", + "year": 2025, + "team": null, + "location": "法国", + "business": "AI辅助LinkedIn外联", + "buyer": "销售团队与代理机构", + "delivery": "平台记录存在付费订阅;效果与留存未独立验证", + "notes": "产品/业务样本,法律主体未核验。平台资料称2025-08创立,非工商确认日期。简介、定价、人数与利润可能由经营者填写;支付连接只为收入指标提供交叉信号。", + "cohort": "2025年创立(平台资料)", + "teamBasis": "本轮未将平台人数范围或经营者自述转换成精确员工数", + "price": "分档月订阅;仅平台资料,不代表已核验当期官网价格", + "stage": "平台有支付数据,商业效果与成本待核验", + "sourceType": "平台支付连接指标+经营者可编辑简介", + "evidenceIds": [ + "MR-E-prosp", + "MR-METHOD" + ], + "revenueStatus": "platform", + "businessModel": "软件订阅", + "entityBasis": "产品或业务,法律主体未核验" + }, + { + "id": "MR015", + "name": "Rank Prompt", + "url": "https://trustmrr.com/startup/rank-prompt", + "cat": "C06", + "year": 2025, + "team": null, + "location": "美国", + "business": "监测与改善品牌在AI搜索中的可见度", + "buyer": "团队与代理机构", + "delivery": "平台记录存在付费订阅;效果与留存未独立验证", + "notes": "产品/业务样本,法律主体未核验。平台资料称2025-05创立,非工商确认日期。简介、定价、人数与利润可能由经营者填写;支付连接只为收入指标提供交叉信号。", + "cohort": "2025年创立(平台资料)", + "teamBasis": "本轮未将平台人数范围或经营者自述转换成精确员工数", + "price": "免费报告+分档订阅;仅平台资料,不代表已核验当期官网价格", + "stage": "平台有支付数据,商业效果与成本待核验", + "sourceType": "平台支付连接指标+经营者可编辑简介", + "evidenceIds": [ + "MR-E-rank-prompt", + "MR-METHOD" + ], + "revenueStatus": "platform", + "businessModel": "软件订阅", + "entityBasis": "产品或业务,法律主体未核验" + }, + { + "id": "MR016", + "name": "ChatSEO", + "url": "https://trustmrr.com/startup/chatseo", + "cat": "C06", + "year": 2025, + "team": null, + "location": "法国", + "business": "AI辅助SEO分析与优化建议", + "buyer": "网站经营者与SEO团队", + "delivery": "平台记录存在付费订阅;效果与留存未独立验证", + "notes": "产品/业务样本,法律主体未核验。平台资料称2025-11创立,非工商确认日期。简介、定价、人数与利润可能由经营者填写;支付连接只为收入指标提供交叉信号。", + "cohort": "2025年创立(平台资料)", + "teamBasis": "本轮未将平台人数范围或经营者自述转换成精确员工数", + "price": "免费体验+订阅,官网价格待核验;仅平台资料,不代表已核验当期官网价格", + "stage": "平台有支付数据,商业效果与成本待核验", + "sourceType": "平台支付连接指标+经营者可编辑简介", + "evidenceIds": [ + "MR-E-chatseo", + "MR-METHOD" + ], + "revenueStatus": "platform", + "businessModel": "软件订阅", + "entityBasis": "产品或业务,法律主体未核验" } ], "observations": [ @@ -28887,6 +29294,992 @@ "reason": "声明失效,见E100;不能进入均值或图中有效收入信号", "bound": "≈", "comparisonGroup": null + }, + { + "id": "MR-O-boothie-mrr", + "company": "MR001", + "name": "Boothie", + "kind": "平台MRR", + "value": 53101, + "unit": "USD", + "timing": "平台最后同步2026-10-29 06:15 PM;2026-10-30读取,时区未注明", + "evidence": "MR-E-boothie", + "scope": "产品/业务,法律主体未核验", + "selection": "platform", + "reason": "保留平台显示取整值;MRR不等于近30日收款,MRR×12不是已审计ARR。", + "bound": "=", + "comparisonGroup": "trustmrr-usd-mrr", + "metric": "mrr", + "observedAt": "2026-10-29", + "provider": "RevenueCat", + "connectionExpired": false, + "origin": "payment-platform" + }, + { + "id": "MR-O-boothie-revenue-30d", + "company": "MR001", + "name": "Boothie", + "kind": "平台近30日收入", + "value": 52955, + "unit": "USD", + "timing": "平台最后同步2026-10-29 06:15 PM;2026-10-30读取,时区未注明", + "evidence": "MR-E-boothie", + "scope": "产品/业务,法律主体未核验", + "selection": "platform", + "reason": "保留平台显示取整值;MRR不等于近30日收款,MRR×12不是已审计ARR。", + "bound": "=", + "comparisonGroup": "trustmrr-usd-revenue-30d", + "metric": "revenue-30d", + "observedAt": "2026-10-29", + "provider": "RevenueCat", + "connectionExpired": false, + "origin": "payment-platform" + }, + { + "id": "MR-O-white-glove-content-mrr", + "company": "MR002", + "name": "White Glove Content", + "kind": "平台MRR", + "value": 62423, + "unit": "USD", + "timing": "平台最后同步2026-10-29 06:08 PM;2026-10-30读取,时区未注明", + "evidence": "MR-E-white-glove-content", + "scope": "产品/业务,法律主体未核验", + "selection": "platform", + "reason": "保留平台显示取整值;MRR不等于近30日收款,MRR×12不是已审计ARR。", + "bound": "=", + "comparisonGroup": "trustmrr-usd-mrr", + "metric": "mrr", + "observedAt": "2026-10-29", + "provider": "Stripe", + "connectionExpired": false, + "origin": "payment-platform" + }, + { + "id": "MR-O-white-glove-content-revenue-30d", + "company": "MR002", + "name": "White Glove Content", + "kind": "平台近30日收入", + "value": 66934, + "unit": "USD", + "timing": "平台最后同步2026-10-29 06:08 PM;2026-10-30读取,时区未注明", + "evidence": "MR-E-white-glove-content", + "scope": "产品/业务,法律主体未核验", + "selection": "platform", + "reason": "保留平台显示取整值;MRR不等于近30日收款,MRR×12不是已审计ARR。", + "bound": "=", + "comparisonGroup": "trustmrr-usd-revenue-30d", + "metric": "revenue-30d", + "observedAt": "2026-10-29", + "provider": "Stripe", + "connectionExpired": false, + "origin": "payment-platform" + }, + { + "id": "MR-O-speel-co-mrr", + "company": "MR003", + "name": "Speel.co", + "kind": "平台MRR", + "value": 65381, + "unit": "USD", + "timing": "平台最后同步2026-10-29 02:31 PM;2026-10-30读取,时区未注明", + "evidence": "MR-E-speel-co", + "scope": "产品/业务,法律主体未核验", + "selection": "platform", + "reason": "保留平台显示取整值;MRR不等于近30日收款,MRR×12不是已审计ARR。", + "bound": "=", + "comparisonGroup": "trustmrr-usd-mrr", + "metric": "mrr", + "observedAt": "2026-10-29", + "provider": "Stripe", + "connectionExpired": false, + "origin": "payment-platform" + }, + { + "id": "MR-O-speel-co-revenue-30d", + "company": "MR003", + "name": "Speel.co", + "kind": "平台近30日收入", + "value": 1764, + "unit": "USD", + "timing": "平台最后同步2026-10-29 02:31 PM;2026-10-30读取,时区未注明", + "evidence": "MR-E-speel-co", + "scope": "产品/业务,法律主体未核验", + "selection": "platform", + "reason": "保留平台显示取整值;MRR不等于近30日收款,MRR×12不是已审计ARR。", + "bound": "=", + "comparisonGroup": "trustmrr-usd-revenue-30d", + "metric": "revenue-30d", + "observedAt": "2026-10-29", + "provider": "Stripe", + "connectionExpired": false, + "origin": "payment-platform" + }, + { + "id": "MR-O-laper-mrr", + "company": "MR004", + "name": "Laper", + "kind": "平台MRR", + "value": 49069, + "unit": "USD", + "timing": "平台最后同步2026-10-29 02:39 PM;2026-10-30读取,时区未注明", + "evidence": "MR-E-laper", + "scope": "产品/业务,法律主体未核验", + "selection": "platform", + "reason": "保留平台显示取整值;MRR不等于近30日收款,MRR×12不是已审计ARR。", + "bound": "=", + "comparisonGroup": "trustmrr-usd-mrr", + "metric": "mrr", + "observedAt": "2026-10-29", + "provider": "Stripe", + "connectionExpired": false, + "origin": "payment-platform" + }, + { + "id": "MR-O-laper-revenue-30d", + "company": "MR004", + "name": "Laper", + "kind": "平台近30日收入", + "value": 52365, + "unit": "USD", + "timing": "平台最后同步2026-10-29 02:39 PM;2026-10-30读取,时区未注明", + "evidence": "MR-E-laper", + "scope": "产品/业务,法律主体未核验", + "selection": "platform", + "reason": "保留平台显示取整值;MRR不等于近30日收款,MRR×12不是已审计ARR。", + "bound": "=", + "comparisonGroup": "trustmrr-usd-revenue-30d", + "metric": "revenue-30d", + "observedAt": "2026-10-29", + "provider": "Stripe", + "connectionExpired": false, + "origin": "payment-platform" + }, + { + "id": "MR-O-getebook-ai-mrr", + "company": "MR005", + "name": "GETebook.ai", + "kind": "平台MRR", + "value": 10629, + "unit": "USD", + "timing": "平台最后同步2026-10-29 03:25 PM;2026-10-30读取,时区未注明", + "evidence": "MR-E-getebook-ai", + "scope": "产品/业务,法律主体未核验", + "selection": "platform", + "reason": "保留平台显示取整值;MRR不等于近30日收款,MRR×12不是已审计ARR。", + "bound": "=", + "comparisonGroup": "trustmrr-usd-mrr", + "metric": "mrr", + "observedAt": "2026-10-29", + "provider": "Stripe", + "connectionExpired": false, + "origin": "payment-platform" + }, + { + "id": "MR-O-getebook-ai-revenue-30d", + "company": "MR005", + "name": "GETebook.ai", + "kind": "平台近30日收入", + "value": 37341, + "unit": "USD", + "timing": "平台最后同步2026-10-29 03:25 PM;2026-10-30读取,时区未注明", + "evidence": "MR-E-getebook-ai", + "scope": "产品/业务,法律主体未核验", + "selection": "platform", + "reason": "保留平台显示取整值;MRR不等于近30日收款,MRR×12不是已审计ARR。", + "bound": "=", + "comparisonGroup": "trustmrr-usd-revenue-30d", + "metric": "revenue-30d", + "observedAt": "2026-10-29", + "provider": "Stripe", + "connectionExpired": false, + "origin": "payment-platform" + }, + { + "id": "MR-O-trackai-mrr", + "company": "MR006", + "name": "TrackAI", + "kind": "平台MRR", + "value": 19437, + "unit": "USD", + "timing": "平台最后同步2026-10-27;2026-10-30读取,时区未注明", + "evidence": "MR-E-trackai", + "scope": "产品/业务,法律主体未核验", + "selection": "platform", + "reason": "保留平台显示取整值;MRR不等于近30日收款,MRR×12不是已审计ARR。", + "bound": "=", + "comparisonGroup": "trustmrr-usd-mrr", + "metric": "mrr", + "observedAt": "2026-10-27", + "provider": "RevenueCat", + "connectionExpired": true, + "origin": "payment-platform" + }, + { + "id": "MR-O-trackai-revenue-30d", + "company": "MR006", + "name": "TrackAI", + "kind": "平台近30日收入", + "value": 19541, + "unit": "USD", + "timing": "平台最后同步2026-10-27;2026-10-30读取,时区未注明", + "evidence": "MR-E-trackai", + "scope": "产品/业务,法律主体未核验", + "selection": "platform", + "reason": "保留平台显示取整值;MRR不等于近30日收款,MRR×12不是已审计ARR。", + "bound": "=", + "comparisonGroup": "trustmrr-usd-revenue-30d", + "metric": "revenue-30d", + "observedAt": "2026-10-27", + "provider": "RevenueCat", + "connectionExpired": true, + "origin": "payment-platform" + }, + { + "id": "MR-O-nutria-mrr", + "company": "MR007", + "name": "nutrIA(Nutria Inc)", + "kind": "平台MRR", + "value": 18198, + "unit": "USD", + "timing": "平台最后同步2026-10-29 03:35 PM;2026-10-30读取,时区未注明", + "evidence": "MR-E-nutria", + "scope": "产品/业务,法律主体未核验", + "selection": "platform", + "reason": "保留平台显示取整值;MRR不等于近30日收款,MRR×12不是已审计ARR。", + "bound": "=", + "comparisonGroup": "trustmrr-usd-mrr", + "metric": "mrr", + "observedAt": "2026-10-29", + "provider": "RevenueCat", + "connectionExpired": false, + "origin": "payment-platform" + }, + { + "id": "MR-O-nutria-revenue-30d", + "company": "MR007", + "name": "nutrIA(Nutria Inc)", + "kind": "平台近30日收入", + "value": 37377, + "unit": "USD", + "timing": "平台最后同步2026-10-29 03:35 PM;2026-10-30读取,时区未注明", + "evidence": "MR-E-nutria", + "scope": "产品/业务,法律主体未核验", + "selection": "platform", + "reason": "保留平台显示取整值;MRR不等于近30日收款,MRR×12不是已审计ARR。", + "bound": "=", + "comparisonGroup": "trustmrr-usd-revenue-30d", + "metric": "revenue-30d", + "observedAt": "2026-10-29", + "provider": "RevenueCat", + "connectionExpired": false, + "origin": "payment-platform" + }, + { + "id": "MR-O-nutria-9e3eaa-mrr", + "company": "MR008", + "name": "Calyra(平台名Nutria 9e3eaa)", + "kind": "平台MRR", + "value": 46562, + "unit": "USD", + "timing": "平台最后同步2026-10-29 06:31 PM;2026-10-30读取,时区未注明", + "evidence": "MR-E-nutria-9e3eaa", + "scope": "产品/业务,法律主体未核验", + "selection": "platform", + "reason": "保留平台显示取整值;MRR不等于近30日收款,MRR×12不是已审计ARR。", + "bound": "=", + "comparisonGroup": "trustmrr-usd-mrr", + "metric": "mrr", + "observedAt": "2026-10-29", + "provider": "RevenueCat", + "connectionExpired": false, + "origin": "payment-platform" + }, + { + "id": "MR-O-nutria-9e3eaa-revenue-30d", + "company": "MR008", + "name": "Calyra(平台名Nutria 9e3eaa)", + "kind": "平台近30日收入", + "value": 74339, + "unit": "USD", + "timing": "平台最后同步2026-10-29 06:31 PM;2026-10-30读取,时区未注明", + "evidence": "MR-E-nutria-9e3eaa", + "scope": "产品/业务,法律主体未核验", + "selection": "platform", + "reason": "保留平台显示取整值;MRR不等于近30日收款,MRR×12不是已审计ARR。", + "bound": "=", + "comparisonGroup": "trustmrr-usd-revenue-30d", + "metric": "revenue-30d", + "observedAt": "2026-10-29", + "provider": "RevenueCat", + "connectionExpired": false, + "origin": "payment-platform" + }, + { + "id": "MR-O-verbi-mrr", + "company": "MR009", + "name": "Verbi", + "kind": "平台MRR", + "value": 22066, + "unit": "USD", + "timing": "平台最后同步2026-10-29 05:48 PM;2026-10-30读取,时区未注明", + "evidence": "MR-E-verbi", + "scope": "产品/业务,法律主体未核验", + "selection": "platform", + "reason": "保留平台显示取整值;MRR不等于近30日收款,MRR×12不是已审计ARR。", + "bound": "=", + "comparisonGroup": "trustmrr-usd-mrr", + "metric": "mrr", + "observedAt": "2026-10-29", + "provider": "RevenueCat", + "connectionExpired": false, + "origin": "payment-platform" + }, + { + "id": "MR-O-verbi-revenue-30d", + "company": "MR009", + "name": "Verbi", + "kind": "平台近30日收入", + "value": 32324, + "unit": "USD", + "timing": "平台最后同步2026-10-29 05:48 PM;2026-10-30读取,时区未注明", + "evidence": "MR-E-verbi", + "scope": "产品/业务,法律主体未核验", + "selection": "platform", + "reason": "保留平台显示取整值;MRR不等于近30日收款,MRR×12不是已审计ARR。", + "bound": "=", + "comparisonGroup": "trustmrr-usd-revenue-30d", + "metric": "revenue-30d", + "observedAt": "2026-10-29", + "provider": "RevenueCat", + "connectionExpired": false, + "origin": "payment-platform" + }, + { + "id": "MR-O-abmaxx-mrr", + "company": "MR010", + "name": "AbMaxx", + "kind": "平台MRR", + "value": 20483, + "unit": "USD", + "timing": "平台最后同步2026-10-29 04:47 PM;2026-10-30读取,时区未注明", + "evidence": "MR-E-abmaxx", + "scope": "产品/业务,法律主体未核验", + "selection": "platform", + "reason": "保留平台显示取整值;MRR不等于近30日收款,MRR×12不是已审计ARR。", + "bound": "=", + "comparisonGroup": "trustmrr-usd-mrr", + "metric": "mrr", + "observedAt": "2026-10-29", + "provider": "RevenueCat", + "connectionExpired": false, + "origin": "payment-platform" + }, + { + "id": "MR-O-abmaxx-revenue-30d", + "company": "MR010", + "name": "AbMaxx", + "kind": "平台近30日收入", + "value": 42064, + "unit": "USD", + "timing": "平台最后同步2026-10-29 04:47 PM;2026-10-30读取,时区未注明", + "evidence": "MR-E-abmaxx", + "scope": "产品/业务,法律主体未核验", + "selection": "platform", + "reason": "保留平台显示取整值;MRR不等于近30日收款,MRR×12不是已审计ARR。", + "bound": "=", + "comparisonGroup": "trustmrr-usd-revenue-30d", + "metric": "revenue-30d", + "observedAt": "2026-10-29", + "provider": "RevenueCat", + "connectionExpired": false, + "origin": "payment-platform" + }, + { + "id": "MR-O-traxy-ai-mrr", + "company": "MR011", + "name": "traxy.ai", + "kind": "平台MRR", + "value": 52438, + "unit": "USD", + "timing": "平台最后同步2026-10-29 06:14 PM;2026-10-30读取,时区未注明", + "evidence": "MR-E-traxy-ai", + "scope": "产品/业务,法律主体未核验", + "selection": "platform", + "reason": "保留平台显示取整值;MRR不等于近30日收款,MRR×12不是已审计ARR。", + "bound": "=", + "comparisonGroup": "trustmrr-usd-mrr", + "metric": "mrr", + "observedAt": "2026-10-29", + "provider": "Stripe", + "connectionExpired": false, + "origin": "payment-platform" + }, + { + "id": "MR-O-traxy-ai-revenue-30d", + "company": "MR011", + "name": "traxy.ai", + "kind": "平台近30日收入", + "value": 57174, + "unit": "USD", + "timing": "平台最后同步2026-10-29 06:14 PM;2026-10-30读取,时区未注明", + "evidence": "MR-E-traxy-ai", + "scope": "产品/业务,法律主体未核验", + "selection": "platform", + "reason": "保留平台显示取整值;MRR不等于近30日收款,MRR×12不是已审计ARR。", + "bound": "=", + "comparisonGroup": "trustmrr-usd-revenue-30d", + "metric": "revenue-30d", + "observedAt": "2026-10-29", + "provider": "Stripe", + "connectionExpired": false, + "origin": "payment-platform" + }, + { + "id": "MR-O-notfair-mrr", + "company": "MR012", + "name": "NotFair", + "kind": "平台MRR", + "value": 13376, + "unit": "USD", + "timing": "平台最后同步2026-10-29 04:24 PM;2026-10-30读取,时区未注明", + "evidence": "MR-E-notfair", + "scope": "产品/业务,法律主体未核验", + "selection": "platform", + "reason": "保留平台显示取整值;MRR不等于近30日收款,MRR×12不是已审计ARR。", + "bound": "=", + "comparisonGroup": "trustmrr-usd-mrr", + "metric": "mrr", + "observedAt": "2026-10-29", + "provider": "Stripe", + "connectionExpired": false, + "origin": "payment-platform" + }, + { + "id": "MR-O-notfair-revenue-30d", + "company": "MR012", + "name": "NotFair", + "kind": "平台近30日收入", + "value": 16441, + "unit": "USD", + "timing": "平台最后同步2026-10-29 04:24 PM;2026-10-30读取,时区未注明", + "evidence": "MR-E-notfair", + "scope": "产品/业务,法律主体未核验", + "selection": "platform", + "reason": "保留平台显示取整值;MRR不等于近30日收款,MRR×12不是已审计ARR。", + "bound": "=", + "comparisonGroup": "trustmrr-usd-revenue-30d", + "metric": "revenue-30d", + "observedAt": "2026-10-29", + "provider": "Stripe", + "connectionExpired": false, + "origin": "payment-platform" + }, + { + "id": "MR-O-adspirer-mrr", + "company": "MR013", + "name": "Adspirer", + "kind": "平台MRR", + "value": 54684, + "unit": "USD", + "timing": "平台最后同步2026-06-29;2026-10-30读取,时区未注明", + "evidence": "MR-E-adspirer", + "scope": "产品/业务,法律主体未核验", + "selection": "platform", + "reason": "保留平台显示取整值;MRR不等于近30日收款,MRR×12不是已审计ARR。", + "bound": "=", + "comparisonGroup": "trustmrr-usd-mrr", + "metric": "mrr", + "observedAt": "2026-06-29", + "provider": "Stripe", + "connectionExpired": true, + "origin": "payment-platform" + }, + { + "id": "MR-O-adspirer-revenue-30d", + "company": "MR013", + "name": "Adspirer", + "kind": "平台近30日收入", + "value": 70229, + "unit": "USD", + "timing": "平台最后同步2026-06-29;2026-10-30读取,时区未注明", + "evidence": "MR-E-adspirer", + "scope": "产品/业务,法律主体未核验", + "selection": "platform", + "reason": "保留平台显示取整值;MRR不等于近30日收款,MRR×12不是已审计ARR。", + "bound": "=", + "comparisonGroup": "trustmrr-usd-revenue-30d", + "metric": "revenue-30d", + "observedAt": "2026-06-29", + "provider": "Stripe", + "connectionExpired": true, + "origin": "payment-platform" + }, + { + "id": "MR-O-prosp-mrr", + "company": "MR014", + "name": "PROSP", + "kind": "平台MRR", + "value": 128005, + "unit": "USD", + "timing": "平台最后同步2026-02-05;2026-10-30读取,时区未注明", + "evidence": "MR-E-prosp", + "scope": "产品/业务,法律主体未核验", + "selection": "platform", + "reason": "保留平台显示取整值;MRR不等于近30日收款,MRR×12不是已审计ARR。", + "bound": "=", + "comparisonGroup": "trustmrr-usd-mrr", + "metric": "mrr", + "observedAt": "2026-02-05", + "provider": "Stripe", + "connectionExpired": true, + "origin": "payment-platform" + }, + { + "id": "MR-O-prosp-revenue-30d", + "company": "MR014", + "name": "PROSP", + "kind": "平台近30日收入", + "value": 98483, + "unit": "USD", + "timing": "平台最后同步2026-02-05;2026-10-30读取,时区未注明", + "evidence": "MR-E-prosp", + "scope": "产品/业务,法律主体未核验", + "selection": "platform", + "reason": "保留平台显示取整值;MRR不等于近30日收款,MRR×12不是已审计ARR。", + "bound": "=", + "comparisonGroup": "trustmrr-usd-revenue-30d", + "metric": "revenue-30d", + "observedAt": "2026-02-05", + "provider": "Stripe", + "connectionExpired": true, + "origin": "payment-platform" + }, + { + "id": "MR-O-rank-prompt-mrr", + "company": "MR015", + "name": "Rank Prompt", + "kind": "平台MRR", + "value": 40112, + "unit": "USD", + "timing": "平台最后同步2026-10-29 04:33 PM;2026-10-30读取,时区未注明", + "evidence": "MR-E-rank-prompt", + "scope": "产品/业务,法律主体未核验", + "selection": "platform", + "reason": "保留平台显示取整值;MRR不等于近30日收款,MRR×12不是已审计ARR。", + "bound": "=", + "comparisonGroup": "trustmrr-usd-mrr", + "metric": "mrr", + "observedAt": "2026-10-29", + "provider": "Stripe", + "connectionExpired": false, + "origin": "payment-platform" + }, + { + "id": "MR-O-rank-prompt-revenue-30d", + "company": "MR015", + "name": "Rank Prompt", + "kind": "平台近30日收入", + "value": 52297, + "unit": "USD", + "timing": "平台最后同步2026-10-29 04:33 PM;2026-10-30读取,时区未注明", + "evidence": "MR-E-rank-prompt", + "scope": "产品/业务,法律主体未核验", + "selection": "platform", + "reason": "保留平台显示取整值;MRR不等于近30日收款,MRR×12不是已审计ARR。", + "bound": "=", + "comparisonGroup": "trustmrr-usd-revenue-30d", + "metric": "revenue-30d", + "observedAt": "2026-10-29", + "provider": "Stripe", + "connectionExpired": false, + "origin": "payment-platform" + }, + { + "id": "MR-O-chatseo-mrr", + "company": "MR016", + "name": "ChatSEO", + "kind": "平台MRR", + "value": 33334, + "unit": "USD", + "timing": "平台最后同步2026-10-29 02:39 PM;2026-10-30读取,时区未注明", + "evidence": "MR-E-chatseo", + "scope": "产品/业务,法律主体未核验", + "selection": "platform", + "reason": "保留平台显示取整值;MRR不等于近30日收款,MRR×12不是已审计ARR。", + "bound": "=", + "comparisonGroup": "trustmrr-usd-mrr", + "metric": "mrr", + "observedAt": "2026-10-29", + "provider": "Stripe", + "connectionExpired": false, + "origin": "payment-platform" + }, + { + "id": "MR-O-chatseo-revenue-30d", + "company": "MR016", + "name": "ChatSEO", + "kind": "平台近30日收入", + "value": 48852, + "unit": "USD", + "timing": "平台最后同步2026-10-29 02:39 PM;2026-10-30读取,时区未注明", + "evidence": "MR-E-chatseo", + "scope": "产品/业务,法律主体未核验", + "selection": "platform", + "reason": "保留平台显示取整值;MRR不等于近30日收款,MRR×12不是已审计ARR。", + "bound": "=", + "comparisonGroup": "trustmrr-usd-revenue-30d", + "metric": "revenue-30d", + "observedAt": "2026-10-29", + "provider": "Stripe", + "connectionExpired": false, + "origin": "payment-platform" + }, + { + "id": "MR-O-superfruits-mrr", + "company": "AI016", + "name": "Gojiberry AI", + "kind": "平台MRR", + "value": 424368, + "unit": "USD", + "timing": "平台最后同步2026-08-14;2026-10-30读取,时区未注明", + "evidence": "MR-E-superfruits", + "scope": "产品/业务,法律主体未核验", + "selection": "platform", + "reason": "保留平台显示取整值;MRR不等于近30日收款,MRR×12不是已审计ARR。", + "bound": "=", + "comparisonGroup": "trustmrr-usd-mrr", + "metric": "mrr", + "observedAt": "2026-08-14", + "provider": "Stripe", + "connectionExpired": true, + "origin": "payment-platform" + }, + { + "id": "MR-O-superfruits-revenue-30d", + "company": "AI016", + "name": "Gojiberry AI", + "kind": "平台近30日收入", + "value": 407199, + "unit": "USD", + "timing": "平台最后同步2026-08-14;2026-10-30读取,时区未注明", + "evidence": "MR-E-superfruits", + "scope": "产品/业务,法律主体未核验", + "selection": "platform", + "reason": "保留平台显示取整值;MRR不等于近30日收款,MRR×12不是已审计ARR。", + "bound": "=", + "comparisonGroup": "trustmrr-usd-revenue-30d", + "metric": "revenue-30d", + "observedAt": "2026-08-14", + "provider": "Stripe", + "connectionExpired": true, + "origin": "payment-platform" + }, + { + "id": "MR-O-boothie-subscriptions", + "company": "MR001", + "name": "Boothie", + "kind": "平台活跃订阅数", + "value": 2240, + "unit": "份订阅", + "timing": "平台最后同步2026-10-29 06:15 PM;时区未注明", + "evidence": "MR-E-boothie", + "scope": "产品/业务,未去重客户或法律主体", + "selection": "adoption", + "reason": "平台订阅数不等于独立付费客户数;不据此直接计算客户ARPU。", + "bound": "=", + "comparisonGroup": null, + "observedAt": "2026-10-29", + "provider": "RevenueCat", + "origin": "payment-platform" + }, + { + "id": "MR-O-white-glove-content-subscriptions", + "company": "MR002", + "name": "White Glove Content", + "kind": "平台活跃订阅数", + "value": 516, + "unit": "份订阅", + "timing": "平台最后同步2026-10-29 06:08 PM;时区未注明", + "evidence": "MR-E-white-glove-content", + "scope": "产品/业务,未去重客户或法律主体", + "selection": "adoption", + "reason": "平台订阅数不等于独立付费客户数;不据此直接计算客户ARPU。", + "bound": "=", + "comparisonGroup": null, + "observedAt": "2026-10-29", + "provider": "Stripe", + "origin": "payment-platform" + }, + { + "id": "MR-O-speel-co-subscriptions", + "company": "MR003", + "name": "Speel.co", + "kind": "平台活跃订阅数", + "value": 1099, + "unit": "份订阅", + "timing": "平台最后同步2026-10-29 02:31 PM;时区未注明", + "evidence": "MR-E-speel-co", + "scope": "产品/业务,未去重客户或法律主体", + "selection": "adoption", + "reason": "平台订阅数不等于独立付费客户数;不据此直接计算客户ARPU。", + "bound": "=", + "comparisonGroup": null, + "observedAt": "2026-10-29", + "provider": "Stripe", + "origin": "payment-platform" + }, + { + "id": "MR-O-laper-subscriptions", + "company": "MR004", + "name": "Laper", + "kind": "平台活跃订阅数", + "value": 1510, + "unit": "份订阅", + "timing": "平台最后同步2026-10-29 02:39 PM;时区未注明", + "evidence": "MR-E-laper", + "scope": "产品/业务,未去重客户或法律主体", + "selection": "adoption", + "reason": "平台订阅数不等于独立付费客户数;不据此直接计算客户ARPU。", + "bound": "=", + "comparisonGroup": null, + "observedAt": "2026-10-29", + "provider": "Stripe", + "origin": "payment-platform" + }, + { + "id": "MR-O-getebook-ai-subscriptions", + "company": "MR005", + "name": "GETebook.ai", + "kind": "平台活跃订阅数", + "value": 223, + "unit": "份订阅", + "timing": "平台最后同步2026-10-29 03:25 PM;时区未注明", + "evidence": "MR-E-getebook-ai", + "scope": "产品/业务,未去重客户或法律主体", + "selection": "adoption", + "reason": "平台订阅数不等于独立付费客户数;不据此直接计算客户ARPU。", + "bound": "=", + "comparisonGroup": null, + "observedAt": "2026-10-29", + "provider": "Stripe", + "origin": "payment-platform" + }, + { + "id": "MR-O-trackai-subscriptions", + "company": "MR006", + "name": "TrackAI", + "kind": "平台活跃订阅数", + "value": 5160, + "unit": "份订阅", + "timing": "平台最后同步2026-10-27;时区未注明", + "evidence": "MR-E-trackai", + "scope": "产品/业务,未去重客户或法律主体", + "selection": "adoption", + "reason": "平台订阅数不等于独立付费客户数;不据此直接计算客户ARPU。", + "bound": "=", + "comparisonGroup": null, + "observedAt": "2026-10-27", + "provider": "RevenueCat", + "origin": "payment-platform" + }, + { + "id": "MR-O-nutria-subscriptions", + "company": "MR007", + "name": "nutrIA(Nutria Inc)", + "kind": "平台活跃订阅数", + "value": 5896, + "unit": "份订阅", + "timing": "平台最后同步2026-10-29 03:35 PM;时区未注明", + "evidence": "MR-E-nutria", + "scope": "产品/业务,未去重客户或法律主体", + "selection": "adoption", + "reason": "平台订阅数不等于独立付费客户数;不据此直接计算客户ARPU。", + "bound": "=", + "comparisonGroup": null, + "observedAt": "2026-10-29", + "provider": "RevenueCat", + "origin": "payment-platform" + }, + { + "id": "MR-O-nutria-9e3eaa-subscriptions", + "company": "MR008", + "name": "Calyra(平台名Nutria 9e3eaa)", + "kind": "平台活跃订阅数", + "value": 15352, + "unit": "份订阅", + "timing": "平台最后同步2026-10-29 06:31 PM;时区未注明", + "evidence": "MR-E-nutria-9e3eaa", + "scope": "产品/业务,未去重客户或法律主体", + "selection": "adoption", + "reason": "平台订阅数不等于独立付费客户数;不据此直接计算客户ARPU。", + "bound": "=", + "comparisonGroup": null, + "observedAt": "2026-10-29", + "provider": "RevenueCat", + "origin": "payment-platform" + }, + { + "id": "MR-O-verbi-subscriptions", + "company": "MR009", + "name": "Verbi", + "kind": "平台活跃订阅数", + "value": 4796, + "unit": "份订阅", + "timing": "平台最后同步2026-10-29 05:48 PM;时区未注明", + "evidence": "MR-E-verbi", + "scope": "产品/业务,未去重客户或法律主体", + "selection": "adoption", + "reason": "平台订阅数不等于独立付费客户数;不据此直接计算客户ARPU。", + "bound": "=", + "comparisonGroup": null, + "observedAt": "2026-10-29", + "provider": "RevenueCat", + "origin": "payment-platform" + }, + { + "id": "MR-O-abmaxx-subscriptions", + "company": "MR010", + "name": "AbMaxx", + "kind": "平台活跃订阅数", + "value": 5634, + "unit": "份订阅", + "timing": "平台最后同步2026-10-29 04:47 PM;时区未注明", + "evidence": "MR-E-abmaxx", + "scope": "产品/业务,未去重客户或法律主体", + "selection": "adoption", + "reason": "平台订阅数不等于独立付费客户数;不据此直接计算客户ARPU。", + "bound": "=", + "comparisonGroup": null, + "observedAt": "2026-10-29", + "provider": "RevenueCat", + "origin": "payment-platform" + }, + { + "id": "MR-O-traxy-ai-subscriptions", + "company": "MR011", + "name": "traxy.ai", + "kind": "平台活跃订阅数", + "value": 242, + "unit": "份订阅", + "timing": "平台最后同步2026-10-29 06:14 PM;时区未注明", + "evidence": "MR-E-traxy-ai", + "scope": "产品/业务,未去重客户或法律主体", + "selection": "adoption", + "reason": "平台订阅数不等于独立付费客户数;不据此直接计算客户ARPU。", + "bound": "=", + "comparisonGroup": null, + "observedAt": "2026-10-29", + "provider": "Stripe", + "origin": "payment-platform" + }, + { + "id": "MR-O-notfair-subscriptions", + "company": "MR012", + "name": "NotFair", + "kind": "平台活跃订阅数", + "value": 113, + "unit": "份订阅", + "timing": "平台最后同步2026-10-29 04:24 PM;时区未注明", + "evidence": "MR-E-notfair", + "scope": "产品/业务,未去重客户或法律主体", + "selection": "adoption", + "reason": "平台订阅数不等于独立付费客户数;不据此直接计算客户ARPU。", + "bound": "=", + "comparisonGroup": null, + "observedAt": "2026-10-29", + "provider": "Stripe", + "origin": "payment-platform" + }, + { + "id": "MR-O-adspirer-subscriptions", + "company": "MR013", + "name": "Adspirer", + "kind": "平台活跃订阅数", + "value": 742, + "unit": "份订阅", + "timing": "平台最后同步2026-06-29;时区未注明", + "evidence": "MR-E-adspirer", + "scope": "产品/业务,未去重客户或法律主体", + "selection": "adoption", + "reason": "平台订阅数不等于独立付费客户数;不据此直接计算客户ARPU。", + "bound": "=", + "comparisonGroup": null, + "observedAt": "2026-06-29", + "provider": "Stripe", + "origin": "payment-platform" + }, + { + "id": "MR-O-prosp-subscriptions", + "company": "MR014", + "name": "PROSP", + "kind": "平台活跃订阅数", + "value": 1108, + "unit": "份订阅", + "timing": "平台最后同步2026-02-05;时区未注明", + "evidence": "MR-E-prosp", + "scope": "产品/业务,未去重客户或法律主体", + "selection": "adoption", + "reason": "平台订阅数不等于独立付费客户数;不据此直接计算客户ARPU。", + "bound": "=", + "comparisonGroup": null, + "observedAt": "2026-02-05", + "provider": "Stripe", + "origin": "payment-platform" + }, + { + "id": "MR-O-rank-prompt-subscriptions", + "company": "MR015", + "name": "Rank Prompt", + "kind": "平台活跃订阅数", + "value": 213, + "unit": "份订阅", + "timing": "平台最后同步2026-10-29 04:33 PM;时区未注明", + "evidence": "MR-E-rank-prompt", + "scope": "产品/业务,未去重客户或法律主体", + "selection": "adoption", + "reason": "平台订阅数不等于独立付费客户数;不据此直接计算客户ARPU。", + "bound": "=", + "comparisonGroup": null, + "observedAt": "2026-10-29", + "provider": "Stripe", + "origin": "payment-platform" + }, + { + "id": "MR-O-chatseo-subscriptions", + "company": "MR016", + "name": "ChatSEO", + "kind": "平台活跃订阅数", + "value": 750, + "unit": "份订阅", + "timing": "平台最后同步2026-10-29 02:39 PM;时区未注明", + "evidence": "MR-E-chatseo", + "scope": "产品/业务,未去重客户或法律主体", + "selection": "adoption", + "reason": "平台订阅数不等于独立付费客户数;不据此直接计算客户ARPU。", + "bound": "=", + "comparisonGroup": null, + "observedAt": "2026-10-29", + "provider": "Stripe", + "origin": "payment-platform" + }, + { + "id": "MR-O-superfruits-subscriptions", + "company": "AI016", + "name": "Gojiberry AI", + "kind": "平台活跃订阅数", + "value": 3944, + "unit": "份订阅", + "timing": "平台最后同步2026-08-14;时区未注明", + "evidence": "MR-E-superfruits", + "scope": "产品/业务,未去重客户或法律主体", + "selection": "adoption", + "reason": "平台订阅数不等于独立付费客户数;不据此直接计算客户ARPU。", + "bound": "=", + "comparisonGroup": null, + "observedAt": "2026-08-14", + "provider": "Stripe", + "origin": "payment-platform" } ], "evidence": [ @@ -40274,6 +41667,226 @@ "kind": "候选发现范围", "summary": "以非官方镜像中2025—2026八个YC批次为候选池,再读取对应官方公司页面的成立年份、团队人数与业务字段。", "limitation": "只覆盖该候选池公开页面,不能称全球全部AI公司;AI关键词命中与业务规则初分不是独立验证。" + }, + { + "id": "MR-E-boothie", + "companyId": "MR001", + "title": "Boothie · TrustMRR公开资料", + "url": "https://trustmrr.com/startup/boothie", + "publishedAt": null, + "accessedAt": "2026-10-30", + "kind": "支付平台连接数据", + "summary": "页面MRR 53,101美元、近30日收入 52,955美元;最后同步日期2026-10-29,来源标记为RevenueCat。 平台另显示2,240份活跃订阅。", + "limitation": "显示值为平台重建指标,非财务审计;同步时间的时区未注明。成立年份、简介和收费信息可能由经营者填写。产品不必对应独立法律实体。" + }, + { + "id": "MR-E-white-glove-content", + "companyId": "MR002", + "title": "White Glove Content · TrustMRR公开资料", + "url": "https://trustmrr.com/startup/white-glove-content", + "publishedAt": null, + "accessedAt": "2026-10-30", + "kind": "支付平台连接数据", + "summary": "页面MRR 62,423美元、近30日收入 66,934美元;最后同步日期2026-10-29,来源标记为Stripe。 平台另显示516份活跃订阅。", + "limitation": "显示值为平台重建指标,非财务审计;同步时间的时区未注明。成立年份、简介和收费信息可能由经营者填写。产品不必对应独立法律实体。" + }, + { + "id": "MR-E-speel-co", + "companyId": "MR003", + "title": "Speel.co · TrustMRR公开资料", + "url": "https://trustmrr.com/startup/speel-co", + "publishedAt": null, + "accessedAt": "2026-10-30", + "kind": "支付平台连接数据", + "summary": "页面MRR 65,381美元、近30日收入 1,764美元;最后同步日期2026-10-29,来源标记为Stripe。 平台另显示1,099份活跃订阅。", + "limitation": "显示值为平台重建指标,非财务审计;同步时间的时区未注明。成立年份、简介和收费信息可能由经营者填写。产品不必对应独立法律实体。" + }, + { + "id": "MR-E-laper", + "companyId": "MR004", + "title": "Laper · TrustMRR公开资料", + "url": "https://trustmrr.com/startup/laper", + "publishedAt": null, + "accessedAt": "2026-10-30", + "kind": "支付平台连接数据", + "summary": "页面MRR 49,069美元、近30日收入 52,365美元;最后同步日期2026-10-29,来源标记为Stripe。 平台另显示1,510份活跃订阅。", + "limitation": "显示值为平台重建指标,非财务审计;同步时间的时区未注明。成立年份、简介和收费信息可能由经营者填写。产品不必对应独立法律实体。" + }, + { + "id": "MR-E-getebook-ai", + "companyId": "MR005", + "title": "GETebook.ai · TrustMRR公开资料", + "url": "https://trustmrr.com/startup/getebook-ai", + "publishedAt": null, + "accessedAt": "2026-10-30", + "kind": "支付平台连接数据", + "summary": "页面MRR 10,629美元、近30日收入 37,341美元;最后同步日期2026-10-29,来源标记为Stripe。 平台另显示223份活跃订阅。", + "limitation": "显示值为平台重建指标,非财务审计;同步时间的时区未注明。成立年份、简介和收费信息可能由经营者填写。产品不必对应独立法律实体。" + }, + { + "id": "MR-E-trackai", + "companyId": "MR006", + "title": "TrackAI · TrustMRR公开资料", + "url": "https://trustmrr.com/startup/trackai", + "publishedAt": null, + "accessedAt": "2026-10-30", + "kind": "支付平台连接数据", + "summary": "页面MRR 19,437美元、近30日收入 19,541美元;最后同步日期2026-10-27,来源标记为RevenueCat。页面提示连接已过期。 平台另显示5,160份活跃订阅。", + "limitation": "显示值为平台重建指标,非财务审计;同步时间的时区未注明。成立年份、简介和收费信息可能由经营者填写。产品不必对应独立法律实体。" + }, + { + "id": "MR-E-nutria", + "companyId": "MR007", + "title": "nutrIA(Nutria Inc) · TrustMRR公开资料", + "url": "https://trustmrr.com/startup/nutria", + "publishedAt": null, + "accessedAt": "2026-10-30", + "kind": "支付平台连接数据", + "summary": "页面MRR 18,198美元、近30日收入 37,377美元;最后同步日期2026-10-29,来源标记为RevenueCat。 平台另显示5,896份活跃订阅。", + "limitation": "显示值为平台重建指标,非财务审计;同步时间的时区未注明。成立年份、简介和收费信息可能由经营者填写。产品不必对应独立法律实体。" + }, + { + "id": "MR-E-nutria-9e3eaa", + "companyId": "MR008", + "title": "Calyra(平台名Nutria 9e3eaa) · TrustMRR公开资料", + "url": "https://trustmrr.com/startup/nutria-9e3eaa", + "publishedAt": null, + "accessedAt": "2026-10-30", + "kind": "支付平台连接数据", + "summary": "页面MRR 46,562美元、近30日收入 74,339美元;最后同步日期2026-10-29,来源标记为RevenueCat。 平台另显示15,352份活跃订阅。", + "limitation": "显示值为平台重建指标,非财务审计;同步时间的时区未注明。成立年份、简介和收费信息可能由经营者填写。产品不必对应独立法律实体。" + }, + { + "id": "MR-E-verbi", + "companyId": "MR009", + "title": "Verbi · TrustMRR公开资料", + "url": "https://trustmrr.com/startup/verbi", + "publishedAt": null, + "accessedAt": "2026-10-30", + "kind": "支付平台连接数据", + "summary": "页面MRR 22,066美元、近30日收入 32,324美元;最后同步日期2026-10-29,来源标记为RevenueCat。 平台另显示4,796份活跃订阅。", + "limitation": "显示值为平台重建指标,非财务审计;同步时间的时区未注明。成立年份、简介和收费信息可能由经营者填写。产品不必对应独立法律实体。" + }, + { + "id": "MR-E-abmaxx", + "companyId": "MR010", + "title": "AbMaxx · TrustMRR公开资料", + "url": "https://trustmrr.com/startup/abmaxx", + "publishedAt": null, + "accessedAt": "2026-10-30", + "kind": "支付平台连接数据", + "summary": "页面MRR 20,483美元、近30日收入 42,064美元;最后同步日期2026-10-29,来源标记为RevenueCat。 平台另显示5,634份活跃订阅。", + "limitation": "显示值为平台重建指标,非财务审计;同步时间的时区未注明。成立年份、简介和收费信息可能由经营者填写。产品不必对应独立法律实体。" + }, + { + "id": "MR-E-traxy-ai", + "companyId": "MR011", + "title": "traxy.ai · TrustMRR公开资料", + "url": "https://trustmrr.com/startup/traxy-ai", + "publishedAt": null, + "accessedAt": "2026-10-30", + "kind": "支付平台连接数据", + "summary": "页面MRR 52,438美元、近30日收入 57,174美元;最后同步日期2026-10-29,来源标记为Stripe。 平台另显示242份活跃订阅。", + "limitation": "显示值为平台重建指标,非财务审计;同步时间的时区未注明。成立年份、简介和收费信息可能由经营者填写。产品不必对应独立法律实体。" + }, + { + "id": "MR-E-notfair", + "companyId": "MR012", + "title": "NotFair · TrustMRR公开资料", + "url": "https://trustmrr.com/startup/notfair", + "publishedAt": null, + "accessedAt": "2026-10-30", + "kind": "支付平台连接数据", + "summary": "页面MRR 13,376美元、近30日收入 16,441美元;最后同步日期2026-10-29,来源标记为Stripe。 平台另显示113份活跃订阅。", + "limitation": "显示值为平台重建指标,非财务审计;同步时间的时区未注明。成立年份、简介和收费信息可能由经营者填写。产品不必对应独立法律实体。" + }, + { + "id": "MR-E-adspirer", + "companyId": "MR013", + "title": "Adspirer · TrustMRR公开资料", + "url": "https://trustmrr.com/startup/adspirer", + "publishedAt": null, + "accessedAt": "2026-10-30", + "kind": "支付平台连接数据", + "summary": "页面MRR 54,684美元、近30日收入 70,229美元;最后同步日期2026-06-29,来源标记为Stripe。页面提示连接已过期。 平台另显示742份活跃订阅。", + "limitation": "显示值为平台重建指标,非财务审计;同步时间的时区未注明。成立年份、简介和收费信息可能由经营者填写。产品不必对应独立法律实体。" + }, + { + "id": "MR-E-prosp", + "companyId": "MR014", + "title": "PROSP · TrustMRR公开资料", + "url": "https://trustmrr.com/startup/prosp", + "publishedAt": null, + "accessedAt": "2026-10-30", + "kind": "支付平台连接数据", + "summary": "页面MRR 128,005美元、近30日收入 98,483美元;最后同步日期2026-02-05,来源标记为Stripe。页面提示连接已过期。 平台另显示1,108份活跃订阅。", + "limitation": "显示值为平台重建指标,非财务审计;同步时间的时区未注明。成立年份、简介和收费信息可能由经营者填写。产品不必对应独立法律实体。" + }, + { + "id": "MR-E-rank-prompt", + "companyId": "MR015", + "title": "Rank Prompt · TrustMRR公开资料", + "url": "https://trustmrr.com/startup/rank-prompt", + "publishedAt": null, + "accessedAt": "2026-10-30", + "kind": "支付平台连接数据", + "summary": "页面MRR 40,112美元、近30日收入 52,297美元;最后同步日期2026-10-29,来源标记为Stripe。 平台另显示213份活跃订阅。", + "limitation": "显示值为平台重建指标,非财务审计;同步时间的时区未注明。成立年份、简介和收费信息可能由经营者填写。产品不必对应独立法律实体。" + }, + { + "id": "MR-E-chatseo", + "companyId": "MR016", + "title": "ChatSEO · TrustMRR公开资料", + "url": "https://trustmrr.com/startup/chatseo", + "publishedAt": null, + "accessedAt": "2026-10-30", + "kind": "支付平台连接数据", + "summary": "页面MRR 33,334美元、近30日收入 48,852美元;最后同步日期2026-10-29,来源标记为Stripe。 平台另显示750份活跃订阅。", + "limitation": "显示值为平台重建指标,非财务审计;同步时间的时区未注明。成立年份、简介和收费信息可能由经营者填写。产品不必对应独立法律实体。" + }, + { + "id": "MR-E-superfruits", + "companyId": "AI016", + "title": "Gojiberry AI · TrustMRR公开资料", + "url": "https://trustmrr.com/startup/superfruits", + "publishedAt": null, + "accessedAt": "2026-10-30", + "kind": "支付平台连接数据", + "summary": "页面MRR 424,368美元、近30日收入 407,199美元;最后同步日期2026-08-14,来源标记为Stripe。页面提示连接已过期。 平台另显示3,944份活跃订阅。", + "limitation": "显示值为平台重建指标,非财务审计;同步时间的时区未注明。成立年份、简介和收费信息可能由经营者填写。产品不必对应独立法律实体。" + }, + { + "id": "MR-METHOD", + "companyId": null, + "title": "TrustMRR 指标与资料字段说明", + "url": "https://trustmrr.com/faq", + "publishedAt": null, + "accessedAt": "2026-10-30", + "kind": "平台方法说明", + "summary": "平台称从支付来源同步并重建MRR等指标;退款、试用、折算等处理可能导致与支付商后台存在差异。简介与经营信息可由经营者编辑。", + "limitation": "平台核验不是审计,不证明全部公司收入、利润、客户质量或成立时间;样本由公开展示意愿与平台筛选影响。" + }, + { + "id": "MR-APP-NUTRIA", + "companyId": "MR007", + "title": "应用商店身份交叉核验", + "url": "https://apps.apple.com/us/app/nutria-come-mejor-cada-d%C3%ADa/id6744851977", + "publishedAt": null, + "accessedAt": "2026-10-30", + "kind": "应用身份核验", + "summary": "核对应用商店ID,区分两个名称相近的营养应用。", + "limitation": "商店页面不能验证TrustMRR收入,未把应用评级或下载量视作收入。" + }, + { + "id": "MR-APP-CALYRA", + "companyId": "MR008", + "title": "应用商店身份交叉核验", + "url": "https://apps.apple.com/us/app/calyra-ai-calorie-tracker/id6748324995", + "publishedAt": null, + "accessedAt": "2026-10-30", + "kind": "应用身份核验", + "summary": "核对应用商店ID,区分两个名称相近的营养应用。", + "limitation": "商店页面不能验证TrustMRR收入,未把应用评级或下载量视作收入。" } ], "reviews": [ @@ -40505,6 +42118,51 @@ "YC-COVERAGE" ], "handling": "目录记录与原有个案研究分开筛选。未确认AI业务、年份不符、日期冲突不作为本批新增;收入保持未核验,不记为零。" + }, + { + "id": "MR-R-METHOD", + "type": "指标口径与自选样本", + "company": "支付平台样本", + "summary": "按平台MRR独立比较,保留支付来源与数据日期;不与公司ARR混算。", + "evidenceIds": [ + "MR-METHOD" + ], + "handling": "默认取读取日前7天内最后同步的USD MRR;按类别及支付来源分组;列出样本量、均值、中位数、样本CV与去除最大值后的敏感性。统计仅描述本次产品样本,不推断行业分布或造假概率。" + }, + { + "id": "MR-R-STALE", + "type": "数据已停止同步", + "company": "Gojiberry / PROSP / Adspirer / TrackAI", + "summary": "部分连接已过期;前三项最后同步距读取日超过7天,TrackAI最后同步为10月27日。", + "evidenceIds": [ + "MR-E-superfruits", + "MR-E-prosp", + "MR-E-adspirer", + "MR-E-trackai" + ], + "handling": "按最后同步日期筛选,不以网页访问日期刷新收入时间;连接过期标记保留。TrackAI的历史点仍在7天窗口内,不能声称连接当前有效。" + }, + { + "id": "MR-R-IDENTITY", + "type": "同名与主体口径", + "company": "nutrIA / Calyra", + "summary": "两个营养应用的App Store ID不同,分别建档。", + "evidenceIds": [ + "MR-APP-NUTRIA", + "MR-APP-CALYRA" + ], + "handling": "产品/业务作为观测单位;未确认法律主体独立性,因此不把它们称作已去重的独立公司财报样本。" + }, + { + "id": "MR-R-CASH", + "type": "MRR与收款差异", + "company": "Speel.co", + "summary": "同一页面显示MRR 65,381美元、近30日收入1,764美元;两者属于不同指标。", + "evidenceIds": [ + "MR-E-speel-co", + "MR-METHOD" + ], + "handling": "保留原值供核查账期、年付、退款与平台算法;不擅自纠正、不据差异判假,也不为改变统计结果而排除此点。" } ], "coverage": { diff --git a/content/research/ai-income-analysis.json b/content/research/ai-income-analysis.json new file mode 100644 index 0000000..f78cc13 --- /dev/null +++ b/content/research/ai-income-analysis.json @@ -0,0 +1,221 @@ +{ + "sourceVersion": "2026-10-30-income-1", + "asOf": "2026-10-30", + "metric": "platform-mrr-usd", + "sampleUnit": "product-or-business", + "note": "独立Python复算参考值,仅验证样本计算;不是行业估计或财务审计。", + "windows": [ + { + "days": 7, + "products": [ + "MR001", + "MR002", + "MR003", + "MR004", + "MR005", + "MR006", + "MR007", + "MR008", + "MR009", + "MR010", + "MR011", + "MR012", + "MR015", + "MR016" + ], + "groups": [ + { + "category": "C06", + "provider": "Stripe", + "model": "软件订阅", + "products": [ + "MR011", + "MR012", + "MR015", + "MR016" + ], + "n": 4, + "mean": 34815.0, + "median": 36723.0, + "sampleDeviation": 16334.54845820151, + "cv": 0.46918134304758036, + "meanWithoutLargest": 28940.666666666668, + "largestRemovalDrop": 0.16872995356407675 + }, + { + "category": "C08", + "provider": "RevenueCat", + "model": "消费者订阅", + "products": [ + "MR001" + ], + "n": 1, + "mean": 53101.0, + "median": 53101, + "sampleDeviation": null, + "cv": null, + "meanWithoutLargest": null, + "largestRemovalDrop": null + }, + { + "category": "C08", + "provider": "Stripe", + "model": "内容制作服务", + "products": [ + "MR002" + ], + "n": 1, + "mean": 62423.0, + "median": 62423, + "sampleDeviation": null, + "cv": null, + "meanWithoutLargest": null, + "largestRemovalDrop": null + }, + { + "category": "C08", + "provider": "Stripe", + "model": "软件订阅", + "products": [ + "MR003", + "MR004", + "MR005" + ], + "n": 3, + "mean": 41693.0, + "median": 49069, + "sampleDeviation": 28111.375064197768, + "cv": 0.6742468775141575, + "meanWithoutLargest": 29849.0, + "largestRemovalDrop": 0.2840764636749574 + }, + { + "category": "C09", + "provider": "RevenueCat", + "model": "消费者订阅", + "products": [ + "MR006", + "MR007", + "MR008", + "MR009", + "MR010" + ], + "n": 5, + "mean": 25349.2, + "median": 20483, + "sampleDeviation": 11942.947278624319, + "cv": 0.4711370488466823, + "meanWithoutLargest": 20046.0, + "largestRemovalDrop": 0.20920581320120557 + } + ] + }, + { + "days": 90, + "products": [ + "MR001", + "MR002", + "MR003", + "MR004", + "MR005", + "MR006", + "MR007", + "MR008", + "MR009", + "MR010", + "MR011", + "MR012", + "MR015", + "MR016", + "AI016" + ], + "groups": [ + { + "category": "C06", + "provider": "Stripe", + "model": "软件订阅", + "products": [ + "MR011", + "MR012", + "MR015", + "MR016", + "AI016" + ], + "n": 5, + "mean": 112725.6, + "median": 40112, + "sampleDeviation": 174786.78744916618, + "cv": 1.5505509613536426, + "meanWithoutLargest": 34815.0, + "largestRemovalDrop": 0.6911526751687284 + }, + { + "category": "C08", + "provider": "RevenueCat", + "model": "消费者订阅", + "products": [ + "MR001" + ], + "n": 1, + "mean": 53101.0, + "median": 53101, + "sampleDeviation": null, + "cv": null, + "meanWithoutLargest": null, + "largestRemovalDrop": null + }, + { + "category": "C08", + "provider": "Stripe", + "model": "内容制作服务", + "products": [ + "MR002" + ], + "n": 1, + "mean": 62423.0, + "median": 62423, + "sampleDeviation": null, + "cv": null, + "meanWithoutLargest": null, + "largestRemovalDrop": null + }, + { + "category": "C08", + "provider": "Stripe", + "model": "软件订阅", + "products": [ + "MR003", + "MR004", + "MR005" + ], + "n": 3, + "mean": 41693.0, + "median": 49069, + "sampleDeviation": 28111.375064197768, + "cv": 0.6742468775141575, + "meanWithoutLargest": 29849.0, + "largestRemovalDrop": 0.2840764636749574 + }, + { + "category": "C09", + "provider": "RevenueCat", + "model": "消费者订阅", + "products": [ + "MR006", + "MR007", + "MR008", + "MR009", + "MR010" + ], + "n": 5, + "mean": 25349.2, + "median": 20483, + "sampleDeviation": 11942.947278624319, + "cv": 0.4711370488466823, + "meanWithoutLargest": 20046.0, + "largestRemovalDrop": 0.20920581320120557 + } + ] + } + ] +}