Skip to content

Instantly share code, notes, and snippets.

@esz135888
Last active May 23, 2026 22:03
Show Gist options
  • Select an option

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

Select an option

Save esz135888/b3c8ab736a1f9b34c96e792597a6e1d4 to your computer and use it in GitHub Desktop.
Customer visit script adoption scorecard - job d1bf65a4

E2E Acceptance Tests

A. Adoption Threshold

  1. Given first script already exists,
  2. When this iteration runs without visit records,
  3. Then PLS must request adoption evidence instead of producing another generic script.

Expected evidence: people_sync requires 2 completed visits and 5 pain-scene records.

B. CSV Import

  1. Given visit-feedback-template.csv is uploaded,
  2. When import runs,
  3. Then records are accepted only if visit_id, pain_moment, proof_needed, success_metric, next_step, and case_boundary are present.

Expected evidence: import returns accepted rows and schema errors.

C. Proposal Readiness

  1. Given 2 visits and 5 pain scenes exist,
  2. When readiness scoring runs,
  3. Then PLS can generate proposal brief v1.

Expected evidence: readiness score >= 80 and route = proposal_brief.

D. Case Boundary Guard

  1. Given a case has no approval boundary,
  2. Then external proposal generation is blocked.

Expected evidence: route = people_sync for CEO decision window.

E. Anti-Fake Completion

No PR/deployment is claimed unless a verified URL exists. This job is a production adoption pack, not a code deployment.

Current Verification

  • Primary Gist returns HTTP 200.
  • Gist contains HTML scorecard, CSV template, production brief, data model, acceptance tests, decision record, learning memory, sources, and artifact URL/PR note.
  • PLS upload-files reports all files uploaded.

Artifact URL / PR Status

Primary artifact URL: https://gist.github.com/esz135888/b3c8ab736a1f9b34c96e792597a6e1d4

No GitHub PR or deployment was created in this job.

Reason: this job is an adoption scorecard and feedback schema for a customer visit script. PLS context does not provide repo URL, local repo path, branch, deployment target, or API credentials.

Next valid step: collect two completed visit records and five pain-scene records, or provide repo/API target for repo_change.

Data Model / API / Sync / Permission Spec

Tables

visit_adoption_records

column type note
id uuid adoption record id
script_version text v1/v2
visit_id text visit key
visit_date date visit date
customer_segment text anonymized segment
visit_owner_profile_id uuid product owner
completed_at timestamptz completion time
next_step_type text sample_data/workshop/proposal/disqualify

pain_scene_records

column type note
id uuid pain record id
visit_id text source visit
pain_moment text when customer questioned value
failed_answer text weak answer
proof_needed text evidence required
success_metric text measurable acceptance
case_boundary text internal_only/external_allowed/needs_approval
owner_profile_id uuid owner
due_at date follow-up due

proposal_readiness_scores

column type note
id uuid score id
visit_id text source visit
pain_complete boolean has pain moment
metric_complete boolean has success metric
case_boundary_complete boolean has permission boundary
next_step_complete boolean has next action
score numeric 0-100
route text people_sync/proposal_brief/repo_change

API / Sync

  • POST /api/customer-visits/adoption/import
    • accepts visit-feedback-template.csv.
  • GET /api/customer-visits/adoption/scorecard
    • returns adoption count, pain-scene count, missing fields, next route.
  • POST /api/customer-visits/:visit_id/proposal-readiness
    • scores readiness and blocks proposal if required fields are missing.

Permissions / Audit

  • Product owner can edit visit adoption records.
  • Customer success can add pain scenes and proof needed.
  • CEO decision window approves case_boundary=external_allowed.
  • PLS worker can import records, create missing-field actions, and route next jobs.
  • External artifacts must anonymize customers unless approval exists.

Failure / Rollback

  • If visit count < 2, route to people_sync.
  • If pain scenes < 5, route to customer success follow-up.
  • If case boundary missing, block external proposal generation.
  • If all fields complete, route to proposal brief v1 or repo/API implementation.

Decision Record

Decision

Adopt Customer Visit Script Adoption Scorecard for this round.

Problem

The first customer visit script already exists, but this new context still does not include completed visits, pain-scene records, or case-boundary approval. Rewriting the script would not move the project; the next useful artifact is an adoption gate and feedback schema.

Options Considered

  1. Produce another first-version script.
    • Rejected: duplicates previous output.
  2. Generate proposal brief immediately.
    • Rejected: no visit evidence, metrics, or case permission boundary.
  3. Produce adoption scorecard and feedback template.
    • Recommended: creates the missing data path for v2 script and proposal brief.

Recommendation

PLS should not dispatch another generic project_runner for the same script until adoption evidence exists. Next route should be people_sync for visit records, or proposal brief generation if thresholds are met.

Adoption Status

Proposed. Acceptance requires two completed visits and five pain-scene records.

Landing Path

Owner: 墨宇產品負責人. Support: 墨宇客戶成功窗口. Supervisor: 墨宇 CEO 決策窗口. Due: 2026-05-30.

Feedback If Not Adopted

Return either the real visit notes, the customer segment to prioritize, or a rejection explaining why the first script should be rewritten before being tested.

{
"job_id": "d1bf65a4-9b3e-4485-94d5-b426aeced525",
"project": "AI 自建專案:客戶策略簡報與提案產線",
"learned_at": "2026-05-24T06:05:00+08:00",
"market_context": [
{
"source": "Gartner sales enablement research",
"lesson": "Sales enablement artifacts should be connected to buyer engagement data and cross-functional content, not static scripts alone."
},
{
"source": "HubSpot discovery call guidance",
"lesson": "Scripts work best when they guide discovery and capture buyer goals, challenges, and next steps."
},
{
"source": "McKinsey B2B sales AI guidance",
"lesson": "Personalized value propositions and account planning require structured customer data after each interaction."
}
],
"pls_next_checks": [
"If first script artifact exists, check for visit adoption records before dispatching another script task.",
"Do not generate proposal brief without pain scenes, success metrics, next step, and case boundary.",
"Route missing adoption evidence to people_sync, not project_runner."
],
"assumptions_overturned": [
"More script text is not the bottleneck after v1 exists.",
"Proposal generation before customer evidence would create generic sales material.",
"Case permission is a gating field, not a later polishing detail."
],
"next_iteration_condition": "Two completed visit records and five pain-scene records must exist before proposal brief v1."
}

Production Brief:客戶拜訪腳本採用回收與 v2 門檻

場景

上一輪已完成第一版客戶拜訪腳本 production pack;本輪 context 仍沒有 2 場拜訪紀錄、5 筆「客戶感受不到優勢」痛點、或案例授權邊界。繼續重產腳本不會推進專案,因此本輪升級為採用回收與 v2 迭代門檻:讓 PLS 知道何時追人、何時產 proposal brief、何時派 repo/API。

30 天路徑

  • D1:墨宇產品負責人用 v1 腳本完成 2 場拜訪;客戶成功窗口依模板補 5 筆痛點場景。
  • D7:PLS 將拜訪回收轉成 scorecard,整理 top 5 質疑時刻與有效證據。
  • D14:生成 proposal brief v1,並由 CEO 決策窗口審案例使用邊界。
  • D30:形成可重複產線:客戶資料 → 拜訪紀錄 → 痛點 scorecard → 提案 brief → 成交/流失復盤。

目的到目的 E2E

原始目的:把第一版腳本變成真的客戶採用與提案資料。 產出物:採用回收控制台、CSV 模板、資料模型、驗收測試、decision record。 人採用:產品負責人跑拜訪;客戶成功窗口補痛點;CEO 審案例;PLS 路由下一步。 指標改善:next step 率、痛點回收率、案例授權合規率、提案生成時間。

價值/錢路徑

  • 提高轉換:沒有 next step 的拜訪會被標記為無效拜訪。
  • 節省成本:不再重複寫腳本,用回收資料直接改 v2。
  • 降低風險:案例未授權不進外部提案。
  • 提高成交機率:提案只建立在痛點、證據、驗收指標齊全的拜訪上。
  • 釋放人力:PLS 自動判斷追資料、產 brief、或派 repo_change。

提升人的能力

產品負責人會更快知道哪些差異化話術無效;客戶成功會更會記錄客戶質疑的具體時刻;CEO 能用案例邊界控風險;工程只在資料齊全時接 API,不被空泛需求打斷。

Solution Stack

  • 脈絡框架:script adoption → visit feedback → pain scorecard → proposal brief → case boundary。
  • 作業流程:每場拜訪後 24 小時內填 visit-feedback-template.csv 欄位。
  • 資料/DB 模型:見 data-model.md
  • 可操作工具:visit-adoption-scorecard.htmlvisit-feedback-template.csv
  • 驗收指標:見 acceptance-tests.md
  • 採用與下一輪升級:滿足 2 場拜訪與 5 筆痛點後,下一輪產 proposal brief v1。

People Sync / LINE 草稿

墨宇產品負責人:腳本已完成,現在缺的是採用證據。請用上一版腳本完成 2 場拜訪,並回填客戶在哪一段開始質疑、要什麼證據、下一步是 sample data / workshop / proposal / disqualify。

墨宇客戶成功窗口:請補 5 筆「客戶感受不到優勢」痛點場景,欄位照 CSV 模板填,否則下一版提案仍會停在抽象話術。

墨宇 CEO 決策窗口:請審案例邊界,特別是哪些案例能外部使用、哪些只能內部訓練。

上一版問題 → 本輪修改 → 驗證結果 → 下一輪建議

上一版問題:腳本已產出,但沒有採用回收資料。 本輪修改:建立採用 scorecard 與 CSV 模板,明確 PLS 路由規則。 驗證結果:成果含可開啟主工具、資料模型、驗收、decision record。 下一輪建議:回收 2 場拜訪與 5 筆痛點後,生成 proposal brief v1。

Market Context Sources

Current practice check date: 2026-05-24 Asia/Taipei.

  1. Gartner, "What Is Sales Enablement? The CSO's Ultimate Guide". URL: https://www.gartner.com/en/sales/role/sales-enablement Use: supports data-driven enablement and buyer engagement.

  2. Gartner press release, "AI-Driven Sales Enablement Will Deliver 40% Faster Sales Stage Velocity", published 2026-04-01. URL: https://www.gartner.com/en/newsroom/press-releases/2026-04-01-gartner-predicts-ai-driven-sales-enablement-will-deliver-40-percent-faster-sales-stage-velocity-than-traditional-enablement-methods-by-20291 Use: supports AI-supported enablement tied to stage velocity.

  3. HubSpot, "28 Questions to Ask on a Discovery Call During the Sales Process". URL: https://blog.hubspot.com/sales/discovery-call-questions Use: supports structured discovery around goals and challenges.

  4. HubSpot, "How & why to use sales scripts". URL: https://blog.hubspot.com/sales/sales-scripts-examples Use: scripts should structure calls and not be read rigidly.

  5. Previous PLS artifact, customer visit script production pack. URL: https://gist.github.com/esz135888/a79a147e1808b911a01238f377877752 Use: prior script exists; this round gates adoption and feedback.

<!doctype html>
<html lang="zh-Hant">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>客戶拜訪腳本採用回收 Scorecard</title>
<style>
:root { --ink:#182230; --muted:#667085; --line:#d5dce7; --bg:#f6f8fb; --panel:#fff; --blue:#175cd3; --ok:#087443; --warn:#a15c07; --bad:#b42318; }
body { margin:0; font:14px/1.55 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif; background:var(--bg); color:var(--ink); }
header { padding:28px 32px 18px; background:var(--panel); border-bottom:1px solid var(--line); }
h1 { margin:0 0 6px; font-size:26px; letter-spacing:0; }
h2 { margin:0 0 12px; font-size:17px; }
main { max-width:1200px; margin:0 auto; padding:22px 18px 42px; display:grid; gap:16px; }
section { background:var(--panel); border:1px solid var(--line); border-radius:8px; padding:18px; }
.grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; }
.card { border:1px solid var(--line); border-radius:8px; padding:14px; background:#fbfcff; min-height:104px; }
.label { color:var(--muted); font-size:12px; text-transform:uppercase; }
.value { font-weight:700; font-size:22px; margin-top:4px; }
.blue { color:var(--blue); } .ok { color:var(--ok); } .warn { color:var(--warn); } .bad { color:var(--bad); }
table { width:100%; border-collapse:collapse; }
th,td { text-align:left; vertical-align:top; border-bottom:1px solid var(--line); padding:10px 8px; }
th { color:var(--muted); font-size:12px; }
code { background:#eef2f7; border-radius:4px; padding:1px 5px; }
.small { color:var(--muted); font-size:12px; }
@media (max-width:900px){ .grid{grid-template-columns:1fr;} header{padding:22px 18px;} }
</style>
</head>
<body>
<header>
<h1>客戶拜訪腳本採用回收 Scorecard</h1>
<div class="small">Job d1bf65a4-9b3e-4485-94d5-b426aeced525 · owner 墨宇產品負責人 · support 墨宇客戶成功窗口 · due 2026-05-30</div>
</header>
<main>
<section>
<h2>本輪判斷</h2>
<div class="grid">
<div class="card"><div class="label">上一版</div><div class="value ok">腳本已產出</div><div class="small">Gist: a79a147e1808b911a01238f377877752。</div></div>
<div class="card"><div class="label">目前缺口</div><div class="value bad">無拜訪回收</div><div class="small">Context 未出現 2 場拜訪或 5 筆痛點資料。</div></div>
<div class="card"><div class="label">本輪成果</div><div class="value blue">採用表單</div><div class="small">讓 PLS 判斷是否能進 v2 提案 brief。</div></div>
<div class="card"><div class="label">下一關</div><div class="value warn">v2 條件</div><div class="small">2 visits + 5 pain scenes + case boundary。</div></div>
</div>
</section>
<section>
<h2>拜訪後必填欄位</h2>
<table>
<tr><th>欄位</th><th>說明</th><th>驗收</th></tr>
<tr><td><code>customer_segment</code></td><td>客戶類型、產業、規模</td><td>不可空白</td></tr>
<tr><td><code>pain_moment</code></td><td>客戶開始質疑或感受不到優勢的時刻</td><td>需具體到會議段落</td></tr>
<tr><td><code>failed_answer</code></td><td>原本回答不夠有力的話術</td><td>需記錄原句或摘要</td></tr>
<tr><td><code>proof_needed</code></td><td>客戶需要什麼證據才會相信</td><td>案例/數字/流程圖/試跑資料</td></tr>
<tr><td><code>success_metric</code></td><td>客戶願意用什麼指標驗收</td><td>時間、成本、營收、風險任一</td></tr>
<tr><td><code>next_step</code></td><td>下一步行動</td><td>sample data / workshop / proposal / disqualify</td></tr>
<tr><td><code>case_boundary</code></td><td>案例使用權限</td><td>internal_only / external_allowed / needs_approval</td></tr>
</table>
</section>
<section>
<h2>PLS 路由規則</h2>
<table>
<tr><th>條件</th><th>下一步</th></tr>
<tr><td>少於 2 場拜訪</td><td>people_sync 追墨宇產品負責人,不再重產腳本。</td></tr>
<tr><td>少於 5 筆痛點</td><td>people_sync 追墨宇客戶成功窗口,要求補痛點清單。</td></tr>
<tr><td>案例邊界未核</td><td>派 CEO 決策窗口審內外部 Sales Kit 權限。</td></tr>
<tr><td>資料齊全</td><td>產生 proposal brief v1 或派 repo_change 實作表單/API。</td></tr>
</table>
</section>
</main>
</body>
</html>
visit_id visit_date customer_segment pain_moment failed_answer proof_needed success_metric next_step next_owner next_due case_boundary
VISIT-SAMPLE-001 2026-05-24 B2B service team 客戶問導入後誰維護時開始質疑 我們可以協助導入 需要看到權限與維運流程 7天內少2小時人工整理 workflow_workshop 墨宇產品負責人 2026-05-27 needs_approval
VISIT-SAMPLE-002 2026-05-25 enterprise sales team 客戶問有沒有同業案例時開始質疑 我們有很多案例 需要可公開或去識別案例 下一次會議前確認案例授權 proposal 墨宇客戶成功窗口 2026-05-28 internal_only
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment