Skill: rijoyai/ltv-loyalty-winback (version 0.1.0)

--- name: ltv-loyalty-winback description: Predict repeat-customer churn risk from purchase history and tier activity, then output branch-specific win-back and activation workflows. Use when 90-day (or similar) non-repurchase cohorts are growing, membership or tier engagement is dropping, points are about to expire and you need pre-expiry campaigns, RFM or LTV segmentation is discussed, or the user wants automated reactivation plays for lapsed buyers. Branch logic: high-value VIPs get white-glove CS care plans; standard buyers get time-bound discount or incentive bait. Also trigger on "silent customers," lapse risk, loyalty program fatigue, or win-back sequences — even if they only say "our repeat rate is falling." Do NOT use for simple single-order purchase confirmations, shipping notices, or one-off transactional messages with no retention or churn context. compatibility: required: [] --- # LTV loyalty churn alert & win-back You connect **historical purchase frequency (and recency)** → **silence / churn risk** → **automated activation workflows** (journeys, messages, and ops hooks). ## When NOT to use (should-not-trigger) - **Single purchase confirmation** only ("thanks for your order") with no retention ask. - Pure transactional templates with no lapse or segment context. If the user later adds "many haven't bought again," switch to full workflow mode. ## Gather context 1. **Recency**: last purchase date distribution; spike in 90d+ silent (or merchant’s window). 2. **Frequency**: orders per customer in last 12 months; baseline vs cohort. 3. **Monetary**: AOV and cumulative spend — **VIP threshold** (define or ask). 4. **Tier / points**: tier rules, points expiry date and notice rules. 5. **Channel**: email, SMS, app push, CS outreach — constraints and consent. For RFM-style cutoffs and workflow templates, read `references/loyalty_playbook.md` when needed. ## Core workflow (always) 1. **Risk framing** — Classify silence (e.g. at-risk: no order in 90d; high-risk: 120d+; formerly frequent now cold). 2. **Segment branch** - **VIP / high-value** → **Dedicated CS care** (named contact, proactive outreach, perk without trashing margin — early access, bundle concierge, not only generic % off). - **Standard buyer** → **Time-bound discount or incentive bait** (deadline, code, stack rules clear). 3. **Activation workflow** — Trigger, wait steps, exit rules, measure (reactivation rate, incremental revenue). ## Mandatory outputs (full engagement) Every **full** churn / loyalty answer must include: 1. **Risk summary** — Who is silent, how many (or %), vs historical norm. 2. **Two branches** — At least one block labeled **VIP / high-value** (CS care) and one **Standard** (discount bait), even if one segment is empty ("if no VIPs, still document threshold"). 3. **Win-back plan table** — concrete steps + channel + timing. 4. **Points expiry branch (if applicable)** — Pre-expiry nudge sequence before burn. ## Win-back plan table (required shape) | Segment | Silence signal | Action | Channel | Timing | |---------|----------------|--------|---------|--------| | VIP | e.g. 90d + LTV top decile | Dedicated CS check-in + perk | Email + optional call | Day 0, Day 7 | | Standard | e.g. 90d no order | Limited-time offer | Email/SMS | Day 0, Day 3, Day 10 | | Points at risk | Expiry in 14d | Redeem nudge + basket builder | Email | T-14, T-7, T-2 | Adjust rows to data; keep **VIP vs Standard** distinction explicit. ## VIP branch (content requirements) - Named or role-based **concierge** line. - **Non-price-first** value where possible (early access, restock hold, bundle suggestion). - **Escalation path** if no response. ## Standard branch (content requirements) - **Time-bound** offer (end date). - Clear **code or auto-apply** and exclusions. - Single primary CTA. ## Success metrics (suggest in every full run) - Reactivation rate (ordered within 30d of campaign). - Incremental revenue vs holdout. - Unsubscribe / complaint rate (guardrail). ## Split with other skills - **Affiliate reconciliation** → not this skill. - **Abandoned checkout** (session drop) → checkout skill; this skill is **post-purchase lapse**.

path: assets/README.md
content: # Assets

Optional: email HTML snippets for VIP vs standard. Default: Markdown workflows + tables.

path: evals/README.md
content: # Evals

See `evals.json`. Benchmark via skill-creator: e.g. `ltv-loyalty-winback-workspace/iteration-N/`.

path: evals/evals.json
content: {
  "skill_name": "ltv-loyalty-winback",
  "evals": [
    {
      "id": 1,
      "prompt": "Repeat customers are going quiet — a lot haven’t bought in 90+ days. We have a tier program; Gold members are slipping. Points expire end of quarter. Need a win-back plan.",
      "expected_output": "Risk framing, VIP CS branch, standard discount branch, points pre-expiry sequence, workflow table.",
      "files": [],
      "expectations": [
        "Addresses 90-day non-repurchase and tier / activity decline",
        "Includes explicit VIP or high-value branch with dedicated CS care style actions",
        "Includes standard buyer branch with time-bound discount or incentive",
        "Includes points expiry or pre-expiry campaign if points mentioned",
        "Contains a structured table (segment, signal, action, channel, timing) or equivalent workflow",
        "Describes automated or sequenced activation steps"
      ]
    },
    {
      "id": 2,
      "prompt": "Our VIPs (top spenders) used to order monthly; now many are at 100 days silent. Regular one-time buyers we can hit with 15% off. Draft both tracks.",
      "expected_output": "Two branches clearly separated; VIP non-price-first where possible; standard limited-time 15%.",
      "files": [],
      "expectations": [
        "Separates VIP track from standard track",
        "VIP track emphasizes concierge / care / non-discount-first perks",
        "Standard track includes time-bound discount bait (15% or aligned)",
        "Mentions silence / lapse risk",
        "Includes actionable workflow or table"
      ]
    },
    {
      "id": 3,
      "prompt": "Customer order #4492 confirmed — write the single order confirmation email body only.",
      "expected_output": "Transactional confirmation only; no full churn win-back program (should-not-trigger).",
      "files": [],
      "expectations": [
        "Does not output full VIP vs standard win-back program as primary deliverable",
        "Does not force multi-step loyalty automation for a simple confirmation request",
        "Appropriate transactional tone for order confirmation",
        "May keep confirmation brief without mandatory churn risk table"
      ]
    }
  ]
}


path: evals/files/README.md
content: # Eval files

No default inputs. Add RFM export or tier list CSV here and reference in `evals.json` if needed.

path: references/README.md
content: # References

- **loyalty_playbook.md** — Silence tiers, VIP vs standard plays, points expiry sends, automation notes. Read when cutoffs or copy need depth.

path: references/loyalty_playbook.md
content: # LTV & loyalty win-back playbook

For `ltv-loyalty-winback` when you need cutoffs, copy angles, or workflow skeletons.

---

## 1. Silence risk (illustrative)

| Label | Signal (customize) | Interpretation |
|-------|--------------------|----------------|
| Healthy | Order within 60d or expected category cadence | Maintain |
| At-risk | No order 90d; was repeat | Win-back |
| High-risk | No order 120d+ or steep frequency drop | Stronger offer + CS for VIP |
| Churned | No order 180d+ | Re-onboarding or sunset segment |

Cadence varies by category (consumables vs durable).

---

## 2. VIP vs standard (branching)

**VIP / high-value** (example rules — align with merchant):

- Top 10% by 12m spend, or
- LTV above $X, or
- Tier: Gold/Platinum

**VIP care playbook**

- Personal subject line; human sender if possible.
- "We noticed you haven’t shopped in a while" + **specific** past purchase reference.
- Offer: early access, free shipping on next order, small gift with purchase — avoid deep blanket % unless strategic.
- Optional: outbound call or chat for highest LTV.

**Standard bait playbook**

- Percent or fixed off with **hard end date**.
- Free shipping threshold nudge.
- Second email: social proof or bestseller tie-in.

---

## 3. Points pre-expiry sequence

| Send | Timing | Focus |
|------|--------|--------|
| 1 | T-14 | Balance + what it buys |
| 2 | T-7 | Basket suggestion + reminder |
| 3 | T-2 | Last chance; partial redeem if allowed |

Comply with program rules and local marketing law.

---

## 4. Workflow automation (conceptual)

- **Entry**: last_order_at > 90d AND consent = true.
- **Exit**: placed_order OR unsubscribed OR max sends reached.
- **Holdout**: 5–10% no offer to measure lift.

---

## 5. What not to do

- Blast same deep discount to VIPs (margin + brand).
- Ignore consent / frequency caps.
- Confuse one-off order confirmation with win-back (should-not-trigger).


path: scripts/README.md
content: # Scripts

Optional: Python to flag 90d+ lapsed from orders CSV. Document in SKILL.md if added.

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