expand-personalisation
Audit surfaces across a two-sided marketplace to find places that could be personalised but aren't, or design the personalisation approach for a named surface from scratch. Use when asking "where should we personalise next?", "how should we personalise the onboarding flow?", "what could we do beyond the listing feed?", "our paywall is static — how would we personalise it?", "give me a backlog of personalisation opportunities ranked by impact", or "design a personalisation approach for the abandoned-browse email". Covers every surface where a two-sided marketplace can deploy personalisation beyond the obvious listing feed — onboarding branches, paywall timing and copy, trust-copy variants, abandoned-browse re-engagement, saved search alerts, landing hero, first-stay paths for new suppliers, review ordering, zero-result fallback, related listings, messaging templates, push timing, profile-completion nudges, seasonal campaigns, and more. Grounds every recommendation in the research-based marketplace-personalisation and marketplace-pre-member-personalisation libraries, and checks the company's generated marketplace-context skill for feasibility before proposing.
What this skill does
# /marketplace:expand-personalisation — Find or Design Personalisation Opportunities
> If you see unfamiliar placeholders or need to check which tools are connected, see [CONNECTORS.md](../../CONNECTORS.md).
Two modes:
- **`audit`** — rank surfaces that aren't yet personalised but could be, by leverage × feasibility × risk. Produces a backlog.
- **`<surface-name>`** — design the personalisation approach for one specific surface from scratch. Produces a ship-ready proposal.
Both modes load the company's generated marketplace-context skill (if present) to ground the work in real state rather than guesses.
## Usage
```
/marketplace:expand-personalisation audit
/marketplace:expand-personalisation onboarding-flow
/marketplace:expand-personalisation abandoned-browse-email
/marketplace:expand-personalisation paywall-screen
```
## Workflow
### 1. Load Company Context
Check for a marketplace-context skill (in `./.claude/skills/*-marketplace-context/` and `~/.claude/skills/*-marketplace-context/`).
**If present**, read:
- `marketplace.md` for monetization model and north-star
- `surfaces.md` for current personalisation state across the product
- `events.md` for what data exists per surface
- `liquidity.md` to understand which segments are thin
- `gotchas.md` for known failure modes
**If absent**, run `/marketplace:bootstrap-context bootstrap` first — or fall back to a generic conversation, collecting the same information interactively before proceeding.
### 2. Branch by Mode
#### Mode A — Audit
1. **Enumerate candidate surfaces** from [references/surfaces-to-personalise.md](references/surfaces-to-personalise.md). This is the master menu of 30+ surfaces a two-sided marketplace can personalise beyond listings.
2. **Cross-reference with `surfaces.md`**. For each candidate, classify current state:
- `covered` — already personalised (skip)
- `static` — exists but not personalised (candidate)
- `missing` — doesn't exist in the product (candidate, but document as a product gap)
3. **Score each candidate** on three axes:
| Axis | Scale | Question |
|------|-------|----------|
| **Leverage** | 1-5 | How much would personalising this move the north-star? (Traffic × conversion weight × per-user touches) |
| **Feasibility** | 1-5 | What data and infrastructure exist to support it today? Are the right events logged? Is identity stitching solid enough? Is there a production path to serving? |
| **Risk** | 1-5 (lower is better) | Exposure to feedback-loop bias, fairness concerns, cold-start cliffs, moderation cost, or confusing UX |
The score is `leverage × feasibility ÷ risk`, with ties broken by feasibility.
4. **Produce a ranked backlog** as a table:
```markdown
| Rank | Surface | Leverage | Feasibility | Risk | Score | Notes |
|------|---------|---------|-------------|------|-------|-------|
| 1 | ... | 5 | 4 | 2 | 10.0 | ... |
```
5. **For the top 3-5**, produce a one-page **ship-ready proposal** each (see Mode B below).
#### Mode B — Design for a Named Surface
1. **Classify the surface** into a journey stage:
- `anonymous` — no user identity (landing, logged-out homepage, anonymous search)
- `registered pre-paid` — identified but not yet paid (onboarding, paywall, free tour)
- `paid pre-active` — paid but not yet engaged (first-stay path, profile completion)
- `active` — actively using the product (search, feed, messaging)
- `re-engagement` — lapsed (push, email, abandoned-browse)
- `retained` — steady-state (renewal, upsell, referral)
2. **Load the right knowledge library** based on stage:
- `anonymous` or `registered pre-paid` → `marketplace-pre-member-personalisation`
- `paid pre-active` / `active` / `retained` → `marketplace-personalisation`
- Mixed or unclear → load both
- **If the proposal requires building new features** (vision, text, wizard-sourced, or derived) → also load `marketplace-recsys-feature-engineering`. The first-principles rules (`firstp-start-from-the-decision-not-the-algorithm`, `firstp-reject-features-you-cannot-serve-at-inference`, `firstp-kill-features-a-popularity-baseline-already-captures`) are the gate before any new-feature proposal can ship.
3. **Determine the personalisation approach**:
| Approach | When to use |
|----------|------------|
| **Rule-based** | No labels available, strong priors (e.g., paywall copy by inferred role) |
| **Content-based** | Items have strong features, few labels (e.g., similar-listing module) |
| **Collaborative** | Plenty of interactions, users are dense (homefeed, saved-search alerts) |
| **Contextual bandit** | Exploration matters more than exploitation (new surface launch, cold stock) |
| **ML ranker / reranker** | Mature surface, plenty of data, need fine control (search, homefeed) |
| **Hybrid** | Almost always in practice |
4. **Draft the proposal** with these sections:
```markdown
## {{surface name}}
### Why personalise this
{{1-paragraph business case, linked to north-star and any gotchas}}
### Approach
{{approach from the table above, plus why}}
### Data requirements
- **Events needed**: {{list, with gaps flagged}}
- **Identity requirements**: {{anonymous-safe / requires stitching}}
- **Training data volume**: {{sufficient / needs seeding / cold-start only}}
### Cold-start strategy
{{how the surface works when labels are missing}}
### Guardrails
- **Fairness**: {{supply exposure cap, side balance}}
- **Feedback-loop protection**: {{inverse propensity, re-rank cap, exploration slots}}
- **Quality floors**: {{min rating, min verification, etc.}}
### Observability
{{required dashboards and monitors, linking to observability.md}}
### Experiment design
- **Primary outcome**: {{metric}}
- **Guardrails**: {{list}}
- **MDE**: {{minimum detectable effect and power math}}
- **Cohort**: {{who sees the treatment}}
- **Ship criterion**: {{decision rule}}
### Risks
{{list}}
### Grounding rules
- {{rule-reference-1}} — {{one-line why}}
- {{rule-reference-2}} — {{one-line why}}
```
5. **Validate the proposal** against the gotchas log: is there a similar past incident? If so, reference it and adapt.
### 3. Present and Persist
1. Show the audit table or the per-surface proposal to the user
2. Ask: "Which of these would you like to commit to? I can record the choice in `surfaces.md` as `planned` state"
3. On approval, update `surfaces.md` in the context skill with `state: planned` and a link to the proposal
## Read-only posture
This skill reads from `~~product analytics`, `~~data warehouse`, and the generated marketplace-context skill, but does not execute any writes against those MCPs. The only files it writes are to `surfaces.md` in the context skill — and only after explicit user confirmation to commit a planned personalisation.
## Examples
### Audit
```
/marketplace:expand-personalisation audit
```
Returns a ranked backlog of non-personalised surfaces with scores and top-5 ship-ready proposals.
### Design for a specific surface
```
/marketplace:expand-personalisation paywall-screen
```
Returns a ship-ready proposal for personalising the paywall — approach, data requirements, cold-start, guardrails, observability, experiment design, risks.
### Design for a surface that doesn't exist yet
```
/marketplace:expand-personalisation abandoned-browse-email
```
If the surface is `missing` from `surfaces.md`, treat it as a new product gap and include a product recommendation: "build the surface first, then personalise".
## Tips
- **Cold-start first**: the surfaces with the highest uplift are usually pre-paid / cold-start (onboarding branches, paywall copy, first-stay path) because they set the anchor for everything after. Bias toward these.
- **Feasibility beats leverage** when feasibility is low — a high-leverage idea with missing events is vaporware.
- **Never propose ML oRelated in Ads & Marketing
ads
IncludedMulti-platform paid advertising audit and optimization skill. Analyzes Google, Meta, YouTube, LinkedIn, TikTok, Microsoft, and Apple Ads. 250+ checks with scoring, parallel agents, industry templates, and AI creative generation.
banana
IncludedAI image generation Creative Director powered by Google Gemini Nano Banana models. Use this skill for ANY request involving image creation, editing, visual asset production, or creative direction. Triggers on: generate an image, create a photo, edit this picture, design a logo, make a banner, visual for my anything, and all /banana commands. Handles text-to-image, image editing, multi-turn creative sessions, batch workflows, and brand presets.
rpg-migration-analyzer
IncludedAnalyzes legacy RPG (Report Program Generator) programs from AS/400 and IBM i systems for migration to modern Java applications. Extracts business logic from RPG III/IV/ILE source code, identifies data structures (D-specs), file operations (F-specs), program dependencies (CALLB/CALLP), and converts RPG constructs to Java equivalents. Generates migration reports, complexity estimates, and Java implementation strategies with POJO classes, JPA entities, and service methods. Use when modernizing AS/400 or IBM i legacy systems, analyzing RPG source files (.rpg, .rpgle, .RPGLE), converting RPG to Java, mapping data specifications to Java classes, planning legacy system migration, or when user mentions RPG analysis, Report Program Generator, RPG III/IV/ILE, AS/400 modernization, IBM i migration, packed decimal conversion, or mainframe application rewrite.
brand-library-architect
IncludedBuild a complete brand library for a product — visual asset render pipeline, brand documentation set (BRAND, COPY, MANIFESTO, BIOS, FAQ, GLOSSARY, TONE, PRICING), open-source convention files (README, CONTRIBUTING, SECURITY, CODE_OF_CONDUCT), and a self-contained press kit. This skill should be used when the user asks to "build a brand library / brand kit / press kit / brand assets" for a product, "set up a brand library workflow," "create a positioning manifesto plus visual identity," or any combination of brand documentation + visual asset pipeline. Apply phase-by-phase or run end-to-end. Templates are product-agnostic and use {{TOKEN}} placeholders the skill prompts the user to fill.
writing-tech-post
IncludedAuthors engineering blog posts end-to-end: launch deep-dives, incident postmortems, architecture migrations, performance case studies, tutorials, AI/agent system writeups, security disclosures, and research-to-product translations. Picks the correct archetype, plans the abstraction ladder, enforces an evidence cadence (diagrams, benchmarks, profiles, traces, code, ablations), tunes voice against publisher house styles (Datadog, Vercel, GitHub, AWS, Meta, Cloudflare, Jane Street), and runs a pre-publish gate for narrative momentum and disclosure ethics. Use when drafting a new engineering post, restructuring a draft that feels flat, deciding which evidence form belongs where, validating that depth and product context are balanced, or preparing a postmortem, migration, or performance narrative for external publication. Do not use for API reference documentation, README authoring, marketing copy, release notes, generic SEO content, ghost-written executive thought leadership, or non-engineering long-form essays.
blog-google
IncludedGoogle API integration for blog performance: PageSpeed Insights, CrUX Core Web Vitals with 25-week history, Search Console performance, URL Inspection, Indexing API, GA4 organic traffic, NLP entity analysis for E-E-A-T, YouTube video search for embedding, and Google Ads Keyword Planner. Progressive feature availability based on credential tier (API key, OAuth/service account, GA4, Ads). Shares config with claude-seo at ~/.config/claude-seo/google-api.json. Use when user says "google data", "page speed", "core web vitals", "search console", "indexation", "GA4", "keyword research", "nlp entities", "blog performance", "youtube search", "google api setup".