Revenue Rehearsal Playbook
Current legacy rehearsal pack(2026-07-15):本文验证旧 objective-policy-to-
taskDecisions[]flow 和 legacy category/result vocabulary,只用于兼容性回归。V3 revenue scenarios 必须按 Task System Design V3 的 Task-specific Outcome、verification 与 versioned Policy 重新定义。
Revenue rehearsal 是 Task Accuracy Foundation 里专门验证 revenue / retention / safety objective 的 executable pack。它不把模型当成可以自由执行的 agent,而是把 agent 拆成可审计的几层:
这符合 Agent Foundation 的核心概念:AI 只做结构化判断和 proposal;objective policy 负责把高置信业务事实映射到人类工作目标;writer / Policy Guard 才有最终写库权。
对应 GitHub issues
这四个 issue 可以放在一个 infra mega PR 里,因为它们是同一条 eval/control surface:scenario registry 产出期望,policy map 定义 fallback,runner/report 验证,staging injector 连接真实 staging path。docs repo 需要 companion PR,因为文档和 infra 不在同一个仓库。
Scenario Registry
每个 revenue rehearsal case 至少要回答这些问题:
- 业务场景是什么:例如 intro inquiry、upgrade、referral、cancel intent、DNC。
- 这个场景为什么是 material business objective。
- Call AI 应该输出哪些 structured facts。
- Contacts Analyzer 应该输出哪些
taskDecisions[]。 - 哪些行为明确不应该出现。
- 哪些 assertion 是 hard failure,哪些只是 diagnostic signal。
示例判断:
Objective Policy Map
Objective policy map 是 Facts -> Objective -> Action 的产品可审查层。它不直接写库,也不替代模型;它只在 structured facts 足够强、模型 no-op 或输出形状不合适时,补上 deterministic proposal。
每条 policy 都应该包含:
structuredFact:来自 Call AI / Contacts Analyzer 的结构化事实,不靠裸文本猜测。guard:允许 policy 生效的边界,例如 exact triggering call、visible task、no duplicate、no DNC。action:唯一允许输出的TaskDecisionshape。rationaleZh:业务和安全理由,给 PM / reviewer 审。
关键设计边界:
- create 类 policy 可以使用唯一 recent call fact,解决 voicemail / message trigger 没有 exact call id 的问题。
- close / progress 类 policy 必须要求 exact triggering call,避免 stale evidence 关闭或推进错误任务。
- DNC 是 safety policy,不是 revenue policy;它优先于所有 proactive work。
- writer / orchestrator 仍然负责 store isolation、task ref resolution、duplicate guard、human-authority guard。
Report Artifacts
Revenue rehearsal runner 应同时产出 machine-readable JSON 和 reviewer-readable Markdown:
报告里每个 case 应该能看到:
- transcript excerpt。
- business rationale。
- expected outcome / not expected behavior。
- actual Call AI facts。
- actual Contacts Analyzer task decisions。
- fallback before / after。
- hard failures 和 diagnostics。
- latency / token usage,能拿到多少就记录多少。
--no-model 用来验证 fixture 和 prompt context 是否完整;真实模型模式用来验证 prompt + model + fallback 的当前表现。Demo 前只展示连续稳定通过的 case,不现场赌模型随机性。
Staging Transcript Injector
staging injector 的目标是从 transcript 往后跑,而不是伪造整条 RingCentral / Deepgram upstream:
默认是 dry-run,只调用 Call AI + Contacts Analyzer 并输出 trace。要写 staging DB 时必须显式加:
安全边界:
environment=prod或 SSM param 含/prod/时必须拒绝运行。--store-phone必须来自目标 store 的真实 assigned phone,不能 hardcode 某个 demo store。--write必须显式传入 staging/test Neon SSM param。- injector 只适合 staging/test 验证,不是 production backfill 工具。
Review Rubric
review 这个 mega PR 时,重点看四件事:
- Scenario registry 是否把业务目标说清楚,而不是只写 transcript。
- Objective policy 是否只消费 structured facts,并且 guard 足够保守。
- Report 是否能让 PM / engineer 不看日志也判断每个 case 为什么 pass/fail。
- Staging injector 是否有明确 prod guard,并且 dry-run / write mode 分离。
如果这些都成立,这个 PR 就是 Task Accuracy Foundation 的一块地基:它让 revenue objective 先可定义、可测试、可审查,再进入未来的 Vapi / outbound execution。