Claude Skill

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 co

LLM Mart · 0 points · 16 views 0 listing impressions 0 install-command copies
Virus-scanned Reviewed automatically before listing.

Full trust report

Download JasonColapietro-suede-creator-skills-skills_suede-competitor-profiling-f192517.zip · 17 KB
Part of jasoncolapietro/suede-creator-skills — 70 skills

Install

skills CLI npx skills add https://github.com/JasonColapietro/suede-creator-skills/tree/main/skills/suede-competitor-profiling
Claude Code claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install jasoncolapietro-suede-creator-skills@llmmart
Git git clone https://github.com/JasonColapietro/suede-creator-skills.git

The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole jasoncolapietro/suede-creator-skills collection as a plugin from our marketplace. Git is the plain clone.

Skill manifest

Suede Competitor Profiling

Use this Suede competitive-intelligence playbook to turn current public evidence into structured profiles with fact, inference, and unknowns kept separate.

Initial Assessment

Check for .agents/product-marketing.md (or .claude/product-marketing.md, or the legacy product-marketing-context.md) and read it if present — your own positioning and ICP decide which competitors are actually comparable and which dimensions are worth profiling, and they are usually already written down there.

Then work the intake list under Task-Specific Questions below. If the user gave URLs and the context file covers the rest, proceed without asking.


Saving Raw Data

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 time
  • Save each browser, manual, or authorized-fetch page capture as raw markdown to scrapes/<page-name>.md
  • Save each authorized SEO response or user-supplied export to seo/<source-name>.<json|csv>
  • Save each review source to reviews/<source>.md (cleaned text) or .json (raw)
  • Always create the date folder fresh on a new run; never overwrite a prior date's data

The synthesized profile (<competitor-slug>.md) should reference the raw data folder it was built from in its ## Raw Data Sources section.


Research Process

Phase 1: Public-Site Evidence

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.

When the gate blocks you — a source needs an account you were not given, a platform is not connected, a site's terms or robots directives put a page out of bounds, or the user wants a dossier published or sent onward without having authorized it — halt in four parts:

  1. Stop. Do not collect the blocked source or publish the dossier.
  2. Name the blocker in one line ("G2 reviews for
  3. Offer 2-4 options (proceed without that source and mark the fields not collected; the user supplies an export; the user authorizes the connection; substitute a permitted source).
  4. Wait for the answer. Do not pick one and continue.

Step 1: Map the site

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:

  • Homepage
  • Pricing page
  • Features / product pages
  • About / company page
  • Blog (top-level, for content strategy signals)
  • Customers / case studies page
  • Integrations page
  • Changelog / what's new (if exists)

Step 2: Capture key pages

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

Step 3: Capture competitor reviews (optional but high-value)

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.

  • G2 reviews page for the competitor
  • Capterra reviews page
  • Product Hunt launch page
  • TrustRadius profile

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.


Phase 2: Optional SEO and Market Data

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.

Domain Authority & Backlinks

When the connected provider exposes an equivalent of backlinks_summary, collect:

  • Domain rank / authority score
  • Total backlinks
  • Referring domains count
  • Spam score

When it exposes an equivalent of backlinks_referring_domains, collect:

  • Top referring domains (quality signals)
  • Link acquisition patterns

Keyword & Traffic Intelligence

When it exposes ranked-keyword data, collect:

  • Total organic keywords ranking
  • Keywords in top 3, top 10, top 100
  • Estimated organic traffic

When it exposes a domain organic overview, collect:

  • Domain-level organic metrics
  • Estimated traffic value
  • Top keywords by traffic

When it exposes site-keyword discovery, collect:

  • What keywords they target
  • Content gaps vs. your site

Competitive Positioning Data

When it exposes organic-competitor overlap, collect:

  • Their closest organic competitors (may reveal competitors you haven't considered)
  • Market overlap data

When it exposes relevant-page estimates, collect:

  • Their highest-traffic pages
  • Content that drives the most organic value

Phase 3: Synthesis

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).

Phase 4: Prove it before you hand it over

Run this before the profile leaves your hands. It is one ls against a structure Phase 1 and Phase 2 already produced:

ls -R competitor-profiles/raw/<competitor-slug>/<YYYY-MM-DD>/
  • Every field not marked [unknown] and not marked not collected traces to a saved file in that folder. A [fact: ...] field traces to the scrapes/, reviews/ or seo/ file it was read from; an [inference] field traces to the scrape file it was inferred from, not to a separate artifact.
  • Any field that traces to nothing gets re-collected or re-marked [unknown]. It is never softened into confident prose — that is exactly what Boundaries forbids below.
  • The ## Raw Data Sources block names the date folder the profile was built from, so the same check is repeatable by someone else later.

Output Format

Profile Document Structure

Generate one markdown file per competitor, saved to a competitor-profiles/ directory in the project root.

Filename: competitor-profiles/[competitor-name].md

Read references/templates.md before writing the first profile of a run: it holds the evidence-marker legend that every field uses, the full Deep Profile Template, the Quick Scan Template, and the summary, positioning-map, SWOT and changelog templates. Do not reconstruct a profile structure from memory — consistency across profiles is what makes them comparable.

The deep profile runs these sections in order: At a Glance, Positioning & Messaging, Product & Features, Pricing, Customers & Social Proof, SEO & Content Strategy, Strengths & Weaknesses, Competitive Implications, Raw Data Sources.


Summary Document

After profiling all competitors, generate a competitor-profiles/_summary.md that includes:

  1. Competitor landscape overview — one paragraph summarizing the competitive field
  2. Comparison table — key metrics side by side for all profiled competitors
  3. Positioning map — where each competitor sits (e.g., simple↔complex, cheap↔premium)
  4. Key takeaways — 3-5 strategic observations from the research
  5. Gaps and opportunities — where the market is underserved

Quick Scan vs. Deep Profile

Quick Scan (faster, lower cost)

  • Public-site evidence: homepage + pricing page only
  • SEO: one consistent provider overview and ranked-keyword summary when an authorized source or user export is available; otherwise not collected
  • Skip: reviews, technology stack, backlink details
  • Output: abbreviated profile (At a Glance + Positioning + Pricing + SEO summary)

Deep Profile (comprehensive)

  • Public-site evidence: all key pages + available review sources
  • SEO: full backlink analysis + keyword intelligence + competitor discovery
  • Include: technology stack, content strategy analysis, review mining
  • Output: full profile template

Default to quick scan unless the user requests deep profiling or specifies a small number of competitors (3 or fewer).


Handling Multiple Competitors

When profiling more than one competitor:

  1. Parallelize only when supported — capture independent homepages or pricing pages concurrently only when the available tool supports it and its quota allows it; otherwise work sequentially
  2. Use consistent metrics — use the same available provider, market, device, database, date window, and metric definitions for every competitor; otherwise mark the comparison unavailable
  3. Build the summary last — after all individual profiles are complete
  4. Prioritize by relevance — if the user has 10+ competitors, suggest profiling the top 5 first based on domain overlap or market similarity

Updating Profiles

Profiles are snapshots. When updating:

  • Check pricing pages first (most volatile)
  • Refresh SEO metrics only through the same available provider and matching market/device/database parameters, or mark them unavailable
  • Scan changelog for product changes
  • Update the "Generated" date
  • Note what changed since last profile in a ## Change Log section at the bottom

Task-Specific Questions

Only ask if not answered by context or input:

  1. What competitor URLs should I profile?
  2. Quick scan or deep profile?
  3. Any specific dimensions to focus on (pricing, SEO, positioning)?
  4. Should I compare findings against your product?

Boundaries

  • Do not present inference, stale pricing, traffic estimates, review summaries, or feature availability as verified current fact.
  • Do not access private accounts, bypass controls, scrape prohibited sources, contact competitors, or publish a dossier without authorization.
  • Do not label a competitor weak, deceptive, or noncompliant without a stated comparison criterion and evidence.
  • Do not decide product, pricing, legal, or sales strategy; surface supported implications and unresolved questions.

Routing

  • Need a public comparison or alternative page -> use suede-competitors.
  • Need a sales battle card -> use suede-sales-enablement.
  • Need review and forum synthesis -> use suede-customer-research.
  • Need pricing, ad, or content implications -> use suede-pricing, suede-ads, or suede-content-strategy.
  • From those skills, route current-source competitor research back to suede-competitor-profiling.
Files (suede-creator-skills)
  • agents
    • openai.yaml 556 B
      interface:
        display_name: "Suede Competitor Profiling"
        short_description: "Research competitors and turn public evidence into profiles"
        default_prompt: "Use $suede-competitor-profiling on [target]. The user wants competitor research, a competitive landscape, or structured profiles built from competitor URLs. Work through positioning, pricing, messaging, and where they are weak, ground every recommendation in evidence the user can check, and return the decisions, the reasoning, and what to measure next."
      policy:
        allow_implicit_invocation: true
      
  • evals
    • evals.json 7.8 KB
      {
        "skill_name": "suede-competitor-profiling",
        "evals": [
          {
            "id": 1,
            "prompt": "Profile these three competitors for us: https://competitor1.com, https://competitor2.com, https://competitor3.com. We need this for sales enablement and to find positioning gaps.",
            "expected_output": "Should check for product-marketing.md first, then inspect the tools actually available in the current session rather than assuming Firecrawl or DataForSEO exists. Should run the full research process: Phase 1 public-site evidence through an available authorized fetch/map capability or browser/manual fallback, optional Phase 2 SEO and market data through an available authorized provider or user export, and Phase 3 synthesis. Should save raw data to competitor-profiles/raw/<slug>/<YYYY-MM-DD>/ with scrapes/, seo/, reviews/ subfolders before synthesizing. Should produce one markdown file per competitor following the profile template (At a Glance, Positioning & Messaging, Product & Features, Pricing, Customers & Social Proof, SEO & Content Strategy, Strengths & Weaknesses, Competitive Implications). Should produce a _summary.md after individual profiles with comparison table, positioning map, key takeaways, gaps and opportunities. Should parallelize independent reads only when supported and use consistent provider metrics across all three for comparability.",
            "assertions": [
              "Checks for product-marketing.md",
              "Checks current tool availability and uses manual fallback when needed",
              "Runs public evidence, optional quantitative data, and synthesis phases",
              "Saves raw data to competitor-profiles/raw/ with date subfolder",
              "Produces individual profile per competitor",
              "Produces _summary.md after individual profiles",
              "Uses consistent metrics across competitors",
              "Parallelizes independent reads only when supported"
            ],
            "files": []
          },
          {
            "id": 2,
            "prompt": "We have 12 competitors. Profile all of them.",
            "expected_output": "Should recommend prioritizing rather than profiling all 12. Should suggest profiling the top 5 first based on domain overlap or market similarity (handling-multiple-competitors guidance). Should default to quick scan mode for a list this size, not deep profile. Should explain the difference: quick scan covers homepage + pricing plus one consistent provider overview and ranked-keyword summary when an authorized source or user export is available; deep profile adds reviews, technology signals, and backlink detail when available. Should offer deep profile only if user requests or for 3 or fewer competitors. Should ask which competitors are highest priority if the list should be narrowed.",
            "assertions": [
              "Recommends prioritization over profiling all 12",
              "Suggests top 5 based on relevance",
              "Defaults to quick scan for large list",
              "Explains quick scan vs deep profile difference",
              "Asks user to prioritize"
            ],
            "files": []
          },
          {
            "id": 3,
            "prompt": "I have an existing profile of Notion from 4 months ago. Should I update it or start fresh?",
            "expected_output": "Should explain profile updating process from the Updating Profiles section. Should recommend updating rather than starting fresh — preserves history and enables diffing. Should explain what to refresh: pricing page first (most volatile), SEO metrics only through the same currently available provider and matching parameters, and changelog evidence for product changes. Should update the Generated date. Should add a Change Log section at the bottom noting what changed since last profile. Should save new raw data to a new <YYYY-MM-DD> folder rather than overwriting prior data.",
            "assertions": [
              "Recommends updating over starting fresh",
              "Lists what to refresh and keeps SEO provider parameters consistent",
              "Mentions adding Change Log section",
              "Says to save raw data to new date folder",
              "Says never overwrite prior date's data"
            ],
            "files": []
          },
          {
            "id": 4,
            "prompt": "What pages should I scrape for a competitor profile?",
            "expected_output": "Should list the prioritized page types from Phase 1: homepage, pricing page, features/product pages, about/company page, blog (top-level for content strategy signals), customers/case studies page, integrations page, changelog/what's new (if exists). Should explain what to extract from each: homepage (headline, value prop, primary CTA, social proof, target audience signals), pricing (tiers, prices, feature breakdown, billing options, free tier/trial details), features (categories, key capabilities, how they describe each feature), about (founding story, team size, funding, mission, HQ), customers (named customers, logos, industries, case study themes), integrations (count, key integrations, categories), changelog (release velocity, recent focus areas, product direction signals). Should mention optional review scraping (G2, Capterra, Product Hunt, TrustRadius).",
            "assertions": [
              "Lists all key page types in priority order",
              "Specifies what to extract from each page type",
              "Includes changelog as product direction signal",
              "Mentions optional review scraping",
              "Uses an available map/fetch capability or browser/manual fallback"
            ],
            "files": []
          },
          {
            "id": 5,
            "prompt": "I want a profile but I don't care about SEO data — just pricing, positioning, and customer logos. Can you skip the DataForSEO calls?",
            "expected_output": "Should accept the scoped request and skip Phase 2. Should run Phase 1 through an available authorized page-fetch capability or browser/manual capture of homepage, pricing, and customer pages, then Phase 3 synthesis. Should explain that without SEO data, the profile won't include provider domain metrics, organic traffic estimates, ranked keywords, referring domains, or top organic pages — but the positioning, pricing, and customer sections will be complete. Should produce an abbreviated profile flagging the SEO section as 'not collected per user request' rather than leaving placeholders. Should still save raw page evidence to disk for reuse.",
            "assertions": [
              "Skips optional quantitative SEO data as requested",
              "Runs Phase 1 and Phase 3",
              "Explains what's missing without SEO data",
              "Flags SEO section as skipped, not blank",
              "Still saves raw data"
            ],
            "files": []
          },
          {
            "id": 6,
            "prompt": "Should I trust the customer logo wall on the competitor's homepage as evidence of who their customers are?",
            "expected_output": "Should apply the 'Facts Over Opinions' and 'Honest Assessment' principles. Should explain that customer logos are a positioning claim, not necessarily an accurate customer breakdown — companies often show their best-known logos regardless of share of revenue. Should recommend cross-referencing: check case studies for actual usage details, search for press releases naming customers, look at customer reviews on G2/Capterra/TrustRadius for company name signals, check their LinkedIn for posts about customers. Should note: if they claim '10,000 customers' but have weak traffic/backlink profile, the claim should be flagged in the profile. Should distinguish between named customers (verifiable claims) and 'industries served' (positioning statement). Always include the date the data was pulled.",
            "assertions": [
              "Treats logos as positioning claim, not customer breakdown",
              "Recommends cross-referencing case studies and reviews",
              "Mentions checking traffic/backlink profile against claim scale",
              "Distinguishes verifiable named customers from claims",
              "Notes including date pulled"
            ],
            "files": []
          }
        ]
      }
      
  • references
    • templates.md 11.8 KB
      # Profile Templates
      
      Ready-to-use templates for competitor profile sections and the summary document.
      
      ## Contents
      - Evidence Markers (read first — every template below uses them)
      - Deep Profile Template
      - Quick Scan Template
      - Summary Comparison Table
      - Positioning Map
      - Competitive SWOT
      - Profile Update Changelog
      
      ---
      
      ## Evidence Markers
      
      Every filled field in every template below carries one of four markers, so a
      reader can tell at a glance what is observed and what is reasoned. This is the
      mechanism behind "fact, inference, and unknowns kept separate" — without it a
      profile reads as uniformly authoritative regardless of where each line came from.
      
      | Marker | Use for | Example |
      |--------|---------|---------|
      | `[fact: url, date]` | Anything read directly off a public page or review source | `$49/mo [fact: acme.com/pricing, 2026-03-04]` |
      | `[provider estimate: provider, market, device, date]` | Any third-party metric — traffic, authority, keyword counts | `41k/mo [provider estimate: DataForSEO, US, desktop, 2026-03-04]` |
      | `[inference]` | Anything reasoned from evidence rather than stated | `Mid-market ops teams [inference]` |
      | `[unknown]` | Looked for, not found | `Team size: [unknown]` |
      
      Two terminal states are legitimate and must not be filled with a guess:
      `[unknown]` (searched, not found) and `not collected` (out of scope for this
      depth level, or no authorized provider available). Never substitute an estimate
      for either.
      
      ---
      
      ## Deep Profile Template
      
      The full profile for a deep-profile run. One markdown file per competitor at
      `competitor-profiles/[competitor-name].md`.
      
      ```markdown
      # [Competitor Name] — Competitor Profile
      
      **URL**: [website]
      **Generated**: [date]
      **Depth**: [quick scan / deep profile]
      **Evidence markers**: [fact: url, date] · [provider estimate: provider, market, device, date] · [inference] · [unknown]
      
      ---
      
      ## At a Glance
      
      | Metric | Value |
      |--------|-------|
      | Tagline | [value] [fact: url, date] |
      | Founded | [value] [fact: url, date — or unknown] |
      | Headquarters | [value] [fact: url, date — or unknown] |
      | Team size | [value] [fact: url, date — or inference — or unknown] |
      | Funding | [value] [fact: url, date — or unknown] |
      | Provider domain metric | [value] [provider estimate: provider, market, device, date — or not collected] |
      | Est. organic traffic | [monthly] [provider estimate: provider, market, device, date — or not collected] |
      | Referring domains | [count] [provider estimate: provider, date — or not collected] |
      | Organic keywords | [count] [provider estimate: provider, market, date — or not collected] |
      
      ---
      
      ## Positioning & Messaging
      
      **Primary value proposition**: [headline + subheadline] [fact: homepage url, date]
      
      **Target audience**: [who they're speaking to] [inference — from the copy cited above]
      
      **Positioning angle**: [e.g. "simplicity-first," "enterprise-grade," "all-in-one"] [inference]
      
      **Key messaging themes**:
      - [theme 1] [fact: source page url, date]
      - [theme 2] [fact: source page url, date]
      - [theme 3] [fact: source page url, date]
      
      ---
      
      ## Product & Features
      
      ### Core capabilities
      - [capability 1] — [description] [fact: url, date]
      - [capability 2] — [description] [fact: url, date]
      - ...
      
      ### Notable differentiators
      - [what they emphasize as unique] [fact: url, date]
      
      ### Integrations
      - [count] [fact: url, date — or unknown] integrations
      - Key: [top 5-10] [fact: url, date]
      
      ### Product direction signals
      - [read off changelog / recent releases] [inference — cite the changelog url and date]
      
      ---
      
      ## Pricing
      
      | Tier | Price | Key Inclusions |
      |------|-------|---------------|
      | [Free/Starter] | [price] [fact: pricing url, date] | [what's included] |
      | [Pro/Growth] | [price] [fact: pricing url, date] | [what's included] |
      | [Enterprise] | [price] [fact: pricing url, date — or unknown if "contact us"] | [what's included] |
      
      **Billing**: [monthly/annual, annual discount] [fact: pricing url, date]
      **Free trial**: [yes/no, duration] [fact: pricing url, date]
      **Notable**: [pricing quirks — per-seat, usage-based, hidden costs] [fact or inference]
      
      ---
      
      ## Customers & Social Proof
      
      **Named customers**: [notable logos] [fact: url, date]
      **Industries**: [primary industries served] [inference — from the logos and case studies cited]
      **Case study themes**: [what outcomes they highlight] [fact: url, date]
      **Review ratings**:
      - G2: [rating] ([count] reviews) [fact: g2 url, date — or not collected]
      - Capterra: [rating] ([count] reviews) [fact: capterra url, date — or not collected]
      
      ---
      
      ## SEO & Content Strategy
      
      **Organic strength**:
      - Estimated monthly organic traffic: [number] [provider estimate: provider, market, device, date — or not collected]
      - Organic keywords (top 10): [count] [provider estimate: provider, market, date — or not collected]
      - Organic traffic value: $[estimated] [provider estimate: provider, market, date — or not collected]
      
      **Top organic pages** (by estimated traffic):
      1. [page URL] — [keyword] — [est. traffic] [provider estimate: provider, date]
      2. [page URL] — [keyword] — [est. traffic] [provider estimate: provider, date]
      3. [page URL] — [keyword] — [est. traffic] [provider estimate: provider, date]
      
      **Content strategy signals**:
      - Blog post frequency: [estimate] [inference — from the blog index url and date]
      - Primary content types: [guides, comparisons, templates, etc.] [fact: blog url, date]
      - Content focus areas: [topics they invest in] [inference]
      
      **Backlink profile**:
      - Referring domains: [count] [provider estimate: provider, date — or not collected]
      - Top referring sites: [list 5] [provider estimate: provider, date — or not collected]
      - Link acquisition pattern: [growing/stable/declining] [inference — or not collected]
      
      ---
      
      ## Strengths & Weaknesses
      
      ### Strengths
      - [strength 1] [fact: url, date — or inference from a cited capture]
      - [strength 2] [fact: url, date — or inference from a cited capture]
      - [strength 3] [fact: url, date — or inference from a cited capture]
      
      ### Weaknesses
      - [weakness 1] [fact: url, date — or inference from a cited capture]
      - [weakness 2] [fact: url, date — or inference from a cited capture]
      - [weakness 3] [fact: url, date — or inference from a cited capture]
      
      ---
      
      ## Competitive Implications for [Your Product]
      
      **Where they're strong vs. us**: [areas where this competitor has an advantage] [inference]
      
      **Where we're strong vs. them**: [areas where you have an advantage] [inference]
      
      **Opportunities**: [gaps in their offering or positioning we can exploit] [inference]
      
      **Threats**: [areas where they're improving or gaining ground] [inference]
      
      ---
      
      ## Raw Data Sources
      
      Built from `competitor-profiles/raw/[competitor-slug]/[YYYY-MM-DD]/`.
      
      - Homepage scraped: [date]
      - Pricing page scraped: [date]
      - SEO data pulled: [date, provider, market, device]
      - Review data pulled: [date, sources]
      ```
      
      ---
      
      ## Quick Scan Template
      
      Abbreviated profile for when speed matters more than depth. Same evidence
      markers as the deep profile, so the two stay comparable.
      
      ```markdown
      # [Competitor Name] — Quick Profile
      
      **URL**: [website]
      **Generated**: [date]
      **Evidence markers**: [fact: url, date] · [provider estimate: provider, market, device, date] · [inference] · [unknown]
      
      ## At a Glance
      
      | Metric | Value |
      |--------|-------|
      | Tagline | [value] [fact: homepage url, date] |
      | Target audience | [value] [inference — from the copy cited above] |
      | Pricing starts at | [lowest paid tier] [fact: pricing url, date] |
      | Free tier/trial | [yes/no + details] [fact: pricing url, date] |
      | Provider domain metric | [value] [provider estimate: provider, market, device, date — or not collected] |
      | Est. organic traffic | [monthly] [provider estimate: provider, market, device, date — or not collected] |
      | Organic keywords (top 10) | [count] [provider estimate: provider, market, date — or not collected] |
      | Referring domains | [count] [provider estimate: provider, date — or not collected] |
      
      ## Positioning
      
      **Headline**: "[exact homepage headline]" [fact: homepage url, date]
      **Subheadline**: "[exact subheadline]" [fact: homepage url, date]
      **Positioning angle**: [1-2 sentence summary of how they position] [inference]
      
      ## Pricing Summary
      
      | Tier | Price | Notable Inclusions |
      |------|-------|-------------------|
      | [tier] | [price] [fact: pricing url, date] | [key items] |
      | [tier] | [price] [fact: pricing url, date] | [key items] |
      
      ## Key Takeaway
      
      [2-3 sentences: what makes this competitor notable, where they're strong, where they're weak]
      ```
      
      ---
      
      ## Summary Comparison Table
      
      Use after profiling all competitors to create a side-by-side view.
      
      ```markdown
      # Competitive Landscape Summary
      
      **Generated**: [date]
      **Your product**: [name]
      **Competitors profiled**: [count]
      
      ## Side-by-Side Comparison
      
      | Dimension | [Your Product] | [Competitor 1] | [Competitor 2] | [Competitor 3] |
      |-----------|---------------|----------------|----------------|----------------|
      | **Tagline** | [yours] | [theirs] | [theirs] | [theirs] |
      | **Target audience** | [yours] | [theirs] | [theirs] | [theirs] |
      | **Positioning** | [angle] | [angle] | [angle] | [angle] |
      | **Starting price** | $[X]/mo | $[X]/mo | $[X]/mo | $[X]/mo |
      | **Free tier** | [yes/no] | [yes/no] | [yes/no] | [yes/no] |
      | **Domain rank** | [score] | [score] | [score] | [score] |
      | **Est. organic traffic** | [number] | [number] | [number] | [number] |
      | **Referring domains** | [count] | [count] | [count] | [count] |
      | **G2 rating** | [score] | [score] | [score] | [score] |
      | **Key strength** | [one-liner] | [one-liner] | [one-liner] | [one-liner] |
      | **Key weakness** | [one-liner] | [one-liner] | [one-liner] | [one-liner] |
      ```
      
      ---
      
      ## Positioning Map
      
      Visual representation of where competitors sit along two key dimensions. Choose the two axes most relevant to your market.
      
      ### Common Axis Pairs
      
      | Market Type | X-Axis | Y-Axis |
      |-------------|--------|--------|
      | SaaS tools | Simple → Complex | Cheap → Expensive |
      | Developer tools | Low-code → Code-first | Individual → Team |
      | B2B platforms | SMB-focused → Enterprise-focused | Point solution → Platform |
      | Content tools | Template-driven → Custom | Self-serve → Managed |
      
      ### Format
      
      ```markdown
      ## Positioning Map
      
      **Axes**: [X-axis label] vs. [Y-axis label]
      
                          [Y-axis high label]
                                 │
                                 │
                [Competitor A]   │    [Competitor B]
                                 │
          ───────────────────────┼───────────────────────
          [X-axis low]           │           [X-axis high]
                                 │
                [Your Product]   │    [Competitor C]
                                 │
                          [Y-axis low label]
      
      ### Interpretation
      - [1-2 sentences about what the map reveals]
      - [where the whitespace / opportunity is]
      ```
      
      ---
      
      ## Competitive SWOT
      
      Per-competitor SWOT relative to your product.
      
      ```markdown
      ## SWOT: [Competitor] vs. [Your Product]
      
      ### Strengths (theirs vs. ours)
      - [Where they genuinely outperform us — be honest]
      
      ### Weaknesses (theirs vs. ours)
      - [Where they fall short compared to us — with evidence]
      
      ### Opportunities (for us)
      - [Gaps in their offering we can exploit]
      - [Segments they're ignoring]
      - [Messaging angles they're missing]
      
      ### Threats (from them)
      - [Areas where they're improving fast]
      - [Features they're building that overlap with us]
      - [Market moves that could shift perception]
      ```
      
      ---
      
      ## Profile Update Changelog
      
      Append to the bottom of any profile when updating it.
      
      ```markdown
      ---
      
      ## Change Log
      
      | Date | What Changed | Source |
      |------|-------------|--------|
      | [date] | Pricing increased from $X to $Y | Pricing page recapture |
      | [date] | Launched [feature] | Changelog recapture |
      | [date] | Provider domain metric changed from X to Y | Same-provider refresh with matching market and device |
      | [date] | Added [integration] | Integrations page recapture |
      ```
      
    • tool-reference.md 6.8 KB
      # Conditional Research Access for Competitor Profiling
      
      This reference maps research needs to capabilities. It does not declare that
      Firecrawl, DataForSEO, a browser, a search provider, or any other connector is
      installed, connected, authorized, or callable.
      
      ## Contents
      - Availability and Authorization Gate
      - Public-Site Evidence
      - Optional SEO and Market Metrics
      - Execution Order
      - Failure and Fallback Rules
      
      ## Availability and Authorization Gate
      
      Before selecting a tool:
      
      1. Inspect the tools actually exposed in the current session.
      2. For a relevant connector, confirm the intended account or workspace,
         authorization, current schema, pricing or quota impact, and read-only scope.
      3. Use the exact callable name and arguments returned by current tool
         discovery. Do not construct calls from the example names in this file.
      4. If no appropriate tool is available, use the browser-neutral/manual
         fallback below or analyze a user-supplied export.
      5. Never bypass login, paywalls, bot controls, site terms, privacy controls, or
         rate limits. Platform-specific access requires a connected platform and the
         user's authorization.
      
      ## Public-Site Evidence
      
      ### Map or discover URLs
      
      **Need:** Find homepage, pricing, product, about, customer, integration, blog,
      and changelog URLs.
      
      **Connected-tool route:** Use a currently exposed site-map or crawl capability
      after reading its schema. Some Firecrawl connections expose names such as
      `firecrawl_map`; treat that as a discovery hint, not a guaranteed command.
      
      **Manual fallback:** Open the public homepage, follow primary navigation,
      inspect a public sitemap when accessible, or use ordinary public search. Record
      the exact URL and access date for every page selected.
      
      ### Capture one page
      
      **Need:** Preserve visible positioning, pricing, proof, and product text.
      
      **Connected-tool route:** Use a currently exposed single-page fetch, scrape, or
      extract capability. Some Firecrawl connections expose names such as
      `firecrawl_scrape` or `firecrawl_extract`; first confirm that exact tool and its
      schema are available.
      
      **Manual fallback:** Open the public page and save the relevant visible text or
      notes as markdown. Record omitted dynamic sections and access limitations.
      
      ### Find reviews or offsite mentions
      
      **Need:** Locate current review pages, launch discussions, press, and other
      public corroboration.
      
      **Connected-tool route:** Use a current authorized search capability if one is
      exposed. A name such as `firecrawl_search` may exist in some installations but
      must be discovered before use.
      
      **Manual fallback:** Use ordinary public search and open the result directly.
      Do not scrape account-only review content without connected, authorized access.
      
      ## Optional SEO and Market Metrics
      
      Quantitative SEO data is optional. Provider metrics are estimates, not first-
      party traffic truth. Record provider, market, device, database, access date,
      date window, and metric definition so competitors remain comparable.
      
      If a DataForSEO or similar connector is currently available and authorized,
      discover its exact callable names and schemas at runtime. Common capability
      labels in some deployments include:
      
      | Research need | Possible capability label | Capture |
      |---------------|---------------------------|---------|
      | Domain/backlink overview | `backlinks_summary` | Provider rank, backlinks, referring domains, spam indicator |
      | Referring-domain detail | `backlinks_referring_domains` | Referring domain, provider rank, link count |
      | Organic domain overview | `dataforseo_labs_google_domain_rank_overview` | Ranked-keyword count, estimated traffic, estimated value |
      | Ranked keywords | `dataforseo_labs_google_ranked_keywords` | Keyword, position, volume, ranking URL |
      | Site keyword ideas | `dataforseo_labs_google_keywords_for_site` | Keyword, volume, competition, CPC estimate |
      | Organic competitors | `dataforseo_labs_google_competitors_domain` | Domain, overlap, position metrics |
      | Domain intersection | `dataforseo_labs_google_domain_intersection` | Shared keyword and each domain's position |
      | Relevant pages | `dataforseo_labs_google_relevant_pages` | Page and provider-estimated traffic/keywords |
      | Technology detection | `domain_analytics_technologies_domain_technologies` | Observed technologies by category |
      | Individual backlinks | `backlinks_backlinks` | Source, target, anchor, provider rank |
      | Bulk rank comparison | `backlinks_bulk_ranks` | Same provider rank across the submitted domains |
      
      These labels are not an API contract. If the available provider uses different
      names or fields, use the current discovered schema. If no provider is
      available, accept a current CSV/JSON export from the user or mark the relevant
      section `not collected`.
      
      ## Execution Order
      
      ### Quick scan
      
      1. Discover URLs with an available mapping capability or manual navigation.
      2. Capture homepage and pricing evidence with an authorized fetch or manually.
      3. If a quantitative provider or user export is available, collect one
         consistent domain overview and backlink summary.
      4. Save raw evidence, then synthesize an abbreviated profile.
      
      ### Deep profile
      
      1. Capture homepage, pricing, feature, about, customer, integration, and
         changelog evidence.
      2. Collect the same available SEO metrics for each competitor; skip the entire
         comparison dimension when consistent inputs are unavailable.
      3. Add public reviews and offsite corroboration through an authorized search
         capability or manual browsing.
      4. Save every raw response, export, or manual capture with source and date.
      5. Synthesize only after separating verified facts, provider estimates,
         inferences, and unknowns.
      
      ### Multiple competitors
      
      Parallelize independent reads only when the current tool supports concurrency
      and its quota allows it. Use identical sources and parameters across
      competitors. Build individual profiles before the cross-competitor summary.
      
      ## Failure and Fallback Rules
      
      | Issue | Action |
      |-------|--------|
      | Named example tool is absent | Do not call it; use another exposed capability or the manual fallback |
      | Page is blocked or requires login | Record the limitation; do not bypass access controls |
      | JavaScript page does not render in a fetch | Use an available browser when authorized, or capture only verifiable public evidence manually |
      | Pricing URL is not obvious | Inspect navigation, public sitemap, and likely public paths; report if still unverified |
      | SEO provider returns no data | Record `insufficient provider data`; do not convert absence into zero |
      | Providers use incompatible metrics | Do not compare the values directly; choose one consistent provider or mark unavailable |
      | Rate or quota limit is reached | Stop additional calls, name the limit, prioritize the smallest useful evidence set |
      | Review access is restricted | Use another public source or omit the review dimension with a limitation note |
      
  • CARD.md 4.4 KB
    # Skill Card — Suede Competitor Profiling
    
    <!-- Generated by scripts/build-skill-cards.mjs — do not hand-edit. -->
    <!-- Regenerate with: npm run build:cards -->
    
    Release record for the `suede-competitor-profiling` skill, following the NVIDIA skill-card template (<https://docs.nvidia.com/skills/skill-cards>). It tells a reviewer what the skill does, who owns it, what it needs, what could go wrong, and what evidence backs the release — without requiring them to open the source first.
    
    ## Description
    
    Suede-owned competitive-intelligence discipline for evidence-backed profiles of positioning, pricing, messaging, product, proof, and public-market signals.
    
    Status: production. Ships in the `suede-skills` plugin (the full pack) at release 0.19.0; loads as a Claude Code / Codex agent skill from this directory's [SKILL.md](./SKILL.md).
    
    ## Owner
    
    Jason Colapietro, Suede Labs AI (<https://github.com/JasonColapietro>). Security contact: `info@suedeai.ai` per [SECURITY.md](../../SECURITY.md).
    
    ## License / Terms of Use
    
    MIT ([LICENSE](../../LICENSE)). The pack's combined license expression is `MIT AND BSD-3-Clause`; this skill bundles no third-party licensed material of its own.
    
    ## Use Case
    
    Target users: developers and creators running the skill inside a Claude Code or Codex CLI session.
    
    Use when researching named competitors from current public URLs or refreshing a structured landscape.
    
    Out of scope — publishing comparison pages (use suede-competitors), internal sales battle cards (use suede-sales-enablement), or deciding pricing changes (use suede-pricing).
    
    ## Deployment Geography
    
    Global. The skill is a prompt-and-script package that runs locally inside the invoking agent session; it pins no region-specific service of its own.
    
    ## Requirements / Dependencies
    
    - A Claude Code or Codex CLI session with the `suede-skills` plugin installed (install options: <https://skills.suedeai.ai/>).
    - Bundled files loaded relative to this directory: `agents/` (1 file), `references/` (2 files).
    - Credentials: none are bundled or required by the skill files. Any tool or API credentials come from the host session; never paste credentials into skill files, prompts, or outputs.
    
    ## Known Risks and Mitigations
    
    - Risk: an agent treats a quality gate as autonomous authority. Mitigation: every gate in the pack is advisory — it changes what is reported, never what the user decided; only extreme-risk findings (data loss, credential exposure, legal/rights violations, payment mistakes, irreversible public damage) pause for the user's explicit choice.
    - Risk: a skill instruction is used to act outside its mandate. Mitigation: the hard limits in the skill body's "Boundaries" section, quoted below.
    
    From "Boundaries":
    
    - Do not present inference, stale pricing, traffic estimates, review summaries, or feature availability as verified current fact.
    - Do not access private accounts, bypass controls, scrape prohibited sources, contact competitors, or publish a dossier without authorization.
    - Do not label a competitor weak, deceptive, or noncompliant without a stated comparison criterion and evidence.
    - Do not decide product, pricing, legal, or sales strategy; surface supported implications and unresolved questions.
    
    ## References
    
    - Skill source: [`skills/suede-competitor-profiling/SKILL.md`](./SKILL.md)
    - Rendered reference page: <https://skills.suedeai.ai/skills/suede-competitor-profiling.html>
    - Security policy and reviewed scanner exceptions: [SECURITY.md](../../SECURITY.md) and [`.plugin-scanner.toml`](../../.plugin-scanner.toml) at the repo root
    
    ## Skill Output
    
    Structured Markdown returned in the agent's response, shaped by the output contract defined in the skill body: "Output Format". The skill publishes, posts, and sends nothing without the user's explicit authorization; delivery decisions stay with the user.
    
    ## Skill Version
    
    0.19.0 — the pack is single-versioned, so every skill releases together; see [VERSION](../../VERSION) and [CITATION.cff](../../CITATION.cff) for the release identifier this card describes.
    
    ## Ethical Considerations
    
    - The skill produces recommendations for a human decision-maker. Publishing, sending, payment, and rights decisions stay with the user.
    - Its gates require verifiable claims and honest reporting; do not use the skill to fabricate claims, evidence, metrics, or attribution.
    - Report suspected misuse or a security concern privately per [SECURITY.md](../../SECURITY.md); do not open a public issue for it.
    
  • SKILL.md 14.2 KB
    ---
    name: suede-competitor-profiling
    description: "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)."
    metadata:
      version: 2.0.0
    ---
    
    # Suede Competitor Profiling
    
    Use this Suede competitive-intelligence playbook to turn current public evidence into structured profiles with fact, inference, and unknowns kept separate.
    
    ## Initial Assessment
    
    Check for `.agents/product-marketing.md` (or `.claude/product-marketing.md`, or the legacy `product-marketing-context.md`) and read it if present — your own positioning and ICP decide which competitors are actually comparable and which dimensions are worth profiling, and they are usually already written down there.
    
    Then work the intake list under Task-Specific Questions below. If the user gave URLs and the context file covers the rest, proceed without asking.
    
    ---
    
    ## Saving Raw Data
    
    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 time
    - Save each browser, manual, or authorized-fetch page capture as raw markdown
      to `scrapes/<page-name>.md`
    - Save each authorized SEO response or user-supplied export to
      `seo/<source-name>.<json|csv>`
    - Save each review source to `reviews/<source>.md` (cleaned text) or `.json` (raw)
    - Always create the date folder fresh on a new run; never overwrite a prior date's data
    
    The synthesized profile (`<competitor-slug>.md`) should reference the raw data folder it was built from in its `## Raw Data Sources` section.
    
    ---
    
    ## Research Process
    
    ### Phase 1: Public-Site Evidence
    
    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.
    
    **When the gate blocks you** — a source needs an account you were not given, a
    platform is not connected, a site's terms or robots directives put a page out of
    bounds, or the user wants a dossier published or sent onward without having
    authorized it — halt in four parts:
    
    1. Stop. Do not collect the blocked source or publish the dossier.
    2. Name the blocker in one line ("G2 reviews for <competitor> require a signed-in
       account; this session has no authorized G2 connection").
    3. Offer 2-4 options (proceed without that source and mark the fields
       `not collected`; the user supplies an export; the user authorizes the
       connection; substitute a permitted source).
    4. Wait for the answer. Do not pick one and continue.
    
    #### Step 1: Map the site
    
    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:
    - Homepage
    - Pricing page
    - Features / product pages
    - About / company page
    - Blog (top-level, for content strategy signals)
    - Customers / case studies page
    - Integrations page
    - Changelog / what's new (if exists)
    
    #### Step 2: Capture key pages
    
    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 |
    
    #### Step 3: Capture competitor reviews (optional but high-value)
    
    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.
    - G2 reviews page for the competitor
    - Capterra reviews page
    - Product Hunt launch page
    - TrustRadius profile
    
    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.
    
    ---
    
    ### Phase 2: Optional SEO and Market Data
    
    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](references/tool-reference.md) for conditional
    capability mapping and manual fallbacks.
    
    #### Domain Authority & Backlinks
    
    When the connected provider exposes an equivalent of `backlinks_summary`,
    collect:
    - Domain rank / authority score
    - Total backlinks
    - Referring domains count
    - Spam score
    
    When it exposes an equivalent of `backlinks_referring_domains`, collect:
    - Top referring domains (quality signals)
    - Link acquisition patterns
    
    #### Keyword & Traffic Intelligence
    
    When it exposes ranked-keyword data, collect:
    - Total organic keywords ranking
    - Keywords in top 3, top 10, top 100
    - Estimated organic traffic
    
    When it exposes a domain organic overview, collect:
    - Domain-level organic metrics
    - Estimated traffic value
    - Top keywords by traffic
    
    When it exposes site-keyword discovery, collect:
    - What keywords they target
    - Content gaps vs. your site
    
    #### Competitive Positioning Data
    
    When it exposes organic-competitor overlap, collect:
    - Their closest organic competitors (may reveal competitors you haven't considered)
    - Market overlap data
    
    When it exposes relevant-page estimates, collect:
    - Their highest-traffic pages
    - Content that drives the most organic value
    
    ---
    
    ### Phase 3: Synthesis
    
    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).
    
    ### Phase 4: Prove it before you hand it over
    
    Run this before the profile leaves your hands. It is one `ls` against a
    structure Phase 1 and Phase 2 already produced:
    
    ```
    ls -R competitor-profiles/raw/<competitor-slug>/<YYYY-MM-DD>/
    ```
    
    - Every field not marked `[unknown]` and not marked `not collected` traces to a
      saved file in that folder. A `[fact: ...]` field traces to the `scrapes/`,
      `reviews/` or `seo/` file it was read from; an `[inference]` field traces to
      the scrape file it was inferred from, not to a separate artifact.
    - Any field that traces to nothing gets re-collected or re-marked `[unknown]`.
      It is never softened into confident prose — that is exactly what Boundaries
      forbids below.
    - The `## Raw Data Sources` block names the date folder the profile was built
      from, so the same check is repeatable by someone else later.
    
    ---
    
    ## Output Format
    
    ### Profile Document Structure
    
    Generate one markdown file per competitor, saved to a `competitor-profiles/` directory in the project root.
    
    **Filename**: `competitor-profiles/[competitor-name].md`
    
    **Read [references/templates.md](references/templates.md) before writing the first
    profile of a run**: it holds the evidence-marker legend that every field uses, the
    full Deep Profile Template, the Quick Scan Template, and the summary, positioning-map,
    SWOT and changelog templates. Do not reconstruct a profile structure from memory —
    consistency across profiles is what makes them comparable.
    
    The deep profile runs these sections in order: At a Glance, Positioning & Messaging,
    Product & Features, Pricing, Customers & Social Proof, SEO & Content Strategy,
    Strengths & Weaknesses, Competitive Implications, Raw Data Sources.
    
    ---
    
    ### Summary Document
    
    After profiling all competitors, generate a `competitor-profiles/_summary.md` that includes:
    
    1. **Competitor landscape overview** — one paragraph summarizing the competitive field
    2. **Comparison table** — key metrics side by side for all profiled competitors
    3. **Positioning map** — where each competitor sits (e.g., simple↔complex, cheap↔premium)
    4. **Key takeaways** — 3-5 strategic observations from the research
    5. **Gaps and opportunities** — where the market is underserved
    
    ---
    
    ## Quick Scan vs. Deep Profile
    
    ### Quick Scan (faster, lower cost)
    - Public-site evidence: homepage + pricing page only
    - SEO: one consistent provider overview and ranked-keyword summary when an
      authorized source or user export is available; otherwise `not collected`
    - Skip: reviews, technology stack, backlink details
    - Output: abbreviated profile (At a Glance + Positioning + Pricing + SEO summary)
    
    ### Deep Profile (comprehensive)
    - Public-site evidence: all key pages + available review sources
    - SEO: full backlink analysis + keyword intelligence + competitor discovery
    - Include: technology stack, content strategy analysis, review mining
    - Output: full profile template
    
    Default to **quick scan** unless the user requests deep profiling or specifies a small number of competitors (3 or fewer).
    
    ---
    
    ## Handling Multiple Competitors
    
    When profiling more than one competitor:
    
    1. **Parallelize only when supported** — capture independent homepages or
       pricing pages concurrently only when the available tool supports it and its
       quota allows it; otherwise work sequentially
    2. **Use consistent metrics** — use the same available provider, market,
       device, database, date window, and metric definitions for every competitor;
       otherwise mark the comparison unavailable
    3. **Build the summary last** — after all individual profiles are complete
    4. **Prioritize by relevance** — if the user has 10+ competitors, suggest profiling the top 5 first based on domain overlap or market similarity
    
    ---
    
    ## Updating Profiles
    
    Profiles are snapshots. When updating:
    
    - Check pricing pages first (most volatile)
    - Refresh SEO metrics only through the same available provider and matching
      market/device/database parameters, or mark them unavailable
    - Scan changelog for product changes
    - Update the "Generated" date
    - Note what changed since last profile in a `## Change Log` section at the bottom
    
    ---
    
    ## Task-Specific Questions
    
    Only ask if not answered by context or input:
    
    1. What competitor URLs should I profile?
    2. Quick scan or deep profile?
    3. Any specific dimensions to focus on (pricing, SEO, positioning)?
    4. Should I compare findings against your product?
    
    ---
    
    ## Boundaries
    
    - Do not present inference, stale pricing, traffic estimates, review summaries, or feature availability as verified current fact.
    - Do not access private accounts, bypass controls, scrape prohibited sources, contact competitors, or publish a dossier without authorization.
    - Do not label a competitor weak, deceptive, or noncompliant without a stated comparison criterion and evidence.
    - Do not decide product, pricing, legal, or sales strategy; surface supported implications and unresolved questions.
    
    ## Routing
    
    - Need a public comparison or alternative page -> use `suede-competitors`.
    - Need a sales battle card -> use `suede-sales-enablement`.
    - Need review and forum synthesis -> use `suede-customer-research`.
    - Need pricing, ad, or content implications -> use `suede-pricing`, `suede-ads`, or `suede-content-strategy`.
    - From those skills, route current-source competitor research back to `suede-competitor-profiling`.
    

Comments (0)

Sign in to join the conversation.

No comments yet.

Reviews (0)

No reviews yet.

Related