| name | stage5-sop-to-guide |
| description | Generate an ALF implementation package from all pipeline outputs. Produces rules draft, RAG knowledge items, dialog type cross-analysis heatmap, automation feasibility analysis, ROI calculation, task flowcharts (05_sales_report/tasks/), API requirements doc, and final ALF implementation guide. **Language:** Auto-detects Korean (ํ๊ตญ์ด) or Japanese (ๆฅๆฌ่ช) from user input. |
Stage 5: ALF ๊ตฌ์ถ ํจํค์ง ์์ฑ
Overview
Stage 1~3 ์ฐ์ถ๋ฌผ์ ๋ชจ๋ ํ์ฉํ์ฌ ALF(AI ์ฑ๋ด) ๋์
์ ์ํ ๊ตฌ์ถ ํจํค์ง๋ฅผ ์์ฑํฉ๋๋ค.
๋จ์ ROI ๋ฆฌํฌํธ๋ฅผ ๋์ด, ์ค์ ์ฑ๋ด ๊ตฌ์ถ์ ํ์ํ ๊ท์น ์ด์ยทRAG ํญ๋ชฉยท์๋ํ ์ ๋ต์ ํจ๊ป ์ ๊ณตํฉ๋๋ค.
Language: Detect the language from the user's first message and respond in that language throughout. Support Korean (ํ๊ตญ์ด) and Japanese (ๆฅๆฌ่ช). Default to Korean if language is unclear.
์
๋ ฅ ํ์ผ:
01_clustering/{company}_messages.csv โ ๋ํ ์์ ๋ฐ์ดํฐ (cluster_id ํฌํจ)
01_clustering/{company}_tags.xlsx โ ํด๋ฌ์คํฐ ๋ฉํ (๋ผ๋ฒจ/ํฌ๊ธฐ)
02_extraction/patterns.json, faq.json โ ํจํด/FAQ
03_sop/*.sop.md + *_FLOWCHART.md โ SOP/ํ๋ก์ฐ์ฐจํธ
03_sop/metadata.json โ SOP ์ปค๋ฒ๋ฆฌ์ง ์ ๋ณด
Stage Flow:
์
๋ ฅ (Stage 1~3 ์ฐ์ถ๋ฌผ)
โ
Step 1: ํ๋ผ๋ฏธํฐ ์์ง (ํ์ฌ, ์ ์๋ด ๊ฑด์, ์๊ธ ๋ฑ + ALF ์ธํ
ํํฉ)
โ
Step 2: LLM โ SOP + patterns/faq ๊ธฐ๋ฐ ๋ถ์
โ rules_draft.md (๊ท์น ์ด์)
โ rag_items.md (RAG ํ์ ํญ๋ชฉ)
โ
Step 3: ๋ํ์ ํ ๋ถ๋ฅ + ๊ต์ฐจ๋ถ์ + ์๋ํ ๋ถ์
scripts/analyze_dialogs.py (Claude API ์ฐ์ , Upstage Solar fallback)
โ cross_analysis.json + heatmap.png
์์ด์ ํธ ์ง์ ์์ฑ (API ํธ์ถ ์์)
โ automation_analysis.md (์๋ํ ๊ฐ๋ฅ์ฑ)
โ
Step 4: Python โ ROI ๊ณ์ฐ
python3 scripts/generate_sales_report.py
โ sales_report_config.json + ROI ์์น
โ
Step 5: LLM โ ํ์คํฌ ์ ์ + API ์๊ฑด ์ ์์
โ 05_sales_report/tasks/TASK{N}_{์ด๋ฆ}.md (ํ์คํฌ๋ณ Mermaid ํ๋ก์ฐ์ฐจํธ + ์์ฝํ)
โ {company}_api_requirements.md (๊ฐ๋ฐํ์ฉ API ์๊ฑด ์ ์์)
โ
Step 6: LLM โ ์ต์ข
ํตํฉ ๋ณด๊ณ ์ (ALF ๋์
๊ฐ์ด๋)
โ {company}_alf_implementation_guide.md
โ
Step 7: LLM โ ์ต์ข
๋ถ์ ๋ฆฌํฌํธ (Rosa ํ๋ ์์ํฌ)
โ {company}_analysis_report.md
์ฐ์ถ๋ฌผ ๋๋ ํ ๋ฆฌ:
results/{company}/
โโโ 05_sales_report/tasks/ โ (Stage 5์์ ์์ฑ)
โ โโโ TASK{N}_{์ด๋ฆ}.md โ ํ์คํฌ๋ณ Mermaid ํ๋ก์ฐ์ฐจํธ + ์์ฝํ
โ โโโ TASK{N}_{์ด๋ฆ}.svg โ (์ ํ, mmdc ์ค์น ์)
โโโ {company}_api_requirements.md โ API ์๊ฑด ์ ์์ (๊ฐ๋ฐํ์ฉ)
โโโ {company}_alf_implementation_guide.md โ ์ต์ข
ALF ๋์
๊ฐ์ด๋
โโโ 05_sales_report/
โโโ alf_setup/
โ โโโ rules_draft.md โ ๊ท์น ์ด์ (์์คํ
ํ๋กฌํํธ)
โ โโโ rag_items.md โ RAG ์ง์ DB ๋ฑ๋ก ํญ๋ชฉ
โโโ analysis/
โ โโโ cross_analysis.json โ ๊ต์ฐจ๋ถ์ ์์ ๋ฐ์ดํฐ
โ โโโ heatmap.png โ ์๋ด์ฃผ์ ร ๋ํ์ ํ ํํธ๋งต
โ โโโ automation_analysis.md โ ์๋ํ ๊ฐ๋ฅ์ฑ ๋ถ์ (4-Layer ๋ชจ๋ธ)
โโโ sales_report_config.json
โโโ {company}_analysis_report.md โ ์ต์ข
๋ถ์ ๋ฆฌํฌํธ (Rosa ํ๋ ์์ํฌ)
Total Time: ~20โ35 minutes (๋ฐ์ดํฐ ํฌ๊ธฐ์ ๋ฐ๋ผ)
Parameters
Required
- company: ํ์ฌ ์๋ณ์ (์:
usimsa, meliens)
- monthly_volume: ์ ์๋ด ๊ฑด์ (์ค์ธก๊ฐ ๋๋ ์ถ์ฐ, ์ ์)
Optional
- hourly_wage (๊ธฐ๋ณธ๊ฐ:
15100): ์๋ด์ฌ ์๊ธ (์, ์๊ธ์ง์
ํฌํธ ์ค์๊ฐ)
- avg_handling_time_min (๊ธฐ๋ณธ๊ฐ:
8): ๊ฑด๋น ํ๊ท ์ฒ๋ฆฌ ์๊ฐ (๋ถ)
- alf_chat_cost (๊ธฐ๋ณธ๊ฐ:
500): ALF ์ฑํ
์ฐธ์ฌ ๋น์ฉ (์/๊ฑด)
- alf_task_cost (๊ธฐ๋ณธ๊ฐ:
200): ALF ํ์คํฌ ์คํ ๋น์ฉ (์/๊ฑด)
- phase2_min_krw / phase2_max_krw: Phase 2 ์ธ์ฃผ ๊ฐ๋ฐ๋น ๋ฒ์ (์)
- output_dir (๊ธฐ๋ณธ๊ฐ:
results/{company}/05_sales_report): ์ถ๋ ฅ ๋๋ ํ ๋ฆฌ
- app_functions (๊ธฐ๋ณธ๊ฐ:
false): ๊ณ ๊ฐ์ฌ๊ฐ ์ฑํ์คํฌ(์ฑํจ์) ์ฐ๋์ ์ฌ์ฉํ๋์ง ์ฌ๋ถ. true ์ Step 5 ํ์คํฌ ๊ธฐํ์์ ์ฝ๋๋
ธ๋ ๋์ ์ฑํจ์๋ฅผ ์ฐ์ ์ ์ฉ ๊ฐ๋ฅํ ํญ๋ชฉ์ ๋ณ๋ ๋ถ๋ฅํจ
- app_functions_services (๊ธฐ๋ณธ๊ฐ:
[]): ์ฐ๋๋ ์ฑ ์๋น์ค ๋ชฉ๋ก. ์: ["์ด์ง์ด๋๋ฏผ", "์นดํ24", "์ฌ๋ฐฉ๋ท"]
Steps
1. Gather Parameters
Actions:
- Scan
results/ for company directories that contain both 01_clustering/ and 03_sop/
- Auto-estimate
monthly_volume from Stage 1 data:
a. Read results/{company}/01_clustering/pipeline_summary.md โ extract original UserChat count (e.g., "์๋ณธ ๋ฐ์ดํฐ: UserChat 4,969๊ฑด")
b. Read the first 2 and last 2 lines of results/{company}/01_clustering/{company}_messages.csv โ extract createdAt min/max to determine date range
c. Calculate: estimated_monthly = original_count / (date_range_days / 30)
d. If pipeline_summary.md is missing, fall back to row count of {company}_clustered.xlsx (note this is the sampled count)
- Use
AskUserQuestion to collect all required inputs at once โ show the estimated monthly volume as the suggested default:
- Target company (select from detected list or enter manually)
monthly_volume (show estimated value + calculation basis, user confirms or overrides)
hourly_wage (show default 15,100์, confirm or update)
phase2_min_krw / phase2_max_krw (outsourcing dev cost range)
- ์ฑํ์คํฌ(์ฑํจ์) ์ฐ๋ ์ฌ๋ถ: "์ด์ง์ด๋๋ฏผยท์นดํ24ยท์ฌ๋ฐฉ๋ท ๋ฑ ์ฑํจ์๋ฅผ ์ฐ๋ํ๊ณ ์๋์? (์/์๋์ค)"
- ์: ์ฐ๋๋ ์๋น์ค ๋ชฉ๋ก ์ ํ (์ด์ง์ด๋๋ฏผ / ์นดํ24 / ์ฌ๋ฐฉ๋ท / ๊ธฐํ)
- Store as
app_functions=true, app_functions_services=[...]
- ์๋์ค:
app_functions=false๋ก ์ค์ , ํ์คํฌ๋ ์ฝ๋๋
ธ๋ ๊ธฐ๋ฐ์ผ๋ก ๊ธฐํ
- Skip if
app_functions was already provided (pipeline mode)
- Auto-resolve file paths:
messages_csv = results/{company}/01_clustering/{company}_messages.csv
tags_xlsx = results/{company}/01_clustering/{company}_tags.xlsx
sop_dir = results/{company}/03_sop
patterns_json = results/{company}/02_extraction/patterns.json
faq_json = results/{company}/02_extraction/faq.json
Monthly Volume Estimation Logic:
์๋ณธ ๊ฑด์: pipeline_summary.md โ "์๋ณธ ๋ฐ์ดํฐ: UserChat {N}๊ฑด"
๋ ์ง ๋ฒ์: messages.csv โ createdAt min ~ max โ {D}์ผ
์ถ์ ์๊ฐ๋: {N} ร (30 / {D}) = {estimated}๊ฑด/์
์) ์๋ณธ 4,969๊ฑด / 30์ผ ๋ฒ์ โ ์ฝ 4,969๊ฑด/์
Constraints:
- You MUST collect ALL inputs in Step 1 โ no further questions after this step
- You MUST present the estimated
monthly_volume with its calculation basis โ user confirms or overrides
- If the estimate is based on sampled data (not original count), clearly note "(์ํ ๊ธฐ๋ฐ ์ถ์ , ์ค์ ๋ณด๋ค ๋ฎ์ ์ ์์)"
- If using defaults, mark them as
(๊ธฐ๋ณธ๊ฐ) in the final report
- If using the auto-estimate, mark as
(๋ฐ์ดํฐ ๊ธฐ๋ฐ ์ถ์ ) in the final report
- ALF ์ธํ
ํํฉ: ๊ท์นยท์ง์ยทํ์คํฌ ์ค ์ด๋ฏธ ์๋ฃ๋ ํญ๋ชฉ์ ํ์ธ โ Step 6 ALF ๊ฐ์ด๋์ โ
/๐ง ํ์์ ๋ฐ์
Expected Output:
โ
Stage 5 ํ๋ผ๋ฏธํฐ ํ์ธ
- Company: kmong_v2
- messages.csv: results/kmong_v2/01_clustering/kmong_messages.csv โ
- tags.xlsx: results/kmong_v2/01_clustering/kmong_tags.xlsx โ
- SOP dir: results/kmong_v2/03_sop โ
(11 SOPs)
- Monthly volume: ~4,969๊ฑด/์ (๋ฐ์ดํฐ ๊ธฐ๋ฐ ์ถ์ : ์๋ณธ 4,969๊ฑด / 30์ผ)
- Hourly wage: 15,100์ (๊ธฐ๋ณธ๊ฐ)
- Handling time: 8๋ถ (๊ธฐ๋ณธ๊ฐ)
- Phase 2 dev cost: 100~300๋ง์
- Output: results/kmong_v2/05_sales_report/
2. Rules Draft + RAG Items (Python + LLM)
2-A. Python: Run extract_alf_setup_data.py
python3 scripts/extract_alf_setup_data.py \
--sop_dir results/{company}/03_sop \
--patterns results/{company}/02_extraction/patterns.json \
--faq results/{company}/02_extraction/faq.json \
--output results/{company}/05_sales_report/alf_setup
Produces alf_setup/alf_setup_data.json containing:
tone_rules.examples โ tone & manner examples from all SOP tone sections
tone_rules.forbidden โ forbidden phrases (โ) from all SOPs
escalation_conditions โ parsed escalation tables from all SOPs (with source SOP)
faq_pairs โ all FAQ Q/A pairs from faq.json
high_freq_patterns โ high/very-high frequency patterns from patterns.json
2-B. LLM: Write rules_draft.md and rag_items.md
Read alf_setup/alf_setup_data.json (single structured file) to produce two output files.
2-A. rules_draft.md โ Rules Draft
No hallucination: Only include content explicitly stated in the SOPs.
Reference: Fetch the ALF ๊ท์น ๋ ํผ๋ฐ์ค Notion page (https://www.notion.so/channelio/2af74b55ec7c80db947edb39c2d59f96) using the mcp__claude_ai_Notion__notion-fetch tool. This page contains best-practice rule examples and detailed condition values (์๋ด์ ์ฐ๊ฒฐ ์กฐ๊ฑด, ๊ณต๊ฐ ํํ, ์ด์ ์๋, ์ง์ ์ฐธ์กฐ ์์น ๋ฑ) that MUST be used to fill in the detailed condition values of each section. The SOP data provides the company-specific content; the Notion reference provides the structural depth and condition logic.
Include all of the following sections:
-
Tone & Manner โ Three sub-sections:
- ๊ธฐ๋ณธ ํ๋ฅด์๋: ALF์ ์ญํ ์ ์ (1~2๋ฌธ์ฅ)
- ๋งํฌ ๊ท์น: ๊ฒฉ์์ฒด/๋น๊ฒฉ์์ฒด ํผํฉ, ๋ต๋ณ ๊ธธ์ด ์ ํ (400์), ๊ฐ๋
์ฑ ๊ท์น
- ์๋ ๊ฐ์ด๋๋ผ์ธ: Synthesize SOP tone sections into behavioral guidelines (์์น) with supporting examples. Include: ์ฒซ ์ง๋ฌธ ํ์ธ ์์น, ์ฒซ ์ธ์ฌ 1ํ ์์น, ๊ตฌ์ฒด์ ๊ฒฝ๋ก ์๋ด, ๊ณต๊ฐ ์ฐ์ , ๋จ๊ณ๋ณ ํด๊ฒฐ, ๋์ ์ ์, ์ฌ์ ๊ฒ์ฆ, ๋ง๋ฌด๋ฆฌ ์๊ฒฐ์ฑ. Aim for 5โ10 guidelines.
-
๊ณต๊ฐ ํํ ๊ท์น โ Detailed empathy response rules:
- ํธ๋ฆฌ๊ฑฐ ์กฐ๊ฑด: ๊ฐ์ ํํ ํจํด (ํดํด๊ฑฐ๋ฆผ, ํฉ๋นํจ, ์ด๋ ค์, ๋ถ๋ง)
- ๊ฐ์ ๋ณ ๊ณต๊ฐ ๋งคํ ํ
์ด๋ธ: ๊ณ ๊ฐ ๊ฐ์ โ ALF ์๋ต (์ต์ 3~5๊ฐ)
- ๊ฐํ ๋ถ๋ง ์ ํ์ : ์ฌ์ฉ ์ค๋จ ์ธ๊ธ ์ ๊ณต๊ฐ/์ฌ๊ณผ โ ๋์ โ ํ์
- Reference the Notion page ๊ณต๊ฐํํ ์์ for structural depth
-
Escalation Conditions โ Two sub-sections:
- ์๋ด์ ์ฐ๊ฒฐ ์์ฒญ ๋จ๊ณ๋ณ ์๋ ({N}ํ ๊ท์น): 1ํ์ฐจ(ALF ์๋) โ 2ํ์ฐจ(์ฌ์๋ด + ALF ์ฅ์ ์ดํ) โ {N}ํ์ฐจ(์ฆ์ ์ฐ๊ฒฐ). Include exact response templates for each stage. Also cover: ์๋ด ๋์ค ์ฐ๊ฒฐ ์์ฒญ, ์ ํ ์๋ด ์์ฒญ. Reference the Notion page ์๋ด์ ์ฐ๊ฒฐ ์กฐ๊ฑด for the 3-strike pattern and exact response templates.
- ์ฆ์ ์๋ด์ ์ฐ๊ฒฐ ์กฐ๊ฑด: Group by situation pattern (๊ฐํ ๋ถ๋ง, AI ๋ถ์ , ๊ธฐ์ ์ค๋ฅ, ์๋น์ค ์ฅ์ , ๋ณด์, ๊ฒฐ์ /ํ๋ถ, ๊ฒฌ์ , API/๊ฐ๋ฐ, ์ธ๋ถ ์ฐ๋ ๋ฑ). End with ํธ๋ฆฌ๊ฑฐ ํค์๋ block.
-
์ด์ ๋ฌธ์ ์๋ ํ๋ฆ โ Step-by-step diagnosis flow:
- ํธ๋ฆฌ๊ฑฐ ํค์๋: ์ฅ์ , ์ค๋ฅ, ์ ์ ๋ถ๊ฐ ๋ฑ
- ์๋ ํ๋ก์ฐ: ์ค๋ฅ ํ๋ฉด ์์ฒญ โ RAG ํ์ธ โ ๊ธฐ๋ฅ ํ์ธ โ ์์ธ ๋ถ๋ฅ (๊ธฐ์กด ๋์ ์ฅ์ vs ์ ๊ท ์ค์ ๋ฌธ์ ) โ ์๋ด์ ์ฐ๊ฒฐ ์กฐ๊ฑด
- Reference the Notion page ์ด์๋ฌธ์์๋ for the complete flow structure
-
์ง์ ์ฐธ์กฐ ์์น โ 6 principles:
- ๋ฑ๋ก๋ ์ง์๋ง ์ฐธ์กฐ, ์ถ์ธก ์ ๋ ๊ธ์ง, ๊ฒฝ์์ฌ ์ธ๊ธ ๊ธ์ง, URL ๊ฒ์ฆ, AI ๋ฉํ ํํ ๊ธ์ง, ์๋ด ๋ถ๊ฐ ์ ๋์
- Include โ/โ
์์ pairs for each principle
- Reference the Notion page ์ง์ ์ฐธ์กฐ ์์ for the exact patterns
-
ํผ๋๋ฐฑ ์์ง ๊ท์น โ (SOP์์ ํผ๋๋ฐฑ/๊ฑด์ ๊ด๋ จ ํจํด์ด ๋ฐ๊ฒฌ๋ ๊ฒฝ์ฐ):
- ํธ๋ฆฌ๊ฑฐ ์กฐ๊ฑด, ์๋ ํ๋ฆ (๊ณต๊ฐ โ ํํฉ โ ์ ์ ์ ๋ โ ๋ฐฐ๊ฒฝ ์์ฒญ), ์ ์์ฌํญ
-
๋ฐ๋ณต ์ง๋ฌธ ๋์ โ ํ์๋ณ ๋์ (1ํ ์์ธ โ 2ํ ์์ฝ โ 3ํ+ ์๋ด์ ๊ณ ๋ ค)
-
๊ณ ๊ฐ์ฌ๋ณ ํน์ ๊ท์น โ SOP์์ ํด๋น ๊ณ ๊ฐ์ฌ์๋ง ์ ์ฉ๋๋ ํน์ ๊ท์น (์: ๊ฐ๊ฒฉ ๊ฐํธ ์๋, ํน์ ํ๋ก๋ชจ์
๋ฑ)
-
Non-automatable situations โ extracted from flowchart ๐ด escalation cases
Output format: templates/ALF_RULES_DRAFT_template.md ๊ตฌ์กฐ๋ฅผ ๋ฐ๋ฆ
๋๋ค.
2-B. rag_items.md โ RAG Knowledge Items
List all items that the client needs to register in the vector knowledge DB.
Include:
- Priority 1 (immediate): FAQs, policies, guides โ covering ์ง์์๋ต/์ ์ฑ
ํ์ธ dialog types
- Priority 2 (supplementary): Fallback info for Task failures, error code solutions
- ๊ณ ๊ฐ์ฌ ์ถ๊ฐ ๊ถ์ฅ ํญ๋ชฉ: Items expected to be needed but not found in the sample data
Each item MUST show two things separately:
- ๋ฑ๋กํด์ผ ํ ๋ด์ฉ: The ideal/complete scope the knowledge entry should cover
- ๋ฐ๊ฒฌ๋ ์๋ฃ: The specific content actually confirmed from the sample data
Output format: templates/RAG_ITEMS_template.md ๊ตฌ์กฐ๋ฅผ ๋ฐ๋ฆ
๋๋ค.
Constraints:
- Do NOT fabricate content not present in the SOPs โ only use confirmed data for "๋ฐ๊ฒฌ๋ ์๋ฃ"
- Prioritize Q/A pairs from faq.json for "๋ฐ๊ฒฌ๋ ์๋ฃ"
- Only include patterns classified as ์ง์์๋ต/์ ์ฑ
ํ์ธ from patterns.json in Priority 1
- For "๋ฑ๋กํด์ผ ํ ๋ด์ฉ", describe the FULL scope the entry should ideally cover (even if sample only shows part of it)
- For "๊ณ ๊ฐ์ฌ ์ถ๊ฐ ๊ถ์ฅ ํญ๋ชฉ", add items that are typical for this industry/service type but were not found in the sample โ minimum 5 items, clearly marked as requiring the client to write from scratch
Expected Output:
โ
Step 2 complete
- alf_setup/rules_draft.md: X escalation conditions extracted
- alf_setup/rag_items.md: Priority 1: X items / Priority 2: X items / ๊ณ ๊ฐ์ฌ ์ถ๊ฐ ๊ถ์ฅ: X items
3. Dialog Type Classification + Cross-Analysis + Automation Feasibility
3-A. ๋ํ์ ํ ๋ถ๋ฅ + ๊ต์ฐจ๋ถ์
analyze_dialogs.py๋ฅผ ์คํํ์ฌ ์ ์ฒด ๋ํ๋ฅผ 7๊ฐ์ง ์ ํ์ผ๋ก ๋ถ๋ฅํฉ๋๋ค.
๋ถ๋ฅ ๋ชจ๋ธ: Claude API ์ฐ์ (ANTHROPIC_API_KEY ์ค์ ์), ์์ผ๋ฉด Upstage Solar fallback.
- Claude Sonnet: ๋งฅ๋ฝ ์ดํด๋ ๋์, ๋น์ฉ ~$1-2/3000๊ฑด
- Upstage Solar-mini: ์ ๋น์ฉ (~$0.05/3000๊ฑด), ๋งฅ๋ฝ ์ดํด๋ ์ค๊ฐ
python3 scripts/analyze_dialogs.py \
--messages results/{company}/01_clustering/{company}_messages.csv \
--tags results/{company}/01_clustering/{company}_tags.xlsx \
--patterns results/{company}/02_extraction/patterns.json \
--output results/{company}/05_sales_report/analysis
--patterns ์ต์
์ Stage 2์ sop_topic_map์ ์ฝ์ด ํํธ๋งต Y์ถ์ Stage 1 ํด๋ฌ์คํฐ๊ฐ ์๋ Stage 2 ์ฌ๋ถ๋ฅ ํ ํฝ ๊ธฐ์ค์ผ๋ก ์ง๊ณํฉ๋๋ค. ์๋ต ์ Stage 1 ํด๋ฌ์คํฐ ๊ธฐ์ค์ผ๋ก ๋์ํฉ๋๋ค.
Script produces:
analysis/cross_analysis.json โ SOPํ ํฝ ร dialog_type ๊ต์ฐจํ + ํต๊ณ
analysis/heatmap.png โ ํํธ๋งต PNG
Expected Output:
โ
analyze_dialogs.py complete
- Classified: 3000 chats (Claude Sonnet)
- heatmap.png saved
- Top types: 1.์ง์์๋ต 31.0% / 2.์ ๋ณด์กฐํ 20.3% / 3.๋จ์์คํ 15.7%
3-B. automation_analysis.md ์์ฑ (์์ด์ ํธ ์ง์ ์์ฑ)
Read cross_analysis.json and Stage 2's response_strategies.json together using the Read tool, then
the agent directly writes all 5 sections to analysis/automation_analysis.md. (No external API calls)
๋ ๋ฐ์ดํฐ์ ์ญํ :
| ๋ฐ์ดํฐ | ์ญํ | ์ ์ ์๋ ๊ฒ |
|---|
cross_analysis.json | ์๋ ์ํ์ (๋๊ด์ ) | ๊ณ ๊ฐ์ด ๋ฌด์์ ์ํ๋ (๋ํ์ ํ ๋ถํฌ). ์ ํ 1~4 ํฉ๊ณ |
response_strategies.json (Stage 2) | ์ค์ ํด๊ฒฐ ๋ณต์ก๋ | ํด๊ฒฐํ๋ ค๋ฉด ์ค์ ๋ก ๋ฌด์์ด ํ์ํ๊ฐ (automation_opportunity, required_tools) |
| ๊ฒฐํฉ | ์กฐ์ ๊ฐ (๋ณด์์ ) | ์๋ ์ํ์ ์์ ํด๊ฒฐ ๋ณต์ก๋ยท์์ค์ปฌ๋ ์ด์
๊ฐ๋ฅ์ฑ์ ๋ฐ์ํ์ฌ ํํฅ ์กฐ์ |
response_strategies.json ๊ฒฝ๋ก: results/{company}/02_extraction/response_strategies.json
Include:
- ํํธ๋งต ํด์ โ ์ ์ฒด ๋๋น โฅ10% ๊ณ ๋น๋ ์
์ ์๋ฏธ ๋ถ์
- ํ ํฝ๋ณ 2์์ ๊ฒฐํฉ ๋ถ์ (ํต์ฌ ์น์
) โ ๊ฐ SOP ํ ํฝ๋ง๋ค:
- ๋ํ์ ํ ๋ถํฌ์์ ๋์ถํ ์๋ ์ํ์ (๋๊ด์ ) = ์ ํ 1~4 ํฉ๊ณ
- Stage 2
automation_opportunity + required_tools ์์์ ๋์ถํ ํด๊ฒฐ ๋ณต์ก๋
- ๋ ์์๋ฅผ ๊ฒฐํฉํ ์กฐ์ ๊ฐ (๋ณด์์ ) โ ์์ค์ปฌ๋ ์ด์
๊ฐ๋ฅ์ฑ, ๋ณธ์ธ ํ์ธ ํ์ ์ฌ๋ถ, ์ผ์ด์ค๋ณ ํ๋จ ํ์ ๋ฑ์ ๋ฐ์ํ์ฌ ํํฅ ์กฐ์
- ํด๊ฒฐ์จ ๋ฒ์:
์กฐ์ ๊ฐ(๋ณด์์ ) ~ ์๋ ์ํ์ (๋๊ด์ ) ํํ๋ก ํ๊ธฐ
- ์กฐ์ ๊ทผ๊ฑฐ ํ ์ค (์: "๋จ์์คํ 60%์ด์ง๋ง ์ฌ์ง ์ฆ๋น + ๊ตฌ๋งค์ผ ๋ถ๊ธฐ๊ฐ ํ์์ด๋ฏ๋ก ํํฅ")
- ์ ์ฒด ํ ํฝ ๊ฑด์ ๊ฐ์ค ํ๊ท ์ผ๋ก ์ต์ข
ํด๊ฒฐ์จ ๋ฒ์ ์ฐ์ถ
- ๋ํ์ ํ๋ณ ALF ์ฒ๋ฆฌ ์ ๋ต โ 7๊ฐ์ง ์ ํ ์ ๋ถ ์ปค๋ฒ (๋น์จ%, ์ฒ๋ฆฌ๋ฐฉ๋ฒ)
- Phase ์ฐ์ ์์ โ ๋ณด์์ ์กฐ์ ๊ฐ ๊ธฐ์ค์ผ๋ก Phase ๋ก๋๋งต ์์ฑ
- ํ ํฝ๋ณ ์ธ์ฌ์ดํธ โ ๊ฐ ํ ํฝ์ ์ง๋ฐฐ ์ ํ + ๊ถ์ฅ ALF ์ ๋ต
ํด๊ฒฐ์จ ํ๊ธฐ ์์น:
- ๋จ์ผ ์์น๊ฐ ์๋ ์กฐ์ ๊ฐ(๋ณด์์ ) ~ ์๋ ์ํ์ (๋๊ด์ ) ๋ฒ์๋ก ํญ์ ํ๊ธฐ
- ํ ํฝ๋ณ:
55% ~ 82.8% ํํ
- ์ ์ฒด ๊ฐ์ค ํ๊ท :
52.0% ~ 78.3% ํํ
- ROI ๊ณ์ฐ (Step 4)์๋ ๋ณด์์ ์กฐ์ ๊ฐ์ ์ฌ์ฉ (๋ณด์์ ROI ์ฐ์ถ)
- ๋ณด๊ณ ์์๋ "๋ณด์์ ๊ธฐ์ค ROI"์์ ๋ช
์ํ๊ณ , ๋๊ด์ ์๋๋ฆฌ์ค์ ์ถ๊ฐ ํจ๊ณผ๋ฅผ ๋ณ๋ ๊ธฐ์ฌ
Constraints:
- Do NOT directly equate dialog type ratios from
cross_analysis.json to automation rates โ always combine with automation_opportunity from Stage 2 response_strategies.json
- Always report resolution as a range: "์กฐ์ ๊ฐ(๋ณด์์ ) ~ ์๋ ์ํ์ (๋๊ด์ )" โ single figures are NOT allowed
- Calculate the final overall range as a topic-count weighted average (simple average is not allowed)
- Include all 7 dialog types without omission
- ROI calculation MUST use the conservative (์กฐ์ ๊ฐ) figure, not the optimistic (์๋ ์ํ์ )
Expected Output:
โ
automation_analysis.md complete
- ํด๊ฒฐ์จ ๋ฒ์: ์กฐ์ ๊ฐ XX.X% ~ ์๋ ์ํ์ XX.X%
- ROI ๊ธฐ์ค: ๋ณด์์ XX.X% (์กฐ์ ๊ฐ)
- ์๋ํ ๋ถ๊ฐ (์๋ด์ฌ์ ํ): X.X%
- ์ฃผ์ ํํฅ ์กฐ์ ํ ํฝ: {ํ ํฝ๋ช
} (์ฌ์ )
4. ROI Calculation (Python)
4-A. Write sales_report_config.json
Compile results from Step 2 (SOP analysis) and Step 3 (automation analysis) into the config JSON.
Required config fields:
{
"company": "lowercase_id",
"company_name": "๊ณต์ ํ์ฌ๋ช
",
"report_date": "YYYY-MM-DD",
"base_params": {
"monthly_volume": 0,
"sample_size": 0,
"agent_hourly_wage": 15100,
"avg_handling_time_min": 8,
"alf_chat_cost_per_conversation": 500,
"alf_task_cost_per_execution": 200
},
"development_cost": {
"phase1_cost_krw": 0,
"phase2_min_krw": 0,
"phase2_max_krw": 0,
"phase2_duration": "์ฝ X~Y๊ฐ์"
},
"sop_groups": [...],
"resource_table": [...],
"non_automatable": [...],
"phase1_notes": [...],
"phase2_notes": [...],
"phase2_description": "..."
}
4-B. Run generate_sales_report.py
python3 scripts/generate_sales_report.py \
--config results/{company}/05_sales_report/sales_report_config.json
Constraints:
- You MUST run this script โ never manually calculate ROI figures
sample_size MUST come from metadata.json
Expected Output:
โ
ROI calculation complete
Phase 1: monthly net savings ~XXX๋ง์ | annual ~X,XXX๋ง์ | breakeven: immediate
Full: monthly net savings ~XXX๋ง์ | annual ~X,XXX๋ง์ | breakeven: ~X~X months
5. Task Definitions + API Requirements (LLM)
Based on the SOP and automation_analysis.md analysis results, generate two documents.
5-A. 05_sales_report/tasks/ โ Task Flowchart Files
Separate scenarios that include API calls into individual task files, one file per task.
ํ์คํฌ ์ ์ ๊ธฐ์ค:
- API ํธ์ถ ๋
ธ๋๊ฐ 1๊ฐ ์ด์ ํฌํจ๋ ์๋๋ฆฌ์ค
- ๊ณ ๊ฐ ์๋ต ๊ธฐ๋ฐ ๋ถ๊ธฐ๊ฐ 3๋จ๊ณ ์ด์์ธ ๋ณต์กํ ํ๋ก์ฐ
- ์๋ด์ฌ ์ฐ๊ฒฐ ์กฐ๊ฑด์ด ๋ช
ํํ๊ฒ ์ ์๋ ์๋๋ฆฌ์ค
์ฑํจ์(์ฑํ์คํฌ) ์ฐ๋ ์ ์ถ๊ฐ ๋ถ์ (app_functions=true):
๊ฐ ํ์คํฌ๋ฅผ ๊ธฐํํ ๋, ํด๋น ์๋๋ฆฌ์ค๊ฐ ์ฑํจ์๋ก ์ฒ๋ฆฌ ๊ฐ๋ฅํ์ง ๋จผ์ ํ๋จํ๋ค.
์ฒ๋ฆฌ ๋ฐฉ์: ์ ์ฒด ํ์คํฌ ์ด์ ์์ฑ ์๋ฃ ํ, ๋ชจ๋ ํ์คํฌ๋ฅผ ์ผ๊ด ๋ถ๋ฅํ๋ค (ํ์คํฌ๋ณ ๊ฐ๋ณ ํ๋จ ๊ธ์ง โ ๋ฐฐ์น ์ฒ๋ฆฌ๋ก LLM ํธ์ถ ์ต์ํ).
ํ๋จ ๊ธฐ์ค:
- ํ์คํฌ๊ฐ ์กฐํ/์คํํ๋ ค๋ ๋์์ด
app_functions_services์ ํฌํจ๋ ์๋น์ค ๋ฐ์ดํฐ์ธ๊ฐ?
- ์๋ ์๋น์ค๋ณ ์คํ ํ์์ ํด๋น ํจ์๊ฐ ์กด์ฌํ๋๊ฐ?
์๋น์ค๋ณ ์ฑํจ์ ์คํ:
์ด์ง์ด๋๋ฏผ (app_functions_services์ "์ด์ง์ด๋๋ฏผ" ํฌํจ ์):
| ํจ์๋ช
| ์ฒ๋ฆฌ ๊ฐ๋ฅ ์๋๋ฆฌ์ค |
|---|
getOrders / getOrder | ์ฃผ๋ฌธ ์กฐํ, ์ฃผ๋ฌธ ์ํ ํ์ธ |
cancelOrder | ์ฃผ๋ฌธ ์ทจ์ |
changeAddress | ๋ฐฐ์ก์ง ๋ณ๊ฒฝ |
setReturn | ๋ฐํ ์ ์ |
setExchange | ๊ตํ ์ ์ |
trackDelivery | ๋ฐฐ์ก ์ถ์ |
addRefundInfo | ํ๋ถ ์ ๋ณด ๋ฑ๋ก |
verifyAccountHolder | ์๊ธ์ฃผ ํ์ธ (ํ๋ถ ๊ณ์ข ๊ฒ์ฆ) |
restoreOrder / copyOrder | ์ฃผ๋ฌธ ๋ณต์/๋ณต์ฌ |
getOrderTags / setOrderTag / deleteOrderTag | ์ฃผ๋ฌธ ํ๊ทธ ๊ด๋ฆฌ |
getShopId | ์ผํ๋ชฐ ID ์กฐํ (๋ด๋ถ ๋ถ๊ธฐ์ฉ) |
์ฌ๋ฐฉ๋ท (app_functions_services์ "์ฌ๋ฐฉ๋ท" ํฌํจ ์):
| ํจ์๋ช
| ์ฒ๋ฆฌ ๊ฐ๋ฅ ์๋๋ฆฌ์ค |
|---|
getOrders / getOrder | ์ฃผ๋ฌธ ์กฐํ |
cancelOrder | ์ฃผ๋ฌธ ์ทจ์ |
returnOrder | ๋ฐํ ์ ์ |
exchangeOrder | ๊ตํ ์ ์ |
changeShippingAddress | ๋ฐฐ์ก์ง ๋ณ๊ฒฝ |
restoreCanceledOrder | ์ทจ์ ๋ณต์ |
getShopId | ์ผํ๋ชฐ ID ์กฐํ |
์นดํ24 (app_functions_services์ "์นดํ24" ํฌํจ ์) โ Task ํจ์ ๊ธฐ์ค:
| ํจ์๋ช
| ์ฒ๋ฆฌ ๊ฐ๋ฅ ์๋๋ฆฌ์ค |
|---|
getOrders | ์ฃผ๋ฌธ ์กฐํ |
requestCancelOrder / completeCancelOrder | ์ฃผ๋ฌธ ์ทจ์ (2๋จ๊ณ) |
returnOrder | ๋ฐํ ์ ์ฒญ |
requestExchangeOrder | ๊ตํ ์ ์ฒญ |
getExchangeableProducts | ๊ตํ ๊ฐ๋ฅ ์ํ ํ์ธ |
getCoupons / getCustomerCoupons | ์ฟ ํฐ ์กฐํ |
issueCoupon | ์ฟ ํฐ ๋ฐ๊ธ |
General ํจ์ ์ค sendMobileOTP / verifyMobileOTP / checkIfReturnable / checkIfExchangeable ๋ฑ ๊ฒ์ฆยทํ์ธ์ฉ ํจ์๋ Task ํจ์์ ํจ๊ป ์ฑํจ์ ๋จ๋
์ผ๋ก ์ฒ๋ฆฌ ๊ฐ๋ฅ.
์คํ๋ ๋์ํธ (ํญ์ ์ฌ์ฉ ๊ฐ๋ฅ, ์๋น์ค์ ๋ฌด๊ด):
| ํจ์๋ช
| ํ์ฉ ์์ |
|---|
get_row_by_key / get_rows_by_index | ์ค์ ๊ฐ ์กฐํ, FAQ ๋ถ๋ฌ์ค๊ธฐ |
append_row | ์๋ด ๋ก๊ทธ ๊ธฐ๋ก, ์ ์ฒญ ๋ด์ญ ์ ์ฅ |
update_row_by_key | ์ํ ์
๋ฐ์ดํธ |
delete_row_by_key | ํญ๋ชฉ ์ญ์ |
๋ถ๋ฅ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ ํ์คํฌ ํ์ผ ์๋จ ์์ฝํ์ ๋ค์ ์ด๋ก ์ถ๊ฐ:
| ์ฒ๋ฆฌ ๋ฐฉ์ | ์๋ฏธ |
|---|
์ฑํจ์ | ์ฑํ์คํฌ ์ฐ๋์ผ๋ก ์ฒ๋ฆฌ ๊ฐ๋ฅ โ ์ฝ๋๋
ธ๋ ๋ถํ์ |
์ฝ๋๋
ธ๋ | ์ปค์คํ
์ฝ๋๋
ธ๋ ๊ฐ๋ฐ ํ์ |
์ฑํจ์ + ์ฝ๋๋
ธ๋ | ์ฑํจ์๋ก ์ผ๋ถ ์ฒ๋ฆฌ, ์ถ๊ฐ ๋ก์ง์ ์ฝ๋๋
ธ๋ ํ์ |
app_functions=false์ธ ๊ฒฝ์ฐ: ๋ชจ๋ ํ์คํฌ๋ฅผ ์ฝ๋๋
ธ๋ ๊ธฐ์ค์ผ๋ก ๊ธฐํํ๊ณ , ์ฒ๋ฆฌ ๋ฐฉ์ ์ด์ ์๋ตํ๋ค.
๊ฐ ํ์คํฌ ํ์ผ ํ์: templates/TASK_template.md ๊ตฌ์กฐ๋ฅผ ๋ฐ๋ฆ
๋๋ค.
SVG ์์ฑ (mmdc ์ค์น ์):
mmdc -i results/{company}/05_sales_report/tasks/TASK{N}_{์ด๋ฆ}.md -o results/{company}/05_sales_report/tasks/TASK{N}_{์ด๋ฆ}.svg -b transparent
5-B. {company}_api_requirements.md โ API Requirements Document
Define the APIs used in tasks so that the development team can review them.
ํฌํจ ์น์
:
- API ํ์ ํ์คํฌ: ๊ฐ API๋ณ ํธ์ถ ์์ , ํ์ ์
๋ ฅ/์๋ต, ์ฑ๋ด ์ฒ๋ฆฌ ๊ฒฐ๊ณผ, ๋น๊ณ
- ์ฒ๋ฆฌ ๋ฐฉ์ ์ ํ ํญ๋ชฉ: API ์์ด๋ ์ฒ๋ฆฌ ๊ฐ๋ฅํ ์ผ์ด์ค (๋ฐฉ์ A/B ์ ํ์ง)
- API ๋ถํ์ ํ์คํฌ: ์ง์ ์๋ต๋ง์ผ๋ก ์ฒ๋ฆฌ ๊ฐ๋ฅํ ํ์คํฌ + ์ฌ์
- ์ ์ฒด ์์ฝ ํ: API๋ช
, ํ์/์ ํ, ํต์ฌ ์๋ต๊ฐ, ์ฐ๊ฒฐ ํ์คํฌ
- ๊ณตํต ์ ์ ์ฌํญ: ๊ณ ๊ฐ ์๋ณ์, ์๋ต ์๋, ์ค๋ฅ fallback
๊ฐ API ํญ๋ชฉ ํ์: templates/API_REQUIREMENTS_template.md ๊ตฌ์กฐ๋ฅผ ๋ฐ๋ฆ
๋๋ค.
Constraints:
- Extract API requirements only from the SOPs and task flowcharts โ no guessing
- Write APIs (POST/PUT/DELETE) MUST be separately marked as "optional" or "secondary review"
Expected Output:
โ
Step 5 complete
- 05_sales_report/tasks/: TASK ํ์ผ {X}๊ฐ ์์ฑ
- ์ฑํจ์ ์ฒ๋ฆฌ: {N}๊ฐ / ์ฝ๋๋
ธ๋ ์ฒ๋ฆฌ: {M}๊ฐ / ํผํฉ: {K}๊ฐ [app_functions=true์ผ ๋๋ง ์ถ๋ ฅ]
- {company}_api_requirements.md: ํ์ API {X}๊ฐ / ์ ํ API {X}๊ฐ
6. Final Integrated Report (LLM)
Compose {company}_alf_implementation_guide.md using all outputs.
Source files:
rules_draft.md, rag_items.md (Step 2)
cross_analysis.json, heatmap.png, automation_analysis.md (Step 3)
- ROI figures from Step 4 script output
05_sales_report/tasks/*.md, {company}_api_requirements.md (Step 5)
Report sections:
| Section | Content | Source |
|---|
| ์์ฝ | ALF ์ฐธ์ฌ์จ ์ต์ ~์ต๊ณ ๋ฒ์ + ALF ์ค์ ํํฉ (โ
/๐ง) | Step 3, 4 |
| ํํฉ: ์๋ด ์ ํ ๋ถํฌ | ์นดํ
๊ณ ๋ฆฌ๋ณ ์ ๊ฑด์ยท๋น์จยท์ฃผ์ ์ฒ๋ฆฌ ๋ฐฉ์ | cross_analysis.json |
| ์ ํ๋ณ ํ์ ํ๋ฆ โ ALF ์ฒ๋ฆฌ ๋งคํ | ์ธ๋ถ ํ๋ฆ์ ์ง์/ํ์คํฌ/์๋ด์ฌ๋ก ๋งคํ | SOPs + Step 5 |
| ALF ์ธํ
๊ตฌ์ฑ | ๊ท์นยท์ง์ยทํ์คํฌ ํํฉ + ํ์คํฌ ๋ชฉ๋ก + API ๊ฐ๋ฐ ๋ชฉ๋ก | Step 2, 5 |
| ์์ ์ปค๋ฒ๋ฆฌ์ง | ์นดํ
๊ณ ๋ฆฌ๋ณ ์ต์ โ์ต๊ณ ALF ์ฐธ์ฌ์จ + ๊ธฐ์ฌ ๋ถํด | Step 3, 5 |
| ์ค๋น ์ฌํญ | CSํยท๊ฐ๋ฐํยท์ฑ๋ํก ์ญํ ๋ณ ์์
๋ชฉ๋ก | LLM composition |
์๊ฐ ์ ๊ฐ ํ๊ธฐ (์์ฝ ์น์
):
- 4-Layer ALF ๊ด์ฌ ๋ชจ๋ธ ์ฌ์ฉ:
- ์์ ํด๊ฒฐ (100% ์๊ฐ ์ ๊ฐ) / ์น์ธ๋
ธ๋ (~90%) / ์ด๋ฒ ์๋ด (70-80%) / ์ฃผ์ ๋ถ๋ฅ (30-50%)
- ๋จ์ผ ์์น๊ฐ ์๋ ๋ณด์์ ~ ๋๊ด์ ๋ฒ์๋ก ํ๊ธฐ
- ๋ณด์์ = automation_analysis.md์ ์๊ฐ ์ ๊ฐ ๊ฐ์คํ๊ท (์์ค์ปฌ๋ ์ด์
ยท๋ณต์ก๋ ๋ฐ์ ํํฅ ์กฐ์ )
- ๋๊ด์ = ๋ํ์ ํ 1~4 ํฉ๊ณ ๊ธฐ์ค ์ต๋ ์๊ฐ ์ ๊ฐ
- ALF ์ค์ ๊ตฌ์ฑ ํ
์ด๋ธ:
์ํ ์ด์ โ
์ธํ
์๋ฃ ๋๋ ๐ง ๊ตฌ์ถ ํ์ ํ์
- ์ธํ
์๋ฃ ์ฌ๋ถ๋ Step 1์์ ์ฌ์ฉ์์๊ฒ ํ์ธํ์ฌ ๋ฐ์
์นดํ
๊ณ ๋ฆฌ๋ณ ์์ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ ํ๊ธฐ:
ํด๊ฒฐ์จ (๋ณด์์ ~๋๊ด์ ), ํํฅ ์กฐ์ ์ฌ์ , ์ง์ ์๋ด์ฌ ์ด ํฌํจ
- ๋ณด์์ = ์์ค์ปฌ๋ ์ด์
ยท๋ณธ์ธํ์ธยท์ผ์ด์ค๋ณ ํ๋จ ๋ฐ์ / ๋๊ด์ = ์๋ ์ํ์
Constraints:
- Resolution rate MUST NOT be a single figure โ always express as ์กฐ์ ๊ฐ(๋ณด์์ ) ~ ์๋ ์ํ์ (๋๊ด์ ) range
- ROI calculation MUST use the conservative (์กฐ์ ๊ฐ) figure
- Use the setup completion status exactly as confirmed in Step 1
- Use ONLY Step 4 script values for ROI figures (based on conservative rate)
Expected Output:
โ
Final report complete
- File: results/{company}/{company}_alf_implementation_guide.md
- Sections: 6
- ํด๊ฒฐ์จ: ๋ณด์์ {X}% ~ ๋๊ด์ {Y}% (ROI๋ ๋ณด์์ ๊ธฐ์ค)
7. Final Analysis Report โ Rosa Framework (LLM)
๋ชฉ์ : templates/์ต์ข
๋ถ์ ๋ฆฌํฌํธ ํ
ํ๋ฆฟ.md ๊ตฌ์กฐ๋ฅผ ๋ฐ๋ฅด๋ ์์ธ ๋ถ์ ๋ฆฌํฌํธ ์์ฑ.
ALF ํจํค์ง(_alf_package.md)๊ฐ ์์
/๋ฐฐํฌ ์ค์ฌ์ด๋ผ๋ฉด, ์ด ๋ณด๊ณ ์๋ ๋ฐ์ดํฐ ๋ถ์ ์ค์ฌ์ผ๋ก
๊ณ ๊ฐ์ฌ ๋ด๋ถ ํ์ด ํํฉ์ ์ดํดํ๊ณ ๊ฐ์ ์ฐ์ ์์๋ฅผ ํ์
ํ๋ ์ฉ๋์
๋๋ค.
Source files:
cross_analysis.json (Step 3) โ ์น์
2, 3, 4
automation_analysis.md (Step 3) โ ์น์
5, 7
tags.xlsx โ ์น์
2 (ํด๋ฌ์คํฐ ๋ผ๋ฒจ/ํฌ๊ธฐ)
metadata.json โ ์น์
1 (๋ฐ์ดํฐ ๊ท๋ชจ)
patterns.json โ ์น์
6 (์ถ๊ฐ ์ธ์ฌ์ดํธ)
heatmap.png โ ์น์
4-1
Report sections (ํ
ํ๋ฆฟ ๊ตฌ์กฐ ๊ทธ๋๋ก ๋ฐ๋ฆ):
| ์น์
| ๋ด์ฉ | ์์ค | ๋ฐ์ดํฐ ์์ ๋ |
|---|
| 1. ๋ฐ์ดํฐ ๊ฐ์ | ์์ฒ ๋ฐ์ดํฐ ์์น, ์ด์ ํํฉ, ํน์ด์ฌํญ | metadata.json, messages.csv | ํ์ธ๋ ์์น๋ง ๊ธฐ์ฌ, ๋๋จธ์ง (๋ฐ์ดํฐ ๋ฏธ์ ๊ณต) |
| 2. ์๋ด์ฃผ์ ๋ถํฌ | ํด๋ฌ์คํฐ๋ณ ๊ฑด์ยท๋น์จยทํค์๋ + ํต์ฌ ์ธ์ฌ์ดํธ | cross_analysis.json + tags.xlsx | โ |
| 3. ๋ํ์ ํ ๋ถํฌ | 7๊ฐ์ง ์ ํ ๊ฑด์ยท๋น์จยทAI ์ฒ๋ฆฌ๋ฐฉ์ + ์๋ ์ํ์ vs ์ค์ง ์๋ํ์จ ๋น๊ต | cross_analysis.json + automation_analysis.md | โ |
| 4. ๊ต์ฐจ๋ถ์ | ํํธ๋งต + Top 10 ์กฐํฉ + ์
ํด์ | cross_analysis.json + heatmap.png | โ |
| 5. ์๋ํ ์ ๋ต | ํด๋ฌ์คํฐ๋ณ 2์์ ๊ฒฐํฉ ๋ถ์ ๊ธฐ๋ฐ Phase ๋ก๋๋งต + ์์ธก ํจ๊ณผ (์๋ ์ํ์ ์ด ์๋ ์ค์ง ์๋ํ์จ ์ฌ์ฉ) | automation_analysis.md | โ |
| 6. ์ถ๊ฐ ๋ฐ๊ฒฌ์ฌํญ | ๋ฐ์ดํฐ์์ ๋ฐ๊ฒฌ๋ ํน์ด ํจํด ๋ฐ ์ด์ ์ธ์ฌ์ดํธ | patterns.json + SOPs | ์ต์ 3๊ฐ ์ด์ |
| 7. ์ฐ์ ์์ ๊ถ๊ณ | ROI ๊ธฐ์ค ์์ ํ
์ด๋ธ | cross_analysis.json + automation_analysis.md | โ |
| 8. ์์ฝ | ํต์ฌ ์งํ ์์ฝ ํ
์ด๋ธ + ํต์ฌ ๋ฉ์์ง | ์ ์ฒด | โ |
Output format: templates/์ต์ข
๋ถ์ ๋ฆฌํฌํธ ํ
ํ๋ฆฟ.md ๊ตฌ์กฐ๋ฅผ ๋ฐ๋ฆ
๋๋ค.
Constraints:
- Fields with no data MUST be marked
(๋ฐ์ดํฐ ๋ฏธ์ ๊ณต) or (ํ์ธ ํ์) โ never fill by guessing
- Numbers in sections 2, 3, and 4 MUST use only actual values read from
cross_analysis.json
- Section 3 automation summary: Intent ceiling and actual automation rate MUST always be displayed separately โ refer to
automation_analysis.md
- Section 5 Phase figures: Use the actual automation rate from section 4 of
automation_analysis.md, not dialog type ratios
- Section 8 summary: A single "automatable ratio" figure is not allowed โ show intent ceiling and actual full-automation rate as separate rows
- Section 6 (additional findings) is LLM-written but MUST cite evidence from the data โ unsupported statements like "generallyโฆ" are not allowed
- Heatmap image MUST be referenced by file path, not inline embedded:

Expected Output:
โ
Analysis report complete
- File: results/{company}/05_sales_report/{company}_analysis_report.md
- Sections: 8
- ๋ฐ์ดํฐ ๋ฏธ์ ๊ณต ํ๋: X๊ฐ (์ด์ ํํฉ ์ผ๋ถ ๋ฑ)
Related Documentation
Notes
Dialog Type Definitions (7 types)
| # | Type | Definition | ALF Processing |
|---|
| 1 | ์ง์์๋ต | FAQ, how-to, general info questions | RAG |
| 2 | ์ ๋ณด์กฐํ | Personal order/delivery data lookup | Task (query API) |
| 3 | ๋จ์์คํ | Direct action requests (cancel, refund, resend) | Task (execution API) |
| 4 | ์ ์ฑ
ํ์ธ | Conditional "is this possible?" questions | RAG + branching |
| 5 | ์กฐ๊ฑด๋ถ์คํ | Situation + action request combined | Task + policy logic |
| 6 | ์๋๋ถ๋ช
ํ | Too short or context-dependent utterances | Clarification question |
| 7 | ์๋ด์ฌ์ ํ | Emotional escalation, legal mentions | Escalation |
Filtering System Auto-Send Clusters
messages.csv may include bot/system auto-send clusters (e.g., QR code delivery notifications).
Identify and exclude before classification:
- Check tags.xlsx for clusters labeled "์๋๋ฐ์ก", "์์คํ
๋ฉ์์ง", "๊ฒฐ์ ์๋ด"
- Pass cluster IDs to exclude via
--exclude_clusters option in analyze_dialogs.py