Rate-Anchored Opportunity
Brands lowball because they guess a number. This skill stops that: given a
vertical (or a brief to infer one) and a deal type, it pulls the Creatorland
corpus rate band for that vertical/tier and assembles a complete, market-credible
opportunity object — the exact shape request_creator_connection consumes — with
a budget_band expressed as the market range, never a single number and never a
per-creator quote. The deliverable is a reusable offer block plus a one-line "why
this band is credible" provenance note, ready to hand to a reach skill or paste
into the connection-flow opportunity field. It does NOT reach anyone itself.
Read first: ${CLAUDE_PLUGIN_ROOT}/shared/conventions.md (tool schemas, credit
prices, the nine conventions — esp. convention 10: a stated spend is a PRICE, not
a follower filter; convention 2 honest rate framing) and
${CLAUDE_PLUGIN_ROOT}/shared/connection-flow.md (the opportunity shape and the
budget_band field this skill fills — for reference only; this skill does not call
the connection tools). This skill honors thrifty/thorough credit modes
(${CLAUDE_PLUGIN_ROOT}/shared/credit-modes.md) and Refusal Recovery
(${CLAUDE_PLUGIN_ROOT}/shared/refusal-recovery.md).
Boundary — this skill composes the rate skills by reference and stops at the
offer. It mirrors the honest rate framing of one-number-rate /
fair-price-brief to source the band, then builds an opportunity object. It
does not call request_creator_connection and never edits a shared file.
To actually reach creators with this offer, hand the block to cast-and-connect,
conflict-safe-connect, or waterfall-casting. For a negotiation memo about a
live quote, use fair-price-brief; for one quick number, use one-number-rate.
Inputs to collect
- Vertical (required, but inferable) — e.g. "Beauty". If the user only gives a
brief or a brand, infer the vertical from it; only ask if it's genuinely
ambiguous (multi-vertical brand). Never ask if the brief names or implies it.
- Deal type (required) — what the campaign is, mapped to the closest corpus
deal_type (e.g. "sponsored_post", "affiliate"). Drives both the rate slice and
the campaign_type field.
- Tier (optional) — macro / mid / micro framing if the user has a follower band
in mind. When given, it is passed as
creator_tier on the rate call so the
budget_band scopes to same-size creators (a tier too thin for the privacy
floor broadens, disclosed, to the vertical band); it also labels the band and
feeds comp_tags.
- Campaign basics (collect what's offered, default the rest) —
deliverables
(e.g. "1 Reel + 3 Stories"), timeline, comp_tags (e.g. usage rights,
exclusivity, whitelisting), and a one-line brief_context. Anything the user
doesn't give is left empty in the object, not invented.
personal_message — brand-authored only. Never write one for the brand;
leave it out and label it as the brand's to fill. (connection-flow honesty rule.)
- Credit mode — default
thorough; thrifty on the credit-modes triggers
(caps the refusal ladder at 2 rungs).
Never ask twice for anything the brief already states — quote it back instead.
Flow
Resolve vertical + deal type (no tool call). From the inputs/brief, fix the
vertical and the corpus deal_type. If the user named a creator instead of a
vertical and the vertical isn't obvious, this is the one place a single
get_creator_profile { identifier: { type: "social_handle", platform: <p>, handle: <h> } }
(1 credit) is allowed to infer the vertical — but prefer the brief; skip the
profile whenever the vertical is already known (0 credits).
Pull the corpus rate band — one call, Refusal-Recovery-wrapped.
query_market_intelligence {
"mode": "rate",
"vertical": "<resolved vertical>",
"deal_type": "<resolved deal_type, only if the campaign specifies one>",
"creator_tier": "<the offer's tier — macro/mid/micro — when the user gave a follower band>"
}
Rate mode enforces a privacy floor of 10 brands / 50 deals. On a refusal (or
a server-side disclosed broaden), walk the Refusal Recovery ladder one rung at a
time — drop deal_type → drop sub_category → drop active_since → drop
company_type → vertical only — and stop at the first rung that clears the
floor. Record the clearance level for disclosure. Thrifty mode: at most 2
rungs, then report what you have. 5 credits per call, including each ladder retry.
When the offer targets a known tier, pass creator_tier (emerging <1k / nano 1k-10k / micro 10k-100k / mid 100k-500k / macro 500k-1M / mega 1M+)
so the budget_band is a same-size band rather than the whole-vertical spread;
a tier too thin to clear the floor broadens (disclosed) to the vertical band —
surface that in the credibility line.
No quoted_rate is passed — this skill builds a band for an offer, it is not
positioning a number against the band (that's fair-price-brief).
Assemble the opportunity object (no tool call). Map the inputs onto the
connection-flow opportunity shape, with budget_band set to the corpus band as
a market range string (p25–p75), labeled with the vertical and tier framing —
never a single number, never "this creator's rate". Leave unstated fields empty;
leave personal_message for the brand. When the offer is a promo/gifting/event/collab
rather than a plain casting, carry the structured brief into the same object —
archetype (casting|product_gift|partner_promo|event_invite|paid_collab), an
offer ({what, value, expiry, redemption}), and the on-behalf-of brand
({name, represented_by}) — following the schema and required-field rules in
connection-flow.md (the new archetypes require brand + offer.what); this
skill still only fills budget_band, it doesn't invent offer terms. The credit estimate fires only if a deep
refusal ladder would push the run past ~30 credits (rare — it would take a 5-rung
ladder).
Deliverable
A ready-to-use opportunity block plus its credibility line, paste-ready:
# Rate-anchored opportunity — <vertical><, deal type>
```json
{
"campaign_type": "<deal type / campaign, required>",
"deliverables": "<if stated, else omitted>",
"comp_tags": ["<if stated — usage, exclusivity, whitelisting, tier>"],
"budget_band": "$<p25>–$<p75> (market p25–p75, <vertical><, tier> — framing, not a per-creator quote)",
"timeline": "<if stated, else omitted>",
"brief_context": "<one-line context, no contact info>"
// personal_message: leave for the brand to author — never invented
}
Why this band is credible: the budget_band is the Creatorland corpus rate
range (p25–p75) for , so the offer sits inside what this
vertical/tier is actually transacting at — not a guessed lowball.
Fire it
Hand this opportunity to a reach skill to actually contact creators:
- cast-and-connect — cast a brief into a shortlist, then reach the top-N.
- conflict-safe-connect — same, with a competitor-conflict screen first.
- waterfall-casting — tier-by-tier sequential outreach.
Or paste the block straight into the connection-flow
opportunity field. This
skill does not reach anyone; reaching costs 10 credits/creator and is the reach
skill's pre-flight (estimate + confirm + suppression pre-screen).
Benchmark basis: <vertical / scope at which the privacy floor cleared, with the
floor-disclosure note if broadened — "the narrower ' × ' slice
was below the 10-brand/50-deal privacy floor, so the scope was widened; this is a
privacy feature of the data source, not missing data">
Provenance: <the provenance line the rate response returned, verbatim> ·
recency window:
Honesty note: budget_band is the corpus-level market range for this
vertical/tier — NOT any creator's personal rate (that data does not exist), and a
stated spend is a price for the work, never a follower filter.
Credits used this run: ~N (breakdown: <0–1 profile> + 5×).
Never strip the provenance or benchmark-basis footers to make the block prettier —
they are what makes the `budget_band` defensible when the offer goes out.
## Honesty rules
- **`budget_band` is a market band, never a per-creator quote** (convention 2 +
connection-flow). Express it as p25–p75 for the vertical/tier; never as a single
number, never as "what this creator charges". Per-creator rate history does not
exist in the product.
- **A stated spend is a PRICE, not a follower filter** (convention 10). The
`budget_band` describes what the brand is willing to pay for the work — it is not a
threshold that screens creators by size. Never frame it as a filter.
- **Disclose every broaden.** If Refusal Recovery widened the slice, the
benchmark-basis line states the level at which the floor cleared. Never present a
broadened band as if it answered the narrow vertical/deal-type question.
- **`personal_message` is the brand's to write.** Never invent a quote, tone, or
promise on the brand's behalf — leave the field for them.
- **This skill does not reach.** It emits an offer; it never calls
`request_creator_connection`. The reach skills own the credit estimate, confirm,
and suppression pre-screen before anyone is contacted.
- **No contact info**, ever (convention 7) — `brief_context` carries campaign
context only, never a creator's address or contact link.
## Credit footprint
thorough: ~5 credits (1 rate call) — +1 if a profile was needed to infer the
vertical; +5 per refusal-ladder rung if the narrow slice was below the privacy
floor · thrifty: ~5 credits (1 rate call, max 2 ladder rungs, vertical given so no
profile). Always end with the actual tally (`Credits used this run: ~N`).
1---2name: rate-anchored-opportunity3description: Build a market-credible outreach offer — assemble a reusable `opportunity` object whose `budget_band` is anchored to the corpus rate band (p25–p75) for the vertical/tier, so your pitch isn't a lowball. Use when the user says "build a market-credible offer", "what budget band should I pitch", "anchor my outreach offer to market rates", or "rate-anchored opportunity". Hands the offer to cast-and-connect / conflict-safe-connect / waterfall-casting. Distinct from fair-price-brief (a negotiation memo) — this produces a reusable outreach offer.4---56# Rate-Anchored Opportunity78Brands lowball because they guess a number. This skill stops that: given a9vertical (or a brief to infer one) and a deal type, it pulls the Creatorland10corpus rate band for that vertical/tier and assembles a complete, market-credible11`opportunity` object — the exact shape `request_creator_connection` consumes — with12a `budget_band` expressed as the market range, never a single number and never a13per-creator quote. The deliverable is a reusable offer block plus a one-line "why14this band is credible" provenance note, ready to hand to a reach skill or paste15into the connection-flow opportunity field. It does NOT reach anyone itself.1617Read first: ${CLAUDE_PLUGIN_ROOT}/shared/conventions.md (tool schemas, credit18prices, the nine conventions — esp. convention 10: a stated spend is a PRICE, not19a follower filter; convention 2 honest rate framing) and20${CLAUDE_PLUGIN_ROOT}/shared/connection-flow.md (the `opportunity` shape and the21`budget_band` field this skill fills — for reference only; this skill does not call22the connection tools). This skill honors thrifty/thorough credit modes23(${CLAUDE_PLUGIN_ROOT}/shared/credit-modes.md) and Refusal Recovery24(${CLAUDE_PLUGIN_ROOT}/shared/refusal-recovery.md).2526> **Boundary — this skill composes the rate skills by reference and stops at the27> offer.** It mirrors the honest rate framing of `one-number-rate` /28> `fair-price-brief` to source the band, then builds an `opportunity` object. It29> does **not** call `request_creator_connection` and never edits a shared file.30> To actually reach creators with this offer, hand the block to **cast-and-connect**,31> **conflict-safe-connect**, or **waterfall-casting**. For a negotiation memo about a32> live quote, use **fair-price-brief**; for one quick number, use **one-number-rate**.3334## Inputs to collect3536- **Vertical** (required, but inferable) — e.g. "Beauty". If the user only gives a37 brief or a brand, infer the vertical from it; only ask if it's genuinely38 ambiguous (multi-vertical brand). Never ask if the brief names or implies it.39- **Deal type** (required) — what the campaign is, mapped to the closest corpus40 `deal_type` (e.g. "sponsored_post", "affiliate"). Drives both the rate slice and41 the `campaign_type` field.42- **Tier** (optional) — macro / mid / micro framing if the user has a follower band43 in mind. When given, it is passed as `creator_tier` on the rate call so the44 `budget_band` scopes to same-size creators (a tier too thin for the privacy45 floor broadens, disclosed, to the vertical band); it also labels the band and46 feeds `comp_tags`.47- **Campaign basics** (collect what's offered, default the rest) — `deliverables`48 (e.g. "1 Reel + 3 Stories"), `timeline`, `comp_tags` (e.g. usage rights,49 exclusivity, whitelisting), and a one-line `brief_context`. Anything the user50 doesn't give is left empty in the object, not invented.51- **`personal_message`** — **brand-authored only.** Never write one for the brand;52 leave it out and label it as the brand's to fill. (connection-flow honesty rule.)53- **Credit mode** — default `thorough`; `thrifty` on the credit-modes triggers54 (caps the refusal ladder at 2 rungs).5556Never ask twice for anything the brief already states — quote it back instead.5758## Flow59601. **Resolve vertical + deal type** (no tool call). From the inputs/brief, fix the61 `vertical` and the corpus `deal_type`. If the user named a creator instead of a62 vertical and the vertical isn't obvious, this is the one place a single63 `get_creator_profile` `{ identifier: { type: "social_handle", platform: <p>, handle: <h> } }`64 (1 credit) is allowed to infer the vertical — but prefer the brief; skip the65 profile whenever the vertical is already known (0 credits).66672. **Pull the corpus rate band — one call, Refusal-Recovery-wrapped.**68 ```json69 query_market_intelligence {70 "mode": "rate",71 "vertical": "<resolved vertical>",72 "deal_type": "<resolved deal_type, only if the campaign specifies one>",73 "creator_tier": "<the offer's tier — macro/mid/micro — when the user gave a follower band>"74 }75 ```76 Rate mode enforces a privacy floor of **10 brands / 50 deals**. On a refusal (or77 a server-side disclosed broaden), walk the Refusal Recovery ladder one rung at a78 time — drop `deal_type` → drop `sub_category` → drop `active_since` → drop79 `company_type` → vertical only — and **stop at the first rung that clears the80 floor.** Record the clearance level for disclosure. Thrifty mode: at most 281 rungs, then report what you have. 5 credits per call, including each ladder retry.82 When the offer targets a known tier, pass `creator_tier` (emerging <1k / nano 1k-10k / micro 10k-100k / mid 100k-500k / macro 500k-1M / mega 1M+)83 so the `budget_band` is a same-size band rather than the whole-vertical spread;84 a tier too thin to clear the floor broadens (disclosed) to the vertical band —85 surface that in the credibility line.86 No `quoted_rate` is passed — this skill builds a band for an offer, it is not87 positioning a number against the band (that's fair-price-brief).88893. **Assemble the `opportunity` object** (no tool call). Map the inputs onto the90 connection-flow `opportunity` shape, with `budget_band` set to the corpus band as91 a **market range string** (p25–p75), labeled with the vertical and tier framing —92 never a single number, never "this creator's rate". Leave unstated fields empty;93 leave `personal_message` for the brand. When the offer is a promo/gifting/event/collab94 rather than a plain casting, carry the **structured brief** into the same object —95 `archetype` (`casting|product_gift|partner_promo|event_invite|paid_collab`), an96 `offer` (`{what, value, expiry, redemption}`), and the on-behalf-of `brand`97 (`{name, represented_by}`) — following the schema and required-field rules in98 `connection-flow.md` (the new archetypes require `brand` + `offer.what`); this99 skill still only fills `budget_band`, it doesn't invent offer terms. The credit estimate fires only if a deep100 refusal ladder would push the run past ~30 credits (rare — it would take a 5-rung101 ladder).102103## Deliverable104105A ready-to-use opportunity block plus its credibility line, paste-ready:106107```markdown108# Rate-anchored opportunity — <vertical><, deal type>109110```json111{112 "campaign_type": "<deal type / campaign, required>",113 "deliverables": "<if stated, else omitted>",114 "comp_tags": ["<if stated — usage, exclusivity, whitelisting, tier>"],115 "budget_band": "$<p25>–$<p75> (market p25–p75, <vertical><, tier> — framing, not a per-creator quote)",116 "timeline": "<if stated, else omitted>",117 "brief_context": "<one-line context, no contact info>"118 // personal_message: leave for the brand to author — never invented119}120```121122**Why this band is credible:** the `budget_band` is the Creatorland corpus rate123range (p25–p75) for **<clearance-level scope>**, so the offer sits inside what this124vertical/tier is actually transacting at — not a guessed lowball.125126## Fire it127Hand this `opportunity` to a reach skill to actually contact creators:128- **cast-and-connect** — cast a brief into a shortlist, then reach the top-N.129- **conflict-safe-connect** — same, with a competitor-conflict screen first.130- **waterfall-casting** — tier-by-tier sequential outreach.131Or paste the block straight into the connection-flow `opportunity` field. This132skill does not reach anyone; reaching costs 10 credits/creator and is the reach133skill's pre-flight (estimate + confirm + suppression pre-screen).134135---136**Benchmark basis:** <vertical / scope at which the privacy floor cleared, with the137floor-disclosure note if broadened — "the narrower '<vertical> × <deal_type>' slice138was below the 10-brand/50-deal privacy floor, so the scope was widened; this is a139privacy feature of the data source, not missing data">140**Provenance:** <the provenance line the rate response returned, verbatim> ·141recency window: <window>142**Honesty note:** `budget_band` is the corpus-level market range for this143vertical/tier — NOT any creator's personal rate (that data does not exist), and a144stated spend is a price for the work, never a follower filter.145Credits used this run: ~N (breakdown: <0–1 profile> + 5×<rate calls incl. ladder rungs>).146```147148Never strip the provenance or benchmark-basis footers to make the block prettier —149they are what makes the `budget_band` defensible when the offer goes out.150151## Honesty rules152153- **`budget_band` is a market band, never a per-creator quote** (convention 2 +154 connection-flow). Express it as p25–p75 for the vertical/tier; never as a single155 number, never as "what this creator charges". Per-creator rate history does not156 exist in the product.157- **A stated spend is a PRICE, not a follower filter** (convention 10). The158 `budget_band` describes what the brand is willing to pay for the work — it is not a159 threshold that screens creators by size. Never frame it as a filter.160- **Disclose every broaden.** If Refusal Recovery widened the slice, the161 benchmark-basis line states the level at which the floor cleared. Never present a162 broadened band as if it answered the narrow vertical/deal-type question.163- **`personal_message` is the brand's to write.** Never invent a quote, tone, or164 promise on the brand's behalf — leave the field for them.165- **This skill does not reach.** It emits an offer; it never calls166 `request_creator_connection`. The reach skills own the credit estimate, confirm,167 and suppression pre-screen before anyone is contacted.168- **No contact info**, ever (convention 7) — `brief_context` carries campaign169 context only, never a creator's address or contact link.170171## Credit footprint172173thorough: ~5 credits (1 rate call) — +1 if a profile was needed to infer the174vertical; +5 per refusal-ladder rung if the narrow slice was below the privacy175floor · thrifty: ~5 credits (1 rate call, max 2 ladder rungs, vertical given so no176profile). Always end with the actual tally (`Credits used this run: ~N`).