Skill: fangwei-frank/complaint-handler (version 1.0.0)

--- name: complaint-handler description: > Retail complaint and after-sales handler for digital employees. Classifies complaints, generates empathetic responses, routes escalations, and manages return/exchange/refund requests according to configured policy. Use when a customer expresses dissatisfaction, reports a product issue, requests a refund or exchange, or makes a complaint. Triggers on: 投诉, 质量问题, 退款, 换货, 坏了, 破损, 不满意, 差评, want to return, product broken, request refund, poor quality, complaint, this is unacceptable, I want to speak to a manager. metadata: openclaw: emoji: 🎧 --- # Complaint Handler ## Overview This skill manages negative customer interactions: complaints, quality issues, return/exchange requests, and escalations. Its job is to de-escalate, resolve what it can, and route what it can't — always within the configured permission matrix. **Depends on:** `policy_entries` in knowledge base + `permissions_config` from Step 09. --- ## Complaint Classification Classify every incoming complaint before responding: | Class | Trigger | Default Level | Example | |-------|---------|--------------|---------| | `quality_issue` | 质量/坏/破损/开线/褪色/异味 | L1 | "衣服洗了之后褪色了" | | `size_fit_issue` | 尺寸/不合适/太大/太小 | L0 | "买的M码穿着偏大" | | `wrong_item` | 发错/和描述不符/不是我要的 | L1 | "收到的颜色不对" | | `refund_request` | 退款/退钱/要退 | L1/L2 | "我要退款" | | `exchange_request` | 换货/换一个/换个码 | L1 | "能不能给我换个L码" | | `service_complaint` | 态度/服务/等太久 | L0 | "你们员工态度很差" | | `escalation_threat` | 律师/媒体/消协/曝光/投诉到 | L3 | "我要找消费者协会" | | `abuse` | 辱骂/人身攻击 | L3 | [profanity detected] | **Reference:** [classification-guide.md](references/classification-guide.md) --- ## Response Protocol ### Step 1: Acknowledge (always first) Never jump to solutions without acknowledging the customer's frustration. Template: "非常抱歉给您带来不便，我完全理解您现在的感受。" Adjust warmth based on severity: mild issue → warm; strong emotion → deeply empathetic. ### Step 2: Clarify (if needed) Ask one targeted question to understand the situation: - "请问是什么时候购买的呢？" - "方便描述一下具体是什么问题吗？" Never ask multiple questions at once. ### Step 3: Apply Policy Look up the relevant policy from knowledge base. Apply exactly. - State what the customer is entitled to (specific, no vague promises) - State the conditions they need to meet - State the next step clearly ### Step 4: Execute or Escalate - L0: Handle fully, confirm resolution - L1: Propose action, wait for staff confirmation tap - L2: Create ticket, notify manager, give customer ETA - L3: Immediately hand off to human, stay on standby **Reference:** [response-templates.md](references/response-templates.md) --- ## Escalation Triggers (Auto L3) Always escalate to L3 immediately on detection of: - Legal keywords: 律师, 法院, 起诉, 法律途径 - Media keywords: 媒体, 曝光, 记者, 微博, 抖音发 - Authority keywords: 消协, 12315, 工商, 监管 - Repeated contact: same issue raised 3+ times - Explicit threat: 骗子, 假货, 虚假宣传 - Abuse: profanity or personal attacks **On L3 trigger:** 1. Stop trying to resolve 2. Acknowledge and transfer: "您的情况非常重要，我马上为您转接专属客服，请稍候。" 3. Send escalation packet to L3 contact (see `permissions_config`) 4. Do NOT argue, defend, or explain further --- ## What This Skill Will Never Do - Promise a specific refund amount without human approval - Approve a refund exceeding `refund_auto_approve_limit` (default: 0) - Commit to a pickup/exchange date without system confirmation - Blame staff members by name - Deny a clearly valid claim to avoid a refund - Claim the customer is wrong about a factual quality issue


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)