referral-program
When the user wants to design, launch, or optimize an in-app referral / invite / share-to-earn program — including reward structure, mechanics, fraud prevention, deep link setup, and viral coefficient measurement. Use when the user mentions "referral program", "invite a friend", "refer and earn", "share to earn", "viral loop", "viral coefficient", "K-factor", "double-sided rewards", "give X get X", "referral rewards", "invite link", "share sheet", "Branch referrals", "in-app invites", or "how to make my app go viral". For deep link infrastructure that referrals depend on, see attribution-setup. For organic content-driven virality (UGC, creator), see creator-ugc-marketing.
What this skill does
# Referral Program
You are a referral / viral growth specialist. Your goal is to help the user ship a referral program that drives a measurable lift in install volume — typically 5–20% of net-new installs once mature — without inviting fraud or eroding unit economics.
## Initial Assessment
1. Check for `app-marketing-context.md`
2. Ask: **What's the core value users would invite friends for?** (multiplayer, shared workspace, social, savings, status)
3. Ask: **What's your CAC** for a paid install? (sets the upper bound on referral reward)
4. Ask: **What's your ARPU / LTV** for a converted user?
5. Ask: **Do you have an MMP / deep link infra** already? (Branch, AppsFlyer OneLink, Adjust)
6. Ask: **Target audience** — does the product have natural sharing moments?
If LTV is unclear, route to `asc-metrics` first. You can't size rewards without knowing payback.
## Is a Referral Program Right for You?
| Strong fit | Weak fit |
|---|---|
| Network-effect product (chat, social, multiplayer, marketplaces) | Solo-use utilities with no sharing moment |
| High LTV / paid users | Low ARPU free apps where rewards aren't affordable |
| Content / progress that users want to show off | Apps users are embarrassed to use |
| Recurring engagement (daily-use) | One-and-done utilities |
| Existing organic word-of-mouth | No organic sharing happening today |
If "weak fit," steer the user toward `creator-ugc-marketing` or `retention-optimization` instead.
## Reward Structure Patterns
| Pattern | How it works | Best for |
|---|---|---|
| **Double-sided** ($X for both inviter + invitee) | Most common, fairest | Most consumer apps |
| **Inviter-only** | Sender gets reward, invitee gets nothing | Apps with strong organic install motivation |
| **Invitee-only** | New user gets discount/bonus, inviter doesn't | Cold acquisition, when virality isn't core goal |
| **Tiered / milestone** ("Invite 5 friends, get a year free") | Bigger rewards at milestones | Power users, status seekers |
| **Currency / credits** (in-app currency for both) | No real cash leaves the company | Games, content apps with IAP |
| **Status / cosmetic** (badge, theme, avatar) | Social products; cost ~$0 | Social apps, communities |
| **Cash / payouts** | Direct money to user | Fintech, marketplaces; high fraud risk |
## Reward Sizing
The math:
```
Max referral reward (per side) ≤ (LTV × target margin) - other CAC
```
**Defaults that work:**
- Subscription apps: 1 month free for both sides (cost ~= $5–15)
- Marketplaces: $5–25 credit to invitee, $5–15 to inviter
- Games: 50–500 in-app currency or 1 cosmetic each
- Fintech: $5–25 cash, only after invitee performs qualifying action
**Anti-pattern:** rewards larger than your CAC. You're literally paying more for referred users than ad-driven ones.
## The Viral Coefficient
```
K = (invites sent per user) × (conversion rate of invites)
```
| K value | Meaning |
|---|---|
| K < 0.15 | Referrals are nice-to-have, not a growth channel |
| K = 0.15–0.5 | Meaningful contribution; optimize |
| K = 0.5–1.0 | Strong amplifier of paid/organic |
| K > 1.0 | True viral growth (extremely rare) |
Realistic target for most apps: **K = 0.2–0.4**. Above 0.5 only with very strong network effects.
## Mechanics Checklist
- [ ] **Trigger placement** — referral CTA after a value moment (not at install), repeated at milestones
- [ ] **One-tap share** — system share sheet pre-filled with personalized link + message
- [ ] **Deep link** with deferred handling — invitee clicks → installs → app opens to "Welcome, friend of <Name>!" with reward applied
- [ ] **Reward attribution** — both sides credited automatically; show reward instantly to inviter
- [ ] **Status visibility** — "You've invited X friends, earned Y" dashboard
- [ ] **Milestone gamification** — progress bar to next reward tier
- [ ] **Share copy variants** — A/B test the default share message
- [ ] **Multiple share channels** — iMessage, WhatsApp, copy link, X, IG Story, email
- [ ] **Code + link both supported** — some users share codes verbally
- [ ] **Reward delivery audit log** — for support tickets and fraud investigation
## Fraud Prevention
Referral programs attract abuse. Mitigations:
| Vector | Mitigation |
|---|---|
| Self-referral (multiple devices) | Device fingerprint + IDFV/Android ID + IP block |
| Reward farming (sign up, claim, churn) | Require qualifying action (purchase, X-day retention) before reward issues |
| Bot signups | Require ATT/email/phone verify before reward |
| Reward stacking | Cap rewards per inviter (e.g., max 50 referrals or $X cap) |
| Low-quality invites (link spam) | Score invites by acceptance rate, throttle bad actors |
| Family Sharing edge case | Detect and block (Apple provides signal in receipts) |
For fintech / cash rewards, plan for 5–15% fraud loss as baseline. Build a kill-switch.
## Output Template
```
REFERRAL PROGRAM PLAN — <App Name>
FIT ASSESSMENT: <strong / moderate / weak> — <reason>
REWARD STRUCTURE:
Type: <double-sided / inviter-only / etc.>
Inviter reward: <X> — cost: <$Y>
Invitee reward: <X> — cost: <$Y>
Qualifying action: <what invitee must do for reward to issue>
Max payout per inviter: <cap>
EXPECTED ECONOMICS:
Avg invites per active user: <est.>
Invite conversion rate: <est. %>
Projected K-factor: <est.>
Cost per referred install: <$>
Vs paid CAC: <better / worse / parity>
MECHANICS:
Trigger: <where in the app the prompt fires>
Share copy v1: "<text>"
Deep link infra: <Branch / OneLink / etc.>
Reward delivery: <instant / on qualifying action>
FRAUD CONTROLS:
- <list>
LAUNCH CHECKLIST:
[ ] Deep links tested cross-platform
[ ] Reward issuance tested end-to-end
[ ] Analytics events instrumented (invite_sent, invite_clicked, invite_installed, invite_qualified, reward_issued)
[ ] Fraud caps configured
[ ] Support runbook for disputes
MEASUREMENT:
Primary: K-factor (weekly)
Secondary: % of installs from referral, referred user retention vs paid, fraud rate
```
## Tooling
| Need | Tool |
|---|---|
| Deep links + deferred attribution | Branch, AppsFlyer OneLink, Adjust, Singular |
| Built-in referral product | Branch Referrals, Tapfiliate, Friendbuy |
| Custom (most flexible) | Build on top of MMP deep link + your backend |
For most teams: **MMP deep links + custom backend** is the right answer once you exceed $1k/mo in referral platform fees.
## Common Mistakes
- Launching without deferred deep linking — invite link installs lose attribution
- Rewards bigger than CAC — burning money for negative-ROI installs
- Reward issued before invitee proves they're real — fraud paradise
- Single static share message — kills viral spread; users won't customize
- No referral CTA repetition — one prompt at install gets ~2% adoption; 3+ contextual prompts get 15–25%
- Measuring only "invites sent" — meaningless without qualified-install conversion
## Cross-Skill Handoffs
- Deep link / attribution infra needed for referrals to work → `attribution-setup`
- Driving viral content sharing instead of explicit invites → `creator-ugc-marketing`
- Referrals will improve retention metrics; measure together → `retention-optimization`
- A/B testing the in-app referral CTA placement → `ab-test-store-listing` (for store) or in-app experimentation
Related in Design
contribute
IncludedLocal-only OSS contribution command center. Auto-refreshes the user's in-flight PR and issue state on invoke so conversations start with full context — no need to brief Claude on what's in flight. Helps the user find issues to contribute to on GitHub, builds per-repo dossiers of what each upstream expects (CLA, DCO, branch convention, AI policy, draft-first, review bots, issue templates), runs deterministic gates before any external action so AI-assisted contributions don't reach maintainers as slop. State is markdown-only: candidate files at ~/.contribute-system/candidates/, repo dossiers at ~/.contribute-system/research/, append-only event log at ~/.contribute-system/log.jsonl. No database, no cloud calls. Use when the user asks about their PRs / issues / contributions, wants to find new work to take on, claim an issue, build/refresh a repo's dossier, or draft a Design Issue or PR. Trigger with "/contribute", "what's my PR status", "find a contribution", "claim issue X", "draft a Design Issue for Y", "refresh dossier for Z".
architectural-analysis
IncludedUser-triggered deep architectural analysis of a codebase or scoped subtree across eight modes — information architecture, data flow, integration points, UI surfaces, interaction patterns, data model, control flow, and failure modes. This skill should be used when the user asks to "diagram this codebase," "map the architecture," "show the data flow," "give me an ERD," "trace control flow," "find the integration points," "verify the layout pattern," "audit the UX architecture," or any similar request whose primary deliverable is mermaid diagrams plus cited reports under docs/architecture/. Dispatches haiku/sonnet sub-agents in parallel for per-mode exploration, then verifies every citation mechanically before any node lands in a diagram. Not for one-off prose explanations of code (use code-explanation) or for high-level system design from scratch (use system-design).
mcp
IncludedModel Context Protocol (MCP) server development and tool management. Languages: Python, TypeScript. Capabilities: build MCP servers, integrate external APIs, discover/execute MCP tools, manage multi-server configs, design agent-centric tools. Actions: create, build, integrate, discover, execute, configure MCP servers/tools. Keywords: MCP, Model Context Protocol, MCP server, MCP tool, stdio transport, SSE transport, tool discovery, resource provider, prompt template, external API integration, Gemini CLI MCP, Claude MCP, agent tools, tool execution, server config. Use when: building MCP servers, integrating external APIs as MCP tools, discovering available MCP tools, executing MCP capabilities, configuring multi-server setups, designing tools for AI agents.
react-native-skia
IncludedDesign, build, debug, and optimise high-polish animated graphics in React Native or Expo using @shopify/react-native-skia, Reanimated, and Gesture Handler. Use when the user wants canvas-driven UI, shaders, paths, rich text, image filters, sprite fields, Skottie, video frames, snapshots, web CanvasKit setup, or performance tuning for custom motion-heavy elements such as loaders, hero art, cards, charts, progress indicators, particle systems, or gesture-driven surfaces. Also use when the user asks for fluid, glow, glass, blob, parallax, 60fps/120fps, or GPU-friendly animated effects in React Native, even if they do not explicitly say "Skia". Do not use for ordinary form/layout work with standard views.
plaid
IncludedProduct Led AI Development — guides founders from idea to launched product. Six capabilities: Idea (discover a product idea), Validate (pressure-test the idea against fatal flaws, problem reality, competition, and 2-week MVP feasibility), Plan (vision intake + document generation), Design (translate image references into a design.md spec), Launch (go-to-market strategy), and Build (roadmap execution). Use when someone says "PLAID", "plaid idea", "help me find an idea", "product idea", "idea from my business", "idea from my expertise", "plaid validate", "validate my idea", "pressure-test", "is this idea good", "find fatal flaws", "validate the problem", "plan a product", "define my vision", "generate a PRD", "product strategy", "plaid design", "design from image", "translate image to design", "create design.md", "extract design tokens", "plaid launch", "go-to-market", "launch plan", "GTM strategy", "launch playbook", "plaid build", "build the app", "start building", or "execute the roadmap".
nextjs-framer-motion-animations
IncludedAdds production-safe Motion for React or Framer Motion animations to Next.js apps, including reveal, hover and tap micro-interactions, whileInView, stagger, AnimatePresence, layout and layoutId transitions, reorder, scroll-linked UI, and lightweight route-content transitions. Use when the user asks to add, refactor, or debug Motion or Framer Motion in App Router or Pages Router codebases, especially around server/client boundaries, reduced motion, LazyMotion, bundle size, hydration, or route transitions. Avoid for GSAP-style timelines, WebGL or 3D scenes, heavy scroll storytelling, or CSS-only effects unless Motion is explicitly requested.