# Tune Audience

> Improve a product's Audience targeting based on actual lead-quality data — what the user kept vs archived. Adjusts the reach dimensions (target roles, seniority, job functions) and sell context (keywords, competitors, description) that are settable via MCP. Use when the user says "tune my audience", "improve targeting", "leads are off", or "fix this product's leads".

- Skill: `catchintent/tune-audience` (Agent Skill)
- Install (CLI): `npx skillmds@latest add catchintent/tune-audience`
- Raw SKILL.md: https://api.skillmd.com/api/skills/catchintent/tune-audience/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: CatchIntent (https://skillmd.com/u/catchintent)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/catchintent/tune-audience

---


# Tune Audience

You are diagnosing and fixing an underperforming Audience. Each product has exactly one Audience (`sell` / `fit` / `reach`) — there are no separate agents to pick from. Always cite specific numbers — never vibes.

## What To Do

1. **Pick the product** — `product_list`. Ask which one if not specified.

2. **Get full state** — `product_get`. Note the Audience:
   - `sell` — `description`, `keywords`, `competitors`, `offer`
   - `fit` — company firmographics (industries, size, country) — **read-only here, dashboard-managed**
   - `reach` — the LinkedIn targeting: target roles, seniority levels, job functions

3. **Find what's mis-targeted** — pull the leads the user threw away vs kept:
   - Archived: `lead_search` with `productId`, `status: ['archived']`, page size 50
   - Kept: `lead_search` with `productId`, `status: ['saved', 'pushed']`, page size 50
   - Compare. Read `reasonLine`, title/company, and `discovery.disqualifiers` on the archived set. What pattern explains the misses that the kept set doesn't share?

4. **Diagnose with citations** — Before suggesting changes, show the data:
   - "12 of last 30 archived leads were VPs and C-level — you keep ICs and managers. Seniority is too senior."
   - "9 of 11 saved leads were 'Founder' or 'Head of Sales'; archived skews to 'Recruiter' — wrong job function."

5. **Map the fix to a settable field.** Only these are tunable via MCP, all on `product_update`:
   - **Reach** (`icp.targetRoles`, `icp.seniorityLevels`, `icp.jobFunctions`) — the most common lever. `targetRoles` is free text; `seniorityLevels` and `jobFunctions` accept **only** labels from `workspace_icp_options` (call it first).
   - **Sell** (`keywords`, `competitors`, `description`) — when keyword-driven discovery is pulling off-topic people or the description is steering scoring wrong.
   - **Offer** — if the leads fit but feel low-intent, the offer may be the real problem → point at `/craft-offer`.

   **Not settable here — say so explicitly when relevant:** company firmographics (`fit`: industries / company size / country) and which signal strategies are on/off are **dashboard-only** today. If the fix is firmographic or a signal toggle, tell the user to make it in the CatchIntent dashboard.

6. **Propose specific changes** — Show the exact `product_update` payload you'd send (e.g. `{ productId, icp: { seniorityLevels: [...] } }`). Wait for approval. Then call.

7. **Confirm + follow-up** — After the update, suggest re-checking lead quality in 3-5 days with `/daily-triage` or `/pipeline-review`.

## Guidelines

- **Numbers before opinions.** Quote archived-count patterns, kept:archived deltas, job-function skews.
- **One change at a time.** Don't fix seniority + job function + keywords in one shot. Pick the highest-impact issue first; let the user re-run later for the next one.
- **Strict ICP labels.** `seniorityLevels` and `jobFunctions` only accept labels from `workspace_icp_options`. Always check before suggesting a label that wasn't already on file — unknown labels are rejected, not silently dropped.
- **Know the MCP boundary.** Reach dims, keywords, competitors, description, and offer are settable here. Firmographics and signal-strategy toggles are dashboard-only — don't pretend you can change them.
- **Don't tune the product instead.** If targeting is fine but the user is unhappy with intent, the issue may be the offer — point at `/craft-offer`.

