Fit Scorer
Score each shortlisted creator on the typed STAR Suitability (S) dimension, then keep deal-specific commercial fit in a separate prioritization matrix. Suitability includes the STAR-S8 brand/category and audience-brand evidence that is independent of any single deal; deal terms, availability, and campaign orchestration stay outside it. The commercial matrix is not a Suitability score and never enters the SQS.
Quick Start
Score one influencer:
Score @[handle] for [brand/campaign] and tell me if they're a good fit
Compare and rank a shortlist:
Compare and rank these influencers for [campaign]: @influencer1, @influencer2, @influencer3
Skill Contract
- Reads: brand/campaign context, target audience definition, campaign goal, and shortlist entries carrying a stable opaque
creator_ref plus either transient handles/profile URLs or resolvable opaque handle refs (supplied by the user or carried over from influencer-discovery). Optional prior audience profiles from memory/influencer/audience-mapper/, competitor partner benchmarks from memory/influencer/competitor-tracker/, and a WARM Campaign Retro Card's evidence_refs plus next_campaign_hypothesis when the user supplies or authorizes that handoff. For rostered creators, read partnership history and audience-stat provenance from memory/creators/<aggregate-id>.md — the creator-registry roster record — as Partnership Potential inputs.
- Writes: return the typed Suitability (S) read and separately labeled commercial-fit comparison inline by default; when a Retro Card is supplied, preserve its hypothesis as a separately labeled next-cycle test constraint with no score or verdict effect. Save the report to
memory/influencer/fit-scorer/YYYY-MM-DD-<topic>.md only with exact WARM-save authorization. Saved reports and handoffs retain the stable opaque creator_ref and opaque evidence refs, never a raw handle, name, profile URL, email, provider ID, or deterministic hash in creator_ref.
- Promotes: only with separate exact authorization, promote evidence-backed top picks and their exact Suitability (S) read and catalog version to
memory/hot-cache.md; never promote an unscored/provisional result or the Retro Card's qualitative decision/hypothesis as scored truth.
- Done when:
- Every creator has all 10 Suitability items
S1–S10 explicitly Pass/Partial/Fail/Unknown/N/A with dated evidence or a gap reason.
- Every creator's stable opaque
creator_ref is preserved from discovery/registry or generated once for this lineage; raw identity locators remain transient.
- The typed goal/context and the Suitability item states are preserved for the gate; Unknown prevents a Suitability read.
- Any commercial-fit ranking is visibly separate from the Suitability read and cannot override a veto or missing evidence.
- If a Retro Card is supplied, its
next_campaign_hypothesis is visible only as a falsifiable test constraint/commercial-matrix context; its evidence_refs are pointers for fresh investigation, not STAR item evidence or an automatic selection rule.
- Primary next skill: campaign-planner — turn the ranked shortlist into an approved campaign plan. If that plan is already approved and outreach-ready, hand off to outreach-manager instead; competitor benchmarking is optional.
Handoff Summary
Emit the standard shape from skill-contract.md §Handoff Summary Format.
Data Sources
This family needs no live integrations (Tier 1). Fit Scorer works end to end by asking the user for the inputs it scores — transient handles or profile locators, audience targets, brand values, and any metrics they have. A connector sharpens the numbers but none is required.
~~influencer database — follower counts, audience demographics, and partnership history.
~~social platform analytics — engagement rate, comment quality samples, posting cadence, growth trend.
~~audience intelligence — real-vs-bot follower estimates and audience overlap with your target.
- Roster record (keyless Tier 1) — prior contact, response reputation, and delivery history come from
memory/creators/<aggregate-id>.md when the creator is rostered (creator-registry curates it); ~~CRM is an optional Tier-2 sharpener for the same history when no roster record exists.
Measured YouTube inputs (free key): for YouTube candidates, python3 "${CLAUDE_PLUGIN_ROOT}/scripts/connectors/youtube.py" videos @handle --limit 10 supplies the engagement-authenticity inputs directly — per-video views/likes/comments against the displayed subscriber base (views-to-subs consistency, comment rate, cadence) — so those sub-scores come from Measured numbers instead of screenshots. Free YOUTUBE_API_KEY; shortlist vetting only (ToS refuses bulk-harvesting quota). See scripts/connectors/README.md.
With zero integrations, ask the user to supply each value the scoring tables request; the framework and weighting still produce a defensible ranking. See CONNECTORS.md for the free/keyless recipe per category.
Instructions
The contract-compatible copied layouts live in references/scoring-templates.md: use the creator_ref-only typed STAR-S1–STAR-S10 evidence table for the Suitability read, then the optional commercial_fit_score tables for separate decision support. Never copy a raw locator into those outputs.
- Lock identity and typed context. Reuse the opaque
creator_ref explicitly carried by discovery, or a creator-registry aggregate ID only when its handle link is verified. If the user supplies only a raw handle/profile URL and no verified aggregate exists, generate one random creator-<UUIDv4> and reuse it unchanged across this report, any authorized save, and downstream handoffs. Never set creator_ref to a raw handle, name, URL, email, provider ID, or deterministic hash of one; keep those locators transient for evidence acquisition. Resolve an opaque ref only through its accompanying authorized artifact or verified registry link. If neither is available, request the transient locator and preserve the identity as unresolved rather than guessing or merging. Then require the creator target and target version, named STAR profile/goal (awareness|engagement|conversion|brand-building), assessment_time: forecast|actual, shared campaign rollup_id, observation date, platform/tier/niche cohort, evidence window, material context object, and current STAR catalog_version — the exact typed identity the gate will reuse. If any field is absent, do not invent it: return NEEDS_INPUT, name the missing fields, and preserve the supplied identity unchanged for resume. When a Campaign Retro Card is supplied, record its evidence_refs and next_campaign_hypothesis in a separate non-scoring prior-cycle context block; neither becomes part of the STAR typed identity.
- Freeze evidence for the current window. Use current creator analytics, public observations, roster history, and cohort benchmarks with source/date/type/confidence. A Retro Card and its
evidence_refs are discovery pointers only, never STAR item evidence. If a referenced primary source is independently reacquired and qualifies in the current evidence window, cite that fresh observation rather than the card. Missing or refused private access is Unknown, never Fail or Partial.
- Score Suitability only. Evaluate the Suitability items
S1–S10 (audience composition/realness, follower-growth integrity, reach reliability, engagement health and authenticity, credibility, and deal-independent brand/category fit) from star-benchmark.md. Deal-specific commercial terms, availability, and orchestration conflicts stay in the separate matrix; cost and measured campaign conversion belong to Return (R), scored later by the gate.
- Qualify critical-control evidence for handoff. covers demonstrated follower fraud / real-follower rate below the matching tier × platform × niche benchmark; covers demonstrated bought, coordinated, or pod-based engagement. Brand safety is the gate's Trust control , not a Suitability item. Mark an item Fail only from qualifying evidence, label it a potential gate finding, and operationally hold outreach while it stands. Do not call it a verified veto or apply the SQS cap/business verdict here; the auditor owns those decisions when it rolls up the full STAR run.
Compact Example
User: "Compare @ecofashionista, @greenwardrobe, @sustainablesarah for our sustainable fashion brand (goal: conversion)."
Output: Each creator reuses an upstream opaque creator_ref or receives one random creator-<UUIDv4> before scoring; the raw handles remain transient lookup inputs. Each creator then receives S1–S10 item states under the same campaign rollup_id; a Suitability (S) read exists only at complete applicable coverage, while the separate commercial matrix explains campaign-specific terms and availability. If a prior Retro Card is supplied, its hypothesis appears only as a zero-weight next-cycle test constraint and its sources are re-observed in the current window. A verified below-benchmark real-follower rate marks STAR-S2 Fail and holds outreach; refused access stays Unknown and prevents the read. Only creator-content-auditor may apply the later STAR business verdict/cap. Persistence is offered, not assumed.
Reference Materials
Next Best Skill
Primary: campaign-planner — turn the ranked shortlist into the campaign plan, budget, timeline, and approval path.
Conditional next step:
- outreach-manager — only when an approved campaign plan already defines the offer, budget, target creator, channel, and outreach approval path; this handoff does not authorize a send.
Optional checks and alternates:
- competitor-tracker — optionally benchmark top picks against competitor partnerships when that evidence would change the selection.
- creator-content-auditor — when a complete Suitability read or potential
STAR-S2/STAR-S6/STAR-T3 control evidence is ready, stop and hand it to this sole STAR gate as a separate invocation; do not auto-run or simulate its verdict.
- influencer-discovery — if the shortlist is too thin to rank, source more candidates.
- audience-mapper — if audience-match scores are uncertain, tighten the target-audience definition first.
Termination note: Track a visited-set of skills invoked this session. If the recommended next skill has already run, stop and report the chain complete rather than re-invoking it. Stop after at most 3 hops (max-depth 3) and hand back the inline result plus any separately authorized save path.
Related Skills