Expand course report agent summary

This commit is contained in:
liyizhouAI 2026-06-08 21:40:23 +08:00
parent 86a8ae629a
commit 5b00fae91e
1 changed files with 293 additions and 48 deletions

View File

@ -1047,27 +1047,133 @@ def _course_time(minutes: int) -> str:
COURSE_REPORT_SECTIONS = [
(
"S01 执行结论:招生不是卖课,是把不确定感降到可付款",
"这轮双世界模拟完成后最关键的结论是第一期50人线下课能否成交不取决于课程名是否足够吸引人而取决于学员是否相信三个问题已经被处理第一钱交出去之后能不能获得高密度、可落地的能力提升第二现场组织和后续交付是否靠谱第三早鸟、同行和退款机制是否让自己感觉公平。模拟中最有效的转化路径是先用PRD解释课程结构再用名额稀缺和同行优惠推动行动最后用退款规则、交付节奏和课后作业机制降低迟疑。",
"""本轮双世界模拟的核心判断是第一期50人线下课的成交不取决于课程名称是否足够宏大也不取决于优惠力度是否足够夸张而取决于学员在付款前能否确认三件事。第一自己交钱后能拿到高密度、可落地、能复用的能力而不是听一场情绪价值很强但回去无法执行的演讲。第二现场组织、分组反馈、案例演练、课后作业和复盘机制足够明确不会出现“现场很热闹回家又归零”的体验。第三早鸟、同行、退款、资料回看、社群服务等规则清晰让学员感觉价格公平、权益确定、风险可控。
从模拟行为看付款意愿最高的人并不是完全陌生的观望者而是已经被AI工具刺激过在自媒体/销售/产品/个人IP/企业运营中遇到真实问题的人他们并不需要再被说服AI很重要他们需要被说服的是这门课能不能帮我把一个卡住的问题推进到可以执行A03林岚反复提到她愿意为现场带走选题库提示词自动化流程和复盘模板付款而不是为趋势判断付款A07陈亦桥则代表价格敏感但高需求的人他对课程的质疑不是不认可AI而是担心听完之后不会用两类人共同指向一个结论招生页和销售话术必须把抽象价值转成可交付对象
因此最稳的转化路径不是直接推销名额有限而是先做诊断再承诺交付最后推动付款诊断阶段问清楚学员当前业务AI使用水平最想解决的问题过去学习失败的原因交付阶段明确课前问卷现场案例实操模板分组反馈课后作业资料回看复盘节点付款阶段再匹配超级早鸟普通早鸟两人同行或三人同行这个顺序会显著降低强销售感也让优惠机制从便宜变成锁定交付权益
对现场演示而言Foresight的价值也在这里它不是简单帮团队生成一段招生文案而是在正式投放和正式销售前先用30个虚拟Agent模拟不同学员运营人员拼团组织者退款敏感用户同行观察者和交付负责人会怎样反应系统提前暴露犹豫点误解点付款触发点和舆情风险再把这些反应整理成可执行的销售SOP和交付SOP客户看到的不是一份漂亮报告而是一套可以在真实招生前降低不确定性的经营系统"""
),
(
"S02 Agent问答暴露的问题学员真正担心的是交付密度和机会成本",
"30个Agent中明确表现出付款意愿的群体主要来自三类已经有AI工具使用经验但缺少系统方法的人、正在做自媒体/销售/产品工作需要马上变现的人、希望进入同舟会圈层并获得持续反馈的人。阻力也很具体:价格是否值、现场是否只讲概念、课后是否无人跟进、同行优惠是否引发拼团复杂度、退款规则是否会在现场造成负面情绪。这说明销售页和客户经理话术必须少讲抽象愿景,多讲课前诊断、课中演练、课后复盘和明确交付物。",
"""30个Agent的问答显示学员真正担心的不是“AI有没有前景”而是“我付出的时间、钱和注意力能不能换回确定的进步”。这种担心可以拆成四类。第一类是交付密度现场到底是讲概念还是带着我把一个真实问题做出来。第二类是机会成本我是否需要请假、坐车、住酒店、放弃周末如果最后只是听了一堆原则就很难接受。第三类是后续反馈我回去做作业遇到问题有没有人看、有没有复盘、有没有同伴压力。第四类是规则公平同样买课的人超级早鸟、早鸟、同行、临时报名之间权益是否清楚是否会让早付款的人吃亏。
#### A00 方见舟|课程发起人 / 同舟会线下课主理人
**Q:** 你最担心第一期招生哪一步失控
**A:** 我不担心大家没有兴趣我担心大家都在等最后一刻确认等的人越多销售越容易被动所以要把课前诊断席位机制和交付清单提前说清楚让学员知道现在确认不是为了便宜而是为了提前进入准备流程
#### A03 林岚|高意愿学员 / 自媒体创业者
**Q:** 什么会促使你立刻付款
**A:** 如果我知道现场能带走一套选题方法提示词自动化流程内容复盘模板并且这些东西能直接用于我接下来一个月的账号更新我愿意买早鸟单纯说趋势认知未来机会我会觉得听过很多次不会马上动
#### A07 陈亦桥|价格敏感学员 / 职场转型产品经理
**Q:** 你为什么犹豫
**A:** 我怕课程太贵但听完不会用我的问题不是不知道AI重要而是不知道怎么把AI放进自己的工作流最好有课前问卷和课后作业反馈让我知道自己不是只来听热闹
#### A11 孟知秋|同行拼团组织者 / 知识付费社群运营者
**Q:** 同行优惠的最大风险是什么
**A:** 拼团能带来转介绍但规则必须简单如果三人同行核销复杂销售会被大量沟通消耗最好把同行权益写成一页图不要让学员自己猜谁付款谁登记谁进群谁拿资料
#### A18 许若安|退款敏感学员 / 企业培训采购负责人
**Q:** 什么情况会触发退款情绪
**A:** 如果宣传说得很满但现场案例和我的行业不相关我会觉得预期落差大退款规则要提前写明哪些情况可以退哪些是课程开始后不能退不能等学员不满意时才解释
#### A24 唐逸舟|交付运营负责人 / 课程项目经理
**Q:** 课后最重要的动作是什么
**A:** T+1交付资料T+7收作业T+14做一次复盘T+30筛选转介绍线索否则线下课热度很快散掉学员会觉得当场很燃回去没有后劲
这些回答共同说明销售页私聊话术和现场控场都要围绕交付确定性组织能成交的人要被快速推到付款动作犹豫的人要被引导到诊断和样例风险敏感的人要提前看到规则边界拼团传播者要获得简单可转发可解释的规则只要把这些问题在付款前处理课程的转化就会更像一个有节奏的招生经营过程而不是靠讲师个人影响力临场推动
进一步看Agent之间的差异也提示团队不能用同一套话术覆盖所有人A03林岚要的是内容生产效率A05周予白要的是销售团队工作流A09陆佳宁要的是企业培训可复制性A21沈知微要的是金融客户经营案例对这些人都说AI时代必须学习没有意义真正有效的是把课程价值翻译成他们各自的业务场景也就是说销售系统要先识别角色再匹配证据自媒体用户看选题和内容流程销售负责人看客户研究和拜访提纲企业培训负责人看组织复制金融客户经理看客户分析和产品推介"""
),
(
"S03 收款结构预测:早鸟机制会放大行动,但必须避免规则混乱",
"按本轮模拟最稳妥的收款结构是超级早鸟承担首批信任背书早鸟承接犹豫但高意愿用户两人同行和三人同行用于激活熟人传播。理想状态下超级早鸟可覆盖8-12人普通早鸟可覆盖18-24人同行优惠可贡献12-18人其中三人同行数量不宜过高否则容易让销售沟通变成拼团协调。销售动作应把优惠从单纯降价转成确认席位、锁定课前诊断、优先获得分组反馈",
"""收款结构的关键不是让价格看起来更低,而是让不同决策状态的人都有一个顺手的付款理由。模拟中,超级早鸟适合承担首批信任背书,主要面向熟人、老学员、已明确需求的人;普通早鸟适合承接有意愿但需要再确认的人;两人同行和三人同行适合激活熟人传播,但不能让拼团变成销售团队的主要工作量。
本轮预测中50人目标的较稳结构是超级早鸟8-12普通早鸟18-24两人同行贡献8-12三人同行贡献4-6临近开课原价或少量特殊确认名额补足余量这个结构的好处是既能制造第一批已付款样本又不会让三人同行占比过高导致订单确认资料分发入群登记和发票沟通过于复杂A11孟知秋的反馈尤其重要如果同行优惠规则需要反复解释传播者会从帮你招生的人变成制造沟通成本的人
优惠权益建议从少多少钱改写成提前获得什么超级早鸟可以绑定课前诊断优先权席位确认分组优先案例征集优先普通早鸟强调价格窗口和课前准备材料两人同行强调共同作业和现场同组三人同行强调团队问题可以被纳入案例池但不额外承诺讲师单独服务这样做可以避免用户把优惠理解成纯折扣也能让早付款的人觉得自己获得了确定性而不是承担了先付款风险
销售节奏上建议分四个窗口第一窗口是老用户内测确认目标是拿到第一批付款和真实问题第二窗口是公开早鸟目标是把课程价值讲清楚第三窗口是同行传播目标是让已付款学员带来同伴第四窗口是临近开课提醒目标是处理犹豫但高意愿的人每个窗口都要有对应话术和素材不要把所有信息堆在一个招生海报里"""
),
(
"S04 舆情与退款风险:最大的负面不是退款本身,而是预期不一致",
"模拟中的负面舆情集中在四个点:课程内容是否过密导致听不完、现场案例是否贴近自己、退款口径是否透明、课后社群是否变成信息噪音。真正需要防的不是有人提出退款,而是退款问题被解释成‘交付不确定’。因此,在付款前就要明确课前问卷、现场产出、课后复盘、资料回看、作业反馈和退款边界,避免把所有承诺压到讲师个人魅力上。",
"""模拟中的负面舆情并不集中在“价格贵”本身,而集中在预期不一致。学员可以接受高价格,但不能接受高价格背后没有清晰交付;可以接受课程密度高,但不能接受没有资料回看和复盘;可以接受现场案例不可能覆盖所有行业,但不能接受自己在报名时完全不知道案例范围;可以接受退款边界严格,但不能接受付款后才被告知规则。
A18许若安的回答代表企业采购和理性用户只要宣传说得过满而现场案例与自己行业差距过大就会触发预期落差A24唐逸舟则从交付侧提醒线下课结束后如果没有T+1资料T+7作业T+14复盘T+30转介绍筛选课程热度会迅速衰减这两个视角放在一起看退款风险其实不是一个财务动作而是一个信任信号用户提出退款时往往已经经历了价值感下降预期落差沟通无回应同伴讨论放大这几个阶段
因此建议把退款和交付规则前置到销售材料里而不是藏在付款后须知里规则可以分为四层第一层是报名确认前说明适合人群不适合人群课程强度和前置准备第二层是付款后到开课前提供课前问卷资料预习问题征集如果学员发现明显不匹配可以在规定时间内处理第三层是开课当天明确签到资料录屏或回看作业提交方式第四层是课后明确反馈窗口复盘节点和社群边界
舆情处理上不要让运营人员临场自由发挥应提前准备三类回应模板价值解释模板用于解释课程交付物规则解释模板用于解释退款名额同行权益情绪安抚模板用于面对我听不懂跟不上不适合我的反馈系统演示时可以把这些模板展示成Foresight从模拟中自动提炼出的风险预案让客户看到系统不仅预测销售也预测交付争议"""
),
(
"S05 商业机会:从一次线下课升级为可复制的招生经营系统",
"这次模拟最大的商业机会不是卖出50个名额而是形成一套可复用的招生经营系统用户画像分层、优惠规则、销售SOP、课前问卷、课中分组、课后跟进、退款预警和转介绍机制。对客户展示时可以强调Foresight并不是简单生成文案而是把可能出现的真实用户反应提前跑一遍再把风险和机会沉淀成运营动作。",
"""这次模拟最值得展示的商业机会不是“第一期能不能卖满50人”而是从一次线下课中抽象出一套可复制的招生经营系统。这个系统包括八个模块用户画像分层、需求诊断问卷、优惠与权益设计、私聊销售SOP、课前准备机制、现场交付机制、课后复盘机制、退款与转介绍预警。只要这些模块跑通后续无论是第二期课程、企业内训、私董会工作坊还是银行/保险/咨询行业的高客经营场景,都可以复用。
从商业角度看Foresight的产品价值可以被包装成经营预演传统团队常常先做海报先投放先销售然后在真实用户反馈中被动调整Foresight的做法是先把用户销售运营交付风险和舆情都变成Agent让它们在一个模拟世界里提前互动系统不是替代真实市场而是在真实市场前给团队一次低成本的压力测试它可以告诉团队哪些话术会触发付款哪些承诺会放大退款哪些优惠会制造混乱哪些交付动作能带来复购
对银行客户或企业客户演示时可以把这个能力迁移到他们的业务语境银行推理财产品时客户也会关心收益风险流动性家庭共同决策和售后服务企业卖高客服务时客户也会关心价格交付案例同伴和后续跟进也就是说这个线下课案例虽然是教育产品但它展示的是一套普遍的高客决策模拟能力这正是系统后续商业化的重点不是卖一个demo而是卖一种在复杂客户决策前进行多Agent多变量多时间轮次推演的能力
本案例还暴露出一个增量机会报告页可以成为销售资产右侧Report Agent能够基于总结和Agent问答回答问题并用角标引用具体证据左侧报告可以跳转到对应章节和Agent原话这种设计让客户看到AI不是自己瞎想而是从模拟过程访谈结果和结构化报告中提取结论后续如果给企业客户交付可以把每一次模拟沉淀为一个可追问可回看可复盘的互动报告而不是只发一份PDF
如果把这个能力再往商业化推进一层可以形成三种产品形态第一种是售前策略模拟在课程理财企业服务咨询项目正式销售前先跑一轮不同客户角色的反应产出销售话术异议处理和风险提示第二种是交付压力测试在承诺客户之前先模拟交付过程中的投诉延期信息误解人员协作和复盘缺口第三种是经营复盘资产项目完成后把真实反馈继续沉淀进报告让下一轮销售和交付不再从零开始这样Foresight就不是一个临时演示工具而是一套可以嵌入业务团队日常经营的智能预演层
对客户来说最直观的购买理由是少踩坑很多团队不是没有方案而是方案进入真实用户之后才发现话术不清规则复杂承诺过满交付跟不上Foresight提前把这些问题可视化能帮团队在付出真实市场成本前先做修正对于银行保险教育咨询企业服务等高信任行业这个价值尤其明显因为每一次高客成交都不只是一次付款而是一次长期关系的开始"""
),
(
"S06 推荐SOP先诊断再承诺交付最后推动付款",
"推荐现场使用三段式SOP。第一段是诊断你现在最想用AI解决什么问题、过去学过什么、卡在哪一步。第二段是交付这门课会让你带走哪些文件、流程、案例和可复制模板。第三段是决策如果你确定要来适合超级早鸟/早鸟/同行哪一种方式。这样的销售路径能减少强推感,也更容易在客户犹豫时回到具体价值。"
"""推荐采用三段式销售SOP先诊断再承诺交付最后推动付款。第一段诊断不要超过5分钟但必须问到关键问题你现在最想用AI解决什么业务问题过去用过哪些工具目前卡在选题、提示词、流程、自动化、团队协作还是变现你这次来线下课最希望带走什么如果这些问题问不出来销售就只能回到抽象价值很容易让学员感觉被推销。
第二段交付要尽量具体不要说帮你掌握AI能力而要说课前会收集你的业务问题现场会拆解选题提示词工作流和案例课后会交付资料包作业反馈和复盘节点对于A03林岚这样的高意愿学员要强调可直接用于内容生产的模板对于A07陈亦桥这样的价格敏感学员要强调从不会用到能执行的路径对于A18许若安这样的理性采购型用户要强调适合/不适合人群和退款边界对于A11孟知秋这样的传播型用户要给他一页能转发的同行规则
第三段决策要避免强压可以用四类句式对已确认需求的人你现在最适合超级早鸟先锁课前诊断和分组权益对还在犹豫的人你可以先把问题发来我们判断是否适合不适合就不要报对想拉朋友的人两人同行更适合共同做作业三人同行适合团队问题但登记规则要一次确认对价格敏感的人如果你只是想听趋势不建议报如果你要现场做出一套流程早鸟会更合适
运营侧SOP也要同步付款后自动发送课前问卷开课前48小时确认问题和分组现场签到时提示资料包和作业路径课程结束T+1交付资料T+7收作业T+14复盘T+30筛选转介绍和二期线索这个SOP的价值在于把一次线下课变成连续经营而不是当天成交结束就松散掉
为了让SOP可检查建议每一步都对应一个完成证据诊断阶段的证据是用户问题卡片交付承诺阶段的证据是资料清单和案例清单付款阶段的证据是权益确认单课前阶段的证据是问卷回收率和分组表课中阶段的证据是现场产出文件课后阶段的证据是作业提交反馈记录和复盘纪要没有证据的动作很容易变成口头承诺有证据的动作才能被团队复盘复制和改进
如果给销售团队培训可以把这套SOP拆成三句核心口播第一句我们先判断你是否适合不适合不用报这句话降低防备第二句适合的话你会带走这些具体产出这句话建立价值第三句如果你确定要来我帮你匹配最合适的报名方式这句话推动决策三句话背后对应的是诊断交付付款而不是情绪煽动"""
),
(
"S07 双世界模拟口径用Info Plaza看传播用Topic Community看真实顾虑",
"""本案例采用双世界并行模拟。Info Plaza更像公开传播场适合观察招生海报、讲师表达、老学员背书、优惠窗口、名额稀缺和公开舆论如何影响决策Topic Community更像深层讨论场适合观察学员在熟人、小群、私下问答中真正担心什么。两个世界同时运行能避免只看公开点赞而忽略私下犹豫也能避免只看负面担心而低估传播势能。
Info Plaza中的积极信号主要来自三类内容第一课程发起人明确交付边界后早期信任用户更愿意转发第二已付款用户如果能说出自己要解决的问题会带动同类人询问第三优惠窗口和席位机制对有明确需求的人有效Topic Community中的风险信号更细有人担心现场案例不贴近行业有人担心作业无人反馈有人担心同行拼团登记复杂有人担心退款规则不透明
因此总结页不应该只给一个转化率预测而要给出传播层决策层交付层和风险层的组合判断传播层看哪些内容能被转发决策层看哪些用户会付款交付层看哪些承诺必须兑现风险层看哪些问题会变成退款或负面口碑这个结构能让客户理解Foresight不是在做单点预测而是在模拟一个业务系统跨时间的运行效果"""
),
(
"S08 关键数据与预测50人目标可达但依赖前置诊断和课后复盘",
"""按本轮30个Agent、8轮互动、18条关键动作的模拟结果50人目标具备可达性但前提是不能把招生理解成一次性宣传。若只靠讲师影响力和朋友圈转发系统预测会出现大量“感兴趣但不付款”的用户若加入课前诊断、早鸟权益、同行规则和课后复盘付款转化会明显改善。模拟给出的稳态判断是第一批熟人和老用户可以形成8-12人的超级早鸟公开早鸟可形成18-24人同行机制贡献12人上下剩余名额由临近开课的高意愿用户补足。
需要注意的是数据是演示用模拟结果不是对真实市场的确定性承诺它的价值在于帮助团队看见变量之间的关系课前诊断会提高高意愿用户的付款速度交付清单会降低价格敏感用户的犹豫退款规则会降低理性用户的风险感同行规则会提高传播但规则复杂会反噬销售效率课后复盘会提高满意度和转介绍但如果没有运营承接线下课热度会在一周内明显衰减
建议现场给客户展示时不要把数字讲成绝对预测而要讲成经营假设比如如果我们只做公开招募转化会偏低如果把课前诊断和交付权益前置超级早鸟和普通早鸟的占比会提高如果同行机制规则清楚转介绍贡献会增加如果课后复盘不到位退款和负面反馈会滞后出现这种表达更符合系统定位也更容易让客户相信它能服务真实业务"""
),
(
"S09 模块化落地建议:销售、交付、风控、复购四张表",
"""为了把模拟结论落地建议把本报告转成四张运营表。第一张是销售线索表字段包括姓名、职业、AI使用水平、核心问题、付款意愿、价格敏感度、适合权益、下一步动作。第二张是交付准备表字段包括课前问卷、案例匹配、分组安排、资料包、现场任务、作业要求、反馈负责人。第三张是风险预警表字段包括退款敏感点、预期落差、行业不匹配、规则误解、沟通记录、处理状态。第四张是复购转介绍表字段包括作业完成度、满意度、可展示成果、是否愿意分享、是否适合二期或企业内训。
这四张表对应四类负责人销售负责人关注线索推进和收款节奏课程负责人关注现场内容和案例匹配运营负责人关注资料作业群管理和反馈商业负责人关注复购转介绍企业客户和长期产品化Foresight的报告不应该停留在发现问题而应该把问题变成负责人动作时间点和检查标准
对于客户演示这一节可以作为成交点系统输出的不是一个漂亮结论而是可以直接接进团队日常工作的行动清单银行客户看这个案例时也能映射到自己的客户经营客户经理表客户需求表产品适配表合规留痕表复盘跟进表本质上Foresight可以把复杂决策推演结果翻译成团队能执行的运营表格
这四张表还可以形成一个闭环看板销售线索表负责回答谁最可能付款交付准备表负责回答我们承诺的东西准备好了没有风险预警表负责回答谁可能不满意为什么不满意复购转介绍表负责回答课程结束后还有哪些商业机会如果只看收款金额团队会高估招生成功如果只看满意度团队会低估销售效率如果只看作业提交团队又可能忽略转介绍因此看板必须同时看现金交付风险和复购
建议为每张表设置最少三个指标销售线索表看咨询人数诊断完成率付款转化率交付准备表看问卷回收率案例匹配率资料交付准时率风险预警表看退款咨询数负面关键词未响应问题数复购转介绍表看作业完成率可展示成果数主动推荐人数这样模拟报告就能从讲得很有道理进入团队明天就能执行这也是客户购买系统的理由不是为了得到一个结论而是为了获得一套能持续校准业务动作的仪表盘"""
),
(
"S10 现场展示话术:强调可回溯、可追问、可复用",
"""现场展示这份报告时建议用三句话收束。第一句这不是一个视频回放而是一个可交互的模拟结果页面客户可以点进每个阶段、每个Agent和每个结论。第二句Report Agent的回答不是自己想象而是引用左侧报告章节和Agent问答点击角标可以跳回证据位置。第三句这套能力可以从线下课招生迁移到银行高净值客户经营、企业客户策略分析、理财产品推介、课程销售和复杂服务成交。
演示顺序建议是先打开总结页让客户看到完整结构再提问这个项目最大的成交阻力是什么接着点击回答里的A03A07A18等角标让页面跳到具体Agent原话然后追问如果我要提高早鸟付款率应该改哪里最后展示S06到S09把结论落成SOP和四张表这样客户会感受到系统不是在播放一个已经录好的文件而是在一个真实页面里基于模拟结果进行追问定位解释和复盘
现场追问可以准备四个问题第一个问题问这个项目最大的成交阻力是什么系统应回答交付密度和机会成本并引用A03A07第二个问题问怎样提高早鸟付款率系统应回答权益绑定和窗口节奏并引用S03A11第三个问题问最容易出负面舆情的地方是什么系统应回答预期不一致和退款规则并引用S04A18A24第四个问题问这套方法对银行客户有什么价值系统应回答高客经营也需要提前模拟客户顾虑共同决策合规边界和售后服务并引用S05S09S10
这样的追问顺序能形成很强的现场效果客户先看到完整报告再看到AI能够回答问题然后看到每个回答都能跳回证据它会把AI很聪明的印象转成系统真的记录了推演过程并能复用推演结果的信任尤其是银行客户他们不会只被炫技打动更关心系统是否可解释可追责可复盘角标跳转Agent原话和模块化报告正好回答这些顾虑
最后要明确边界所有数据和Agent回答都是模拟结果用于经营预演和方案讨论不代表真实市场承诺系统价值在于提前暴露问题比较方案组织证据和形成行动不替代真实投放真实销售和真实合规审查这个边界讲清楚后反而会让客户更信任系统因为它展示的是降低不确定性的能力而不是保证结果的幻觉"""
),
]
@ -1087,70 +1193,121 @@ def _course_report_markdown() -> str:
def _course_agent_interview_result() -> str:
return """**采访主题:** 一舟一课线下课第一期招生,会暴露哪些成交阻力和交付风险?
**采访人数:** 6 / 30 位模拟Agent
**采访人数:** 10 / 30 位模拟Agent
### 关键问答摘录
#### A00 课程发起人 / 招生负责
#### A00 方见舟|课程发起人 / 同舟会线下课主理
**Q:** 最担心第一期招生哪一步失控
**A:** 最担心不是没人感兴趣而是大家都想等最后一刻确认必须把课前诊断席位机制和交付清单提前说清楚
**A:** 我不担心大家没有兴趣我担心大家都在等最后一刻确认等的人越多销售越容易被动所以要把课前诊断席位机制和交付清单提前说清楚
#### A03 高意愿学员 / 自媒体创业者
#### A02 赵沐阳|企业主学员 / 智能制造公司创始人
**Q:** 你最希望课程解决什么问题
**A:** 我想知道AI怎么进入企业销售客服和管理流程不想只听工具清单如果现场能把一个企业流程拆出来我会考虑带管理层来第二期
#### A03 林岚|高意愿学员 / 自媒体创业者
**Q:** 什么会促使你立刻付款
**A:** 如果我知道现场能带走一套选题提示词自动化流程和复盘模板我愿意买早鸟单纯说趋势我不会动
**A:** 如果我知道现场能带走一套选题方法提示词自动化流程内容复盘模板并且这些东西能直接用于我接下来一个月的账号更新我愿意买早鸟
#### A07 价格敏感学员 / 职场转型者
#### A05 周予白|销售负责人 / B2B软件公司销售总监
**Q:** 你会被什么打动
**A:** 我关心的不是AI酷不酷而是能不能让销售团队更快做客户研究写拜访提纲跟进线索如果课程只讲个人效率我兴趣会下降
#### A07 陈亦桥|价格敏感学员 / 职场转型产品经理
**Q:** 你为什么犹豫
**A:** 我怕课程太贵但听完不会用最好有课前问卷和课后作业反馈让我知道自己不是只来听热闹
**A:** 我怕课程太贵但听完不会用我的问题不是不知道AI重要而是不知道怎么把AI放进自己的工作流
#### A11 同行拼团组织者
#### A09 陆佳宁HR培训负责人 / 中型企业组织发展经理
**Q:** 企业培训采购看重什么
**A:** 我需要看到课程目标适合人群课后产出和可复制的内部训练方案个人报名热度不能直接证明它适合企业内训
#### A11 孟知秋|同行拼团组织者 / 知识付费社群运营者
**Q:** 同行优惠的最大风险是什么
**A:** 拼团能带来转介绍但规则必须简单如果三人同行核销复杂销售会被大量沟通消耗
#### A18 退款敏感学员
#### A15 顾南星|老学员 / 同舟会活跃成员
**Q:** 你愿意帮忙转介绍吗
**A:** 愿意但我需要一段很清楚的话告诉朋友这门课适合谁不适合谁否则我怕朋友报了不匹配最后影响信任
#### A18 许若安|退款敏感学员 / 企业培训采购负责人
**Q:** 什么情况会触发退款情绪
**A:** 如果宣传说得很满但现场案例和我的行业不相关我会觉得预期落差大退款规则要提前写明
#### A24 交付运营负责人
#### A21 沈知微|观望学员 / 金融行业客户经理
**Q:** 你为什么还没有付款
**A:** 我想知道课程案例是否能迁移到我的客户经营工作如果只是教自媒体我可能不适合如果能做客户分析和拜访提纲我会更感兴趣
#### A24 唐逸舟|交付运营负责人 / 课程项目经理
**Q:** 课后最重要的动作是什么
**A:** T+1交付资料T+7收作业T+14做一次复盘T+30筛选转介绍线索否则线下课热度很快散掉
"""
def _ensure_course_chat_citations(response: str) -> str:
if not response:
return _course_chat_response("")
normalized = response.strip()
if "分析路径" not in normalized:
normalized = (
"### 分析路径\n"
"我先检索左侧总结报告再对照Agent问答和双世界模拟变量最后只保留能够被章节或Agent原话支撑的判断。\n\n"
+ normalized
)
if "[[" in normalized and "]]" in normalized:
return normalized
return normalized.rstrip() + "\n\n证据来源:[[S01]] [[S02]] [[A03]] [[A07]]"
def _course_chat_response(message: str) -> str:
normalized = message.strip()
if any(k in normalized for k in ["收款", "早鸟", "优惠", "付款", "成交"]):
return (
"这次模拟里,最优收款打法不是单纯打折,而是把优惠和交付权益绑定:超级早鸟对应首批信任背书,早鸟对应明确行动窗口,两人/三人同行对应熟人转介绍。建议现场主推“确认席位 + 课前诊断 + 优先分组反馈”,不要只说便宜。[[S01]] [[S03]] [[A03]] [[A11]]"
"### 分析路径\n"
"我先看付款触发点,再对照早鸟/同行机制和Agent原话高意愿用户要具体交付拼团组织者要简单规则运营负责人要后续承接。\n\n"
"### 结论\n"
"最优收款打法不是单纯打折,而是把优惠和交付权益绑定:超级早鸟对应首批信任背书,早鸟对应明确行动窗口,两人/三人同行对应熟人转介绍。建议现场主推“确认席位 + 课前诊断 + 优先分组反馈”,不要只说便宜。[[S01]] [[S03]] [[A03]] [[A11]] [[A24]]"
)
if any(k in normalized for k in ["退款", "舆情", "风险", "负面"]):
return (
"### 分析路径\n"
"我把负面反馈拆成预期差、规则差和交付差三类,再回看退款敏感学员与交付运营负责人的问答。\n\n"
"### 结论\n"
"最大的风险不是退款本身,而是学员觉得宣传和交付不一致。需要提前写清楚课前问卷、现场产出、资料回看、作业反馈和退款边界,把不确定性从付款前就降下来。[[S02]] [[S04]] [[A18]] [[A24]]"
)
if any(k in normalized for k in ["SOP", "销售", "话术", "怎么卖"]):
return (
"推荐三段式销售SOP先诊断用户目标和卡点再展示具体交付物最后根据决策状态推荐超级早鸟、早鸟或同行方案。这样会比直接推价格更稳也能减少强销售感。[[S05]] [[S06]] [[A00]] [[A07]]"
"### 分析路径\n"
"我按成交链路看:先处理用户问题,再证明交付,再选择付款方案;这样能同时回应高意愿、价格敏感和传播型用户。\n\n"
"### 结论\n"
"推荐三段式销售SOP先诊断用户目标和卡点再展示具体交付物最后根据决策状态推荐超级早鸟、早鸟或同行方案。这样会比直接推价格更稳也能减少强销售感。[[S05]] [[S06]] [[A00]] [[A07]] [[A15]]"
)
return (
"总结来看这个项目的核心不是把50个名额卖满而是验证一套可复制的招生经营系统用户画像、优惠规则、销售SOP、课前诊断、课中交付、课后复盘和退款预警。后续演示时可以强调Foresight提前模拟真实用户反应帮团队在正式销售前发现风险和机会。[[S01]] [[S05]] [[S06]]"
"### 分析路径\n"
"我先看执行结论再看Agent问答暴露出的顾虑最后把它们归纳成可复制的招生经营系统。\n\n"
"### 结论\n"
"这个项目的核心不是把50个名额卖满而是验证一套可复制的招生经营系统用户画像、优惠规则、销售SOP、课前诊断、课中交付、课后复盘、退款预警和转介绍。演示时可以强调Foresight提前模拟真实用户反应帮团队在正式销售前发现风险和机会。[[S01]] [[S05]] [[S09]] [[S10]]"
)
def _course_chat_citations() -> List[Dict[str, Any]]:
return [
{"id": "S01", "type": "section", "title": COURSE_REPORT_SECTIONS[0][0], "anchor": "section-0"},
{"id": "S02", "type": "section", "title": COURSE_REPORT_SECTIONS[1][0], "anchor": "section-1"},
{"id": "S03", "type": "section", "title": COURSE_REPORT_SECTIONS[2][0], "anchor": "section-2"},
{"id": "S04", "type": "section", "title": COURSE_REPORT_SECTIONS[3][0], "anchor": "section-3"},
{"id": "S05", "type": "section", "title": COURSE_REPORT_SECTIONS[4][0], "anchor": "section-4"},
{"id": "S06", "type": "section", "title": COURSE_REPORT_SECTIONS[5][0], "anchor": "section-5"},
{"id": "A00", "type": "agent", "title": "课程发起人 / 招生负责人", "anchor": "agent-0"},
{"id": "A03", "type": "agent", "title": "高意愿学员 / 自媒体创业者", "anchor": "agent-3"},
{"id": "A07", "type": "agent", "title": "价格敏感学员 / 职场转型者", "anchor": "agent-7"},
{"id": "A11", "type": "agent", "title": "同行拼团组织者", "anchor": "agent-11"},
{"id": "A18", "type": "agent", "title": "退款敏感学员", "anchor": "agent-18"},
{"id": "A24", "type": "agent", "title": "交付运营负责人", "anchor": "agent-24"},
citations = [
{"id": f"S{idx:02d}", "type": "section", "title": title, "anchor": f"section-{idx - 1}"}
for idx, (title, _content) in enumerate(COURSE_REPORT_SECTIONS, start=1)
]
citations.extend([
{"id": "A00", "type": "agent", "title": "方见舟|课程发起人 / 同舟会线下课主理人", "anchor": "agent-0"},
{"id": "A02", "type": "agent", "title": "赵沐阳|企业主学员 / 智能制造公司创始人", "anchor": "agent-2"},
{"id": "A03", "type": "agent", "title": "林岚|高意愿学员 / 自媒体创业者", "anchor": "agent-3"},
{"id": "A05", "type": "agent", "title": "周予白|销售负责人 / B2B软件公司销售总监", "anchor": "agent-5"},
{"id": "A07", "type": "agent", "title": "陈亦桥|价格敏感学员 / 职场转型产品经理", "anchor": "agent-7"},
{"id": "A09", "type": "agent", "title": "陆佳宁HR培训负责人 / 中型企业组织发展经理", "anchor": "agent-9"},
{"id": "A11", "type": "agent", "title": "孟知秋|同行拼团组织者 / 知识付费社群运营者", "anchor": "agent-11"},
{"id": "A15", "type": "agent", "title": "顾南星|老学员 / 同舟会活跃成员", "anchor": "agent-15"},
{"id": "A18", "type": "agent", "title": "许若安|退款敏感学员 / 企业培训采购负责人", "anchor": "agent-18"},
{"id": "A21", "type": "agent", "title": "沈知微|观望学员 / 金融行业客户经理", "anchor": "agent-21"},
{"id": "A24", "type": "agent", "title": "唐逸舟|交付运营负责人 / 课程项目经理", "anchor": "agent-24"},
])
return citations
def _fallback_cached_chat_response(message: str) -> str:
@ -1179,23 +1336,111 @@ def get_cached_report_chat(
chat_history: Optional[List[Dict[str, str]]] = None,
) -> Optional[Dict[str, Any]]:
if simulation_id == COURSE_SIM_ID:
return {
"response": _course_chat_response(message),
"citations": _course_chat_citations(),
"tool_calls": [
{
"name": "cached_course_report_context",
"parameters": {
"report_id": COURSE_REPORT_ID,
"simulation_id": COURSE_SIM_ID,
"source": "completed_dual_world_course_simulation",
chat_history = chat_history or []
report = get_cached_report(COURSE_REPORT_ID) or {}
report_markdown = report.get("markdown_content", "")
agent_interviews = _course_agent_interview_result()
system_prompt = f"""你是 Foresight 先见之明的 Report Agent正在和客户围绕“一舟一课线下课招生、收款与交付风险模拟”对话。
回答要求
- 使用中文专业清晰适合现场演示
- 先给一个可展示的分析路径这不是隐藏思维链而是公开的证据路线你参考了哪些报告章节哪些Agent问答哪些模拟变量
- 然后给结论建议动作回答要和左侧总结报告一致不能编造报告之外的新设定
- 每个关键判断后必须带证据角标格式只能使用 [[S01]][[S02]][[S03]][[A03]] 这类标记
- S01-S10 对应报告十个章节A00A02A03A05A07A09A11A15A18A21A24 对应具体Agent问答
- 优先引用S01执行结论S02 Agent问答S03收款结构S04退款风险S05商业机会S06销售SOPS09落地表S10展示话术
- 如果用户问到成交早鸟收款引用 S03A03A11如果问退款或舆情引用 S04A18A24如果问怎么卖引用 S06A00A07如果问商业价值引用 S05S09S10
- 明确说明模拟数据用于经营预演不是对真实市场结果的承诺
模拟需求
{COURSE_REQUIREMENT}
报告正文
{report_markdown[:12000]}
Agent问答证据
{agent_interviews}
模拟统计
- Agent数量30
- 双世界轮次8
- 关键动作18
- 平台Info Plaza 9条公开传播动作Topic Community 9条深层讨论动作
"""
messages = [{"role": "system", "content": system_prompt}]
for item in chat_history[-8:]:
role = item.get("role")
content = item.get("content")
if role in ("user", "assistant") and content:
messages.append({"role": role, "content": content})
messages.append({"role": "user", "content": message})
try:
from ..config import Config
from ..utils.llm_client import LLMClient
model_name = (
os.environ.get("REPORT_CHAT_MODEL_NAME")
or os.environ.get("REPORT_LLM_MODEL_NAME")
or Config.LLM_MODEL_NAME
)
timeout_seconds = float(os.environ.get("REPORT_CHAT_LLM_TIMEOUT_SECONDS", "45"))
llm = LLMClient(
api_key=os.environ.get("REPORT_CHAT_LLM_API_KEY") or os.environ.get("REPORT_LLM_API_KEY") or None,
base_url=os.environ.get("REPORT_CHAT_LLM_BASE_URL") or os.environ.get("REPORT_LLM_BASE_URL") or None,
model=model_name,
timeout=timeout_seconds,
)
response = _ensure_course_chat_citations(llm.chat(messages=messages, temperature=0.45, max_tokens=1600))
return {
"response": response,
"citations": _course_chat_citations(),
"tool_calls": [
{
"name": "course_report_context_review",
"parameters": {
"report_id": COURSE_REPORT_ID,
"simulation_id": COURSE_SIM_ID,
"sections": len(COURSE_REPORT_SECTIONS),
"agent_interviews": 10,
},
},
}
],
"sources": ["cached_interactive_report", "completed_dual_world_replay"],
"model_used": "cached-demo-report-agent",
"llm_used": False,
}
{
"name": "llm_synthesis",
"parameters": {
"model": llm.model,
"style": "public_analysis_path_with_evidence_citations",
},
},
],
"sources": ["cached_interactive_report", "completed_dual_world_replay", "course_agent_interviews"],
"model_used": llm.model,
"llm_used": True,
}
except Exception as exc:
model_name = (
os.environ.get("REPORT_CHAT_MODEL_NAME")
or os.environ.get("REPORT_LLM_MODEL_NAME")
or os.environ.get("LLM_MODEL_NAME")
)
return {
"response": _course_chat_response(message),
"citations": _course_chat_citations(),
"tool_calls": [
{
"name": "course_report_context_fallback",
"parameters": {
"report_id": COURSE_REPORT_ID,
"simulation_id": COURSE_SIM_ID,
"llm_error": f"{type(exc).__name__}: {str(exc)[:160]}",
},
}
],
"sources": ["cached_interactive_report", "completed_dual_world_replay", "course_agent_interviews"],
"model_used": model_name or "configured-default",
"llm_used": False,
}
if simulation_id != NB_HNW_AI_CASE_ID:
return None