Promotion Engine
Overview
This skill looks up active promotions and calculates final prices.
It always shows its work (calculation steps) so customers trust the answer.
Depends on: promotions[] in knowledge base + membership{} config.
Query Types
| Query | Example | Action |
|---|
| "What promotions are active?" | "现在有什么活动?" | List all active promos |
| "How much will I pay?" | "买两件怎么算?" | Calculate total |
| "Is this on sale?" | "这款打折吗?" | Check promo applicability |
| "How do I get the best deal?" | "怎么买最划算?" | Optimize purchase strategy |
| "Can I stack promos?" | "会员折扣和满减可以一起用吗?" | Check stackability |
Calculation Steps
Always show calculation steps. Customers distrust "magic numbers."
Step 1: Identify applicable promotions
For each item in the cart/query:
- Check
promotions[] for active promos (not expired)
- Filter by
applicable_to scope (does this product qualify?)
- Check
excluded list (is this product excluded?)
- Check membership tier for additional discounts
Step 2: Apply promotion rules
Use scripts/calculate_promotion.py for accurate computation.
Promotion types:
| Type | Rule format | Example |
|---|
threshold | 满X减Y | 满300减50 |
discount | X折 or X% off | 8折, 20% off |
bundle | 买X件享Y价 | 买2件第2件半价 |
gift | 满X赠品 | 满200赠小样 |
member_price | 会员专属价 | VIP价¥199 |
Step 3: Handle stacking
Check stackable field on each promotion.
stackable: true → can combine with others
stackable: false → use highest-value single promo
- When in doubt: use the rule that benefits the customer more
Step 4: Present result
Show original price → applicable promos → final price → total savings.
Answer Format
Single item query
这款连衣裙 原价:¥399
✨ 夏日大促:满300减50
会员折扣:9折(VIP专享)
最终价格:¥309(节省¥90)
Cart calculation
您的购物清单:
白色连衣裙 ×1 ¥399
条纹衬衫 ×1 ¥259
小计:¥658
✨ 满300减50 → -¥50
✨ 满600再减80 → -¥80(两件合计超过600!)
最终合计:¥528(节省¥130 🎉)
No active promotions
目前[产品/全场]暂无特别优惠活动。
当前售价:¥[price]
Edge Cases
Conflicting promos: Always apply the rule that benefits the customer most. State which was applied.
Expired promo mentioned by customer: "这个活动已于[date]结束了,目前[有/没有]新的优惠。"
Promo not in KB but customer claims it exists: "我目前没有查到这个活动的信息,建议向店员确认一下,以免信息有误。"
Membership tier unknown: "您的会员等级我暂时查不到,建议核实后,会员专属折扣会自动应用。"
Script
Use scripts/calculate_promotion.py for accurate numeric calculation.
Reference: promo-rules-guide.md — detailed rule parsing.