Campaign Package Builder
The travel-itinerary framing: one skill assembles a full client-ready proposal
in four sections — destination (target audience/archetypes), accommodation
(creator tiers with rate bands), excursions (the deal types the corpus shows
are active), and price (a budget allocation). It composes the work of several
narrower skills into one paste-into-deck artifact. It is the bundling skill;
when the user wants only one section, route them to budget-allocator,
brief-to-shortlist, or vertical-briefing.
Read first: ${CLAUDE_PLUGIN_ROOT}/shared/conventions.md (tool schemas, credit
prices, the nine conventions — especially #9 multi-target slates). This skill
honors thrifty/thorough credit modes
(${CLAUDE_PLUGIN_ROOT}/shared/credit-modes.md), Refusal Recovery
(${CLAUDE_PLUGIN_ROOT}/shared/refusal-recovery.md), and the Freshness Gate
(${CLAUDE_PLUGIN_ROOT}/shared/freshness-gate.md).
Precision & filters for outreach (convention 14). When this list will
feed an outreach step, default to precision over raw recall: search
precision: "tight" with the hard-gate filters the brief supports
(platform, niche, data_freshness_days, content_format,
audience_country), and reserve broad plus heavy lookalike unioning for
market sizing. Do not fan out dozens of lookalike calls to hit a volume
target (each hop drifts from the seed), and trim the weak tail by each
result row relative_fit (within-set fit, 1.0 = strongest) rather than
padding to a round number. Canon:
${CLAUDE_PLUGIN_ROOT}/shared/conventions.md convention 14.
Inputs to collect
- Campaign goal + vertical (required) — the brief in a sentence; infer
vertical from it.
- Target audience / archetypes (required) — one or more target profiles
(e.g. "LATAM Gen-Z skincare" + "US millennial wellness"). A LIST of targets
triggers convention 9: one search per target, per-target sections — never
one merged search.
- Total budget (required) — drives the price section's allocation.
- Tier shape (optional, default macro/mid/micro mix biased by goal).
- Deal types (optional) — else inferred from the market-mode mix.
- Geo / platform constraints (optional).
- Mode — default
thorough; thrifty on request.
Never ask twice; never ask for what the conversation already holds.
Flow
This skill composes budget-allocator + per-target discovery + market context.
Convention 9 governs the audience section: N target archetypes = N searches
and N per-target sections, plus an overview.
Market context (excursions + bands) — query_market_intelligence,
each wrapped in Refusal Recovery:
{ mode: "market", vertical: <vertical> } (floor 5/25) → which deal
types are active (the "excursions") + deal-type mix.
{ mode: "rate", vertical: <vertical>, deal_type: <dominant or requested>, creator_tier: <the accommodation (creator) tier being priced, when known — one call per tier> }
(floor 10/50) → the rate band that prices accommodation tiers and feeds
the budget split.
When an accommodation tier's follower band is known, pass creator_tier
(emerging <1k / nano 1k-10k / micro 10k-100k / mid 100k-500k / macro 500k-1M / mega 1M+)
so each tier benchmarks against same-size creators; a tier too thin for the
floor broadens (disclosed) to the vertical band.
Disclose clearance level on any broaden. 5 credits each incl. retries.
Thrifty: the rate call only, max 2 ladder rungs.
Per-target discovery (destination + candidates) — for EACH target
archetype (convention 9), one search_creators:
{ mode: "brief", brief: <campaign goal + this target's description>, filters: { niche: <niche>, country: <geo>, platform: <if set>, min_followers: <tier floor>, max_followers: <tier ceiling> }, limit: <by tier need, cap 15>, precision: "balanced" }
2 credits each. Thin exact niche → thin-niche honesty ladder (convention
8): disclose, broaden one labeled step, tag picks exact/adjacent.
Thrifty: smaller limit, fewer tiers per target.
Budget allocation (price) — no new tool calls; reuse the step-1 rate
band to construct the tier mix exactly as budget-allocator does (tier
planning rates = positions within the corpus band, labeled as such),
fitted to the total budget, with the arithmetic shown.
Freshness Gate on named candidates — in thorough mode,
get_creator_profile { identifier: { type: "creatorland_user_id", creatorland_user_id: <from search> } }
(or social_handle) for the candidates that make the proposal; classify
fresh/aging/stale; stale → "re-verify before pitch". 1 credit each.
Thrifty: skip; label candidates "unverified — search-result freshness".
Assemble the package. Pre-run estimate fires before steps 2–4 if the
plan exceeds ~30 credits (thorough multi-target runs do — say so).
Deliverable
# Campaign package — <campaign name> · <vertical>
## Overview
Brief: <one-line restatement>. Methodology: market context from the
Creatorland corpus; candidates from per-archetype searches; budget split from
corpus rate bands. Per-target caveats noted in each section.
## 1 · Destination (target audience)
<Per archetype — convention 9 sections; on paid plans front each candidate card
with the creator's `avatar { url, source }` headshot, initials fallback when null/free:>
### Archetype A — <description>
Candidates: @h1 (<fit>, <fresh/aging>, [exact/adjacent fit]) …
### Archetype B — <description>
…
## 2 · Accommodation (creator tiers + bands)
| Tier | Follower range | Band (corpus, <deal type>) |
|---|---|---|
| Macro | … | $x–$z (med $y), ~upper band |
| Mid / Micro | … | … |
Bands are corpus-level market ranges for the vertical/tier — not any named
creator's rate.
## 3 · Excursions (active deal types)
<Deal-type mix from market mode, each a citation-ready block: stat +
provenance + recency window.>
## 4 · Price (budget allocation)
| Tier | Slots | Planning rate (band position) | Subtotal |
|---|---|---|---|
| … | | | |
| **Total** | | | **$≤budget** (<headroom>) |
Method note: planning rates are positions within the corpus band, not
follower-tier price lists.
## Re-verify before pitch
<stale candidates, or "none">
---
**Benchmark basis:** <clearance level(s) + floor-disclosure note where
broadened — "a privacy feature of the data source, not missing data">
**Provenance:** <provenance lines from each market-intel response, verbatim>
· recency window: <window>
**Data freshness:** N/M named candidates synced within the last sync window;
K flagged for re-verification. <thrifty: "candidates unprofiled — verify
before client use">
**Honesty note:** all rates are corpus-level market bands for the vertical/
tier — not personal rates. Per-target candidate lists disclose any niche
broadening. Confirm quotes before committing budget lines.
Credits used this run: ~N (breakdown: <market-intel>×5 + <searches>×2 + <profiles>×1)
Honesty rules
- Bands and budget rates are corpus-level for the vertical/tier — never a
named creator's rate; the accommodation table and price method note both
say so (convention 2).
- Multi-target = sectioned slate (convention 9): every archetype gets its
own search and section; never one merged generic search across targets.
- Thin-niche honesty per target (convention 8): disclose, broaden one
labeled step, tag exact vs adjacent fit.
- Disclose every broaden (Refusal Recovery clearance level).
- Budget arithmetic closes — subtotals ≤ budget, headroom shown; if the
goal won't fit at band rates, say so.
- Freshness Gate is mandatory on named candidates.
- No contact info anywhere in the package, regardless of source
(convention 7) — scrub bio snippets.
Credit footprint
thorough: ~30–55 credits (2 market-intel ×5 + N target searches ×2 + ~15–25
profiles ×1; refusal rungs add 5 each — pre-run estimate fires) ·
thrifty: ~12–18 credits (1 rate call + N smaller searches, no profiling,
capped ladder)
1---2name: campaign-package-builder3description: Bundle a full client-ready campaign proposal like a travel itinerary — target audience, creator tiers with rate bands, active deal types, and a budget allocation. Use when the user says "build a campaign package", "put together a full proposal", "client-ready campaign deck skeleton", or wants one deliverable spanning audience + talent + pricing + budget. Deliverable is a structured proposal skeleton. For just the budget split use budget-allocator; for just a shortlist use brief-to-shortlist.4---56# Campaign Package Builder78The travel-itinerary framing: one skill assembles a full client-ready proposal9in four sections — destination (target audience/archetypes), accommodation10(creator tiers with rate bands), excursions (the deal types the corpus shows11are active), and price (a budget allocation). It composes the work of several12narrower skills into one paste-into-deck artifact. It is the bundling skill;13when the user wants only one section, route them to `budget-allocator`,14`brief-to-shortlist`, or `vertical-briefing`.1516Read first: ${CLAUDE_PLUGIN_ROOT}/shared/conventions.md (tool schemas, credit17prices, the nine conventions — especially #9 multi-target slates). This skill18honors thrifty/thorough credit modes19(${CLAUDE_PLUGIN_ROOT}/shared/credit-modes.md), Refusal Recovery20(${CLAUDE_PLUGIN_ROOT}/shared/refusal-recovery.md), and the Freshness Gate21(${CLAUDE_PLUGIN_ROOT}/shared/freshness-gate.md).2223> **Precision & filters for outreach (convention 14).** When this list will24> feed an outreach step, default to precision over raw recall: search25> `precision: "tight"` with the hard-gate filters the brief supports26> (`platform`, `niche`, `data_freshness_days`, `content_format`,27> `audience_country`), and reserve `broad` plus heavy `lookalike` unioning for28> market sizing. Do not fan out dozens of `lookalike` calls to hit a volume29> target (each hop drifts from the seed), and trim the weak tail by each30> result row `relative_fit` (within-set fit, `1.0` = strongest) rather than31> padding to a round number. Canon:32> `${CLAUDE_PLUGIN_ROOT}/shared/conventions.md` convention 14.3334## Inputs to collect3536- **Campaign goal + vertical** (required) — the brief in a sentence; infer37 vertical from it.38- **Target audience / archetypes** (required) — one or more target profiles39 (e.g. "LATAM Gen-Z skincare" + "US millennial wellness"). A LIST of targets40 triggers convention 9: one search per target, per-target sections — never41 one merged search.42- **Total budget** (required) — drives the price section's allocation.43- **Tier shape** (optional, default macro/mid/micro mix biased by goal).44- **Deal types** (optional) — else inferred from the market-mode mix.45- **Geo / platform constraints** (optional).46- **Mode** — default `thorough`; `thrifty` on request.4748Never ask twice; never ask for what the conversation already holds.4950## Flow5152This skill composes budget-allocator + per-target discovery + market context.53Convention 9 governs the audience section: **N target archetypes = N searches54and N per-target sections**, plus an overview.55561. **Market context (excursions + bands)** — `query_market_intelligence`,57 **each wrapped in Refusal Recovery**:58 - `{ mode: "market", vertical: <vertical> }` (floor 5/25) → which deal59 types are active (the "excursions") + deal-type mix.60 - `{ mode: "rate", vertical: <vertical>, deal_type: <dominant or requested>, creator_tier: <the accommodation (creator) tier being priced, when known — one call per tier> }`61 (floor 10/50) → the rate band that prices accommodation tiers and feeds62 the budget split.63 When an accommodation tier's follower band is known, pass `creator_tier`64 (emerging <1k / nano 1k-10k / micro 10k-100k / mid 100k-500k / macro 500k-1M / mega 1M+)65 so each tier benchmarks against same-size creators; a tier too thin for the66 floor broadens (disclosed) to the vertical band.67 Disclose clearance level on any broaden. 5 credits each incl. retries.68 Thrifty: the rate call only, max 2 ladder rungs.69702. **Per-target discovery (destination + candidates)** — for EACH target71 archetype (convention 9), one `search_creators`:72 `{ mode: "brief", brief: <campaign goal + this target's description>, filters: { niche: <niche>, country: <geo>, platform: <if set>, min_followers: <tier floor>, max_followers: <tier ceiling> }, limit: <by tier need, cap 15>, precision: "balanced" }`73 2 credits each. Thin exact niche → thin-niche honesty ladder (convention74 8): disclose, broaden one labeled step, tag picks exact/adjacent.75 Thrifty: smaller `limit`, fewer tiers per target.76773. **Budget allocation (price)** — no new tool calls; reuse the step-1 rate78 band to construct the tier mix exactly as `budget-allocator` does (tier79 planning rates = positions within the corpus band, labeled as such),80 fitted to the total budget, with the arithmetic shown.81824. **Freshness Gate on named candidates** — in thorough mode,83 `get_creator_profile` `{ identifier: { type: "creatorland_user_id", creatorland_user_id: <from search> } }`84 (or `social_handle`) for the candidates that make the proposal; classify85 fresh/aging/stale; stale → "re-verify before pitch". 1 credit each.86 Thrifty: skip; label candidates "unverified — search-result freshness".87885. **Assemble the package.** Pre-run estimate fires before steps 2–4 if the89 plan exceeds ~30 credits (thorough multi-target runs do — say so).9091## Deliverable9293```markdown94# Campaign package — <campaign name> · <vertical>95## Overview96Brief: <one-line restatement>. Methodology: market context from the97Creatorland corpus; candidates from per-archetype searches; budget split from98corpus rate bands. Per-target caveats noted in each section.99100## 1 · Destination (target audience)101<Per archetype — convention 9 sections; on paid plans front each candidate card102with the creator's `avatar { url, source }` headshot, initials fallback when null/free:>103### Archetype A — <description>104Candidates: @h1 (<fit>, <fresh/aging>, [exact/adjacent fit]) … 105### Archetype B — <description>106…107108## 2 · Accommodation (creator tiers + bands)109| Tier | Follower range | Band (corpus, <deal type>) |110|---|---|---|111| Macro | … | $x–$z (med $y), ~upper band |112| Mid / Micro | … | … |113Bands are corpus-level market ranges for the vertical/tier — not any named114creator's rate.115116## 3 · Excursions (active deal types)117<Deal-type mix from market mode, each a citation-ready block: stat +118provenance + recency window.>119120## 4 · Price (budget allocation)121| Tier | Slots | Planning rate (band position) | Subtotal |122|---|---|---|---|123| … | | | |124| **Total** | | | **$≤budget** (<headroom>) |125Method note: planning rates are positions within the corpus band, not126follower-tier price lists.127128## Re-verify before pitch129<stale candidates, or "none">130131---132**Benchmark basis:** <clearance level(s) + floor-disclosure note where133broadened — "a privacy feature of the data source, not missing data">134**Provenance:** <provenance lines from each market-intel response, verbatim>135· recency window: <window>136**Data freshness:** N/M named candidates synced within the last sync window;137K flagged for re-verification. <thrifty: "candidates unprofiled — verify138before client use">139**Honesty note:** all rates are corpus-level market bands for the vertical/140tier — not personal rates. Per-target candidate lists disclose any niche141broadening. Confirm quotes before committing budget lines.142Credits used this run: ~N (breakdown: <market-intel>×5 + <searches>×2 + <profiles>×1)143```144145## Honesty rules146147- **Bands and budget rates are corpus-level** for the vertical/tier — never a148 named creator's rate; the accommodation table and price method note both149 say so (convention 2).150- **Multi-target = sectioned slate** (convention 9): every archetype gets its151 own search and section; never one merged generic search across targets.152- **Thin-niche honesty per target** (convention 8): disclose, broaden one153 labeled step, tag exact vs adjacent fit.154- **Disclose every broaden** (Refusal Recovery clearance level).155- **Budget arithmetic closes** — subtotals ≤ budget, headroom shown; if the156 goal won't fit at band rates, say so.157- **Freshness Gate is mandatory** on named candidates.158- **No contact info** anywhere in the package, regardless of source159 (convention 7) — scrub bio snippets.160161## Credit footprint162163thorough: ~30–55 credits (2 market-intel ×5 + N target searches ×2 + ~15–25164profiles ×1; refusal rungs add 5 each — pre-run estimate fires) ·165thrifty: ~12–18 credits (1 rate call + N smaller searches, no profiling,166capped ladder)