---
name: "competitor_social_audit"
description: "Run a full audit of competitors' social media presence: inventory their profiles, classify 30 days of posts by content pillar, benchmark their posting cadence and engagement rates against platform medians, and surface the gaps you can exploit. Triggers on 'audit competitors' social', 'how does our content mix compare to X', 'benchmark our engagement against competitors', or any competitive social analysis request."
---

# Competitor Social Audit

## Purpose

Turn 3 to 5 competitors' public social feeds into an actionable picture: what they post, how often, what lands, and where they leave openings. The output is a scored audit report, not a data dump: every number compared against a benchmark, every observation tied to a gap you can exploit.

Scope: content mix, posting cadence, and engagement benchmarking across public profiles. This is not brand positioning or pricing analysis (that is a different audit), and it never covers private or paid data.

## Workflow

### Step 1: Scope the audit

Collect from the requester: 3 to 5 named competitors, their handles per platform (Instagram, TikTok, X, Facebook, LinkedIn, YouTube, as relevant), and the audit window (default 30 days, range 7 to 90). If a handle is unknown, find it with a web search on the competitor name plus the platform.

### Step 2: Inventory the presence

For each competitor and each platform, record:

- Follower count at audit time (write the date; these move)
- Last post date (a dead account is a finding, not an absence)
- Posting cadence: posts in the audit window, converted to posts/week
- Whether replies and comments are open (engagement strategy signal)

Compare cadence against the platform guidance in `references/benchmarks.md`. Flag brands posting well above or below the normal band; both can signal strategy or neglect.

### Step 3: Sample and classify the content

Take the last 20 to 30 posts per competitor per platform (fewer if they post less). For each post, tag:

- **Pillar** (pick exactly one): Education, POV/Opinion, Proof/Social, BTS/Process, CTA/Promo, Engagement, Trend/News. Definitions live in `references/benchmarks.md`.
- **Format**: short-form video, carousel/album, static image, text-only, long-form video, link post, poll.
- **Hook style**: question, statistic, story, contrarian claim, announcement, other.
- **Visible engagement**: likes + comments + shares/saves where visible; note comment depth (are threads forming, or single replies?).

Log every sampled post in a CSV with this header, then analyze it with `bin/audit.py`:

```
competitor,platform,post_date,post_type,pillar,hook,likes,comments,shares,saves,followers
```

Unknown engagement counts are left blank, never zeroed. Leave `followers` blank when it was not visible.

### Step 4: Compute the numbers

Run `python3 bin/audit.py posts.csv --followers-fallback median` (or pass explicit follower counts). It prints:

- Per-competitor, per-platform **engagement rate**: (likes + comments + shares + saves) / followers x 100, averaged across sampled posts. Posts with missing engagement data are excluded, not treated as zero.
- **Pillar mix**: share of posts per pillar, per competitor, per platform.
- **Cadence**: posts per week from first to last post date in the sample.
- **Top and bottom 3 posts** by engagement rate, with pillar and hook attached.

### Step 5: Benchmark and interpret

Compare each competitor's engagement rate to the platform medians in `references/benchmarks.md`, adjusting for follower tier (a nano account beating 2% is normal, not exceptional). Label the comparison, not just the number: "below median", "near median", "above median", "top quartile".

Read the pillar mix for openings:

- **Missing pillar**: nobody runs Engagement or BTS posts? That is cheap space to own.
- **Over-indexed pillar**: three competitors pushing 60%+ promo posts means the audience is underfed on education or proof.
- **Format edge**: per the verified benchmarks, Instagram carousels (0.55%) and Reels (0.52%) out-engage static images (0.37%). If competitors still lean on statics, short-form video is the opening.
- **Cadence gap**: a competitor posting daily on X while ignoring LinkedIn tells you where their audience is and where yours could be.

### Step 6: Write the report

Fill `assets/audit-report-template.md` and hand it back. The report must contain: scope table, cadence comparison, engagement benchmark comparison, pillar mix per competitor, top-3/lowest-3 post patterns, and a prioritized gaps list (3 to 5 items, each phrased as an action). No observation without a benchmark reference, no recommendation without a gap that the data supports.

## Output Contract

- One markdown audit report following the template. Sections: Scope, Cadence, Engagement vs Benchmarks, Content Mix, Pattern Notes (hooks, formats, CTAs), Gaps and Opportunities.
- The raw CSV and the `bin/audit.py` output pasted or attached as an appendix, so the numbers are reproducible.
- Every benchmark figure cited with its source study and methodology label (median vs average, by followers vs by impressions). Sources live in `references/benchmarks.md`.

## Operating Rules

1. Only public data. Never use scraped private metrics, leaked dashboards, or follower data obtained by logging into someone else's account. If a number is not publicly visible, say so and exclude it.
2. Same platform, similar follower tier, same denominator. Never compare a TikTok ER to an Instagram ER, or a per-impressions rate to a per-followers rate. The benchmarks file labels every figure's base; match it.
3. Follower counts decay fast. Record the capture date with every count; a count older than the audit window gets re-checked or dropped.
4. Small samples lie. Fewer than 10 posts in the window means the engagement rate is directional, not conclusive. Say so in the report.
5. Engagement is passive more than it used to be (TikTok shares +45%, comments -24% per Socialinsider 2025), so a low comment count alone does not mean a post failed. Judge by the full engagement number, not one action type.
6. No invented numbers. If a benchmark you need is not in `references/benchmarks.md`, search for a primary source before the report ships, or mark it as an opinion with a clear label.
