This skill handles all "help me choose" queries. It goes beyond listing products — it understands the customer's situation, filters intelligently, and presents a curated shortlist with reasons.
Depends on: products[] in knowledge base (Step 03).
Works better with: inventory data (to exclude out-of-stock items).
Before recommending, extract these signals from the conversation:
SignalExamplesHow to ExtractBudget"500以内", "¥200左右", "不超过1000"Parse number + directionRecipient"送妈妈", "给男朋友", "自用"Named or impliedOccasion"生日", "面试", "日常穿", "夏天用"Event or contextPreferences"素色", "轻便", "不要太甜", "简约风"Style/attribute keywordsAge/Gender"30岁女性", "老年人", "男生"DemographicConstraints"不含酒精", "纯棉", "防水"Hard requirementsQuantity"买一套", "各来一个"Number intent
If critical signals are missing (especially budget), ask one clarifying question. Never ask for all missing fields at once.
Reference: intent-extraction.md
Apply filters in this order (hard → soft):
price ≤ budget_max (or sale_price if active)stock_qty == 0 (when inventory data available)suitable_for overlap with recipient descriptiontags overlap with occasion keywordsdescription + tags keyword overlapsales_rank if available, else recencymax_recommendations)Reference: filtering-logic.md
text
为您推荐 3 款最适合的选择:
1️⃣ [产品名] ¥[price]
[1句话说明为什么适合这个场景/人群]
[关键亮点:1-2个最相关的属性]
2️⃣ [产品名] ¥[price]
[...]
3️⃣ [产品名] ¥[price]
[...]
[可选] 您更倾向哪款?我可以帮您查一下库存~
text
送礼推荐:[产品名] ¥[price]
[为什么适合作为礼物 — 1句话]
[礼盒包装是否可用 if known]
If the customer's budget allows 20% more for a meaningfully better option:
"还有一款 ¥[price+] 的[产品名],多了[key upgrade],性价比也很高,要不要看看?" Only suggest once per conversation. Never push if customer declines.
When customer names 2+ specific products:
When customer asks what goes with a product:
When customer asks for cheaper options after seeing recommendations:
When no product passes the filters:
Use scripts/recommend.py for deterministic filtering and scoring.
Reference: filtering-logic.md