Customer Journey Mapper
Overview
Create the final customer journey map in Traditional Chinese from the customer's point of view.
This skill is downstream of persona definition and journey-framing work.
If no completed persona is available yet, stop and use customer-persona-framer first.
Default output is one Markdown table in transposed vertical form:
項目 | 認知 | 考慮/研究 | 決策/購買 | 使用 | 關係建立
The row order is fixed:
動機
行動
情緒
(服務)接觸點
感受/關鍵時刻
科技服務
行銷方法
目標
動機 must always appear before 行動.
When To Use
Use this skill when:
- the user wants the finished customer journey map or CJM table itself
- the task already has a clear persona and a product or service
- the task includes a
handoff_to_customer_journey_mapper block from upstream framing work
- the user wants stages, touchpoints, emotions, key moments, marketing methods, or service ideas arranged into one final journey table
- the output should be practical for proposals, workshops, internal strategy, or coursework
- the user asks for emotion scores, 情緒分數, 情緒曲線, sparkline, or 加減分原因 on any CJM
Do not use this skill when:
- the task is only a persona profile, 人物誌, 顧客輪廓, or target audience definition with no final journey map
- the task is only 5W1H, touchpoint discovery, or journey pre-analysis; use
customer-persona-framer
- no completed persona is provided yet; use
customer-persona-framer first, then return with the persona or handoff_to_customer_journey_mapper
- the task is only a funnel KPI dashboard with no customer narrative
- the user wants a service blueprint with backstage operations; this skill is customer-facing only
Input Contract
Required:
Optional:
品牌/產業背景
目標市場
目前接觸點
輸出用途
handoff_to_customer_journey_mapper
情緒分數模式 — whether to include emotion scores (see Emotion Score Module below)
If handoff_to_customer_journey_mapper is present:
- treat the block as authoritative input
- do not re-ask fields that are already present
- let explicit user overrides outside the block win over the handoff block
Default assumptions:
- produce one core persona journey, not multiple persona versions
- if the user provides custom stages, use them
- otherwise use the fixed five stages in this skill
Data Sufficiency Gate
If both required inputs are clear enough, generate the table directly.
If no completed persona is available, do not draft the final map yet.
Route the work to customer-persona-framer first.
If a handoff_to_customer_journey_mapper block contains at least 顧客輪廓 and 產品或服務, generate directly from the handoff.
If information is missing and the user did not ask for speed:
- ask concise follow-up questions first
- do not generate the final map yet
If information is missing and the user asks for a quick draft, for example:
Then:
- list
3-5 assumptions first
- generate the full table after the assumptions
- keep the assumptions concrete and business-relevant
Stage Policy
Default stages:
If the user explicitly defines different stages, respect the user-defined stages and preserve the same row order.
Emotion Score Module
Activate this module when the user asks for any of: 情緒分數, 情緒曲線, sparkline, 加減分原因, 1-5分, or requests that the emotion row include scores.
Scoring rules
- Scale: 1–5, baseline = 3 (neutral, no strong feeling either way)
- Score each stage independently based on what the customer would realistically feel at that point
- Score = baseline (3) + sum of all plus factors − sum of all minus factors
- Clamp final score to [1, 5]
Plus factors (raise score above 3)
- Peer recommendation or social proof encountered
- Trial / demo that delivers immediate, visible value
- Friction removed (time saved, format correct on first try)
- Unexpected delight (feature solves a pain not explicitly mentioned)
- Long-term trust formed (data continuity, smooth handover, loyalty reward)
Minus factors (lower score below 3)
- Existing negative stereotype about the product category
- Unfamiliarity (never heard of this before)
- Unresolved cost/value doubt
- Fear of making a mistake (wrong format, data loss, learning curve)
- Residual friction after use (manual corrections needed, partial failure)
Output for emotion scores
Always produce two separate outputs:
1. Emotion curve row (inside the CJM table)
Split the 情緒 row into two sub-rows:
- Sub-row A label:
情緒曲線 — contains a sparkline. Each data point must be positioned at the horizontal center of its stage column.
- Sub-row B label: (empty) — contains the per-stage emotion text (real state or state change in customer voice), one cell per stage, background color matching the stage column color.
2. Emotion score detail table (below the CJM)
A separate table with columns: 階段 | 情緒分數 | 加分原因 | 減分原因
情緒分數: bold, center-aligned, e.g. 2 分
加分原因: each factor on its own line, prefixed with +, green text
減分原因: each factor on its own line, prefixed with -, red text
- If a stage has no plus or minus factors, write
(無)
Sparkline in Word documents (.docx)
When the output format is .docx and the emotion score module is active:
Generate a matplotlib PNG:
figsize = (390/72, 90/72) — maps to exactly 390 pt wide (5 stage cols × 78 pt each)
xlim = [0, 5] — each stage column occupies exactly 1 unit
- Data points at
x = [0.5, 1.5, 2.5, 3.5, 4.5] — centers of each column
- Vertical dotted dividers at
x = 1, 2, 3, 4 — align with column borders
- Dashed baseline at
y = 3
- Fill area between curve and baseline: blue (
#378ADD, alpha 0.20) above; red (#E24B4A, alpha 0.20) below
- Point colors: red (
#E24B4A) if score < 3, amber (#BA7517) if score < 4, green (#3B6D11) if score ≥ 4
- Score labels above each point, bold, matching point color
subplots_adjust(left=0, right=1, top=1, bottom=0) — zero padding so image edges align with column edges
- Background
#F0F7FF, no axes, no tick marks, no spines
- Save at
dpi=150, bbox_inches='tight', pad_inches=0
Embed in the CJM table:
- Sparkline cell spans all 5 stage columns (
columnSpan: 5)
- Cell margins:
top=0, bottom=0, left=0, right=0 — no padding so image fills exactly to column boundaries
ImageRun transformation: { width: 390, height: 76 } — exact pt dimensions
- Text sub-row below: empty label cell + 5 individual cells with emotion text per stage
Sparkline in chat (Markdown / widget)
Render the sparkline using Chart.js with a line chart:
- Labels: the five stage names
- Scores dataset: computed scores,
tension: 0.35, fill: true
- Point colors: red if < 3, amber if < 4, green if ≥ 4
- Second dataset: baseline
[3,3,3,3,3], dashed, no points
- Disable default legend; build custom HTML legend above the chart
- Show the detail table below the chart as a styled HTML or card layout
Output Contract
Always answer in Traditional Chinese.
Preferred format:
- one Markdown table
- transposed vertical layout
- stages as column headers
- fixed row order as below
| 項目 | 認知 | 考慮/研究 | 決策/購買 | 使用 | 關係建立 |
|---|---|---|---|---|---|
| 動機 | | | | | |
| 行動 | | | | | |
| 情緒 | | | | | |
| (服務)接觸點 | | | | | |
| 感受/關鍵時刻 | | | | | |
| 科技服務 | | | | | |
| 行銷方法 | | | | | |
| 目標 | | | | | |
When the emotion score module is active, replace the single 情緒 row with:
| 情緒曲線 | [sparkline / score sequence] | [→] | [→] | [→] | [→] |
| (空白) | [emotion text] | ... | ... | ... | ... |
And append the emotion score detail table after the CJM.
Workflow
- Read the direct inputs and any
handoff_to_customer_journey_mapper block.
- Normalize the effective inputs, using explicit user overrides over handoff values.
- Check if emotion score module should be activated.
- Read the persona and the product or service.
- Infer or confirm the purchase and use context.
- Build the journey from the customer's point of view, not the brand's point of view.
- Fill the five stages in order unless the user supplied different stages.
- Write
動機 before 行動 in every stage.
- If emotion score module is active: score each stage, compute plus/minus factors, prepare sparkline.
- Make
科技服務, 行銷方法, and 目標 logically connected.
- Do a final check for format, language, and customer viewpoint.
Quality Rules
- use customer voice and customer logic
- avoid brand slogans or empty marketing claims
- make each cell specific enough to act on
- let
情緒 show a real state or state change
- let
感受/關鍵時刻 describe the moment that changes momentum
- make
科技服務 an enabler, not a vague buzzword
- make
行銷方法 match the stage and touchpoint
- make
目標 describe what the service or marketing action is trying to achieve
- do not fall back to a horizontal table where each stage is a row
- if the input is persona-only or framing-only, do not force a final table; route the work to
customer-persona-framer
- emotion scores must reflect real customer psychology, not brand optimism — scores below 3 are valid and expected in early stages for unfamiliar products
- the largest single-stage score jump in the journey is the Aha Moment; call it out explicitly in the detail table notes or design insights section
Short Example
Input:
顧客輪廓: 忙碌上班族,重視健康但沒時間準備午餐
產品或服務: 健康便當訂閱服務
Output shape (without emotion scores):
| 項目 | 認知 | 考慮/研究 | 決策/購買 | 使用 | 關係建立 |
|---|---|---|---|---|---|
| 動機 | 想找省時又健康的午餐方案 | 想確認價格與口味是否值得 | 想低風險試用避免踩雷 | 想驗證是否真的方便好吃 | 想找到可長期依賴的午餐解法 |
| 行動 | 搜尋健康便當資訊 | 比較方案與評價 | 下單試吃 | 收餐並食用 | 回購與推薦 |
Emotion score example (same persona, scores + factors):
| 階段 |
情緒分數 |
加分原因 |
減分原因 |
| 認知 |
2.5 分 |
(無) |
-0.5 不確定訂閱是否划算;-0.5 擔心口味踩雷 |
| 考慮/研究 |
2.5 分 |
+0.5 朋友有在訂、評價不錯 |
-0.5 試吃門檻高,怕浪費錢 |
| 決策/購買 |
4 分 |
+1 首週折扣降低試錯成本;+0.5 退訂容易降低風險感 |
(無) |
| 使用 |
4.5 分 |
+1 餐點準時到、份量足;+0.5 減少外食煩惱 |
(無) |
| 關係建立 |
5 分 |
+0.5 每週菜單有變化不膩;+0.5 推薦給同事獲得認同感 |
(無) |
← 最大跳升:考慮/研究 → 決策/購買(+1.5 分),Aha Moment = 首週折扣消除試錯顧慮
Suggested Prompt
Use $customer-journey-mapper to create the final Traditional Chinese customer journey map from 顧客輪廓 and 產品或服務, or from a handoff_to_customer_journey_mapper block, using a transposed Markdown table where 動機 appears before 行動. If emotion scores are requested, activate the Emotion Score Module to produce a sparkline row and a per-stage detail table with plus/minus factors.
1---2name: customer-journey-mapper3description: This skill MUST be used when the final customer journey map, CJM, or touchpoint-based journey table must be produced from a completed persona, product or service, or a `handoff_to_customer_journey_mapper` block, especially when the user asks for 顧客旅程地圖, CJM, final journey table, or wants prior persona/framing work turned into the finished map. SHOULD also be used when the user asks for 情緒分數, 情緒曲線, 加減分原因, sparkline, or wants emotion scoring added to an existing CJM.4---56# Customer Journey Mapper78## Overview910Create the final customer journey map in Traditional Chinese from the customer's point of view.11This skill is downstream of persona definition and journey-framing work.12If no completed persona is available yet, stop and use `customer-persona-framer` first.1314Default output is one Markdown table in transposed vertical form:15`項目 | 認知 | 考慮/研究 | 決策/購買 | 使用 | 關係建立`1617The row order is fixed:18191. `動機`202. `行動`213. `情緒`224. `(服務)接觸點`235. `感受/關鍵時刻`246. `科技服務`257. `行銷方法`268. `目標`2728`動機` must always appear before `行動`.2930## When To Use3132Use this skill when:3334- the user wants the finished customer journey map or CJM table itself35- the task already has a clear persona and a product or service36- the task includes a `handoff_to_customer_journey_mapper` block from upstream framing work37- the user wants stages, touchpoints, emotions, key moments, marketing methods, or service ideas arranged into one final journey table38- the output should be practical for proposals, workshops, internal strategy, or coursework39- the user asks for emotion scores, 情緒分數, 情緒曲線, sparkline, or 加減分原因 on any CJM4041Do not use this skill when:4243- the task is only a persona profile, 人物誌, 顧客輪廓, or target audience definition with no final journey map44- the task is only 5W1H, touchpoint discovery, or journey pre-analysis; use `customer-persona-framer`45- no completed persona is provided yet; use `customer-persona-framer` first, then return with the persona or `handoff_to_customer_journey_mapper`46- the task is only a funnel KPI dashboard with no customer narrative47- the user wants a service blueprint with backstage operations; this skill is customer-facing only4849## Input Contract5051Required:5253- `顧客輪廓`54- `產品或服務`5556Optional:5758- `品牌/產業背景`59- `目標市場`60- `目前接觸點`61- `輸出用途`62- `handoff_to_customer_journey_mapper`63- `情緒分數模式` — whether to include emotion scores (see Emotion Score Module below)6465If `handoff_to_customer_journey_mapper` is present:6667- treat the block as authoritative input68- do not re-ask fields that are already present69- let explicit user overrides outside the block win over the handoff block7071Default assumptions:7273- produce one core persona journey, not multiple persona versions74- if the user provides custom stages, use them75- otherwise use the fixed five stages in this skill7677## Data Sufficiency Gate7879If both required inputs are clear enough, generate the table directly.80If no completed persona is available, do not draft the final map yet.81Route the work to `customer-persona-framer` first.8283If a `handoff_to_customer_journey_mapper` block contains at least `顧客輪廓` and `產品或服務`, generate directly from the handoff.8485If information is missing and the user did not ask for speed:8687- ask concise follow-up questions first88- do not generate the final map yet8990If information is missing and the user asks for a quick draft, for example:9192- `先做一版`93- `快速版`94- `可先假設`95- `直接幫我生成`9697Then:98991. list `3-5` assumptions first1002. generate the full table after the assumptions1013. keep the assumptions concrete and business-relevant102103## Stage Policy104105Default stages:106107- `認知`108- `考慮/研究`109- `決策/購買`110- `使用`111- `關係建立`112113If the user explicitly defines different stages, respect the user-defined stages and preserve the same row order.114115## Emotion Score Module116117Activate this module when the user asks for any of: `情緒分數`, `情緒曲線`, `sparkline`, `加減分原因`, `1-5分`, or requests that the emotion row include scores.118119### Scoring rules120121- Scale: **1–5**, baseline = **3** (neutral, no strong feeling either way)122- Score each stage independently based on what the customer would realistically feel at that point123- Score = baseline (3) + sum of all plus factors − sum of all minus factors124- Clamp final score to [1, 5]125126### Plus factors (raise score above 3)127128- Peer recommendation or social proof encountered129- Trial / demo that delivers immediate, visible value130- Friction removed (time saved, format correct on first try)131- Unexpected delight (feature solves a pain not explicitly mentioned)132- Long-term trust formed (data continuity, smooth handover, loyalty reward)133134### Minus factors (lower score below 3)135136- Existing negative stereotype about the product category137- Unfamiliarity (never heard of this before)138- Unresolved cost/value doubt139- Fear of making a mistake (wrong format, data loss, learning curve)140- Residual friction after use (manual corrections needed, partial failure)141142### Output for emotion scores143144Always produce **two separate outputs**:145146**1. Emotion curve row (inside the CJM table)**147148Split the `情緒` row into two sub-rows:149150- Sub-row A label: `情緒曲線` — contains a sparkline. Each data point must be positioned at the horizontal center of its stage column.151- Sub-row B label: *(empty)* — contains the per-stage emotion text (real state or state change in customer voice), one cell per stage, background color matching the stage column color.152153**2. Emotion score detail table (below the CJM)**154155A separate table with columns: `階段 | 情緒分數 | 加分原因 | 減分原因`156157- `情緒分數`: bold, center-aligned, e.g. `2 分`158- `加分原因`: each factor on its own line, prefixed with `+`, green text159- `減分原因`: each factor on its own line, prefixed with `-`, red text160- If a stage has no plus or minus factors, write `(無)`161162### Sparkline in Word documents (.docx)163164When the output format is `.docx` and the emotion score module is active:1651661. Generate a matplotlib PNG:167 - `figsize = (390/72, 90/72)` — maps to exactly 390 pt wide (5 stage cols × 78 pt each)168 - `xlim = [0, 5]` — each stage column occupies exactly 1 unit169 - Data points at `x = [0.5, 1.5, 2.5, 3.5, 4.5]` — centers of each column170 - Vertical dotted dividers at `x = 1, 2, 3, 4` — align with column borders171 - Dashed baseline at `y = 3`172 - Fill area between curve and baseline: blue (`#378ADD`, alpha 0.20) above; red (`#E24B4A`, alpha 0.20) below173 - Point colors: red (`#E24B4A`) if score < 3, amber (`#BA7517`) if score < 4, green (`#3B6D11`) if score ≥ 4174 - Score labels above each point, bold, matching point color175 - `subplots_adjust(left=0, right=1, top=1, bottom=0)` — zero padding so image edges align with column edges176 - Background `#F0F7FF`, no axes, no tick marks, no spines177 - Save at `dpi=150`, `bbox_inches='tight'`, `pad_inches=0`1781792. Embed in the CJM table:180 - Sparkline cell spans all 5 stage columns (`columnSpan: 5`)181 - Cell margins: `top=0, bottom=0, left=0, right=0` — no padding so image fills exactly to column boundaries182 - `ImageRun transformation: { width: 390, height: 76 }` — exact pt dimensions183 - Text sub-row below: empty label cell + 5 individual cells with emotion text per stage184185### Sparkline in chat (Markdown / widget)186187Render the sparkline using Chart.js with a line chart:188189- Labels: the five stage names190- Scores dataset: computed scores, `tension: 0.35`, `fill: true`191- Point colors: red if < 3, amber if < 4, green if ≥ 4192- Second dataset: baseline `[3,3,3,3,3]`, dashed, no points193- Disable default legend; build custom HTML legend above the chart194- Show the detail table below the chart as a styled HTML or card layout195196## Output Contract197198Always answer in Traditional Chinese.199200Preferred format:201202- one Markdown table203- transposed vertical layout204- stages as column headers205- fixed row order as below206207```md208| 項目 | 認知 | 考慮/研究 | 決策/購買 | 使用 | 關係建立 |209|---|---|---|---|---|---|210| 動機 | | | | | |211| 行動 | | | | | |212| 情緒 | | | | | |213| (服務)接觸點 | | | | | |214| 感受/關鍵時刻 | | | | | |215| 科技服務 | | | | | |216| 行銷方法 | | | | | |217| 目標 | | | | | |218```219220When the emotion score module is active, replace the single `情緒` row with:221222```md223| 情緒曲線 | [sparkline / score sequence] | [→] | [→] | [→] | [→] |224| (空白) | [emotion text] | ... | ... | ... | ... |225```226227And append the emotion score detail table after the CJM.228229## Workflow2302311. Read the direct inputs and any `handoff_to_customer_journey_mapper` block.2322. Normalize the effective inputs, using explicit user overrides over handoff values.2333. Check if emotion score module should be activated.2344. Read the persona and the product or service.2355. Infer or confirm the purchase and use context.2366. Build the journey from the customer's point of view, not the brand's point of view.2377. Fill the five stages in order unless the user supplied different stages.2388. Write `動機` before `行動` in every stage.2399. If emotion score module is active: score each stage, compute plus/minus factors, prepare sparkline.24010. Make `科技服務`, `行銷方法`, and `目標` logically connected.24111. Do a final check for format, language, and customer viewpoint.242243## Quality Rules244245- use customer voice and customer logic246- avoid brand slogans or empty marketing claims247- make each cell specific enough to act on248- let `情緒` show a real state or state change249- let `感受/關鍵時刻` describe the moment that changes momentum250- make `科技服務` an enabler, not a vague buzzword251- make `行銷方法` match the stage and touchpoint252- make `目標` describe what the service or marketing action is trying to achieve253- do not fall back to a horizontal table where each stage is a row254- if the input is persona-only or framing-only, do not force a final table; route the work to `customer-persona-framer`255- emotion scores must reflect real customer psychology, not brand optimism — scores below 3 are valid and expected in early stages for unfamiliar products256- the largest single-stage score jump in the journey is the Aha Moment; call it out explicitly in the detail table notes or design insights section257258## Short Example259260Input:261262- `顧客輪廓`: 忙碌上班族,重視健康但沒時間準備午餐263- `產品或服務`: 健康便當訂閱服務264265Output shape (without emotion scores):266267```md268| 項目 | 認知 | 考慮/研究 | 決策/購買 | 使用 | 關係建立 |269|---|---|---|---|---|---|270| 動機 | 想找省時又健康的午餐方案 | 想確認價格與口味是否值得 | 想低風險試用避免踩雷 | 想驗證是否真的方便好吃 | 想找到可長期依賴的午餐解法 |271| 行動 | 搜尋健康便當資訊 | 比較方案與評價 | 下單試吃 | 收餐並食用 | 回購與推薦 |272```273274Emotion score example (same persona, scores + factors):275276| 階段 | 情緒分數 | 加分原因 | 減分原因 |277|---|---|---|---|278| 認知 | 2.5 分 | (無) | -0.5 不確定訂閱是否划算;-0.5 擔心口味踩雷 |279| 考慮/研究 | 2.5 分 | +0.5 朋友有在訂、評價不錯 | -0.5 試吃門檻高,怕浪費錢 |280| 決策/購買 | 4 分 | +1 首週折扣降低試錯成本;+0.5 退訂容易降低風險感 | (無) |281| 使用 | 4.5 分 | +1 餐點準時到、份量足;+0.5 減少外食煩惱 | (無) |282| 關係建立 | 5 分 | +0.5 每週菜單有變化不膩;+0.5 推薦給同事獲得認同感 | (無) |283284← 最大跳升:考慮/研究 → 決策/購買(+1.5 分),Aha Moment = 首週折扣消除試錯顧慮285286## Suggested Prompt287288Use `$customer-journey-mapper` to create the final Traditional Chinese customer journey map from `顧客輪廓` and `產品或服務`, or from a `handoff_to_customer_journey_mapper` block, using a transposed Markdown table where `動機` appears before `行動`. If emotion scores are requested, activate the Emotion Score Module to produce a sparkline row and a per-stage detail table with plus/minus factors.