Skip to content

Instantly share code, notes, and snippets.

@esz135888
Last active May 24, 2026 04:14
Show Gist options
  • Select an option

  • Save esz135888/18addaf86d1704d2a7f09522ec47a7c6 to your computer and use it in GitHub Desktop.

Select an option

Save esz135888/18addaf86d1704d2a7f09522ec47a7c6 to your computer and use it in GitHub Desktop.
PLS customer strategy visit script production pack

Acceptance Tests

Artifact Acceptance

  1. 主成果 HTML 可由公開 URL 開啟且回傳 HTTP 200。
  2. Gist 包含 13 個檔案。
  3. production-brief.md 含 D1/D7/D14/D30、owner/due/acceptance、LINE 草稿。
  4. data-model.md 含 tables、API/sync、permissions、audit/rollback。
  5. market-maturity.md 至少含 2 個外部來源 URL。
  6. people-sync.md 含產品、CEO、客戶成功、營運、工程窗口的訊息與 expected reply。
  7. decision-record.md 說明為何選 project + tool + communication,而非單純 doc。

Operational Acceptance

  • D7 pass:至少 1 份 visit_script approved,且可直接用於客戶拜訪。
  • D14 pass:至少 3 筆 visit_records 完成 customer_pains、objections、evidence_needed、next_step_owner。
  • D30 pass:至少 1 份 proposal_outputs 由 visit_record 生成,並有 pipeline_amount 或明確 lost reason。

Failure Handling

  • 拜訪後 24 小時未回填:PLS 發送 follow-up,該拜訪不進提案產線。
  • 腳本未被產品/CEO approval:不可對外使用。
  • 客戶只收到優勢說明但沒有下一步 owner/due/metric:該次拜訪標記 incomplete。

Artifact URL or PR

Primary artifact: https://gist.github.com/esz135888/18addaf86d1704d2a7f09522ec47a7c6#file-customer-visit-script-pipeline-command-center-html

Public Gist: https://gist.github.com/esz135888/18addaf86d1704d2a7f09522ec47a7c6

Verification commands:

  • curl -I -L -s "https://gist.github.com/esz135888/18addaf86d1704d2a7f09522ec47a7c6#file-customer-visit-script-pipeline-command-center-html" | head -n 8
  • gh gist view 18addaf86d1704d2a7f09522ec47a7c6 --files

Verification result: primary URL returned HTTP/2 200; public Gist includes 13 files; no local pending publish markers remain.

<!doctype html>
<html lang="zh-Hant">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>客戶策略簡報與提案產線|拜訪腳本控制台</title>
<style>
:root {
--ink:#17201b; --paper:#f4f1e8; --panel:#fffdf6; --line:#cec6b4;
--green:#007a5a; --blue:#1d4ed8; --red:#bd3124; --gold:#a16207;
}
*{box-sizing:border-box}
body{margin:0;background:var(--paper);color:var(--ink);font-family:"Avenir Next","Noto Sans TC",sans-serif;letter-spacing:0}
body:before{content:"";position:fixed;inset:0;background:radial-gradient(circle at 15% 15%,rgba(0,122,90,.16),transparent 30%),radial-gradient(circle at 90% 10%,rgba(29,78,216,.13),transparent 25%),linear-gradient(90deg,rgba(23,32,27,.05) 1px,transparent 1px) 0 0/36px 36px;pointer-events:none}
header{position:relative;min-height:72vh;padding:44px clamp(20px,5vw,76px);display:grid;grid-template-columns:1.2fr .8fr;gap:28px;align-items:end;border-bottom:2px solid var(--ink)}
.kicker{font-size:13px;text-transform:uppercase;font-weight:900;color:var(--green)}
h1{font-size:clamp(40px,7vw,90px);line-height:.94;margin:12px 0 20px;max-width:980px}
.lead{font-size:clamp(18px,2.2vw,26px);line-height:1.45;max-width:900px}
.metric{background:var(--panel);border:2px solid var(--ink);padding:22px;box-shadow:10px 10px 0 var(--ink)}
.metric strong{display:block;font-size:clamp(42px,7vw,86px);line-height:.9;color:var(--blue)}
section{position:relative;border-bottom:2px solid var(--ink);padding:34px clamp(18px,4vw,64px)}
.grid{display:grid;gap:18px}
.cols4{grid-template-columns:repeat(4,minmax(0,1fr))}
.cols3{grid-template-columns:repeat(3,minmax(0,1fr))}
.card{background:var(--panel);border:2px solid var(--ink);padding:18px;min-height:150px}
.tag{display:inline-block;border:1px solid var(--ink);padding:4px 8px;margin-bottom:10px;font-weight:900;background:#eee7d7}
table{width:100%;border-collapse:collapse;background:var(--panel);border:2px solid var(--ink)}
th,td{border:1px solid var(--line);padding:12px;text-align:left;vertical-align:top}
th{background:#e9e1d0}
.script{display:grid;grid-template-columns:180px 1fr 1fr;gap:12px}
.script div{border:1px solid var(--ink);background:var(--panel);padding:12px}
.good{color:var(--green)}.warn{color:var(--gold)}.risk{color:var(--red)}
footer{position:relative;padding:28px clamp(18px,4vw,64px);color:#625c51}
@media(max-width:920px){header,.cols4,.cols3,.script{grid-template-columns:1fr}.metric{box-shadow:6px 6px 0 var(--ink)}}
</style>
</head>
<body>
<header>
<div>
<div class="kicker">PLS Production Pack / Customer Visit Script Pipeline</div>
<h1>客戶拜訪腳本,不是話術,是提案產線的第一個資料入口</h1>
<p class="lead">把匯入資料、客戶痛點、差異化優勢、拜訪問題、提案頁面與成交訊號接成一條可驗收流程。每一次拜訪都要產生下一版簡報素材、反對意見資料與可量化 pipeline。</p>
</div>
<div class="metric">
<span class="tag">D30 Gate</span>
<strong>3→1→提案</strong>
<p>3 份可用拜訪腳本、1 套可重複提案骨架、每次拜訪回填痛點/阻力/下一步,讓客戶成功與產品不再各說各話。</p>
</div>
</header>
<section class="grid cols4">
<div class="card"><span class="tag">D1</span><h2>資料入口</h2><p>匯入客戶背景、既有簡報、近期客戶質疑場景、產品優勢證據,建立 script_input。</p></div>
<div class="card"><span class="tag">D7</span><h2>第一版拜訪腳本</h2><p>產出三段式腳本:開場定位、痛點探索、價值確認與下一步承諾。</p></div>
<div class="card"><span class="tag">D14</span><h2>拜訪後回填</h2><p>每次拜訪必填 objection、buyer pain、evidence needed、proposal next page。</p></div>
<div class="card"><span class="tag">D30</span><h2>提案產線</h2><p>腳本可自動生成 proposal outline、QBR/拜訪簡報頁、CRM 下一步與 owner cadence。</p></div>
</section>
<section>
<table>
<thead><tr><th>拜訪階段</th><th>腳本目的</th><th>句型</th><th>輸出資料</th></tr></thead>
<tbody>
<tr><td>Pre-call research</td><td>證明不是泛用 pitch</td><td>「我先用目前資料整理出三個可能卡點,今天想確認哪一個最影響你們決策。」</td><td>account_context, hypothesized_pain</td></tr>
<tr><td>Opening</td><td>把會議變成共同診斷</td><td>「今天不急著展示功能,我們先判斷這件事值不值得進下一步提案。」</td><td>meeting_goal, success_criteria</td></tr>
<tr><td>Discovery</td><td>找出 status quo vs ideal state</td><td>「現在流程最花時間的是哪一步?理想狀態是少掉哪一種人工判斷?」</td><td>pain_point, current_cost, desired_state</td></tr>
<tr><td>Value proof</td><td>連回墨宇獨特能力與成果證據</td><td>「如果我們先用一個小流程證明 30% 時間下降,你們願意讓哪個部門試跑?」</td><td>proof_needed, pilot_scope</td></tr>
<tr><td>Close</td><td>取得下一步承諾</td><td>「下一步我會把今天確認的三個痛點轉成一頁提案,請你指定驗收人與可接受的指標。」</td><td>next_step_owner, due_date, acceptance_metric</td></tr>
</tbody>
</table>
</section>
<section class="grid cols3">
<div class="card"><h3 class="good">Value Path</h3><p>拜訪腳本讓業務能把客戶質疑轉成 proposal input,縮短從訪談到提案的時間,提高下一步承諾率。</p></div>
<div class="card"><h3 class="warn">Capability Upgrade</h3><p>客戶成功窗口學會問「現況、理想、成本、證據、下一步」,產品窗口學會用真實阻力更新差異化主張。</p></div>
<div class="card"><h3 class="risk">Stop Condition</h3><p>若拜訪後沒有回填痛點、阻力與下一步 owner,該次拜訪不算完成,也不能進提案產線。</p></div>
</section>
<section>
<div class="script">
<div><strong>Purpose</strong><br>產出第一版客戶拜訪腳本</div>
<div><strong>Artifact</strong><br>可開 dashboard + script template + proposal data model</div>
<div><strong>Metric</strong><br>拜訪回填率、下一步承諾率、提案生成時間、成交/續談 pipeline</div>
</div>
</section>
<footer>Generated for PLS. Appendix: production-brief.md, data-model.md, acceptance-tests.md, decision-record.md, people-sync.md, learning-memory.json.</footer>
</body>
</html>

Data Model

Tables

script_inputs

field type notes
id uuid primary key
account_name text 客戶名稱
industry text 產業
imported_source_url text 匯入資料或簡報來源
known_pains jsonb 已知痛點
differentiation_claims jsonb 墨宇優勢主張
evidence_assets jsonb 案例、數字、截圖、demo
owner_id uuid 墨宇產品負責人
status enum draft, approved, used, archived

visit_scripts

field type notes
id uuid primary key
script_input_id uuid source input
version int script version
opening text 開場定位
discovery_questions jsonb status quo / ideal state / cost / proof
value_proof jsonb 對應優勢與證據
close_commitment text 下一步承諾句
approved_by uuid CEO or product reviewer

visit_records

field type notes
id uuid primary key
visit_script_id uuid script used
customer_success_owner_id uuid 使用者
visited_at timestamptz meeting time
customer_pains jsonb confirmed pains
objections jsonb objections heard
evidence_needed jsonb proof requested
next_step_owner text customer or internal owner
next_step_due date due date
acceptance_metric text customer success metric

proposal_outputs

field type notes
id uuid primary key
visit_record_id uuid source visit
outline jsonb proposal pages
pipeline_amount numeric estimated deal value
next_action text follow-up
status enum draft, reviewed, sent, won, lost

API / Sync

  • POST /proposal-pipeline/script-inputs:匯入客戶背景與產品優勢。
  • POST /proposal-pipeline/scripts/generate:生成拜訪腳本草稿。
  • POST /proposal-pipeline/visit-records:拜訪後回填。
  • POST /proposal-pipeline/proposal-output:由回填生成 proposal outline。
  • GET /proposal-pipeline/accounts/:id/health:回傳腳本使用、回填、下一步承諾、pipeline。

Permissions

  • CEO 決策窗口:可 approve script、調整 pipeline amount、決定是否進提案。
  • 產品負責人:可維護差異化主張、證據素材、腳本版本。
  • 客戶成功窗口:可使用腳本與回填拜訪紀錄。
  • 營運負責人:可看 cadence 和缺漏欄位。
  • 工程窗口:可接匯入、生成、同步 API,不可修改商業承諾。

Audit / Rollback

  • 每次腳本版本與拜訪回填保留 immutable audit。
  • 若腳本被 CEO reject,回到 draft 並標記 rejected_reason。
  • proposal output 若 pipeline amount 變更,保留 before/after 與變更人。

Decision Record

Decision

選擇 project + tool + communication:用 dashboard 和資料契約把第一版客戶拜訪腳本變成提案產線入口。

Options Considered

  • communication only:可給話術,但拜訪後資料不會進入提案產線,不足。
  • doc only:可寫腳本,但無法管理 owner、驗收、回填、下一版素材,不足。
  • presentation only:可做漂亮拜訪簡報,但目前真正卡點是匯入資料轉可採用成果與驗收節奏,不足。
  • full CRM system:方向正確,但本輪沒有 CRM/PLS DB migration window,先做 production pack 與 API schema。

Recommendation

先把拜訪腳本定義成資料產品:每次拜訪都產生痛點、反對意見、證據需求、下一步 owner 與提案頁。這比單次話術更能累積客戶策略簡報與提案產線資產。

Adopted Path

  1. D1 建立 script_inputs。
  2. D7 產出 approved visit_script。
  3. D14 回填 visit_records。
  4. D30 生成 proposal_outputs 並進 pipeline review。

Feedback Needed

  • 哪些客戶/產業先跑第一版?
  • CEO 要先看腳本,還是先看拜訪後 proposal outline?
  • pipeline amount 是否由 CEO 或營運負責人審核?

E2E Verification

Plan

  1. Publish primary HTML and appendices to public Gist.
  2. Verify primary URL returns HTTP 200.
  3. Verify Gist includes 13 files.
  4. Verify local package has no pending publish markers.
  5. Upload files to PLS deliverable id.
  6. Complete with stable public artifact URLs.

Primary Artifact

https://gist.github.com/esz135888/18addaf86d1704d2a7f09522ec47a7c6#file-customer-visit-script-pipeline-command-center-html

Evidence

  • Public Gist: https://gist.github.com/esz135888/18addaf86d1704d2a7f09522ec47a7c6
  • Primary URL check: curl -I -L -s "https://gist.github.com/esz135888/18addaf86d1704d2a7f09522ec47a7c6#file-customer-visit-script-pipeline-command-center-html" | head -n 8
  • Gist file list check: gh gist view 18addaf86d1704d2a7f09522ec47a7c6 --files
  • Result: primary URL returned HTTP/2 200; public Gist file list showed all 13 files; local pending marker scan returned no matches.

Acceptance Mapping

  • Openable main artifact: customer-visit-script-pipeline-command-center.html.
  • Owner/due/acceptance: production-brief.md, people-sync.md, acceptance-tests.md.
  • Data/toolbox path: data-model.md, production-readiness.md.
  • Decision record: decision-record.md.
{
"project": "AI 自建專案:客戶策略簡報與提案產線 的最大化推進",
"job_id": "8d969e57-af9e-4e79-8212-a184be732625",
"learned": [
"A customer visit script is only valuable if it captures proposal inputs after the meeting.",
"The repeated signals point to a messaging gap: customers do not feel the advantage at specific moments, so scripts must surface objections and evidence needs.",
"Structured discovery and B2B value messaging are mature external practices; PLS needs a data layer to reuse each visit."
],
"next_checks": [
"Check whether the first visit script was approved by product owner or CEO.",
"Check whether customer success returned pain, objection, evidence_needed, next_step fields within 24 hours.",
"Check whether any visit produced a proposal outline or lost reason."
],
"invalidated_assumptions": [
"A polished script alone is enough to improve proposals.",
"Customer success notes can remain unstructured and still feed a scalable proposal pipeline."
]
}

Market Maturity

External Sources Checked

Mature Practice

  • Structured discovery guides sellers from qualification to buying-stage clarity.
  • Good scripts show pre-call research and avoid sounding pushy.
  • Discovery questions compare current state and ideal state, and gather proposal inputs.
  • B2B messaging often misses what customers value; frontline interaction and research should refresh messaging.
  • B2B value includes functional, ease-of-doing-business, individual, and inspirational value elements.

PLS Current Gap

PLS context shows repeated signals about 客戶感受不到優勢、需要痛點清單、需要內部共識文件,但尚未把拜訪腳本、痛點回填、提案頁生成、owner 驗收串成產線。

This Round Closes

本輪補上拜訪腳本控制台、資料模型、API/sync、權限、驗收、people sync 和 learning memory,讓下輪能接入 PLS/CRM 工作流。

People Sync

墨宇產品負責人

訊息:這輪先不要再產一份孤立話術。我們把「第一版客戶拜訪腳本」改成提案產線入口:D7 前請 approve 一版腳本,內容要包含開場定位、現況/理想/成本/證據問題、下一步承諾句。拜訪後資料會回流成 proposal outline。

Expected reply:是否 approve 腳本、第一個客戶/產業、要強調的差異化證據。

墨宇客戶成功窗口

訊息:請用腳本跑第一場拜訪,拜訪後只回四欄:客戶痛點、客戶質疑、需要的證據、下一步 owner/due/metric。沒有回填不算完成拜訪,也不會進提案產線。

Expected reply:拜訪時間、回填連結、3 個痛點或質疑。

墨宇 CEO 決策窗口

訊息:這包會讓每次客戶拜訪產生可決策資料。D30 你只看三件事:腳本是否被採用、拜訪後是否有完整回填、是否生成可送出的 proposal outline 或明確 lost reason。

Expected reply:是否接受 D30 gate,以及 pipeline amount 由誰審。

墨宇營運負責人

訊息:請監控 D7/D14/D30 cadence。D14 前至少三筆拜訪回填,缺欄位就提醒 owner 補齊。

Expected reply:週節奏 owner、回填稽核方式。

墨宇工程窗口

訊息:下一輪需要接 script_inputs、visit_records、proposal_outputs API。這輪先看 data-model,回覆是否有既有 CRM/表單可接。

Expected reply:可接資料源、API/表單限制。

Production Brief

場景

客戶策略簡報與提案產線目前需要把匯入資料轉成可採用成果,並建立 owner/驗收節奏。本輪把「產出第一版客戶拜訪腳本」升級成 production pack:拜訪腳本控制台、資料模型、驗收條件、people sync、learning memory。

D1 / D7 / D14 / D30

  • D1:建立 script_input,收客戶背景、痛點清單、產品差異化證據、既有簡報、近期客戶質疑場景。
  • D7:產出第一版三段式拜訪腳本:開場定位、痛點探索、價值確認與下一步承諾。
  • D14:每次拜訪回填 objection、buyer pain、evidence needed、next proposal page,形成提案素材庫。
  • D30:腳本可驅動 proposal outline、拜訪簡報頁、CRM 下一步、owner cadence,並追蹤 pipeline/續談率。

Purpose-to-Purpose E2E

原始目的:產出第一版客戶拜訪腳本。

產出物:可開啟 dashboard、腳本模板、資料模型、驗收測試、people sync、decision record。

人採用:墨宇客戶成功窗口用腳本拜訪與回填;產品負責人用回填資料更新差異化優勢;CEO 決策窗口看下一步承諾率與提案生成時間。

指標改善:拜訪後資料完整率提升、從拜訪到提案時間下降、客戶反對意見可追蹤、提案命中率與 pipeline 可量化。

價值/錢路徑

  • 提高轉換:把每次拜訪的 status quo、ideal state、pain、proof needed 直接轉成提案頁。
  • 節省成本:減少客戶成功與產品重複整理訪談內容。
  • 降低風險:避免業務只講優勢但沒對到客戶實際質疑。
  • 釋放人力:把拜訪後整理變成結構化回填,下一版可自動生成 proposal outline。

Owner / Due / Acceptance

  • Owner:墨宇產品負責人。
  • Supervisor:墨宇 CEO 決策窗口。
  • Support:墨宇客戶成功窗口、墨宇營運負責人、墨宇工程窗口。
  • Due:D7 第一版腳本;D14 三次拜訪回填;D30 提案產線化。
  • Acceptance:至少 1 份可用腳本、3 筆拜訪回填、1 份 proposal outline、CEO/產品/客戶成功三方採納。

LINE 草稿

墨宇產品負責人,這輪不是再整理一份漂亮話術,而是把客戶拜訪變成提案產線入口。請 D7 前採用這份腳本跑第一場:開場先確認客戶目標,不急著 pitch;中段問現況/理想/成本/證據;收尾拿到下一步 owner、due date、驗收指標。拜訪後請客戶成功窗口回填痛點、質疑、需要的證據、下一頁提案內容。沒有回填,不算完成拜訪。

下一輪升級

visit_records 接入 PLS 後台,讓每次拜訪自動生成 proposal outline、follow-up LINE、下一版簡報 page backlog。

Production Readiness

Ready Now

  • Primary HTML dashboard 可開啟。
  • 第一版拜訪腳本流程、回填欄位、proposal output 資料契約已定義。
  • Owner/due/acceptance、people sync、D1/D7/D14/D30 已清楚。

Not Yet Ready

  • 尚未接 PLS 後台資料表或 CRM。
  • 尚未用真實客戶拜訪回填測試。
  • 尚未產出 DOCX/PPTX proposal template,本輪先定義 proposal output schema。

Integration Plan

  1. 在 PLS 建 script_inputs, visit_scripts, visit_records, proposal_outputs
  2. 匯入既有客戶背景與簡報。
  3. 由 worker 生成腳本草稿,產品負責人/CEO approve。
  4. 客戶成功使用腳本並回填。
  5. worker 依 visit_records 生成 proposal outline。

Rollback

若腳本降低拜訪品質,將版本標記 rejected,回到前一 approved script;若資料欄位過重,先保留 pain/objection/next_step 三欄 MVP。

Skill Usage

Selected Skills / Tools

  • frontend-design:建立可開啟 HTML primary dashboard。
  • verification-before-completion:完成前驗證 public URL、Gist file list、pending marker、PLS upload/complete。
  • Web search:查核 Gartner structured discovery、HubSpot sales scripts、Salesforce discovery call、McKinsey/Bain B2B value messaging。
  • PLS helper:doctor、touch、claim、context、progress、upload-files、complete。
  • GitHub Gist CLI:發布 public artifact。

Evidence

  • PLS context 取得 job id 8d969e57-af9e-4e79-8212-a184be732625 與 deliverable id b121d20d-04eb-4fc2-a114-2fd3560346f2
  • 搜尋結果包含 Gartner、HubSpot、Salesforce、McKinsey、Bain 來源。
  • 完成前會把 Gist URL、HTTP 200、13 檔清單、upload-files 結果寫入 e2e-verification.md
  • Public Gist: https://gist.github.com/esz135888/18addaf86d1704d2a7f09522ec47a7c6

Solution Selection

Selected

  • project:需要 owner、D1/D7/D14/D30、RACI、cadence、驗收節奏。
  • tool:拜訪腳本要變成可操作模板與資料入口,未來可自動生成 proposal outline。
  • communication:需要提供 LINE 推送與採納訊號,讓相關窗口知道要回什麼。
  • system:下一輪要接 PLS 後台、CRM/匯入資料、audit、權限。

Why Not Smaller

單純話術或文件無法解決「匯入資料轉成可採用成果」和「owner/驗收節奏」問題。

Why Not Larger

本輪沒有 CRM 實際資料庫與權限 token,因此不做假部署;先交可開 dashboard、資料模型、API/spec、驗收規格。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment