jasoncolapietro/suede-competitor-profiling
Suede-owned competitive-intelligence discipline for evidence-backed profiles of positioning, pricing, messaging, product, proof, and public-market signals. Use when researching named competitors from current public URLs or refreshing a structured landscape. NOT FOR: publishing comparison pages (use suede-competitors), internal sales battle cards (use suede-sales-enablement), or deciding pricing changes (use suede-pricing).
npx skills add https://github.com/JasonColapietro/suede-creator-skills --skill suede-competitor-profiling
Use this Suede competitive-intelligence playbook to turn current public evidence into structured profiles with fact, inference, and unknowns kept separate.
Check for product marketing context first:
If .agents/product-marketing.md exists (or .claude/product-marketing.md, or the legacy product-marketing-context.md filename, in older setups), read it before asking questions. Use that context and only ask for information not already covered.
Before profiling, confirm:
If the user provides URLs and context is available, proceed without asking.
Every claim in a profile should be traceable to a source — captured public-page
content, review data, or clearly labeled provider metrics. Label inferences
clearly.
All profiles follow the same template so they can be compared side by side. Consistency matters more than completeness on any single profile.
Profiles are snapshots. Always include the date generated. Flag anything that looks stale (e.g., "pricing page last updated 2023").
Don't exaggerate competitor weaknesses or downplay their strengths. Accurate profiles are useful profiles.
Before synthesizing the profile, persist all raw page captures, SEO inputs, and
review evidence to disk so they can be re-read, audited, or reused without
repeating provider requests or manual collection.
Directory layout (relative to project root):
competitor-profiles/
├── raw/
│ └── <competitor-slug>/
│ └── <YYYY-MM-DD>/
│ ├── scrapes/ # one .md file per captured page (homepage.md, pricing.md, ...)
│ ├── seo/ # one .json or .csv file per authorized metric source
│ └── reviews/ # one .md or .json file per review source (g2.md, capterra.md, ...)
├── <competitor-slug>.md # final synthesized profile
└── _summary.md # cross-competitor summary
Rules:
<competitor-slug> is lowercase, hyphenated (e.g. responsehub, safe-base)<YYYY-MM-DD> is the date the data was pulled — supports re-running and diffing snapshots over timeto scrapes/<page-name>.md
seo/<source-name>.<json|csv>
reviews/<source>.md (cleaned text) or .json (raw)The synthesized profile (<competitor-slug>.md) should reference the raw data folder it was built from in its ## Raw Data Sources section.
For each competitor URL, capture key public pages to extract positioning,
features, pricing, and messaging.
Availability gate: Inspect the tools currently exposed in the session
before selecting an acquisition method. A named connector is usable only when
it is actually available, connected to the intended account when applicable,
authorized for this task, and its current schema has been read. Do not invent a
tool call from the examples below.
If no mapping or page-fetch tool is available, use a browser-neutral/manual
fallback: open the public site, follow its primary navigation, inspect its
public sitemap or search results when accessible, record the exact URLs and
access date, and capture only evidence visible to the user. Respect access
controls, site terms, robots directives where applicable, and rate limits.
If a current authorized connector exposes a site-map or crawl capability, use
its documented schema to discover the site structure. For example, some
Firecrawl connections expose a firecrawl_map operation, but that name is not
guaranteed. Otherwise build the URL list through the manual fallback.
available map capability or manual navigation → verified competitor URLs
From the map, identify and prioritize these page types:
If a current authorized connector exposes single-page fetch or extraction, use
its documented schema on each identified URL. For example, some Firecrawl
connections expose firecrawl_scrape. Otherwise open each public page and
capture the relevant visible text manually.
available page-fetch capability or browser/manual capture → page evidence
Save each result to competitor-profiles/raw/<competitor-slug>/<YYYY-MM-DD>/scrapes/<page-name>.md before extracting fields.
Extract from each page:
| Page | What to Extract |
|------|----------------|
| Homepage | Headline, subheadline, value proposition, primary CTA, social proof claims, target audience signals |
| Pricing | Tiers, prices, feature breakdown per tier, billing options, free tier/trial details, enterprise pricing signals |
| Features | Feature categories, key capabilities, how they describe each feature, screenshots/demo signals |
| About | Founding story, team size, funding, mission statement, headquarters |
| Customers | Named customers, logos, industries served, case study themes |
| Integrations | Integration count, key integrations, categories |
| Changelog | Release velocity, recent focus areas, product direction signals |
If a connected search/fetch tool is available and authorized, use its current
schema to find the sources below. Otherwise search or browse them manually.
Platform-specific or account-only content may be accessed only when that
platform is actually connected and the user has authorized it.
Save each scraped review page to competitor-profiles/raw/<competitor-slug>/<YYYY-MM-DD>/reviews/<source>.md. Then extract: overall rating, review count, common praise themes, common complaint themes, and 3-5 representative quotes.
First inspect current available tools and user-provided files. If an authorized
SEO-data connector is exposed, read its current schemas and gather the same
metrics for every competitor. Some DataForSEO connections use the capability
names below, but their presence and exact schemas are not guaranteed. If no
provider is available, analyze a current user-supplied export or mark these
fields not collected; never substitute guessed values.
Save each raw response or export to
competitor-profiles/raw/<competitor-slug>/<YYYY-MM-DD>/seo/ before parsing.
Record provider, access date, market, device, database, and that traffic,
authority, and value metrics are provider estimates. See
references/tool-reference.md for conditional
capability mapping and manual fallbacks.
When the connected provider exposes an equivalent of backlinks_summary,
collect:
When it exposes an equivalent of backlinks_referring_domains, collect:
When it exposes ranked-keyword data, collect:
When it exposes a domain organic overview, collect:
When it exposes site-keyword discovery, collect:
When it exposes organic-competitor overlap, collect:
When it exposes relevant-page estimates, collect:
Combine scraped content with SEO data to build the profile. Cross-reference claims (e.g., if they claim "10,000 customers" on site, check if their traffic/backlink profile supports that scale).
Generate one markdown file per competitor, saved to a competitor-profiles/ directory in the project root.
Filename: competitor-profiles/[competitor-name].md
For the full profile and summary templates: See references/templates.md
Each profile follows this structure:
# [Competitor Name] — Competitor Profile
**URL**: [website]
**Generated**: [date]
**Depth**: [quick scan / deep profile]
---
## At a Glance
| Metric | Value |
|--------|-------|
| Tagline | [from homepage] |
| Founded | [year] |
| Headquarters | [location] |
| Team size | [estimate] |
| Funding | [if known] |
| Provider domain metric | [value, provider, market, and access date; or not collected] |
| Est. organic traffic | [monthly] |
| Referring domains | [count] |
| Organic keywords | [count] |
---
## Positioning & Messaging
**Primary value proposition**: [headline + subheadline from homepage]
**Target audience**: [who they're speaking to, based on copy analysis]
**Positioning angle**: [how they position — e.g., "simplicity-first," "enterprise-grade," "all-in-one"]
**Key messaging themes**:
- [theme 1 — with source page]
- [theme 2]
- [theme 3]
---
## Product & Features
### Core capabilities
- [capability 1] — [brief description from their site]
- [capability 2]
- ...
### Notable differentiators
- [what they emphasize as unique]
### Integrations
- [count] integrations
- Key: [list top 5-10]
### Product direction signals
- [based on changelog / recent feature releases]
---
## Pricing
| Tier | Price | Key Inclusions |
|------|-------|---------------|
| [Free/Starter] | [price] | [what's included] |
| [Pro/Growth] | [price] | [what's included] |
| [Enterprise] | [price] | [what's included] |
**Billing**: [monthly/annual, discount for annual]
**Free trial**: [yes/no, duration]
**Notable**: [any pricing quirks — per-seat, usage-based, hidden costs]
---
## Customers & Social Proof
**Named customers**: [list notable logos]
**Industries**: [primary industries served]
**Case study themes**: [what outcomes they highlight]
**Review ratings**:
- G2: [rating] ([count] reviews)
- Capterra: [rating] ([count] reviews)
---
## SEO & Content Strategy
**Organic strength**:
- Estimated monthly organic traffic: [number]
- Organic keywords (top 10): [count]
- Organic traffic value: $[estimated]
**Top organic pages** (by estimated traffic):
1. [page URL] — [keyword] — [est. traffic]
2. [page URL] — [keyword] — [est. traffic]
3. [page URL] — [keyword] — [est. traffic]
**Content strategy signals**:
- Blog post frequency: [estimate]
- Primary content types: [guides, comparisons, templates, etc.]
- Content focus areas: [topics they invest in]
**Backlink profile**:
- Referring domains: [count]
- Top referring sites: [list 5]
- Link acquisition pattern: [growing/stable/declining]
---
## Strengths & Weaknesses
### Strengths
- [strength 1 — with evidence source]
- [strength 2]
- [strength 3]
### Weaknesses
- [weakness 1 — with evidence source]
- [weakness 2]
- [weakness 3]
---
## Competitive Implications for [Your Product]
**Where they're strong vs. us**: [areas where this competitor has an advantage]
**Where we're strong vs. them**: [areas where you have an advantage]
**Opportunities**: [gaps in their offering or positioning we can exploit]
**Threats**: [areas where they're improving or gaining ground]
---
## Raw Data Sources
- Homepage scraped: [date]
- Pricing page scraped: [date]
- SEO data pulled: [date]
- Review data pulled: [date, sources]
After profiling all competitors, generate a competitor-profiles/_summary.md that includes:
authorized source or user export is available; otherwise not collected
Default to quick scan unless the user requests deep profiling or specifies a small number of competitors (3 or fewer).
When profiling more than one competitor:
pricing pages concurrently only when the available tool supports it and its
quota allows it; otherwise work sequentially
device, database, date window, and metric definitions for every competitor;
otherwise mark the comparison unavailable
Profiles are snapshots. When updating:
market/device/database parameters, or mark them unavailable
## Change Log section at the bottomOnly ask if not answered by context or input:
suede-competitors.suede-sales-enablement.suede-customer-research.suede-pricing, suede-ads, or suede-content-strategy.suede-competitor-profiling.Take jasoncolapietro/suede-competitor-profiling from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.