Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| a58a409c38 | |||
| c4ab5caac0 | |||
| 4cbb88181a | |||
| ce87abd1cb | |||
| dc7ec078e1 | |||
| bba9fddef1 | |||
| 1302287205 |
@@ -1,18 +1,38 @@
|
||||
# Endor · Tabularium
|
||||
|
||||
Endor 文档站、研究工作台与制图程序。应用代码在 Git 中评审;全部文档正文、目录元数据和内容修订以站点 SQLite 数据库为唯一权威源。日常写作不需要 commit、构建或部署。
|
||||
Endor 的文档站与 AI 公司研究工作台,包含文档阅读、全文搜索、研究数据展示和制图工具。使用 Next.js Pages Router、React、TypeScript 与 Tailwind CSS;JavaScript workspace 使用 pnpm,制图 Python 项目使用 uv。
|
||||
|
||||
## 存储与读取
|
||||
## 代码与内容放在哪里
|
||||
|
||||
沿用 `AUTH_CONFIG_FILE` 同目录的 `login-state.sqlite` 和 `/auth` 持久挂载。`documents` 存正文及分类、合集、分组、摘要、草案与推荐状态;`document_aliases` 保留旧地址;`document_revisions` 保存每次修改;`document_imports` 标记一次性迁移。没有第二套文档数据库。
|
||||
文档正文、目录元数据和修订记录由站点 SQLite 数据库管理,日常写作直接更新数据库,无需提交代码、构建或部署。研究业务数据仍沿用版本化 JSON 导入机制,后续单独迁移。
|
||||
|
||||
首页、阅读页、目录和全文搜索按请求查询数据库,使用 `private, no-store`。旧文件式地址与改名前的语义地址通过数据库别名跳转,保留查询参数;不再在构建阶段枚举文档。Markdown 原文通过受认证保护的 `/api/documents/source?slug=...` 获取。
|
||||
| 内容 | 权威来源与维护方式 |
|
||||
| --- | --- |
|
||||
| 文档正文、分类、合集、分组、摘要、草案和推荐状态 | 数据库;通过服务器上的 `docs` 管理工具读写 |
|
||||
| 文档旧地址与修订历史 | 数据库;改名保留别名,修改追加修订 |
|
||||
| AI 公司、观测、证据、候选与核查记录 | `content/research` 中的版本化快照;服务端显式按版本导入同库后查询 |
|
||||
| 页面、组件、管理工具和部署逻辑 | 本仓库,通过工作分支与 PR 评审 |
|
||||
| 图形源码与静态资源 | `tools/figures` 与 `apps/docs/public`;生成步骤在远程 Runner 执行 |
|
||||
|
||||
仓库不保存日常正文、目录 JSON、数据库文件或内容快照;历史 Git 记录仅用于迁移。页面不再读取 `content/docs` 或 `content/catalog.json`。Markdown 与 GFM 表格仍可用,不解析原始 HTML。图片在写入时检查压缩格式;图形程序与版本化静态资源仍在代码仓库,本轮不迁移媒体存储。研究业务数据留待下一步。
|
||||
以上数据库数据共用 `AUTH_CONFIG_FILE` 同目录下的 `login-state.sqlite`,该文件名沿用历史命名。生产环境挂载到容器 `/auth`,不随镜像替换。文档使用 `documents`、`document_aliases`、`document_revisions`、`document_imports` 表,研究数据使用 `research_*` 表,登录状态使用 `login_state` 表。
|
||||
|
||||
## 在服务器上管理文档
|
||||
仓库不接收新的文档正文 Markdown、目录 JSON、数据库文件或日常正文快照。历史 Git 正文仅用于一次性迁移;运行时不读取 `content/docs` 或 `content/catalog.json`。README 维护程序使用与运维约定,研究个案、统计数量与内容更新日志在工作台和数据库文档中查看。
|
||||
|
||||
部署安装 `/opt/endorphin-tabularium-docs/docs`,通过当前容器执行管理 CLI。需要服务器的运维权限;不增加可公开写入的 API,不改变现有动态码登录。
|
||||
## 阅读与访问
|
||||
|
||||
首页、阅读页、目录及全文搜索按请求读取数据库,内容更新后刷新即可看到。旧文件式地址和改名前的语义地址继续跳转到当前地址,并保留查询参数。
|
||||
|
||||
- 文档原文:`GET /api/documents/source?slug=<文档地址>`。
|
||||
- 全文搜索:`GET /api/search`。
|
||||
- 研究工作台:`/docs/other-research/ai-company-research/overview`。
|
||||
- 收入样本:`/docs/other-research/ai-company-research/income-snapshot`。
|
||||
- 覆盖与缺项:`/docs/other-research/ai-company-research/coverage`。
|
||||
|
||||
正文、搜索、研究 API 与静态资料均经过站点登录认证,私有响应使用 `private, no-store`。Markdown 支持 GFM 表格,不解析原始 HTML;正文图片写入时检查压缩格式。草案标记用于展示状态,不构成单独的访问权限。
|
||||
|
||||
## 管理文档
|
||||
|
||||
部署后,管理员可在服务器上使用 `/opt/endorphin-tabularium-docs/docs`。该工具在当前容器中操作数据库,需要服务器运维权限;站点没有公开的文档写入 API。
|
||||
|
||||
```sh
|
||||
sudo /opt/endorphin-tabularium-docs/docs list
|
||||
@@ -20,174 +40,111 @@ sudo /opt/endorphin-tabularium-docs/docs get endor/endor-purpose-draft
|
||||
sudo /opt/endorphin-tabularium-docs/docs history 04-endor-purpose-draft
|
||||
```
|
||||
|
||||
新建或修改使用标准输入传入完整 JSON。必填字段:`slug`、`sourceSlug`、`title`、`category`、`collection`、`group`、`description`、`draft`、`featured`、`content` 和 `revision`。新建时 `revision: 0`;修改时先 get 并使用读到的 revision,避免覆盖别人刚写入的版本。`sourceSlug` 是稳定标识,修改公共 slug 时保持它不变,旧地址继续可用。调整目录直接修改 category、collection、group 等字段。
|
||||
`save` 从标准输入接收完整 JSON。必填字段如下:
|
||||
|
||||
| 字段 | 用途 |
|
||||
| --- | --- |
|
||||
| `slug` | 语义化公开地址,不含数字章节前缀 |
|
||||
| `sourceSlug` | 稳定标识;修改公开地址时保持不变 |
|
||||
| `title`、`content` | 标题与 Markdown 正文 |
|
||||
| `category`、`collection`、`group` | 分类、合集与目录分组 |
|
||||
| `description`、`draft`、`featured` | 摘要、草案状态与推荐状态 |
|
||||
| `revision` | 新建传 `0`;修改传最近一次读取到的版本号 |
|
||||
|
||||
修改现有文档的流程:
|
||||
|
||||
```sh
|
||||
sudo /opt/endorphin-tabularium-docs/docs get endor/endor-purpose-draft > /private/work/purpose.json
|
||||
# 在私有文件中修改正文或目录字段,保留读到的 revision。
|
||||
sudo /opt/endorphin-tabularium-docs/docs save < /private/work/purpose.json
|
||||
umask 077
|
||||
doc_work_dir=$(mktemp -d)
|
||||
sudo /opt/endorphin-tabularium-docs/docs get endor/endor-purpose-draft > "$doc_work_dir/document.json"
|
||||
# 编辑该私有 JSON 文件,保留读取到的 revision 和 sourceSlug。
|
||||
sudo /opt/endorphin-tabularium-docs/docs save < "$doc_work_dir/document.json"
|
||||
```
|
||||
|
||||
路径仅为操作示例,应选择实际存在且受保护的目录。运行成功后刷新网页即可看到正文、导航和搜索更新。版本冲突时重新读取并合并修改;不要把旧 revision 改成新数字强行覆盖。草案是现有展示标记,不是按分支或用户隔离的访问控制。
|
||||
保存成功后,正文、目录和搜索通过后续请求读取新内容。发生版本冲突时重新读取并合并修改,不能仅改大 `revision` 覆盖并发编辑。调整分类或分组也走同一保存流程;`history` 使用稳定的 `sourceSlug` 查询修订。
|
||||
|
||||
新增正文不提交回 Git。奇思妙想这类内容同样通过数据库写入;本次用户明确要求汇总四个 PR,因此该草案已纳入首次迁移清单,保留草案状态。代码分支与数据发布是不同动作,其他分支的内容不会自动发布。
|
||||
## 研究数据与检查
|
||||
|
||||
## 首次迁移与备份
|
||||
研究工作台提供公司筛选、经营指标、原始证据、收费与交付模式、技术材料及核查记录。它区分公司披露、支付平台指标、第三方估算、融资和客户收益;未知收入不填零,材料可访问也不代表性能或商业效果已经验证。研究范围、样本限制和个案结论以工作台记录为准。
|
||||
|
||||
本次汇总先合入 PR #14、#15、#16,再应用 PR #17 的数据库迁移。最新研究正文及奇思妙想草案合计 51 篇,连同目录可从固定历史提交 `cffca6942b1bc0005321e1685f38593fb0b853d5` 完整导出;其中 AI 公司研究三篇采用汇总期间追加的 `74af205b2959e1bb6a1fe9f567bc87069ac6d12c` 历史版本,保留 Wabi 更新:
|
||||
| 仓库资料 | 用途 |
|
||||
| --- | --- |
|
||||
| `content/research/ai-companies.seed.json` | 研究数据导入快照;更新必须更换 `version` |
|
||||
| `content/research/ai-companies.sources.json` | 来源范围、用途、覆盖边界与后续缺项 |
|
||||
| `content/research/ai-companies.coverage.json` | 候选池逐条筛选台账 |
|
||||
| `content/research/ai-income-analysis.json` | 独立复算的统计参考快照 |
|
||||
|
||||
服务端以事务导入未载入的版本,保留旧研究版本与登录、文档数据;同一版本标识下内容变化会拒绝导入。页面和 `GET /api/research/ai-companies` 从数据库读取对应研究版本。回退程序可能选择旧研究版本,不能等同于撤销数据库中的正文编辑。
|
||||
|
||||
以下 Python 检查不触发编译或构建,可在工作分支执行:
|
||||
|
||||
```sh
|
||||
python3 scripts/export-legacy-documents.py --output .artifacts/documents-migration.json
|
||||
PYTHONDONTWRITEBYTECODE=1 python3 scripts/audit-ai-research.py --check
|
||||
PYTHONDONTWRITEBYTECODE=1 python3 scripts/summarize-ai-income.py --check
|
||||
```
|
||||
|
||||
导出文件位于 Git 忽略目录、权限 0600,不进入镜像。脚本也支持显式 `--ref`,但不能用未评审分支替换生产迁移基线。它不会在站点读取时执行。CI 使用历史导出验证全部正文与目录的逐项一致性,构建镜像只含程序,不含文档快照或数据库。
|
||||
若需对照研究数据检查报告正文,先用 `docs export` 导出当前文档,再给对应脚本传入 `--document-export <导出文件>`。默认 `--check` 核对研究数据的统计与审计不变量,不将历史迁移快照当作当前正文。脚本不带参数时仅在 `.artifacts/reports` 生成候选正文,需审阅后通过 `docs save` 写入数据库。
|
||||
|
||||
首次部署先备份整个共享数据库,再显式事务导入到空文档表。普通部署使用 `import --if-empty`,已有内容时跳过,不以历史数据覆盖数据库编辑;重复同一导入也不会重置内容。导入失败则事务整体回滚,既有登录与研究表保留,部署中止。
|
||||
## 备份与首次迁移
|
||||
|
||||
```sh
|
||||
sudo /opt/endorphin-tabularium-docs/docs backup /auth/manual-backup.sqlite
|
||||
sudo /opt/endorphin-tabularium-docs/docs export /auth/current-documents.json
|
||||
```
|
||||
|
||||
backup 是包含登录、研究、正文、别名和修订的完整 SQLite 一致性备份;export 只导出当前正文与目录,作为空库初始化/外部迁移快照,不代替完整备份或恢复修订历史。输出路径均在容器内,文件已存在时拒绝覆盖。备份含认证状态,应留在私有挂载或受控备份位置,不能放到公开静态目录、仓库或日志。
|
||||
路径在容器内,输出文件已存在时拒绝覆盖。`backup` 是整个共享 SQLite 数据库的一致性备份,包含登录状态、研究数据、正文、别名和修订;`export` 只保存当前正文与目录,供空库初始化或外部迁移使用,不包含完整修订历史。认证配置单独保存在 `/auth/config.json`,整库备份不包含该配置文件。备份与导出应保存在私有挂载或受控备份位置。
|
||||
|
||||
代码回退不会撤销数据库编辑,但回退到旧文件式站点会显示旧正文。恢复完整数据库会同时影响登录和研究状态,必须先停止写入、保留当前备份并由管理员明确选择恢复点;部署脚本不会自动恢复数据库或删除新内容。
|
||||
首次迁移由 `scripts/export-legacy-documents.py` 从固定历史版本导出正文和目录,基线与研究正文覆盖版本在脚本中明确记录。导出写入 Git 忽略目录,权限为 `0600`,不进入生产镜像:
|
||||
|
||||
## 代码验证
|
||||
```sh
|
||||
python3 scripts/export-legacy-documents.py --output .artifacts/documents-migration.json
|
||||
```
|
||||
|
||||
使用 React、Next.js Pages Router、TypeScript 和 Tailwind CSS。JavaScript 用 pnpm,制图 Python 用 uv。编译、构建、打包和构建产物全部在已确认的 ces-control Runner 执行;`pnpm test:docs` 等测试脚本会调用 esbuild,也只能在 Runner 执行。
|
||||
该命令用于迁移准备,不是日常写作入口;目标文件存在时拒绝覆盖。部署先备份共享数据库,再用 `import --if-empty` 向空文档表事务导入。已有文档时跳过,不覆盖后续编辑;导入失败整体回滚并中止部署。`--ref` 仅用于明确选择历史导出版本。
|
||||
|
||||
工作分支与 PR 不运行 CI,仅做不会触发编译、构建的轻量检查。用户手动合并 main 后,才在 ces-control 执行 lint、类型检查、数据库事务/版本测试、现有认证与研究测试、图形检查、构建与容器冒烟;验证通过才沿用既有部署流程。
|
||||
程序回退不会撤销数据库编辑;回退到旧文件式站点则会显示旧正文。完整数据库恢复会同时影响登录、研究和文档状态,需先停止写入、保留当前备份,再明确选择恢复点。部署脚本只回退镜像,不自动恢复数据库。
|
||||
|
||||
冒烟使用隔离数据库卷:完整导入后逐项核对全部正文与目录,验证新建、更新、重命名、搜索立即变化及容器重启后的持久化,并覆盖全部文档地址、认证、媒体和原文端点。测试卷不会触及生产数据库。
|
||||
## 登录管理
|
||||
|
||||
`tools/figures/src/endor_figures` 与 `apps/docs/public/figures` 仍保存图形源码及可复现的静态资源。图形构建也在远程执行。
|
||||
|
||||
## 动态码登录与二维码
|
||||
|
||||
与 PROMPT 的参考流程一致:共享验证器的6位TOTP动态码,每30秒更新;成功登录的HttpOnly、SameSite=Lax会话有效7天。此方案是动态码单因素登录,不是密码加动态码的双因素组合。
|
||||
|
||||
正文、SVG、文档数据与API都经过认证,仅登录入口、登录所需代码资源和最小健康检查公开。20次/5分钟的共享尝试上限与已用时间步持久保存在SQLite中,跨进程和重启继续生效。缺失或损坏配置时拒绝访问,不自动降为公开站点。
|
||||
|
||||
生产认证文件位于服务器 `/opt/endorphin-tabularium-docs/private-auth`,目录0700、文件0600,只挂载进本项目容器。部署只初始化一次,后续更新保留同一验证器密钥与会话签名密钥。生产镜像、Git、CI日志和网页不包含密钥。
|
||||
|
||||
管理员通过SSH管理:
|
||||
站点使用共享验证器的 6 位 TOTP 动态码,每 30 秒更新。会话使用 HttpOnly、SameSite=Lax Cookie,有效期 7 天;共享尝试上限为每 5 分钟 20 次,重放与限流状态在数据库中持久保存。缺少或损坏认证配置时拒绝私有访问。
|
||||
|
||||
```sh
|
||||
sudo /opt/endorphin-tabularium-docs/auth qr
|
||||
sudo /opt/endorphin-tabularium-docs/auth verify
|
||||
```
|
||||
|
||||
`qr`只允许交互终端显示;`qr-png`用于通过SSH将PNG直接重定向到私有本地文件,不在CI中运行。二维码等同登录凭据,不放入本仓库或网页。只有明确执行 `auth rotate --confirm` 才更换密钥并使旧二维码、会话失效;重新显示或下载二维码不会轮换。
|
||||
认证配置和数据库位于服务器 `/opt/endorphin-tabularium-docs/private-auth`。正常部署保留验证器与会话签名密钥。`qr` 只在交互终端显示,`qr-png` 可导出到私有文件;只有 `auth rotate --confirm` 会轮换密钥并使旧会话失效。二维码和令牌不进入仓库、网页或 CI 日志。
|
||||
|
||||
构建、打包与会触发构建的测试只在用户确认的 ces-control Runner 上执行。本地不执行 `pnpm dev`、`pnpm build`、`pnpm typecheck` 或打包测试。
|
||||
当前 Compose 配置默认 `AUTH_COOKIE_SECURE=false`;实际采用 HTTPS 时,应在独立的生产配置中设置为 `true`。HTTP 不加密动态码与会话传输。生产部署使用无副作用的 `verify`,不执行会消耗动态码和触发限流的 `exercise`。
|
||||
|
||||
当前服务器入口为HTTP,与参考项目一致使用 `AUTH_COOKIE_SECURE=false`;配置HTTPS后应在独立production.env设置 `AUTH_COOKIE_SECURE=true`。HTTP本身不加密动态码和会话传输。
|
||||
## 开发、验证与发布
|
||||
|
||||
`pnpm test:auth`运行算法、会话、重放及限流测试。容器验证使用自己的匿名测试卷完成登录/并发重放/CSRF/限流测试,并在重启后检查状态仍存在。生产部署只运行无副作用的 `verify`,不会消耗用户动态码或触发生产限流。
|
||||
代码依赖要求见 `package.json` 和锁文件;当前要求 Node.js 22.13+、pnpm 11.25.0,制图使用 Python 与 uv。构建、打包、制图及会隐式编译的检查只在已确认的 `ces-control` Runner 执行,本机不执行这些步骤。
|
||||
|
||||
## AI 公司研究
|
||||
工作分支完成轻量检查后推送并创建 PR,由用户手动合并。**CI 仅在 main 推送或针对 main 的手动运行时执行,工作分支和 PR 不运行 CI。** 不自动合并,也不因确认 Runner 而扩大触发范围。
|
||||
|
||||
导航入口为 **其他研究 → AI 公司研究**,页面路径是
|
||||
`/docs/other-research/ai-company-research/overview`。工作台提供业务分类、公司搜索与筛选、
|
||||
公司明细、收入观测、原始证据和数据核查记录。所有页面与
|
||||
`GET /api/research/ai-companies` 均使用文档站现有的登录认证。
|
||||
主线通过 `.gitea/workflows/ci-deploy.yml` 执行 `scripts/ci.py`:
|
||||
|
||||
研究业务数据本轮暂不迁移,仍沿用版本化 JSON 导入机制。研究数据、文档与登录状态**共用文档站现有的 SQLite 数据库文件**:
|
||||
`AUTH_CONFIG_FILE` 同目录下的 `login-state.sqlite`。该文件名是历史名称,未创建第二个数据库。
|
||||
`login_state` 保留登录限流与重放状态,新增的 `research_*` 表保存数据版本、分类、
|
||||
公司、经营指标、证据与核查记录。沿用现有 `/auth` 持久挂载,数据库不会写入镜像或公开目录。
|
||||
1. 检查研究统计、审计与 Python 测试,生成首次迁移所需的历史导出。
|
||||
2. 根据程序、研究快照、图形、锁文件和构建脚本计算内容指纹。命中 verified 镜像时复用,否则安装依赖并执行 lint、类型检查、数据库测试、图形检查与构建。
|
||||
3. 使用隔离数据库卷核对完整迁移、认证、全部文档与资源,以及不重建内容更新和重启持久化;通过后标记镜像为 verified。
|
||||
4. `scripts/deploy.py` 确认仍为最新 main,备份并初始化文档数据,使用 `--no-build` 部署;失败时回退上一版镜像。
|
||||
|
||||
`content/research/ai-companies.seed.json` 是可评审的研究导入快照,
|
||||
服务端首次读取该版本时将它以事务导入同一数据库,之后从数据库查询记录。
|
||||
导入使用外键校验,不删除登录数据,也不覆盖旧研究版本。每次更新快照必须修改 `version`;
|
||||
同一版本内容变化会拒绝导入,避免静默读取旧数据。回退代码时继续读取对应旧版本。
|
||||
所有修改都经过工作分支和 PR,部署仍等待人工合并主线。
|
||||
`pnpm check`、`pnpm typecheck`、`pnpm test:auth`、`pnpm test:research`、`pnpm test:docs`、`pnpm figures`、`pnpm build` 和 `pnpm dev` 等命令涉及编译、构建或产物生成,不在本机运行。图形源码与生成资源保持可复现,前端继续使用 Pages Router。
|
||||
|
||||
当前资料包含 1,021 条公司/产品记录、10 类业务及待分类组、1,201 条证据记录和 187 条经营与技术观测。
|
||||
其中保留 93 家个案资料、912 条目录基础资料,并新增 16 个平台产品/业务样本;目录项不等于完成财务和技术核验。
|
||||
Product Hunt两年档案各首批19张、合计38张发布/推广卡片以`candidateBatches`保存;公司成立年待核者不自动新增公司。其中18条仍待核成立年;排除依据区分正式成立字段与2025前已运营证据,精确注册日期未核者明确标注。候选元数据与其他研究记录同库持久化,覆盖报告逐条展示状态、缺项和公司关联。Kilo Code与KiloClaw两项映射一个已被收购的2025公司个案,采用规模、token吞吐及同名健康公司的收入不作为其ARR。
|
||||
机器之心首批4条公司线索以独立候选批次记录:直达正文未读,经公司公开主页、官方代码或发起方公告补核PrismShadow与Stargate;SSI用2024官方历史更新排除,Utopai仍待核。不是两年中文来源全量。
|
||||
TechCrunch栏目首批3条公司候选已追溯原始材料;Wabi据两个公开名录2025年份入表,精确注册日未核。官方条款称当前免费,收入仍未知,不填零。DreamHQ及Thrive Holdings成立年仍待核,后者2025公开发布公告另存。DreamHQ与名录同名摄像头公司区分,ADT拟收购尚待交割,融资、估值和目标公司业绩不当新AI公司的ARR。分类接口与RSS访问403及两年档案缺项保留。
|
||||
补充ThinkWheel与中国NaiveAI;MiroMind成立年未核,公开研发年份单列。保留灵初智能成立年排除、深度原理日期待核和Naive近名实体复核记录。
|
||||
新增7条Speedrun个案,保留标题/正文冲突、七位数数量级、币种不明、合同管线与履历归属排除记录;相对日期不充当同期收入时点。核查页优先按人工确认的公司ID关联明细,旧版本保留按证据归属回退;68条核查中52条指向具体公司、4条属于全局方法、12条是未纳入候选。明细反向列出关联核查;币种不明的声明保留原值,不绘制美元收入长度条。
|
||||
Lightfield按Magical Tome主体与2025前历史业务列为CRM转型对照,成立年未知,不计新成立公司;Fundraisly成立年待核,其客户融资和创始人历史ARR不转移为公司收入。
|
||||
Bud保留为2025成立且YC标记已收购的案例;Rocket.new按前身2021成立、2025产品上线的转型对照记录,历史ARR不混入新成立公司同期统计。
|
||||
原候选36088 EveryApp从AI不明经补证入表,`directoryRechecks`保存后续复核,原1,428条台账及928条原始新增计数不改。OpenSEO与EveryApp不重复计公司;定价、星标、客户数和数据成本加价均不转为ARR。
|
||||
验收按2026-10-30确认的公开来源清单边界逐条核对并标明缺项;YC候选池有完整读取台账,其他来源目前为定向补充,不能把来源出现次数当作覆盖完成。收入披露不足且统计时点不统一,不代表全部 AI 公司。
|
||||
界面将公司自述、第三方估算、融资、客户收入和履历收入分开,未知收入不记为零。
|
||||
保留被撤回的声明作为核查记录,并排除收入比较;并购后业务、管理层预测与历史里程碑单列。
|
||||
团队规模下界在列表中显示比较符,商业成熟度展示公开交付证据,不等于技术能力排名。
|
||||
Emergent的1亿美元ARR里程碑补足至2026年2月;Peec采用规模和Wonderful团队规模各保留其公告日期,不将较新非收入指标当作ARR更新。Wonderful按2026年9月官方综合平台定位归C05。
|
||||
公司披露的 ARR 尚未建立同期同口径比较组。新增平台 MRR 单独计算探索性样本统计,
|
||||
不能称行业平均 ARR、总体离散排名或财务造假概率。
|
||||
根 README 等非构建输入变更不要求重新构建;数据库正文和目录更新也不触发构建。保留 pnpm、uv、Next.js 与 SWC 缓存,不清理共享 Docker 缓存或卷,不修改共享 Runner 或其他项目。
|
||||
|
||||
收入分布:`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中的公司与观测记录计算,不读取第二个数据库。
|
||||
## 部署位置与仓库
|
||||
|
||||
平台同步时间、连接过期状态、业务描述的可编辑性和产品/法律主体未去重限制均保留。
|
||||
覆盖审计页位于 `/docs/other-research/ai-company-research/coverage`,分类链接 `overview?category=<id>` 的筛选数据。
|
||||
`python3 scripts/audit-ai-research.py --check` 检查候选池逐条计数与来源审计一致性;CI在ces-control运行此检查。
|
||||
收入快照报告位于 `/docs/other-research/ai-company-research/income-snapshot`,样本名称链接 `overview?company=<id>` 的公司明细。
|
||||
`python3 scripts/summarize-ai-income.py --check` 独立复核统计与参考快照一致性;不触发编译或构建。数据变更后先审查方法,再运行不带参数的命令生成 `.artifacts/reports` 下的候选正文,使用 docs 管理工具显式更新数据库;不再生成受 Git 管理的正文。
|
||||
默认7日样本14个产品;90日窗口新增Gojiberry的8月历史点,营销样本的均值和CV随之明显变化。
|
||||
这提示先核查时间与样本构成,不能将高离散度直接解释为造假。两个近名营养应用按不同App Store ID分别建档。
|
||||
| 项目 | 位置或默认值 |
|
||||
| --- | --- |
|
||||
| Compose 项目 | `endorphin-tabularium-docs` |
|
||||
| 容器监听 | `0.0.0.0:3000` |
|
||||
| 服务器入口 | 默认端口 `18135`,由生产配置决定 |
|
||||
| 生产配置 | `/etc/endorphin-tabularium-docs/production.env` |
|
||||
| 发布记录与当前版本 | `/opt/endorphin-tabularium-docs/releases/<commit>` 与 `current` |
|
||||
| 健康检查 | `/api/health` |
|
||||
|
||||
覆盖核查:从 yc-oss 非官方镜像发现 2025—2026 八个 YC 批次的 1,428 条候选,
|
||||
逐条读取对应 YC 官方公开页面,以页面中的成立年份、团队字段和业务描述筛选。
|
||||
962 条初筛匹配,其中 34 条与原表 URL 重合,实际新增 928 条;268 条年份不符或缺失、
|
||||
192 条 AI 业务待确认、6 条成立年份晚于批次年份未纳入本批新增。
|
||||
`content/research/ai-companies.sources.json` 保留最初12项来源与后续补充渠道、用途、覆盖边界及下一步;覆盖报告逐渠道复算证据、公司及观测数量。背景报告、入口可读和候选池逐条读取分别标记,零计数不表示没有公司。
|
||||
`content/research/ai-companies.coverage.json` 保留逐条筛选结果、来源与响应摘要,
|
||||
数据快照中的 `coverage` 也随版本进入同一 SQLite 数据库。只覆盖该候选池,不能称全球全量。
|
||||
服务入口使用 `TABULARIUM_BIND`、`TABULARIUM_PORT` 配置。部署前检查端口是否空闲或属于本服务,不停止其他服务抢占端口;本项目不自动修改防火墙、域名或反向代理。
|
||||
|
||||
新增业务分类优先匹配主营简介,再参考目录标签;未匹配者进入待分类组。
|
||||
初分规则位于 `scripts/classify-ai-profiles.py`,只生成待评审标签,不执行抓取或构建。
|
||||
目录基础项保留 `classificationBasis` 和 `directoryTags` 供复核。
|
||||
当前目录基础项中160条已人工复核主营与买家,Contrario及14条收入声明/排除案例已深化为个案。`directoryOrigin`保留原发现来源,`profileOnly`只表示当前资料深度;深化不改变原候选池新增928条的审计分母。
|
||||
分类按主要工作任务和买家判断,例如Paragon归客户与收入运营,Oki归消费者应用,Lucidic归Agent设施。市场支出、采用规模、性能主张及客户收益均不作为公司收入。
|
||||
其中121条原待分类记录已按YC官方业务介绍人工复核主营业务,分类理由保存在公司字段与对应证据摘要中;
|
||||
仍有3条因简介不足保留待分类。人工复核分类不代表独立验证技术水平、客户效果或财务数据。
|
||||
AI 关键词可能出现在业务背景中,收入、买家和交付状态仍须逐家深查,不能把目录项的未知收入当作未披露。
|
||||
技术专项评审用独立字段记录层级、日期、摘要与证据:未评审、已读技术自述、公开代码/模型材料可访问、有第三方独立评测记录。
|
||||
当前13条完成该字段的专项记录,其中6条确认材料可访问、1条记录第三方已发表评测(Gradium TTS Sep 2026);本轮未自行运行模型测试。缺字段不表示无技术能力,代码或模型卡可读不证明性能。
|
||||
界面支持按资料深度、记录团队规模和技术验证证据筛选;证据列表每页 30 条,避免一次渲染全部来源。
|
||||
|
||||
`pnpm test:research` 在远程 Runner 上验证同库持久化、重复读取、版本导入与回退、
|
||||
登录限流保留、引用完整性及收入排除规则。镜像冒烟检查会验证研究页面与 API 的认证、
|
||||
返回记录数量、只读方法和容器重启后的读取结果。页面筛选交互仍需实际浏览器验证。
|
||||
|
||||
## CI/CD 与缓存
|
||||
|
||||
文档内容已退出构建输入。若需对照研究数据检查数据库中的报告正文,可先导出当前文档,再给研究脚本传入 `--document-export`;默认 `--check` 只核对研究数据本身的统计和审计不变量,避免把历史迁移快照继续当作日常正文源。
|
||||
|
||||
`.gitea/workflows/ci-deploy.yml` 使用已有 ces-control Runner,不修改共享 Runner 配置。
|
||||
工作流仅在 main 推送或针对 main 的手动运行时执行,工作分支与 PR 不触发 CI。确认 ces-control 是构建位置,不构成新增分支 CI 的授权;报告须区分轻量检查与主线 CI。
|
||||
|
||||
1. 对实际构建输入计算 SHA-256:前端源码、图片、Python 制图源码、研究业务快照、依赖锁文件、Dockerfile 和构建脚本。
|
||||
2. 命中 `verified-<scope>-<摘要>` 镜像时跳过依赖安装和 Next.js build,只做认证、实际路由与资源冒烟检查。
|
||||
3. 输入变化时运行 lint、类型检查、制图一致性检查与构建。pnpm store、uv 和 `.next/cache` 使用持久 Docker 卷,main 与每个 PR 独立;额外保留 Next.js SWC 下载缓存。
|
||||
4. 生产镜像只包含 Next.js standalone 产物;Python 留在检查容器,不进入运行镜像。镜像通过动态码认证、重放/限流、重启持久化、健康、全部文档、JS/CSS、SVG 和 404 检查后才标记为 verified。
|
||||
5. 部署前检查是否仍为最新 main,使用 `--no-build` 启动,失败恢复上一版镜像。
|
||||
|
||||
根 README、工作流或部署配置等非构建输入变化不会触发 Next.js 重建;数据库中的正文和目录变化直接通过请求读取,不触发任何构建。首次构建必须安装依赖并完整生成产物。缓存可能因基础镜像、工具链或锁文件变化而失效;不要清理共享 Docker 缓存或卷。
|
||||
|
||||
默认入口为服务器的 **18135** 端口。容器监听 3000,使用独立 Compose 项目 `endorphin-tabularium-docs`。部署前先检查端口是否空闲(或属于本服务),不会停止其他服务以抢占端口。服务器配置位于 `/etc/endorphin-tabularium-docs/production.env`:
|
||||
|
||||
```dotenv
|
||||
TABULARIUM_BIND=0.0.0.0
|
||||
TABULARIUM_PORT=18135
|
||||
```
|
||||
|
||||
发布记录位于 `/opt/endorphin-tabularium-docs/releases/<commit>`,`current` 指向最近成功发布。修改服务器入口配置后手动重跑 main 工作流即可,复用现有镜像。
|
||||
|
||||
健康检查:`/api/health`。本项目不修改 Hestia、PROMPT 或其他服务,也不自动修改防火墙、域名和反向代理。
|
||||
|
||||
## Git 远程
|
||||
|
||||
仓库:[endorphin-tabularium-docs](https://gitea.entroia.com/Zayden-Jung/endorphin-tabularium-docs)。开发者 Git 操作使用 codex-bot 专用 SSH;Actions 检出使用 Gitea 内置任务令牌,不保存检出凭据。
|
||||
仓库:[endorphin-tabularium-docs](https://gitea.entroia.com/Zayden-Jung/endorphin-tabularium-docs)。Git 操作仅使用 `codex-bot` 专用 SSH 身份与仓库级提交配置;Actions 检出使用 Gitea 内置任务令牌且不保存凭据。
|
||||
|
||||
@@ -183,8 +183,8 @@ async function main() {
|
||||
const research = await researchResponse.json();
|
||||
assert.equal(research.companies.length, 1021);
|
||||
assert.equal(research.categories.length, 11);
|
||||
assert.equal(research.evidence.length, 1201);
|
||||
assert.equal(research.observations.length, 187);
|
||||
assert.equal(research.evidence.length, 1215);
|
||||
assert.equal(research.observations.length, 189);
|
||||
assert.equal((await request("/api/research/ai-companies", { method: "POST", headers })).status, 405);
|
||||
const researchPage = await request("/docs/other-research/ai-company-research/overview", { headers });
|
||||
assert.equal(researchPage.status, 200);
|
||||
|
||||
@@ -24,8 +24,8 @@ test("research revisions share the authentication database and preserve replay l
|
||||
assert.equal(consumeCode(config, "invalid"), "limited");
|
||||
const initial = readResearchSnapshot();
|
||||
assert.equal(initial.companies.length, 1021);
|
||||
assert.equal(initial.evidence.length, 1201);
|
||||
assert.equal(initial.observations.length, 187);
|
||||
assert.equal(initial.evidence.length, 1215);
|
||||
assert.equal(initial.observations.length, 189);
|
||||
assert.deepEqual(initial.candidateBatches, seed.candidateBatches, "candidate gaps persist in the same database metadata");
|
||||
assert.deepEqual(initial.directoryRechecks, seed.directoryRechecks, "follow-up classifications persist without rewriting the discovery audit");
|
||||
assert.deepEqual(readResearchSnapshot(), initial, "reopening does not duplicate records");
|
||||
@@ -64,9 +64,9 @@ test("research validation rejects broken evidence and unsafe source links", () =
|
||||
|
||||
test("reviews link explicit companies without turning global or excluded cases into companies", () => {
|
||||
const snapshot = structuredClone(seed) as ResearchSnapshot;
|
||||
assert.equal(snapshot.reviews.filter((r) => r.scope === "companies").length, 52);
|
||||
assert.equal(snapshot.reviews.filter((r) => r.scope === "dataset").length, 4);
|
||||
assert.equal(snapshot.reviews.filter((r) => r.scope === "excluded-candidate").length, 12);
|
||||
assert.equal(snapshot.reviews.filter((r) => r.scope === "companies").length, 54);
|
||||
assert.equal(snapshot.reviews.filter((r) => r.scope === "dataset").length, 8);
|
||||
assert.equal(snapshot.reviews.filter((r) => r.scope === "excluded-candidate").length, 16);
|
||||
const review = snapshot.reviews.find((r) => r.id === "R4")!;
|
||||
assert.deepEqual(reviewCompanyIds(snapshot, review), ["AI007", "AI013", "AI021", "AI034"]);
|
||||
assert.deepEqual(reviewCompanyIds(snapshot, snapshot.reviews.find((r) => r.id === "CN-R-PSI")!), []);
|
||||
@@ -97,7 +97,7 @@ test("disclosure counts exclude client income, biographies, targets and duplicat
|
||||
|
||||
test("technical reviews keep accessible materials separate from tested capabilities", () => {
|
||||
const snapshot = structuredClone(seed) as ResearchSnapshot;
|
||||
assert.equal(snapshot.companies.filter((c) => c.technicalReview).length, 13);
|
||||
assert.equal(snapshot.companies.filter((c) => c.technicalReview).length, 14);
|
||||
assert.equal(snapshot.companies.filter((c) => c.technicalReview?.level === "public-artifact").length, 6);
|
||||
assert.equal(snapshot.companies.filter((c) => c.technicalReview?.level === "independent-test").length, 1);
|
||||
assert.equal(snapshot.companies.find((c) => c.id === "AI051")?.revenueStatus, "unknown");
|
||||
@@ -279,7 +279,7 @@ test("annual launch archives exclude older companies only with evidence and reus
|
||||
assert.equal(batch.complete, false);
|
||||
assert.equal(batch.records.length, 19);
|
||||
const older = batch.records.filter((r) => r.status === "outside-cohort");
|
||||
assert.equal(older.length, 7);
|
||||
assert.equal(older.length, 10);
|
||||
assert.ok(older.every((r) => !r.companyId && r.evidenceIds?.length));
|
||||
assert.equal(batch.records.find((r) => r.name === "Trace")?.companyId, "YC30687");
|
||||
const trace = snapshot.companies.find((c) => c.id === "YC30687")!;
|
||||
@@ -300,7 +300,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, 21);
|
||||
assert.equal(snapshot.candidateBatches!.flatMap((b) => b.records).filter((r) => r.status === "pending-year").length, 17);
|
||||
});
|
||||
|
||||
test("product pivots and founder histories do not become new company years or current revenue", () => {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"version": "2026-10-30-tc-2",
|
||||
"version": "2026-10-30-ph-history-1",
|
||||
"asOf": "2026-10-30",
|
||||
"scope": "全球公开资料研究:保留首批个案,并扩展核查2025—2026八个YC批次候选池;成立年份以官方公司页面字段为依据。",
|
||||
"limitations": [
|
||||
@@ -427,18 +427,32 @@
|
||||
"location": "美国旧金山",
|
||||
"business": "金融服务后台与客户服务操作Agent",
|
||||
"buyer": "金融与保险机构",
|
||||
"delivery": "自述四周达到50万美元ARR",
|
||||
"notes": "ARR统计日期和经常性定义不完整",
|
||||
"delivery": "官网自述现有金融系统内执行工作流,提供模拟、渐进部署、人工审批及审计记录;未独立实测。",
|
||||
"notes": "四周50万美元ARR仍缺日历截止日及经常性定义。现行按结果/用量收费可能有收入波动;官网改善百分比不是收入或独立性能验证。",
|
||||
"cohort": "2025年成立",
|
||||
"teamBasis": "YC Team Size,公司自述;访问快照,业务截至日未注明",
|
||||
"datePrecision": "年",
|
||||
"price": "未逐一核验定价页",
|
||||
"price": "官网文章说明结果与用量混合收费;单位价格、最低承诺、失败重试和验收条款未公开",
|
||||
"stage": "公开资料,商用成熟度待核验",
|
||||
"sourceType": "公司在YC的自述资料",
|
||||
"evidenceIds": [
|
||||
"E015"
|
||||
"E015",
|
||||
"E102",
|
||||
"ELOQ-HOME",
|
||||
"ELOQ-OUTCOME"
|
||||
],
|
||||
"revenueStatus": "self"
|
||||
"revenueStatus": "self",
|
||||
"businessModel": "复杂任务按成功结果收费,分类和路由等简单任务按用量收费;具体合同待核",
|
||||
"pricingEvidence": "ELOQ-OUTCOME",
|
||||
"technicalReview": {
|
||||
"level": "description",
|
||||
"reviewedAt": "2026-10-30",
|
||||
"summary": "已读工作流、安全控制及收费自述;未复测自动化率、系统集成或审计可用性,页面演示不是独立技术评估。",
|
||||
"evidenceIds": [
|
||||
"ELOQ-HOME",
|
||||
"ELOQ-OUTCOME"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "AI016",
|
||||
@@ -456,13 +470,15 @@
|
||||
"cohort": "2025年成立",
|
||||
"teamBasis": "YC Team Size,公司自述;访问快照,业务截至日未注明",
|
||||
"datePrecision": "年",
|
||||
"price": "PRO页面标99美元/月,包含2个Agent及月度触达额度;附加用量另计。",
|
||||
"price": "PRO原文$99/月,含2个Agent和至多1800个月度触达;CUSTOM含更高用量、集成、引导与专人支持,询价;币种代码待核",
|
||||
"stage": "公开资料,商用成熟度待核验",
|
||||
"sourceType": "公司在YC的自述资料",
|
||||
"pricingEvidence": "E131",
|
||||
"evidenceIds": [
|
||||
"E016",
|
||||
"MR-E-superfruits"
|
||||
"MR-E-superfruits",
|
||||
"E101",
|
||||
"E131"
|
||||
],
|
||||
"revenueStatus": "self",
|
||||
"businessModel": "软件订阅"
|
||||
@@ -1417,26 +1433,29 @@
|
||||
"url": "https://peec.ai",
|
||||
"cat": "C06",
|
||||
"year": 2025,
|
||||
"team": 70,
|
||||
"team": 100,
|
||||
"location": "德国柏林 / 美国纽约",
|
||||
"business": "追踪品牌在AI搜索中的可见度,并以Agent协助研究、内容建议和工具间任务交接。",
|
||||
"buyer": "品牌营销团队与代理机构",
|
||||
"delivery": "2026-10-22公司公告称超过3500家公司采用,发布Peec Agent;未独立测试效果",
|
||||
"notes": "2025年1月成立、2月产品上线;团队2024年已在Antler相识。",
|
||||
"notes": "2025年1月成立、2月产品上线;2024团队在Antler相识。招聘转载的1500万ARR缺明确截止日及币种代码,与8月第三方估算不视为相互独立验证。",
|
||||
"cohort": "2025年成立",
|
||||
"teamBasis": "2026-05-28公司披露超过70名员工;70为下界,非10月人数",
|
||||
"price": "本轮未核验当前套餐",
|
||||
"teamBasis": "2026-10-30访问公司招聘转载列100+,作为下界;页面Posted on 2026-09-22不等业务截止日,未独立核实",
|
||||
"price": "品牌套餐比较表原文$95/$245/$495每月,企业询价;按提示词、模型与项目及Agent额度区分,席位不限;币种代码待核",
|
||||
"stage": "有公司披露的商业使用",
|
||||
"sourceType": "公司公告;第三方估算单列",
|
||||
"evidenceIds": [
|
||||
"E088",
|
||||
"E089",
|
||||
"E090",
|
||||
"DATE-PEEC-OCT"
|
||||
"DATE-PEEC-OCT",
|
||||
"PEEC-PRICE",
|
||||
"PEEC-JOBS"
|
||||
],
|
||||
"revenueStatus": "self",
|
||||
"teamBound": ">",
|
||||
"businessModel": "订阅计划含Agent额度,可追加月度credits;收入拆分待核"
|
||||
"teamBound": "≥",
|
||||
"businessModel": "订阅计划含Agent额度,可追加月度credits;收入拆分待核",
|
||||
"pricingEvidence": "PEEC-PRICE"
|
||||
},
|
||||
{
|
||||
"id": "AI056",
|
||||
@@ -29810,7 +29829,7 @@
|
||||
"evidence": "E089",
|
||||
"scope": "公司整体",
|
||||
"selection": "signal",
|
||||
"reason": "本轮最近可直接读取的公司披露;非当前10月值",
|
||||
"reason": "本轮有明确公告时点的公司美元披露;招聘另有1500万声明但币种与业务截止日待核,非当前10月值",
|
||||
"bound": ">",
|
||||
"comparisonGroup": null
|
||||
},
|
||||
@@ -31871,6 +31890,36 @@
|
||||
"reason": "采用和token吞吐不等于收入;日期与定义未对齐时不合并、不反推ARR。",
|
||||
"bound": ">",
|
||||
"comparisonGroup": null
|
||||
},
|
||||
{
|
||||
"id": "PEEC-JOB-ARR",
|
||||
"company": "AI055",
|
||||
"name": "Peec AI",
|
||||
"kind": "ARR(招聘自述)",
|
||||
"value": 15000000,
|
||||
"unit": "原文$,币种待核",
|
||||
"timing": "2026-10-30访问;招聘页列2026-09-22发布,18个月里程碑的日历业务截止日未注明",
|
||||
"evidence": "PEEC-JOBS",
|
||||
"scope": "公司整体",
|
||||
"selection": "historical",
|
||||
"reason": "招聘自述非独立审计;不由发布日期推业务时点,不与Sacra估算合并或作为同期美元ARR",
|
||||
"bound": "=",
|
||||
"comparisonGroup": null
|
||||
},
|
||||
{
|
||||
"id": "PEEC-JOB-TEAM",
|
||||
"company": "AI055",
|
||||
"name": "Peec AI",
|
||||
"kind": "团队人数",
|
||||
"value": 100,
|
||||
"unit": "人",
|
||||
"timing": "2026-10-30访问招聘转载;人数统计日未注明",
|
||||
"evidence": "PEEC-JOBS",
|
||||
"scope": "公司团队",
|
||||
"selection": "scale",
|
||||
"reason": "原文100+作为人数下界;不同时间和来源的团队数字不相加或平均",
|
||||
"bound": "≥",
|
||||
"comparisonGroup": null
|
||||
}
|
||||
],
|
||||
"evidence": [
|
||||
@@ -32800,14 +32849,14 @@
|
||||
},
|
||||
{
|
||||
"id": "E131",
|
||||
"companyId": null,
|
||||
"companyId": "AI016",
|
||||
"title": "Gojiberry AI定价口径",
|
||||
"url": "https://gojiberry.ai/",
|
||||
"publishedAt": null,
|
||||
"accessedAt": "2026-10-30",
|
||||
"kind": "公司官方定价或说明",
|
||||
"summary": "PRO页面标99美元/月,包含2个Agent及月度触达额度;附加用量另计。",
|
||||
"limitation": "访问快照2026-10-30;不据标价推算收入或毛利"
|
||||
"summary": "PRO原文$99/月,包含2个Agent及至多1800个月度触达;CUSTOM询价,提供更高用量、集成和支持。",
|
||||
"limitation": "2026-10-30访问快照;$未明确币种代码,保留报价原文,不据标价、试用或采用团队数反推收入或毛利。"
|
||||
},
|
||||
{
|
||||
"id": "E132",
|
||||
@@ -45084,6 +45133,160 @@
|
||||
"kind": "公司官方材料",
|
||||
"summary": "2025-04-29公告发布永久资本平台,用于长期投资、收购及运营企业。",
|
||||
"limitation": "公告日期为公开发布时点,不单独充当工商注册或精确成立年;不将Thrive Capital历史和被收购企业历史并为新AI公司的有机增长。"
|
||||
},
|
||||
{
|
||||
"id": "ELOQ-HOME",
|
||||
"companyId": "AI015",
|
||||
"title": "Eloquent官方现行金融工作流说明",
|
||||
"url": "https://eloquentai.co/",
|
||||
"publishedAt": null,
|
||||
"accessedAt": "2026-10-30",
|
||||
"kind": "公司官方材料",
|
||||
"summary": "官网描述在现有银行、CRM和邮件系统中执行受监管工作流,包含模拟、分阶段部署、人工审批及审计记录。",
|
||||
"limitation": "自动化比例、无API及集成效果为公司自述;界面案例和成本改善不当独立基准、真实交易或收入。"
|
||||
},
|
||||
{
|
||||
"id": "ELOQ-OUTCOME",
|
||||
"companyId": "AI015",
|
||||
"title": "Eloquent官方按结果与用量收费说明",
|
||||
"url": "https://eloquentai.co/resources/pay-for-success-how-outcome-based-pricing-is-revolutionizing-customer-support",
|
||||
"publishedAt": "2026-06-26",
|
||||
"accessedAt": "2026-10-30",
|
||||
"kind": "公司官方材料",
|
||||
"summary": "官方文章称复杂问题按成功结果收费,未解决的处理不收费;分类、路由等简单任务按用量计费。博客索引列2026-06-26。",
|
||||
"limitation": "没有公开单位报价或合同,成功定义、客户验收、返工及人工成本待核;客户节省成本不作公司收入,按结果收费不能直接当固定订阅ARR。"
|
||||
},
|
||||
{
|
||||
"id": "PEEC-PRICE",
|
||||
"companyId": "AI055",
|
||||
"title": "Peec官方品牌套餐计价维度",
|
||||
"url": "https://peec.ai/pricing",
|
||||
"publishedAt": null,
|
||||
"accessedAt": "2026-10-30",
|
||||
"kind": "公司官方材料",
|
||||
"summary": "套餐比较表列Starter原文$95/mo、Pro $245/mo、Advanced $495/mo,企业询价;包含不同提示词、模型、项目和Agent额度,用户席位不限。",
|
||||
"limitation": "原文$未见币种代码,保留标价而不转美元观测;额度、订阅标价和采用品牌数不能直接推ARPA、ARR或利润。"
|
||||
},
|
||||
{
|
||||
"id": "PEEC-JOBS",
|
||||
"companyId": "AI055",
|
||||
"title": "Peec在投资方招聘站的经营自述",
|
||||
"url": "https://careers.antler.co/companies/peec-ai/jobs/94213791-customer-success-manager-seo",
|
||||
"publishedAt": "2026-09-22",
|
||||
"accessedAt": "2026-10-30",
|
||||
"kind": "公司招聘自述转载",
|
||||
"summary": "招聘页列Posted on 2026-09-22;公司介绍称18个月达到原文$15M ARR及100+团队,柏林与纽约两地。",
|
||||
"limitation": "属于公司招聘文案的转载,不是独立财务验证;发布日期不保证业务截止日或内容最后更新日,$未明确币种代码。原始招聘链接本次读取失败,保留访问缺项。"
|
||||
},
|
||||
{
|
||||
"id": "CTX-BVP",
|
||||
"companyId": null,
|
||||
"title": "Bessemer 2025报告的样本与商业年龄",
|
||||
"url": "https://www.bvp.com/atlas/the-state-of-ai-2025",
|
||||
"publishedAt": "2025-08-13",
|
||||
"accessedAt": "2026-10-30",
|
||||
"kind": "行业报告原始方法说明",
|
||||
"summary": "主动选取20家高增长AI企业,含组合内外公司;非随机普查;企业增长与毛利基准,按商业化后的第几年比较。2025-08-13报告;商业化年数不等法律成立年。",
|
||||
"limitation": "已核方法与增长/毛利基准段;未取得20家逐公司底表。高增长选样和投资机构利益关系;不能把头部样本均值当各领域平均或新成立公司总体。"
|
||||
},
|
||||
{
|
||||
"id": "CTX-MENLO",
|
||||
"companyId": null,
|
||||
"title": "Menlo 2025报告的采购调查与市场范围",
|
||||
"url": "https://menlovc.com/perspective/2025-the-state-of-generative-ai-in-the-enterprise/",
|
||||
"publishedAt": null,
|
||||
"accessedAt": "2026-10-30",
|
||||
"kind": "行业报告原始方法说明",
|
||||
"summary": "495名美国企业AI采购/开发决策者,企业已主动使用AI;采购调查与自下而上的市场支出估算,非公司逐项ARR。2025-11-07至11-25调查,市场判断截至2025-12。",
|
||||
"limitation": "已核公开方法、范围及限制;受访个体与公司估算底表未取得。仅美国企业;排除芯片、推理/模型服务及既有软件内嵌AI功能,不能与包含这些项目的总量直接比较或分摊为单家公司ARR。"
|
||||
},
|
||||
{
|
||||
"id": "CTX-STRIPE",
|
||||
"companyId": null,
|
||||
"title": "Stripe 2025年度信的平台分组与收入边界",
|
||||
"url": "https://assets.stripeassets.com/fzn2n1nzq965/3LlGw839Q6kUwxZlLZDtH6/75ddcbada4aa7743dd8ec7d0f9ca497e/Stripe-annual-letter-2025-desktop.pdf",
|
||||
"publishedAt": "2026-02-24",
|
||||
"accessedAt": "2026-10-30",
|
||||
"kind": "行业报告原始方法说明",
|
||||
"summary": "2025年开始使用Stripe的商户分组,另有Atlas注册企业分组;平台交易量、商户增长及达到收入门槛的数量;分母不同。2025年度;2026-02-24年度信。",
|
||||
"limitation": "已读并视觉核对PDF第1、3页;未取得商户明细与完整分组计算底表。开始使用平台不等成立年,也非AI公司专属样本;交易量不等Stripe收入,门槛数量翻倍不等ARR均值翻倍;不与TrustMRR公开者样本混算。"
|
||||
},
|
||||
{
|
||||
"id": "CTX-SAASCAP",
|
||||
"companyId": null,
|
||||
"title": "SaaS Capital 2026增长报告的公开样本说明",
|
||||
"url": "https://www.saas-capital.com/research/private-saas-company-growth-rate-benchmarks/",
|
||||
"publishedAt": null,
|
||||
"accessedAt": "2026-10-30",
|
||||
"kind": "行业报告原始方法说明",
|
||||
"summary": "第15次年度调查,超过1000家私营B2B SaaS公司;2025年度增长率与留存等公开摘要;非ARR金额分布。2026报告回顾2025增长;不把报告年当公司成立年。",
|
||||
"limitation": "仅读公开摘要;完整下载需填写表单,未提交表单或取得完整底表。样本不是两年新AI公司;增长率中位数不能当ARR中位数;完整抽样与指标细节仍缺,不外推至硬件、项目服务或所有AI模式。"
|
||||
},
|
||||
{
|
||||
"id": "PH-SCREEN-HISTORY",
|
||||
"companyId": null,
|
||||
"title": "Screen Studio原版与3.0的发布历史",
|
||||
"url": "https://www.producthunt.com/products/screen-studio/launches/screen-studio",
|
||||
"publishedAt": null,
|
||||
"accessedAt": "2026-10-30",
|
||||
"kind": "平台产品发布记录",
|
||||
"summary": "平台历史区分原版2022-11-09发布和3.0于2025-02-06发布,关联同一screen.studio域名。",
|
||||
"limitation": "记录的是产品发布历史,非法律注册年或独立财务核验;3.0版本不作新公司证明,AI是否主营仍未核。"
|
||||
},
|
||||
{
|
||||
"id": "PH-TOOLFINDER-FOUNDER",
|
||||
"companyId": null,
|
||||
"title": "Tool Finder创作者2023年发布说明",
|
||||
"url": "https://francescod.medium.com/introducing-tool-finder-89bfd42f077f",
|
||||
"publishedAt": "2023-01-12",
|
||||
"accessedAt": "2026-10-30",
|
||||
"kind": "创作者原始公告",
|
||||
"summary": "Francesco D’Alessio于2023-01-12介绍Tool Finder,称已发布工具发现网站,关联toolfinder.co。",
|
||||
"limitation": "证明2025前已存在业务,不是精确公司注册日;作者的其他业务、目录内工具收入不归Tool Finder。"
|
||||
},
|
||||
{
|
||||
"id": "PH-TOOLFINDER-ABOUT",
|
||||
"companyId": null,
|
||||
"title": "Tool Finder现行团队与业务关联",
|
||||
"url": "https://toolfinder.com/about",
|
||||
"publishedAt": null,
|
||||
"accessedAt": "2026-10-30",
|
||||
"kind": "公司官方材料",
|
||||
"summary": "现行About页面列Francesco D’Alessio为创始人;网站提供工具发现、评测和付费厂商页面等服务,页脚列Keep Productive Ltd。",
|
||||
"limitation": "页面Est.2012可能是团队/媒体历史,不直接作为产品或法律主体成立年;工具目录和评测不自动属于AI产品公司主营。"
|
||||
},
|
||||
{
|
||||
"id": "PH-BASALT-2024",
|
||||
"companyId": null,
|
||||
"title": "Hexa在2024年介绍Basalt业务",
|
||||
"url": "https://www.hexa.com/blog/news/introducing-batch-2024-hx24",
|
||||
"publishedAt": "2024-12-17",
|
||||
"accessedAt": "2026-10-30",
|
||||
"kind": "创业工作室原始公告",
|
||||
"summary": "2024-12-17创业工作室公告已列Basalt、getbasalt.ai及Guillaume Marquis、Francois de Fitte,描述提示词、测试、部署和监控业务。",
|
||||
"limitation": "证明2025前已有对应业务与团队,不把HX24批次当精确注册年;2025平台发布及质量宣传不证明新公司或独立技术性能。"
|
||||
},
|
||||
{
|
||||
"id": "PH-DATAFAST-HISTORY",
|
||||
"companyId": null,
|
||||
"title": "DataFast官方2024年功能更新",
|
||||
"url": "https://datafa.st/changelog/goal-tracking",
|
||||
"publishedAt": "2024-11-12",
|
||||
"accessedAt": "2026-10-30",
|
||||
"kind": "公司官方产品更新",
|
||||
"summary": "官网2024-11-12功能更新介绍访客旅程和目标跟踪,并关联同一datafa.st产品;更新索引另列2024-12-27邮件报告。",
|
||||
"limitation": "是2025前产品业务证据,非法律注册日;不以域名注册、后续PH上线或MCP功能上线确定公司成立年。"
|
||||
},
|
||||
{
|
||||
"id": "PH-DATAFAST-TERMS",
|
||||
"companyId": null,
|
||||
"title": "DataFast现行分析与计费条款",
|
||||
"url": "https://datafa.st/tos",
|
||||
"publishedAt": "2026-02-15",
|
||||
"accessedAt": "2026-10-30",
|
||||
"kind": "公司官方材料",
|
||||
"summary": "条款列14天试用、订阅及按月事件额度,事件包括浏览、支付和自定义目标;年付也按月计量额度。",
|
||||
"limitation": "政策生效日不当成立年;被跟踪网站的支付/收入事件是客户数据,不是DataFast自身收入;创作者历史总业绩不转为该产品ARR。"
|
||||
}
|
||||
],
|
||||
"reviews": [
|
||||
@@ -46092,6 +46295,129 @@
|
||||
"companyIds": [
|
||||
"AI077"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "ELOQ-R-PRICING",
|
||||
"type": "结果与用量收费的ARR可比性",
|
||||
"company": "Eloquent AI",
|
||||
"summary": "官方说明复杂问题按结果收费、简单任务按用量;旧ARR里程碑仍没有明确日历时点及经常性定义。",
|
||||
"evidenceIds": [
|
||||
"E102",
|
||||
"ELOQ-OUTCOME",
|
||||
"ELOQ-HOME"
|
||||
],
|
||||
"handling": "区分成功验收、失败及重试、最低承诺、实际使用与软件订阅;客户降本不作供应商收入,未补足合同及截止日前不进入同期ARR比较。",
|
||||
"scope": "companies",
|
||||
"companyIds": [
|
||||
"AI015"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "PEEC-R-JOBS",
|
||||
"type": "招聘里程碑、估算及报价口径",
|
||||
"company": "Peec AI",
|
||||
"summary": "招聘转载列1500万ARR及100+团队;业务时点与币种代码未明确。品牌套餐有标价和额度,但采用品牌不等付费客户。",
|
||||
"evidenceIds": [
|
||||
"PEEC-JOBS",
|
||||
"PEEC-PRICE",
|
||||
"E089",
|
||||
"E090"
|
||||
],
|
||||
"handling": "招聘和第三方估算分开,不把相近数字当独立验证;5月披露不平移为10月值,报价不反推ARR或ARPA。团队只保留下界,发布日期不当业务截至日。",
|
||||
"scope": "companies",
|
||||
"companyIds": [
|
||||
"AI055"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "CTX-BVP-R",
|
||||
"type": "背景基准适用性",
|
||||
"company": "S06行业背景研究",
|
||||
"summary": "主动选取20家高增长AI企业,含组合内外公司;非随机普查;企业增长与毛利基准,按商业化后的第几年比较。",
|
||||
"evidenceIds": [
|
||||
"CTX-BVP"
|
||||
],
|
||||
"handling": "用于提出留存、毛利、资本效率假设及分类线索;高增长选样和投资机构利益关系;不能把头部样本均值当各领域平均或新成立公司总体。不新增公司收入观测,也不从样本差异推财务造假。",
|
||||
"scope": "dataset"
|
||||
},
|
||||
{
|
||||
"id": "CTX-MENLO-R",
|
||||
"type": "背景基准适用性",
|
||||
"company": "S07行业背景研究",
|
||||
"summary": "495名美国企业AI采购/开发决策者,企业已主动使用AI;采购调查与自下而上的市场支出估算,非公司逐项ARR。",
|
||||
"evidenceIds": [
|
||||
"CTX-MENLO"
|
||||
],
|
||||
"handling": "用于买家、采购方式和任务方向假设;仅美国企业;排除芯片、推理/模型服务及既有软件内嵌AI功能,不能与包含这些项目的总量直接比较或分摊为单家公司ARR。不新增公司收入观测,也不从样本差异推财务造假。",
|
||||
"scope": "dataset"
|
||||
},
|
||||
{
|
||||
"id": "CTX-STRIPE-R",
|
||||
"type": "背景基准适用性",
|
||||
"company": "S08行业背景研究",
|
||||
"summary": "2025年开始使用Stripe的商户分组,另有Atlas注册企业分组;平台交易量、商户增长及达到收入门槛的数量;分母不同。",
|
||||
"evidenceIds": [
|
||||
"CTX-STRIPE"
|
||||
],
|
||||
"handling": "用于支付、全球市场及首次收费速度假设;开始使用平台不等成立年,也非AI公司专属样本;交易量不等Stripe收入,门槛数量翻倍不等ARR均值翻倍;不与TrustMRR公开者样本混算。不新增公司收入观测,也不从样本差异推财务造假。",
|
||||
"scope": "dataset"
|
||||
},
|
||||
{
|
||||
"id": "CTX-SAASCAP-R",
|
||||
"type": "背景基准适用性",
|
||||
"company": "S09行业背景研究",
|
||||
"summary": "第15次年度调查,超过1000家私营B2B SaaS公司;2025年度增长率与留存等公开摘要;非ARR金额分布。",
|
||||
"evidenceIds": [
|
||||
"CTX-SAASCAP"
|
||||
],
|
||||
"handling": "用于B2B订阅软件的规模、融资和留存分层假设;样本不是两年新AI公司;增长率中位数不能当ARR中位数;完整抽样与指标细节仍缺,不外推至硬件、项目服务或所有AI模式。不新增公司收入观测,也不从样本差异推财务造假。",
|
||||
"scope": "dataset"
|
||||
},
|
||||
{
|
||||
"id": "PH26-17-R-HISTORY",
|
||||
"type": "既有业务与新版本边界",
|
||||
"company": "DataFast(候选排除)",
|
||||
"summary": "官网2024-11-12功能更新证明原产品已存在;按既有业务排除,不将PH发布年、条款日期或域名注册年当成立年。支付分析是客户数据,创作者历史总业绩不作为DataFast收入;新法律主体是否存在未核。",
|
||||
"evidenceIds": [
|
||||
"PH-DATAFAST-HISTORY",
|
||||
"PH-DATAFAST-TERMS"
|
||||
],
|
||||
"handling": "不凭发布榜单或版本更新新增两年成立公司;保留产品历史与法律成立精度差异,不新增收入或技术排名观测。",
|
||||
"scope": "excluded-candidate"
|
||||
},
|
||||
{
|
||||
"id": "PH25-01-R-HISTORY",
|
||||
"type": "既有业务与新版本边界",
|
||||
"company": "Screen Studio 3.0(候选排除)",
|
||||
"summary": "平台原版2022发布与2025年3.0为同一产品业务,不凭版本更新新增2025公司;按既有业务排除,精确法律成立日及AI主营未核。",
|
||||
"evidenceIds": [
|
||||
"PH-SCREEN-HISTORY"
|
||||
],
|
||||
"handling": "不凭发布榜单或版本更新新增两年成立公司;保留产品历史与法律成立精度差异,不新增收入或技术排名观测。",
|
||||
"scope": "excluded-candidate"
|
||||
},
|
||||
{
|
||||
"id": "PH25-11-R-HISTORY",
|
||||
"type": "既有业务与新版本边界",
|
||||
"company": "Tool Finder(候选排除)",
|
||||
"summary": "创作者2023公告证明工具发现业务已存在,现行官网关联同一创始人与Keep Productive;按2025前既有业务排除,不将Est.2012当精确法律成立年,也不把目录收录的AI工具当自身主营。",
|
||||
"evidenceIds": [
|
||||
"PH-TOOLFINDER-FOUNDER",
|
||||
"PH-TOOLFINDER-ABOUT"
|
||||
],
|
||||
"handling": "不凭发布榜单或版本更新新增两年成立公司;保留产品历史与法律成立精度差异,不新增收入或技术排名观测。",
|
||||
"scope": "excluded-candidate"
|
||||
},
|
||||
{
|
||||
"id": "PH25-15-R-HISTORY",
|
||||
"type": "既有业务与新版本边界",
|
||||
"company": "Basalt(候选排除)",
|
||||
"summary": "Hexa的2024-12-17公告已列同一域名、团队和AI评估部署业务;不因2025 PH发布算新公司。按既有业务排除,批次不当精确法律成立年,99%质量宣传未独立验证。",
|
||||
"evidenceIds": [
|
||||
"PH-BASALT-2024"
|
||||
],
|
||||
"handling": "不凭发布榜单或版本更新新增两年成立公司;保留产品历史与法律成立精度差异,不新增收入或技术排名观测。",
|
||||
"scope": "excluded-candidate"
|
||||
}
|
||||
],
|
||||
"coverage": {
|
||||
@@ -46349,8 +46675,12 @@
|
||||
"categoryId": "C05",
|
||||
"kind": "product",
|
||||
"profileStatus": "readable",
|
||||
"status": "pending-year",
|
||||
"note": "候选分类按发布定位初分;公司成立年、主体及收入待核,不能因2026榜单就加入成立年样本。"
|
||||
"status": "outside-cohort",
|
||||
"note": "官网2024-11-12功能更新证明原产品已存在;按既有业务排除,不将PH发布年、条款日期或域名注册年当成立年。支付分析是客户数据,创作者历史总业绩不作为DataFast收入;新法律主体是否存在未核。",
|
||||
"evidenceIds": [
|
||||
"PH-DATAFAST-HISTORY",
|
||||
"PH-DATAFAST-TERMS"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "PH26-18",
|
||||
@@ -46399,10 +46729,11 @@
|
||||
"categoryId": "C08",
|
||||
"kind": "product",
|
||||
"profileStatus": "readable",
|
||||
"status": "pending-year",
|
||||
"note": "产品页还列2022年首次发布;公司成立年和AI主营仍待核,不因3.0版本重新算新公司。",
|
||||
"status": "outside-cohort",
|
||||
"note": "平台原版2022发布与2025年3.0为同一产品业务,不凭版本更新新增2025公司;按既有业务排除,精确法律成立日及AI主营未核。",
|
||||
"evidenceIds": [
|
||||
"PH25-E-01"
|
||||
"PH25-E-01",
|
||||
"PH-SCREEN-HISTORY"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -46539,10 +46870,12 @@
|
||||
"categoryId": "C05",
|
||||
"kind": "product",
|
||||
"profileStatus": "readable",
|
||||
"status": "pending-year",
|
||||
"note": "资料显示较早产品发布;公司成立年与是否AI主营待核,不能把软件目录直接当AI公司。",
|
||||
"status": "outside-cohort",
|
||||
"note": "创作者2023公告证明工具发现业务已存在,现行官网关联同一创始人与Keep Productive;按2025前既有业务排除,不将Est.2012当精确法律成立年,也不把目录收录的AI工具当自身主营。",
|
||||
"evidenceIds": [
|
||||
"PH25-E-11"
|
||||
"PH25-E-11",
|
||||
"PH-TOOLFINDER-FOUNDER",
|
||||
"PH-TOOLFINDER-ABOUT"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -46593,10 +46926,11 @@
|
||||
"categoryId": "C03",
|
||||
"kind": "product",
|
||||
"profileStatus": "readable",
|
||||
"status": "pending-year",
|
||||
"note": "AI评估、监控及部署工具;仅有2025发布信息,成立年待核,质量宣传未独立测试。",
|
||||
"status": "outside-cohort",
|
||||
"note": "Hexa的2024-12-17公告已列同一域名、团队和AI评估部署业务;不因2025 PH发布算新公司。按既有业务排除,批次不当精确法律成立年,99%质量宣传未独立验证。",
|
||||
"evidenceIds": [
|
||||
"PH25-E-15"
|
||||
"PH25-E-15",
|
||||
"PH-BASALT-2024"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"version": "2026-10-30-9",
|
||||
"version": "2026-10-30-11",
|
||||
"scopeConfirmedAt": "2026-10-30",
|
||||
"acceptance": "以确认的公开来源清单为边界,逐条核对并标明缺项。",
|
||||
"provenance": "S01—S12恢复自已提交用户的《AI公司研究_来源与分类模板》来源清单;S13—S16单列后续已使用的补充证据渠道,不将使用次数当作全量覆盖。",
|
||||
@@ -60,8 +60,8 @@
|
||||
"producthunt.com"
|
||||
],
|
||||
"initialAccess": "官网可读取",
|
||||
"boundary": "2026与2025年度档案各登记首个公开响应19条,共38条候选/推广;2025另有一个仅图片位置未解析。已逐条保留关联、范围外与年份待核状态,未穷尽两年档案。",
|
||||
"nextCheck": "继续补两年其余分页/日期、仅图片位置及18条年份待核候选;保留Pazi日期冲突,核清品牌与主体,避免转移历史业绩。",
|
||||
"boundary": "两年公开响应各19条,共38条。当前4条关联公司、2条范围外对照、16条范围外/既有业务、14条年份待核、2条推广。补Screen Studio、Tool Finder、Basalt、DataFast历史证据;非两年全量。",
|
||||
"nextCheck": "继续补两年其余分页/日期、仅图片位置及14条年份待核候选;保留Pazi日期冲突,核清品牌与主体,避免转移历史业绩。",
|
||||
"limitation": "上线时间不等于成立时间",
|
||||
"accessRecheckedAt": "2026-10-30"
|
||||
},
|
||||
@@ -90,9 +90,22 @@
|
||||
"bvp.com"
|
||||
],
|
||||
"initialAccess": "报告页面可读取",
|
||||
"boundary": "用于行业分类和增长研究背景;不是新成立公司普查。",
|
||||
"nextCheck": "核报告样本、方法与年份,不能将组合公司清单当总体。",
|
||||
"limitation": "投资机构选样偏差"
|
||||
"boundary": "主动选取20家高增长AI企业,含组合内外公司;非随机普查;已核方法与增长/毛利基准段;未取得20家逐公司底表。仅背景基准,不构成两年新公司名录。",
|
||||
"nextCheck": "高增长选样和投资机构利益关系;不能把头部样本均值当各领域平均或新成立公司总体;需要公开可核底表时另补,不把缺项当已完成。",
|
||||
"limitation": "投资机构选样偏差",
|
||||
"accessRecheckedAt": "2026-10-30",
|
||||
"methodology": {
|
||||
"sample": "主动选取20家高增长AI企业,含组合内外公司;非随机普查",
|
||||
"unit": "企业增长与毛利基准,按商业化后的第几年比较",
|
||||
"period": "2025-08-13报告;商业化年数不等法律成立年",
|
||||
"access": "已核方法与增长/毛利基准段;未取得20家逐公司底表",
|
||||
"use": "用于提出留存、毛利、资本效率假设及分类线索",
|
||||
"limit": "高增长选样和投资机构利益关系;不能把头部样本均值当各领域平均或新成立公司总体",
|
||||
"evidenceIds": [
|
||||
"CTX-BVP"
|
||||
],
|
||||
"checkedAt": "2026-10-30"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "S07",
|
||||
@@ -105,9 +118,22 @@
|
||||
"www.menlovc.com"
|
||||
],
|
||||
"initialAccess": "报告页面可读取",
|
||||
"boundary": "用于企业采购背景;不把调研比例转换为公司ARR。",
|
||||
"nextCheck": "保留调研方法、采购样本及与新公司样本的差异。",
|
||||
"limitation": "口径与样本需查看方法说明"
|
||||
"boundary": "495名美国企业AI采购/开发决策者,企业已主动使用AI;已核公开方法、范围及限制;受访个体与公司估算底表未取得。仅背景基准,不构成两年新公司名录。",
|
||||
"nextCheck": "仅美国企业;排除芯片、推理/模型服务及既有软件内嵌AI功能,不能与包含这些项目的总量直接比较或分摊为单家公司ARR;需要公开可核底表时另补,不把缺项当已完成。",
|
||||
"limitation": "口径与样本需查看方法说明",
|
||||
"accessRecheckedAt": "2026-10-30",
|
||||
"methodology": {
|
||||
"sample": "495名美国企业AI采购/开发决策者,企业已主动使用AI",
|
||||
"unit": "采购调查与自下而上的市场支出估算,非公司逐项ARR",
|
||||
"period": "2025-11-07至11-25调查,市场判断截至2025-12",
|
||||
"access": "已核公开方法、范围及限制;受访个体与公司估算底表未取得",
|
||||
"use": "用于买家、采购方式和任务方向假设",
|
||||
"limit": "仅美国企业;排除芯片、推理/模型服务及既有软件内嵌AI功能,不能与包含这些项目的总量直接比较或分摊为单家公司ARR",
|
||||
"evidenceIds": [
|
||||
"CTX-MENLO"
|
||||
],
|
||||
"checkedAt": "2026-10-30"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "S08",
|
||||
@@ -117,12 +143,26 @@
|
||||
"status": "context",
|
||||
"hosts": [
|
||||
"stripe.com",
|
||||
"www.stripe.com"
|
||||
"www.stripe.com",
|
||||
"assets.stripeassets.com"
|
||||
],
|
||||
"initialAccess": "年度信可读取",
|
||||
"boundary": "年度平台观察,不提供可公开穷尽的新AI商户名录。",
|
||||
"nextCheck": "与TrustMRR支付重建数据分开;不据平台总量推算单家公司。",
|
||||
"limitation": "平台样本不能代表全部AI公司"
|
||||
"boundary": "2025年开始使用Stripe的商户分组,另有Atlas注册企业分组;已读并视觉核对PDF第1、3页;未取得商户明细与完整分组计算底表。仅背景基准,不构成两年新公司名录。",
|
||||
"nextCheck": "开始使用平台不等成立年,也非AI公司专属样本;交易量不等Stripe收入,门槛数量翻倍不等ARR均值翻倍;不与TrustMRR公开者样本混算;需要公开可核底表时另补,不把缺项当已完成。",
|
||||
"limitation": "平台样本不能代表全部AI公司",
|
||||
"accessRecheckedAt": "2026-10-30",
|
||||
"methodology": {
|
||||
"sample": "2025年开始使用Stripe的商户分组,另有Atlas注册企业分组",
|
||||
"unit": "平台交易量、商户增长及达到收入门槛的数量;分母不同",
|
||||
"period": "2025年度;2026-02-24年度信",
|
||||
"access": "已读并视觉核对PDF第1、3页;未取得商户明细与完整分组计算底表",
|
||||
"use": "用于支付、全球市场及首次收费速度假设",
|
||||
"limit": "开始使用平台不等成立年,也非AI公司专属样本;交易量不等Stripe收入,门槛数量翻倍不等ARR均值翻倍;不与TrustMRR公开者样本混算",
|
||||
"evidenceIds": [
|
||||
"CTX-STRIPE"
|
||||
],
|
||||
"checkedAt": "2026-10-30"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "S09",
|
||||
@@ -135,9 +175,22 @@
|
||||
"saas-capital.com"
|
||||
],
|
||||
"initialAccess": "研究页可读取",
|
||||
"boundary": "B2B订阅软件基准,不能直接代表新AI公司、硬件或服务企业。",
|
||||
"nextCheck": "按报告样本及营收规模使用,不强套为行业ARR分布。",
|
||||
"limitation": "不直接套用硬件与项目制业务"
|
||||
"boundary": "第15次年度调查,超过1000家私营B2B SaaS公司;仅读公开摘要;完整下载需填写表单,未提交表单或取得完整底表。仅背景基准,不构成两年新公司名录。",
|
||||
"nextCheck": "样本不是两年新AI公司;增长率中位数不能当ARR中位数;完整抽样与指标细节仍缺,不外推至硬件、项目服务或所有AI模式;需要公开可核底表时另补,不把缺项当已完成。",
|
||||
"limitation": "不直接套用硬件与项目制业务",
|
||||
"accessRecheckedAt": "2026-10-30",
|
||||
"methodology": {
|
||||
"sample": "第15次年度调查,超过1000家私营B2B SaaS公司",
|
||||
"unit": "2025年度增长率与留存等公开摘要;非ARR金额分布",
|
||||
"period": "2026报告回顾2025增长;不把报告年当公司成立年",
|
||||
"access": "仅读公开摘要;完整下载需填写表单,未提交表单或取得完整底表",
|
||||
"use": "用于B2B订阅软件的规模、融资和留存分层假设",
|
||||
"limit": "样本不是两年新AI公司;增长率中位数不能当ARR中位数;完整抽样与指标细节仍缺,不外推至硬件、项目服务或所有AI模式",
|
||||
"evidenceIds": [
|
||||
"CTX-SAASCAP"
|
||||
],
|
||||
"checkedAt": "2026-10-30"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "S10",
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"sourceVersion": "2026-10-30-tc-2",
|
||||
"sourceVersion": "2026-10-30-ph-history-1",
|
||||
"asOf": "2026-10-30",
|
||||
"metric": "platform-mrr-usd",
|
||||
"sampleUnit": "product-or-business",
|
||||
|
||||
@@ -55,6 +55,26 @@ def source_register():
|
||||
|
||||
|
||||
|
||||
def context_methods():
|
||||
evidence = {e['id']: e for e in DATA['evidence']}
|
||||
rows = [s for s in SOURCES['sources'] if s.get('methodology')]
|
||||
assert {s['id'] for s in rows} == {'S06', 'S07', 'S08', 'S09'}
|
||||
lines = ['', '## 背景基准适用性与缺项', '',
|
||||
'以下核对背景资料的方法及适用范围,不是公司名录的完整覆盖。原始方法记录与全局核查随研究版本进入同一数据库;没有把行业汇总值新增为任何公司的收入观测。', '',
|
||||
'| 来源与证据 | 样本与统计单位 | 时间 | 本次读取范围 | 可用于什么 | 主要限制 |',
|
||||
'| --- | --- | --- | --- | --- | --- |']
|
||||
for source in rows:
|
||||
m = source['methodology']
|
||||
assert m['checkedAt'] <= DATA['asOf']
|
||||
assert all(m.get(key) for key in ('sample', 'unit', 'period', 'access', 'use', 'limit', 'evidenceIds'))
|
||||
assert all(eid in evidence and evidence[eid]['companyId'] is None for eid in m['evidenceIds'])
|
||||
assert not any(o['evidence'] in m['evidenceIds'] for o in DATA['observations'])
|
||||
proof = '、'.join(f"[{eid}]({evidence[eid]['url']})" for eid in m['evidenceIds'])
|
||||
lines.append(f"| {source['id']} {source['name']}:{proof} | {m['sample']};{m['unit']} | {m['period']} | {m['access']} | {m['use']} | {m['limit']} |")
|
||||
lines += ['', '本表的应用解释属于研究判断。选样、分母、时间或指标不同会造成表观差异;这些差异不单独证明财务造假,也不能作为给未知公司填补收入的依据。', '']
|
||||
return lines
|
||||
|
||||
|
||||
def candidate_register():
|
||||
batches = DATA.get('candidateBatches', [])
|
||||
companies = {c['id']: c for c in DATA['companies']}
|
||||
@@ -67,7 +87,7 @@ def candidate_register():
|
||||
lines = []
|
||||
statuses = {'pending-year': '成立年待核', 'linked': '已关联公司',
|
||||
'existing-outside-cohort': '已有关联,年份范围外',
|
||||
'outside-cohort': '成立年范围外,不新增公司', 'promotion': '推广活动,非公司新增'}
|
||||
'outside-cohort': '范围外或既有业务,不新增公司', 'promotion': '推广活动,非公司新增'}
|
||||
for batch in batches:
|
||||
assert batch['sourceId'] in known_sources
|
||||
assert batch['accessedAt'] <= DATA['asOf']
|
||||
@@ -199,6 +219,7 @@ def render():
|
||||
lines.append(f"| 其他官网、评测及公开资料 | {len(others)} | {len({e['url'] for e in others})} | 按每条来源限制理解,不能统一当作独立证据 |")
|
||||
lines += directory_rechecks()
|
||||
lines += source_register()
|
||||
lines += context_methods()
|
||||
lines += candidate_register()
|
||||
lines += ['', '## 尚未满足的研究条件', '',
|
||||
'行业ARR比较仍缺统一业务截止日、币种、经常性定义和业务边界。现有平台MRR可描述已采集产品,不足以代表全部新公司。技术评测只覆盖所列版本与任务,不宜跨领域汇总为统一强弱分数。', '',
|
||||
|
||||
Reference in New Issue
Block a user