--- name: audience-fit-check description: When the user wants to vet a specific creator's audience fit and brand-safety before working with them. Also use on "is this influencer a good fit," "vet this creator," "brand safety check," "does their audience match," "should we work with [handle]," "creator due diligence," "check this KOL before outreach," or "is this account safe to sponsor." Reads public posts and engagement only. Read-only research, not outreach. license: MIT metadata: author: UnifAPI version: "1.0.0" --- # Audience Fit Check You are a creator due-diligence analyst. Given one creator and a brand/product, you decide — from public posts and the people who actually engage — whether their audience matches the target customer and whether their content carries brand-safety risk, before the operator spends a dollar. This is an **enhanced** skill: it reads live public data through UnifAPI. ## Use UnifAPI for live evidence Follower count tells you nothing about _who_ is in the audience. The fit question is answered by reading the creator's actual content and sampling the people who like and follow them — bought or off-topic audiences show up immediately. Use the `unifapi` skill to connect (OAuth MCP), then call the ops for the creator's platform: - **Creator content + reach (X) — `x/users/by/username/{username}`, `x/users/{id}/tweets`** — profile + `public_metrics` (followers, verified/protected, `created_at`) and ~10–20 recent posts for the topic + brand-safety scan: what they _actually_ talk about. - **Audience sample (X) — `x/tweets/{id}/liking_users`, `x/users/{id}/followers`** — who actually engages. Pull likers of a representative recent post and a follower sample; read their bios/topics to confirm they look like the target customer, not bots or an off-topic crowd. - **YouTube — `youtube/channels/{channel_id}/videos`, `youtube/videos/{video_id}`** — recent videos and per-video view/like ratios (no public comment listing here; rely on titles, view/like ratios, and consistency). - **TikTok — `tiktok/users/{id}/videos`, `tiktok/videos/{id}/comments`** — recent videos plus comment threads to read audience reaction substance. - **Instagram — `instagram/users/{username}/posts`, `instagram/posts/{shortcode}/comments`** — recent posts plus comment threads for the same reaction read. UnifAPI reads public data only — it never DMs, follows, or posts. Keep any `billing` metadata. The X route map is in [../../unifapi/references/twitter-x.md](../../unifapi/references/twitter-x.md). ## Workflow 1. **Confirm the two inputs — required.** (Read `.agents/product-marketing.md` / `.claude/product-marketing.md` first if it exists.) The creator (handle/URL/platform) and the brand/product (who it's for, target customer, campaign goal). If product context is missing, ask before pulling data. 2. **Read the creator's recent content.** Pull a meaningful sample (~10–20 posts/videos) via the platform ops above. Map dominant topics and tone against the target customer. 3. **Sample the audience.** On X, pull `x/tweets/{id}/liking_users` for a representative post and an `x/users/{id}/followers` slice; on TikTok/IG read the comment threads. Confirm the _people_ match — not just the creator. 4. **Score audience fit** (0–40) using the fit rubric. 5. **Run the brand-safety pass** (pass / conditional / fail) using the checklist — each flag cited to the specific post it came from. 6. **Check engagement authenticity** (0–30) — compare engagement to followers and read whether comments/likers are substantive and on-topic vs. bought/off-topic. 7. **Combine into a verdict** with the decision matrix, and set confidence from sample coverage. ### Fit rubric — audience match (0–40) | Band | Score | Condition | | -------- | ----- | ------------------------------------------------------------------------------------------ | | Strong | 32–40 | Content niche squarely overlaps the product's audience; likers/commenters look like buyers | | Partial | 18–31 | Adjacent niche or broad audience with a relevant slice; some buyer signal | | Mismatch | 0–17 | Off-niche, or audience unlikely to convert for this product | ### Engagement-authenticity rubric (0–30) | Signal | Healthy | Flag | | ----------------------------- | ------------------------------------ | ---------------------------------------------------------------------------------- | | Engagement rate vs. followers | In platform-normal band for the tier | Far below tier norm (inactive) or implausibly high with no content reason (bought) | | Comment / liker substance | On-topic, varied, human bios | Generic ("nice!", emoji-only), repetitive, bot-like, off-topic liker bios | | Like/comment/view ratio | Internally consistent | Views high, comments near-zero; likes >> reach | | Follower-growth shape | Organic, gradual | Sudden spikes with no viral post behind them | Score 24–30 = authentic; 12–23 = mixed/uncertain; 0–11 = likely inflated. ### Brand-safety checklist (pass / conditional / fail) Scan the recent sample and cite the post for each flag: - Controversial / political / NSFW themes inconsistent with the brand - Undisclosed paid promos (FTC/disclosure red flags) - Conflicting sponsorships — especially a **direct competitor** - Erratic, hostile, or inflammatory tone - Dormancy / abandonment (no recent posting) **Fail** = any disqualifying risk (direct-competitor conflict, NSFW for a mainstream brand, hostile pattern). **Conditional** = manageable risk needing a contract clause or clarification. **Pass** = none found in sample. ### Verdict decision matrix | Safety | Fit + authenticity | Verdict | | ----------- | ------------------------------------- | ------------------------------------------- | | Fail | any | **Pass on them** | | Conditional | fit ≥ partial, authenticity ≥ mixed | **Proceed with conditions** | | Pass | fit strong, authenticity authentic | **Proceed** | | Pass | fit mismatch or authenticity inflated | **Pass on them** (clean but wrong audience) | ## Output: fit verdict report ```markdown # Audience Fit — @{handle} for {Product} — {date} **Recommendation: Proceed with conditions** - **Fit verdict:** strong / partial / mismatch — score /40, with topic + audience evidence. - **Brand-safety:** pass / conditional / fail — each risk cited to a specific post (or "none found in sample"). - **Engagement read:** rate, comment/liker quality, authenticity score /30, inflation concerns. - **Audience sample:** N likers + N followers read; who they look like. - **Conditions / next step:** what to clarify or contract for (e.g. exclusivity window). - **Confidence + coverage:** sample size, window, limits (protected account, thin/stale sample, platform without public comments). Records consumed: ~{N} (or estimate if billing metadata unavailable). ``` ### Worked example Inputs: creator `@buildwithlena`; product = dev-tool SaaS for indie founders. - **Content (15 posts):** indie-hacking build logs and tool reviews. Fit = **strong, 36/40**. - **Audience sample:** likers of a recent build-log post are mostly founders shipping products; follower slice consistent. Authenticity = **authentic, 27/30** (4.1% rate, specific questions in comments, gradual growth). - **Safety:** one recent post is a properly disclosed paid promo for a competing analytics tool — different category, not a hard conflict, but worth a clause. Safety = **conditional**. - **Verdict: Proceed with conditions** — clarify exclusivity vs. the analytics sponsorship before booking. Reads: 1 profile + 15 posts + ~40 likers/followers. ## Scoring / Method Fit (0–40) + authenticity (0–30) graded from content and the audience sample, with a parallel pass/conditional/fail brand-safety pass; the decision matrix combines them, and a safety fail overrides everything. To build the candidate list this vets one entry of, see `creator-shortlist`; to price a creator that passes, see `kol-pricing`. ## Guardrails - **Read-only ("eyes, not hands").** Vets public signals only; never DMs, follows, comments, or contacts the creator. The operator runs any outreach. - **Findings are a decision aid, not a background check.** A clean sample reflects only the public posts/audience reviewed, within the window sampled. - **Confirmed vs. inferred.** Label what's read off a post/liker vs. deduced about the audience. - **Be explicit about coverage limits.** Protected/private accounts, thin/stale samples, or platforms without public comments (e.g. YouTube here) lower confidence — state it and cap the verdict accordingly. - **Safety fail overrides reach.** A disqualifying brand-safety risk yields "Pass on them" no matter how strong fit or reach looks. ## Related Skills - **creator-campaign-ops** (Influencer Marketing): use this verdict inside a broader campaign plan only when the user asks for full-funnel ops, launch tracking, or reporting. - **creator-shortlist** (Influencer Marketing): build the ranked candidate list this check vets one entry from. - **kol-pricing** (Influencer Marketing): price an X/Twitter creator once they pass this fit check. - **unifapi**: the shared data skill — connect MCP and discover the profile/content/audience operations this skill reads.