以下情境为教学假设,人物与数字不代表经核实的真实案例。
三卷 135 篇,写到这里要收口了。前面 38 节分别回答了收入怎么算、合同怎么看、估值怎么定、交易怎么做;这一节只做三件事:把全书的分数放在一起,把三个案例放进同一张图,把每个案例的下一步写成可执行的动作。
三卷各自回答了什么
卷一《收入与财务工程》回答「这门生意赚多少」。收入结构、单位经济、三张表、收入确认、预算、定价、集中度、现金流、税务、仪表盘、估值与尽调准备,45 篇最后收敛到一组可以复算的账。
卷二《合同、应收与风险》回答「这些钱有多确定」。合同结构、关键条款、账期与应收、坏账与催收、争议、保险、知识产权、授权交易、渠道、供应商依赖、数据责任、风险登记与连续性,45 篇最后收敛到一张风险登记册。
卷三《资本与退出》回答「整门生意能换多少钱」。融资与稀释、股权与期权、投资人关系、买方与流程、估值、尽调、交易结构、交割与迁移、合同与人员承继、税后与再投资、关停、持有与传承,45 篇最后收敛到两个分数。
三卷不是三个独立的部分,而是一条链:卷一的账是卷二判断的基础,卷二的风险是卷三定价的折扣项,卷三的价格又反过来要求卷一和卷二把数字做扎实。任何一环松动,最后的分数都会失真。
两个尺子,两个分数
第 13.2 节的健康度评分,回答「生意本身怎么样」,三个案例分别是 72、58、48。
附录 C 的交易准备度评分,回答「交易准备得怎么样」,三个案例分别是 76、60、54。
两个分数放在一起,得到六个数字:
| 案例 | 健康度 | 交易准备度 | 差值 | 位置 |
|---|---|---|---|---|
| LedgerLite | 72 | 76 | +4 | 可以进入市场 |
| Tidecast | 58 | 60 | +2 | 按资产出售 |
| Nord Studio | 48 | 54 | +6 | 先修复再谈 |
差值都在 10 分以内,说明三个案例的「身体」与「准备」大致匹配:没有出现「身体很好但完全没准备」或「准备很充分但生意很差」的极端。这是本书刻意设计的——三个案例都处在一个真实独立开发者可能处在的阶段,而不是三个极端样本。
真正有信息量的是绝对值与最弱项。
LedgerLite 两个分数都在 70 以上,是三者中唯一「可以进入市场」的。它的最弱项是交易结构与税后安排(附录 C 第 4、5 组并列 71.4%),以及可转移性(健康度 55)。这两项恰好是「已经决定要卖」之后才会暴露的问题。
Tidecast 健康度 58、准备度 60,卡在 60 这条线上。它的最弱项是融资结构(40.0%)与治理(35),说明它没有可融资的股权故事;但它的可转移性 80 分是三者中最高的,资产收购的结构最清晰。结论不是「去融资」,而是「按资产出售」。
Nord 健康度 48、准备度 54,两项都低于 60。它的最弱项是融资结构与交易准备(都是 50.0%),根子在可转移性 30 分:客户关系在两位合伙人手里,合同需要重签,关键人依赖没有替代安排。在这些问题解决之前,谈价格没有意义。
二维图:健康度 × 准备度
把两个分数画成一张二维图,以 60 分为界,得到四个象限。
右上(健康 ≥ 60,准备 ≥ 60):可以进入市场。 LedgerLite 在这里。下一步不是「继续准备」,而是「开始接触」:把材料发给有限数量的买方,设定报价区间与排他期上限,同时继续经营,不把公司变成「待售状态」。
左上(健康 < 60,准备 ≥ 60):按资产出售。 Tidecast 在这里。生意本身的增长与结构不够强,但资产清晰、可转移性高。下一步是把代码、美术、音乐授权、平台账号列成清单,按资产收购谈,不做股权融资。
右下(健康 ≥ 60,准备 < 60):先补材料。 本书三个案例没有落在这个象限,但这是最常见的状态:生意不错,材料没准备。下一步是补数据表、估值桥、尽调自查与交割清单,通常需要三到六个月。
左下(健康 < 60,准备 < 60):先修复再谈。 Nord 在这里。下一步不是交易,而是把可转移性从 30 分往上拉:签合伙人买断协议、把客户关系从个人转成公司、把关键人依赖写成书面替代安排。这些动作本身也会让生意更健康。
象限不是终身标签。生意会变,分数会变,位置也会变;每季度重算一次,比记住一个结论更有用。
三个案例的下一步
LedgerLite:把「可以卖」变成「卖得掉」。 它的两个分数都够,缺的是交易执行细节:把第 4 组的对价结构、第 5 组的税后安排补到 80% 以上;把可转移性从 55 提到 70,具体动作是客户关系书面化、运维文档化、创始人从日常支持里退出。时间预算是 6 到 9 个月。
Tidecast:放弃融资,按资产卖。 它的 40.0% 融资结构分数不是「补一补就能融资」,而是「这条路径不适合」。把资产清单做细:代码仓库、美术源文件、音乐授权期限、平台账号转让条件、玩家数据迁移方案。按资产收购谈,对价里接受一部分 earn-out,用它换取更高的总价。时间预算是 3 到 6 个月。
Nord:先修可转移性,18 个月内不谈交易。 它的 30 分可转移性不是靠一份文件能解决的:两位合伙人要先把买断协议签了,把客户关系从「认识某个人」转成「认识这家公司」,把咨询合同的标准条款固化。这些做完,健康度与准备度才可能同时过 60。时间预算是 12 到 18 个月。
三个案例的动作不同,但方法相同:先看两个分数落在哪个象限,再看最弱项,最后把最弱项拆成可以在一个季度内完成的具体动作。
代码:把定位写成函数
下面的 book-review.ts 把两个分数、阈值与四个象限写成函数。positionOf 返回位置,priorityOf 返回该先补健康度还是准备度,nextActions 返回对应动作。
// file: src/capital/book-review.ts
// tier: L1
// verify: node --test test/capital/book-review.test.ts
export interface ReviewPoint {
name: string;
health: number;
readiness: number;
}
export type Position = "market" | "asset-sale" | "prepare" | "repair";
export type Priority = "none" | "health" | "readiness" | "both";
export interface ReviewResult {
name: string;
position: Position;
priority: Priority;
healthGap: number;
readinessGap: number;
actions: string[];
}
export const THRESHOLD = 60;
export const REVIEWS: ReviewPoint[] = [
{ name: "LedgerLite", health: 72, readiness: 76 },
{ name: "Tidecast", health: 58, readiness: 60 },
{ name: "Nord Studio", health: 48, readiness: 54 },
];
function assertPoint(point: ReviewPoint): void {
for (const value of [point.health, point.readiness]) {
if (!Number.isFinite(value) || value < 0 || value > 100) {
throw new Error(`score out of range: ${value}`);
}
}
}
export function positionOf(point: ReviewPoint): Position {
assertPoint(point);
const healthy = point.health >= THRESHOLD;
const ready = point.readiness >= THRESHOLD;
if (healthy && ready) return "market";
if (!healthy && ready) return "asset-sale";
if (healthy && !ready) return "prepare";
return "repair";
}
export function priorityOf(point: ReviewPoint): Priority {
const healthGap = Math.max(0, THRESHOLD - point.health);
const readinessGap = Math.max(0, THRESHOLD - point.readiness);
if (healthGap === 0 && readinessGap === 0) return "none";
if (healthGap > 0 && readinessGap > 0) return "both";
return healthGap > 0 ? "health" : "readiness";
}
const ACTIONS: Record<Position, string[]> = {
market: [
"补齐交易结构与税后安排,把最弱组从 71.4% 拉到 80% 以上",
"准备 12 个月内的可选交易,不承诺时间表",
"保持指标口径稳定,任何口径变化都要能回溯",
],
"asset-sale": [
"按资产收购整理代码、美术、音乐授权与账号清单",
"确认平台账号可转让性,无法转让的部分单独定价",
"放弃融资路径,聚焦资产出售与 earn-out 结构",
],
prepare: [
"先把最弱维度补到 60 分,再补交易准备材料",
"把可转移性写成文件:客户关系、文档、合同转让",
"用附录 C 自评一次,确认最弱组",
],
repair: [
"先做合伙人买断协议与客户关系转移",
"18 个月内不进入市场,先把可转移性补到 60",
"把关键人依赖写成书面替代安排",
],
};
export function nextActions(point: ReviewPoint): string[] {
return ACTIONS[positionOf(point)];
}
export function review(point: ReviewPoint): ReviewResult {
return {
name: point.name,
position: positionOf(point),
priority: priorityOf(point),
healthGap: Math.max(0, THRESHOLD - point.health),
readinessGap: Math.max(0, THRESHOLD - point.readiness),
actions: nextActions(point),
};
}
export function reviewAll(points: ReviewPoint[] = REVIEWS): ReviewResult[] {
return points.map((point) => review(point));
}
export function marketReady(points: ReviewPoint[] = REVIEWS): string[] {
return points.filter((point) => positionOf(point) === "market").map((point) => point.name);
}
代码里有三个刻意的选择。
第一,阈值 60 写成常量 THRESHOLD,而不是散落在条件里。改阈值时只改一处,四个象限的判定自动跟着变;阈值是教学设定,不是行业标准。
第二,positionOf 先校验分数范围,再做判断。分数越界(负数或大于 100)直接抛错,避免把一个录入错误悄悄归到某个象限。
第三,priorityOf 返回的是「该先补哪一边」,而不是「差多少分」。健康度差 12 分、准备度差 6 分时,优先补健康度;这个判断比两个差值本身更有用。
测试覆盖三个案例的位置、缺口、动作,以及阈值边界(60 算通过,59 不通过)和越界输入。
五条全书结论
第一,收入不等于现金,现金不等于价值,价值不等于到手。 四层之间每一步都有损耗:账期占款、风险折价、税费与托管。算清每一层,才知道自己真正拿到了什么。
第二,估值先选基数,再给区间,最后交叉验证。 基数错了,倍数再准也没用;区间比单点诚实;DCF 与倍数法差得太多时,先查假设,不要取平均。
第三,交易价格 = 基准价 ± 交割调整 − 费用 − 税 − 托管占用。 报价和到手是两件事,中间隔着一整张清单。
第四,买方买的不是你的努力,是「他接手后还能不能赚到钱」。 所以可转移性不是交易阶段才考虑的事,它在第一份客户合同、第一行代码、第一次分工时就决定了。
第五,最弱的那一项,就是你下一次谈判里最可能被问住的地方。 健康度与准备度都指向同一件事:把短板补到及格线,比把长板拉得更高更有用。
读者怎么用这本书
如果你只有一小时:读第 13.1 节的矩阵与本节的两个分数表,先给自己的生意估一个位置。
如果你有一周:按所在象限读对应章节。右上读第 7、8 章;左上读第 7、8、9 章;右下读第 3、5、6 章;左下读第 2、9、12 章。读完用附录 C 自评一次。
如果你有一季度:把 13.1 的 16 项指标全部补齐,跑一次健康度评分,再按最弱维度制定一个季度的动作清单;季度末重算,看分数有没有动。
如果你正在交易中:直接跳到第 7、8、9 章与附录 C,把交割清单、托管、赔偿上限、客户迁移、代码交割逐项对照;交易结束后再回头补第 10、11、12 章。
如果还没有生意、准备开始:先读第 1 章与第 2 章,在注册主体和分配股权之前,把稀释、期权池与合伙人退出机制想清楚;这两件事在第一天做对,比在退出时补救便宜得多。
小结
全书 135 篇,最后落到两个分数与一张二维图。
健康度回答「这副身体怎么样」,交易准备度回答「能不能上手术台」。两个分数都在 60 以上,才可以进入市场;只有一个过线,就先补另一边;两个都不过线,就先治病。
LedgerLite 72 / 76,可以进入市场;Tidecast 58 / 60,按资产出售;Nord 48 / 54,先修复再谈。三个案例不是三个答案,而是三种位置;读者要做的是找到自己的位置,然后执行对应的动作。
交易的终点不是「卖掉」,而是「换到一笔与生意价值匹配的钱,并且知道这笔钱接下来怎么用」。
如果读者最后决定继续持有,本书同样适用:健康度评分、估值区间、税后现金流与治理安排,都是持有型生意的日常工具。卖掉是一种选择,持有是另一种选择;两种选择都需要同一套数字。
这本书能做的,是把这条路上的每一步都算清楚;剩下的路,要读者自己走。
阅读导航:上一节:13.2 商业健康度评分 · 下一节:目录与学习路径 。
常见错误与边界
- 把象限当终点。 象限是当下的位置,不是终身标签;生意变了,位置要重算。
- 两个分数相加。 健康度与准备度量的是不同的东西,不能合成一个总分。
- 只补准备度,不补健康度。 准备得再充分,生意本身不行也卖不出好价。
- 等要卖的时候才补可转移性。 可转移性在第一天就决定了,越晚补成本越高。
- 把「有人感兴趣」当成「可以进入市场」。 进入市场的标准是两个分数过线,不是收到几封邮件。
- 照抄三个案例的结论。 案例是教学设定,读者要替换数字、重跑评分,而不是套用 72/58/48。
本节的边界是「全书收口」:它不引入新的估值方法,也不预测任何真实交易的结果;两个分数、四个象限、五条结论都是本书 135 篇的归纳,用于帮助读者定位与排序。真实决策仍需结合自身数据、市场环境与专业意见。
继续阅读
探索更多技术文章
浏览归档,发现更多关于系统设计、工具链和工程实践的内容。