/competitive-analysis
Before designing a feature in a well-trodden domain, look at how 2–4 mature companies handle it. Faster than inventing. More robust than guessing. Cite every source — never copy product copy or terms-of-service language.
When to use
- Designing billing, dunning, refunds, plan changes, trials, onboarding.
- Designing RBAC, workspace management, team invitations.
- Designing notifications, digests, preferences.
- Designing API rate limits, pagination, idempotency, error formats.
- Designing search, filters, saved views.
- Designing data export, deletion, retention.
- Stuck on UX for a non-obvious flow (account merging, plan downgrade, account recovery).
When NOT to use
- The user's domain is unique enough that competitor patterns won't transfer (specialized B2B verticals, regulated industries with custom workflows).
- The user has already decided. Don't second-guess; just ship.
- Style and copy decisions — those are taste, not pattern.
Operating method
1. Confirm the question
Ask the user, in one round:
- What's the specific problem? Not "how does Stripe work" but "how should we handle a failed-payment retry schedule and the user-facing dunning emails?"
- What's our context? B2C / B2B / SMB / enterprise / specific vertical. Self-serve vs sales-led. Plan structure.
- What constraints are non-negotiable? Compliance, no-third-party-data, must-self-host, etc.
- Which competitors should I look at? If unsure, suggest 3–4 mature ones in the relevant space.
Don't research without these answers. Researching the wrong question wastes a few minutes; acting on the wrong research costs a quarter.
2. Pick competitors deliberately
Mature comparison sets by domain (suggest these as defaults; adjust per user):
| Domain |
Suggested competitors |
| SaaS billing & dunning |
Stripe, Recurly, Chargebee, Paddle |
| B2B SaaS workspace + RBAC |
Linear, Notion, Slack, Asana |
| CRM |
Salesforce, HubSpot, Pipedrive, Close |
| E-commerce checkout |
Shopify, Stripe Checkout, BigCommerce, WooCommerce |
| Marketplace fees + payouts |
Stripe Connect, Airbnb, Etsy, Uber |
| Customer support |
Intercom, Zendesk, HelpScout, Front |
| Project management |
Linear, Jira, Asana, Monday |
| ERP financials |
NetSuite, SAP, Odoo, Microsoft Dynamics |
| Inventory |
Shopify, NetSuite, Cin7, Brightpearl |
| Auth / SSO |
Auth0, Clerk, WorkOS, Okta |
| Notifications / engagement |
Customer.io, Braze, Iterable, Knock |
| Webhooks / events |
Stripe, GitHub, Segment |
| Analytics |
Mixpanel, Amplitude, PostHog, Segment |
| Search |
Algolia, Elasticsearch, Typesense, Meilisearch |
| Status / incidents |
StatusPage, Statuspal, Better Uptime |
3. Research each competitor
For each:
- Read their public docs for the specific feature. Use
firecrawl-scrape MCP if available. Quote with attribution.
- Find dev-blog posts, conference talks, engineering decisions. These reveal why not just what.
- Read 1–2 critical reviews (G2, ProductHunt, Reddit, HN) to find the friction points.
- Note the version / date. Patterns evolve; a 2019 blog post may not reflect 2026 behavior.
4. Extract the dimensions that matter
Don't write narrative comparisons. Build a table where each row is a decision point and each column is a competitor.
For billing failure-recovery:
| Dimension |
Stripe Smart Retries |
Recurly |
Chargebee |
Paddle |
| Retry count |
4 (default) |
configurable 1–5 |
configurable 1–10 |
3 |
| Retry window |
15 days |
21 days |
configurable |
14 days |
| Retry timing |
ML-optimized |
fixed cadence |
fixed/custom |
fixed |
| Email cadence |
day 1, 3, 7 |
day 1, 5, 10, 15 |
per template |
day 1, 7 |
| Grace period |
bills marked past_due |
suspend after final retry |
configurable |
suspend |
| Customer self-rescue |
customer_portal |
hosted page |
hosted page |
hosted page |
| Card update prompt |
yes, in-product |
yes, hosted |
yes |
yes |
| 3DS / SCA handling |
re-auth at retry |
re-auth at retry |
re-auth at retry |
re-auth |
5. Recommend with reasoning
End the analysis with: which patterns to adopt, which to skip, and why for this specific project. Cite the dimensions that drove the call.
## Recommendation for <project>
Adopt:
- Stripe's smart-retry timing (proven at scale, easy via Stripe Billing).
- Recurly-style dunning email cadence (more touchpoints than Stripe; better for our SMB churn profile).
Skip:
- Customer portal self-rescue (we'll wait for v2 — not enough users to justify yet).
Open question for the user:
- Grace period: do we want past_due → readonly access (Stripe default) or past_due → fully-featured for 7 days then suspend? Affects our retention math.
6. Save the research
Write the result to .claude/memory/reference/competitive-analysis-<topic>-<date>.md so future sessions don't re-research the same thing. Add to MEMORY.md.
Output format
## Question
<the user's actual question, refined>
## Context
- Business type:
- Constraints:
- Competitors compared:
## Comparison
[Table — one row per dimension, one column per competitor]
## Patterns worth borrowing
- <pattern A> — used by: <competitors>. Why: <reason>.
- <pattern B> — used by: <competitors>. Why: <reason>.
## Patterns to skip
- <pattern> — used by: <competitor>. Why we don't: <reason>.
## Recommended approach
[2–4 paragraphs. What you'd build, citing competitor patterns by name where you adopted them.]
## Open questions for the user
1. …
2. …
## Sources
- [Stripe docs — Smart Retries](https://...)
- [Recurly engineering blog — Dunning](https://...)
- [HN discussion: SaaS dunning best practices](https://...)
Boundaries
- Cite every source. No "I read somewhere that …"
- Never copy product copy, terms-of-service text, or trademarked material. Learn from the approach, write your own copy.
- Note the date of every source. Stripe-2019 ≠ Stripe-2026.
- Don't recommend the most popular pattern — recommend the pattern that fits the project's constraints.
- Don't research private information. Public docs, blog posts, talks, public reviews only.
- Ask first if the user already has strong preferences; this skill is for when they want input, not when they've decided.
1---2name: competitive-analysis3description: Research how 2–4 mature competitors solve a specific business problem (billing, RBAC, search, onboarding, multi-tenancy, etc.) and produce a side-by-side comparison so the team can pick the right approach for their context. Uses web search + scraping; cites every source.4---56# /competitive-analysis78Before designing a feature in a well-trodden domain, look at how 2–4 mature companies handle it. Faster than inventing. More robust than guessing. Cite every source — never copy product copy or terms-of-service language.910## When to use1112- Designing billing, dunning, refunds, plan changes, trials, onboarding.13- Designing RBAC, workspace management, team invitations.14- Designing notifications, digests, preferences.15- Designing API rate limits, pagination, idempotency, error formats.16- Designing search, filters, saved views.17- Designing data export, deletion, retention.18- Stuck on UX for a non-obvious flow (account merging, plan downgrade, account recovery).1920## When NOT to use2122- The user's domain is unique enough that competitor patterns won't transfer (specialized B2B verticals, regulated industries with custom workflows).23- The user has already decided. Don't second-guess; just ship.24- Style and copy decisions — those are taste, not pattern.2526## Operating method2728### 1. Confirm the question2930Ask the user, in one round:3132- **What's the specific problem?** Not "how does Stripe work" but "how should we handle a failed-payment retry schedule and the user-facing dunning emails?"33- **What's our context?** B2C / B2B / SMB / enterprise / specific vertical. Self-serve vs sales-led. Plan structure.34- **What constraints are non-negotiable?** Compliance, no-third-party-data, must-self-host, etc.35- **Which competitors should I look at?** If unsure, suggest 3–4 mature ones in the relevant space.3637Don't research without these answers. Researching the wrong question wastes a few minutes; *acting* on the wrong research costs a quarter.3839### 2. Pick competitors deliberately4041Mature comparison sets by domain (suggest these as defaults; adjust per user):4243| Domain | Suggested competitors |44|---|---|45| **SaaS billing & dunning** | Stripe, Recurly, Chargebee, Paddle |46| **B2B SaaS workspace + RBAC** | Linear, Notion, Slack, Asana |47| **CRM** | Salesforce, HubSpot, Pipedrive, Close |48| **E-commerce checkout** | Shopify, Stripe Checkout, BigCommerce, WooCommerce |49| **Marketplace fees + payouts** | Stripe Connect, Airbnb, Etsy, Uber |50| **Customer support** | Intercom, Zendesk, HelpScout, Front |51| **Project management** | Linear, Jira, Asana, Monday |52| **ERP financials** | NetSuite, SAP, Odoo, Microsoft Dynamics |53| **Inventory** | Shopify, NetSuite, Cin7, Brightpearl |54| **Auth / SSO** | Auth0, Clerk, WorkOS, Okta |55| **Notifications / engagement** | Customer.io, Braze, Iterable, Knock |56| **Webhooks / events** | Stripe, GitHub, Segment |57| **Analytics** | Mixpanel, Amplitude, PostHog, Segment |58| **Search** | Algolia, Elasticsearch, Typesense, Meilisearch |59| **Status / incidents** | StatusPage, Statuspal, Better Uptime |6061### 3. Research each competitor6263For each:641. **Read their public docs** for the specific feature. Use `firecrawl-scrape` MCP if available. Quote with attribution.652. **Find dev-blog posts, conference talks, engineering decisions.** These reveal *why* not just *what*.663. **Read 1–2 critical reviews** (G2, ProductHunt, Reddit, HN) to find the friction points.674. **Note the version / date.** Patterns evolve; a 2019 blog post may not reflect 2026 behavior.6869### 4. Extract the dimensions that matter7071Don't write narrative comparisons. Build a table where each row is a *decision point* and each column is a competitor.7273For billing failure-recovery:7475| Dimension | Stripe Smart Retries | Recurly | Chargebee | Paddle |76|---|---|---|---|---|77| Retry count | 4 (default) | configurable 1–5 | configurable 1–10 | 3 |78| Retry window | 15 days | 21 days | configurable | 14 days |79| Retry timing | ML-optimized | fixed cadence | fixed/custom | fixed |80| Email cadence | day 1, 3, 7 | day 1, 5, 10, 15 | per template | day 1, 7 |81| Grace period | bills marked past_due | suspend after final retry | configurable | suspend |82| Customer self-rescue | `customer_portal` | hosted page | hosted page | hosted page |83| Card update prompt | yes, in-product | yes, hosted | yes | yes |84| 3DS / SCA handling | re-auth at retry | re-auth at retry | re-auth at retry | re-auth |8586### 5. Recommend with reasoning8788End the analysis with: which patterns to adopt, which to skip, and why for *this specific project*. Cite the dimensions that drove the call.8990```91## Recommendation for <project>9293Adopt:94- Stripe's smart-retry timing (proven at scale, easy via Stripe Billing).95- Recurly-style dunning email cadence (more touchpoints than Stripe; better for our SMB churn profile).9697Skip:98- Customer portal self-rescue (we'll wait for v2 — not enough users to justify yet).99100Open question for the user:101- Grace period: do we want past_due → readonly access (Stripe default) or past_due → fully-featured for 7 days then suspend? Affects our retention math.102```103104### 6. Save the research105106Write the result to `.claude/memory/reference/competitive-analysis-<topic>-<date>.md` so future sessions don't re-research the same thing. Add to `MEMORY.md`.107108## Output format109110```111## Question112<the user's actual question, refined>113114## Context115- Business type:116- Constraints:117- Competitors compared:118119## Comparison120121[Table — one row per dimension, one column per competitor]122123## Patterns worth borrowing124- <pattern A> — used by: <competitors>. Why: <reason>.125- <pattern B> — used by: <competitors>. Why: <reason>.126127## Patterns to skip128- <pattern> — used by: <competitor>. Why we don't: <reason>.129130## Recommended approach131[2–4 paragraphs. What you'd build, citing competitor patterns by name where you adopted them.]132133## Open questions for the user1341. …1352. …136137## Sources138- [Stripe docs — Smart Retries](https://...)139- [Recurly engineering blog — Dunning](https://...)140- [HN discussion: SaaS dunning best practices](https://...)141```142143## Boundaries144145- **Cite every source.** No "I read somewhere that …"146- **Never copy product copy, terms-of-service text, or trademarked material.** Learn from the *approach*, write your own copy.147- **Note the date** of every source. Stripe-2019 ≠ Stripe-2026.148- **Don't recommend the most popular pattern** — recommend the pattern that fits the project's constraints.149- **Don't research private information.** Public docs, blog posts, talks, public reviews only.150- **Ask first** if the user already has strong preferences; this skill is for when they want input, not when they've decided.