Budget Allocator
You have a total campaign budget and a goal ("$50k for a Q3 fitness launch") and
need a defensible plan for how to spend it: how many creators, at which tiers,
at what per-deal cost, and who specifically could fill each slot. This skill
benchmarks tier-level deal values from the Creatorland corpus, proposes a mix
that fits the budget, and names candidate creators per slot. It is a planning
skill for the whole budget — not a price check on a single deal (that's
fair-price-brief / one-number-rate).
Read first: ${CLAUDE_PLUGIN_ROOT}/shared/conventions.md (tool schemas, credit
prices, the nine conventions). 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
- Total budget (required) — in USD; convert and note if quoted otherwise.
- Vertical (required) — infer from the campaign goal if stated ("fitness
launch" → Fitness); ask only if genuinely ambiguous.
- Campaign goal / shape (required) — reach-led, conversion-led, or
awareness/credibility-led. This drives the default mix bias: reach → more
micro/mid breadth; credibility → fewer, bigger names.
- Deal type (optional) — map "sponsored posts" / "affiliate program" to
the closest
deal_type. Omit if unspecified; tier bands come from the
vertical level.
- Constraints (optional) — geo, platform, must-include tiers, max
creators, reserved spend (e.g. "hold $10k for paid amplification" —
allocate only the remainder and say so).
- Mode — default
thorough; thrifty on request or stated budget concern.
Never ask twice; never ask for what the conversation already contains.
Flow
Benchmark tier economics — query_market_intelligence calls in rate
mode to establish per-deal value bands for the vertical, each wrapped in
Refusal Recovery (rate-mode floor: 10 brands / 50 deals):
{ mode: "rate", vertical: <vertical>, deal_type: <if specified>, creator_tier: <the tier slot being priced — macro/mid/micro — one call per slot> }
- In thorough mode, optionally one
{ mode: "market", vertical: <vertical> }
call (floor: 5 brands / 25 deals) for deal-volume/deal-type-mix context
that informs which deal types are actually active in this vertical.
Pass creator_tier (emerging <1k / nano 1k-10k / micro 10k-100k / mid 100k-500k / macro 500k-1M / mega 1M+) for the
tier slot you are pricing so each slot benchmarks against same-size creators;
a slot whose tier is unknown or too thin for the privacy floor broadens
(disclosed) to the vertical band, and you position within it per the
constraint below.
IMPORTANT honesty constraint: where a tier is unknown or too thin to clear
the floor, the corpus returns vertical/filter-level bands, not literal
per-follower-tier price lists. Those tier slots (macro/mid/
micro) are constructed by positioning within the returned band — macro
slots planned near p75+, mid near median, micro near p25 — and the plan
must label this method explicitly. If a refusal ladder broadened the
slice, disclose the clearance level. 5 credits per call incl. each retry.
Thrifty: 1 rate call, max 2 ladder rungs, skip the market-mode call.
Propose the mix (no tool calls) — solve the allocation: number of
slots per tier × per-slot planning rate (from band positions) ≤ budget,
biased by the campaign shape. Present 1 primary mix + 1 alternate (e.g.
"breadth mix" vs "anchor mix"). Show the arithmetic.
Name candidates per slot — one search_creators per tier slot type
(convention 9: tiers are distinct targets — never one merged search):
{ mode: "brief", brief: <campaign goal text>, filters: { niche: <niche>, min_followers: <tier floor>, max_followers: <tier ceiling>, platform: <if constrained>, country: <if constrained> }, limit: 2×slots-for-tier (cap 15), precision: "balanced" }
2 credits each. If a tier's exact niche comes back thin, apply the
thin-niche honesty ladder (convention 8): disclose, broaden one labeled
step (exact niche → adjacent → vertical), and tag picks exact/adjacent.
Thrifty: search only the two largest-spend tiers, limit = slots+2.
Freshness Gate on named candidates — in thorough mode,
get_creator_profile { identifier: { type: "creatorland_user_id", creatorland_user_id: <from search result> } }
(or social_handle form) for each named candidate; classify fresh/aging/
stale; stale go to "re-verify before pitch", never the main slot list.
1 credit each. Thrifty: skip profiling; label candidates "unverified —
search-result freshness only" and say so in the data note.
Pre-run estimate — fire the credit-modes estimate before step 3/4 if
the planned total exceeds ~30 credits (typical thorough runs do).
Deliverable
A budget allocation plan in markdown:
# Budget allocation — $<total> · <vertical> · <campaign goal>
## Recommended mix
| Tier | Slots | Planning rate/deal | Subtotal |
|---|---|---|---|
| Macro (<follower range>) | N | $<~p75 of band> | $ |
| Mid (<range>) | N | $<~median> | $ |
| Micro (<range>) | N | $<~p25> | $ |
| **Total** | | | **$<total≤budget>** (<headroom> headroom) |
Method note: planning rates are positions within the corpus rate band for
<vertical><, deal type> (p25/median/p75 = $x/$y/$z) — the corpus benchmarks
the vertical, not follower tiers directly; tier rates are band positions,
labeled as such.
## Alternate mix — <name>
<same table, one-line rationale for when to prefer it>
## Candidate creators per slot
### Macro slots
- @<handle> — <one-line fit rationale> · <fresh/aging> · [exact fit/adjacent fit]
...per tier...
### Re-verify before pitch
<stale-profile candidates, or "none">
---
**Benchmark basis:** <clearance level + floor-disclosure note if broadened>
**Provenance:** <provenance line(s) from market-intel responses, verbatim>
· recency window: <window>
**Data freshness:** N/M candidates synced within the last sync window; K
flagged for re-verification. <thrifty: "candidates unprofiled — verify
before client use">
**Honesty note:** rates are corpus-level market bands for this vertical/
tier-position — not any named creator's personal rate. Confirm actual quotes
per creator before committing budget lines.
Credits used this run: ~N (breakdown: <rate calls>×5 + <searches>×2 + <profiles>×1)
Honesty rules
- Band positions, not tier price lists. The corpus doesn't return
per-tier rates; the plan constructs tier planning rates as positions within
the vertical band and must say so. Never present a slot rate as "what
micro creators in fitness charge."
- Never a named creator's rate. Candidates are listed with the slot's
planning rate, framed as the budget line — not their quote. The plan tells
the user to get actual quotes.
- Disclose every broaden (Refusal Recovery clearance level) and every
thin-niche widening step (convention 8 labels).
- The arithmetic must close. Subtotals ≤ budget, headroom shown; if the
goal can't be met inside the budget at band rates, say so rather than
shading rates down.
- No contact info in the plan, regardless of source (convention 7).
Credit footprint
thorough: ~25–40 credits (1–2 market-intel ×5 + 3 tier searches ×2 + ~15–25
profiles ×1; refusal rungs add 5 each — pre-run estimate fires) ·
thrifty: ~9–14 credits (1 rate call + 2 searches, no profiling)
1---2name: budget-allocator3description: Split a total campaign budget into a creator-tier mix (e.g. 2 macro + 8 mid + 20 micro) using corpus rate bands per tier, with named candidate creators per slot. Use when the user says "allocate this budget", "how should I split $50k across creators", "what mix of creators can I afford", or has a total budget + campaign goal and needs a tier plan. Deliverable is a budget allocation plan with per-slot candidates. For pricing one deal, use fair-price-brief or one-number-rate.4---56# Budget Allocator78You have a total campaign budget and a goal ("$50k for a Q3 fitness launch") and9need a defensible plan for how to spend it: how many creators, at which tiers,10at what per-deal cost, and who specifically could fill each slot. This skill11benchmarks tier-level deal values from the Creatorland corpus, proposes a mix12that fits the budget, and names candidate creators per slot. It is a planning13skill for the whole budget — not a price check on a single deal (that's14`fair-price-brief` / `one-number-rate`).1516Read first: ${CLAUDE_PLUGIN_ROOT}/shared/conventions.md (tool schemas, credit17prices, the nine conventions). This skill honors thrifty/thorough credit modes18(${CLAUDE_PLUGIN_ROOT}/shared/credit-modes.md), Refusal Recovery19(${CLAUDE_PLUGIN_ROOT}/shared/refusal-recovery.md), and the Freshness Gate20(${CLAUDE_PLUGIN_ROOT}/shared/freshness-gate.md).2122> **Precision & filters for outreach (convention 14).** When this list will23> feed an outreach step, default to precision over raw recall: search24> `precision: "tight"` with the hard-gate filters the brief supports25> (`platform`, `niche`, `data_freshness_days`, `content_format`,26> `audience_country`), and reserve `broad` plus heavy `lookalike` unioning for27> market sizing. Do not fan out dozens of `lookalike` calls to hit a volume28> target (each hop drifts from the seed), and trim the weak tail by each29> result row `relative_fit` (within-set fit, `1.0` = strongest) rather than30> padding to a round number. Canon:31> `${CLAUDE_PLUGIN_ROOT}/shared/conventions.md` convention 14.3233## Inputs to collect3435- **Total budget** (required) — in USD; convert and note if quoted otherwise.36- **Vertical** (required) — infer from the campaign goal if stated ("fitness37 launch" → Fitness); ask only if genuinely ambiguous.38- **Campaign goal / shape** (required) — reach-led, conversion-led, or39 awareness/credibility-led. This drives the default mix bias: reach → more40 micro/mid breadth; credibility → fewer, bigger names.41- **Deal type** (optional) — map "sponsored posts" / "affiliate program" to42 the closest `deal_type`. Omit if unspecified; tier bands come from the43 vertical level.44- **Constraints** (optional) — geo, platform, must-include tiers, max45 creators, reserved spend (e.g. "hold $10k for paid amplification" —46 allocate only the remainder and say so).47- **Mode** — default `thorough`; `thrifty` on request or stated budget concern.4849Never ask twice; never ask for what the conversation already contains.5051## Flow52531. **Benchmark tier economics** — `query_market_intelligence` calls in rate54 mode to establish per-deal value bands for the vertical, **each wrapped in55 Refusal Recovery** (rate-mode floor: 10 brands / 50 deals):56 - `{ mode: "rate", vertical: <vertical>, deal_type: <if specified>, creator_tier: <the tier slot being priced — macro/mid/micro — one call per slot> }`57 - In thorough mode, optionally one `{ mode: "market", vertical: <vertical> }`58 call (floor: 5 brands / 25 deals) for deal-volume/deal-type-mix context59 that informs which deal types are actually active in this vertical.6061 Pass `creator_tier` (emerging <1k / nano 1k-10k / micro 10k-100k / mid 100k-500k / macro 500k-1M / mega 1M+) for the62 tier slot you are pricing so each slot benchmarks against same-size creators;63 a slot whose tier is unknown or too thin for the privacy floor broadens64 (disclosed) to the vertical band, and you position within it per the65 constraint below.6667 IMPORTANT honesty constraint: where a tier is unknown or too thin to clear68 the floor, the corpus returns **vertical/filter-level bands**, not literal69 per-follower-tier price lists. Those tier slots (macro/mid/70 micro) are constructed by positioning within the returned band — macro71 slots planned near p75+, mid near median, micro near p25 — and the plan72 must label this method explicitly. If a refusal ladder broadened the73 slice, disclose the clearance level. 5 credits per call incl. each retry.74 Thrifty: 1 rate call, max 2 ladder rungs, skip the market-mode call.75762. **Propose the mix** (no tool calls) — solve the allocation: number of77 slots per tier × per-slot planning rate (from band positions) ≤ budget,78 biased by the campaign shape. Present 1 primary mix + 1 alternate (e.g.79 "breadth mix" vs "anchor mix"). Show the arithmetic.80813. **Name candidates per slot** — one `search_creators` per tier slot type82 (convention 9: tiers are distinct targets — never one merged search):83 `{ mode: "brief", brief: <campaign goal text>, filters: { niche: <niche>, min_followers: <tier floor>, max_followers: <tier ceiling>, platform: <if constrained>, country: <if constrained> }, limit: 2×slots-for-tier (cap 15), precision: "balanced" }`84 2 credits each. If a tier's exact niche comes back thin, apply the85 thin-niche honesty ladder (convention 8): disclose, broaden one labeled86 step (exact niche → adjacent → vertical), and tag picks exact/adjacent.87 Thrifty: search only the two largest-spend tiers, `limit` = slots+2.88894. **Freshness Gate on named candidates** — in thorough mode,90 `get_creator_profile` `{ identifier: { type: "creatorland_user_id", creatorland_user_id: <from search result> } }`91 (or `social_handle` form) for each named candidate; classify fresh/aging/92 stale; stale go to "re-verify before pitch", never the main slot list.93 1 credit each. Thrifty: skip profiling; label candidates "unverified —94 search-result freshness only" and say so in the data note.95965. **Pre-run estimate** — fire the credit-modes estimate before step 3/4 if97 the planned total exceeds ~30 credits (typical thorough runs do).9899## Deliverable100101A budget allocation plan in markdown:102103```markdown104# Budget allocation — $<total> · <vertical> · <campaign goal>105106## Recommended mix107| Tier | Slots | Planning rate/deal | Subtotal |108|---|---|---|---|109| Macro (<follower range>) | N | $<~p75 of band> | $ |110| Mid (<range>) | N | $<~median> | $ |111| Micro (<range>) | N | $<~p25> | $ |112| **Total** | | | **$<total≤budget>** (<headroom> headroom) |113114Method note: planning rates are positions within the corpus rate band for115<vertical><, deal type> (p25/median/p75 = $x/$y/$z) — the corpus benchmarks116the vertical, not follower tiers directly; tier rates are band positions,117labeled as such.118119## Alternate mix — <name>120<same table, one-line rationale for when to prefer it>121122## Candidate creators per slot123### Macro slots124- @<handle> — <one-line fit rationale> · <fresh/aging> · [exact fit/adjacent fit]125...per tier...126127### Re-verify before pitch128<stale-profile candidates, or "none">129130---131**Benchmark basis:** <clearance level + floor-disclosure note if broadened>132**Provenance:** <provenance line(s) from market-intel responses, verbatim>133· recency window: <window>134**Data freshness:** N/M candidates synced within the last sync window; K135flagged for re-verification. <thrifty: "candidates unprofiled — verify136before client use">137**Honesty note:** rates are corpus-level market bands for this vertical/138tier-position — not any named creator's personal rate. Confirm actual quotes139per creator before committing budget lines.140Credits used this run: ~N (breakdown: <rate calls>×5 + <searches>×2 + <profiles>×1)141```142143## Honesty rules144145- **Band positions, not tier price lists.** The corpus doesn't return146 per-tier rates; the plan constructs tier planning rates as positions within147 the vertical band and must say so. Never present a slot rate as "what148 micro creators in fitness charge."149- **Never a named creator's rate.** Candidates are listed with the slot's150 planning rate, framed as the budget line — not their quote. The plan tells151 the user to get actual quotes.152- **Disclose every broaden** (Refusal Recovery clearance level) and every153 thin-niche widening step (convention 8 labels).154- **The arithmetic must close.** Subtotals ≤ budget, headroom shown; if the155 goal can't be met inside the budget at band rates, say so rather than156 shading rates down.157- **No contact info** in the plan, regardless of source (convention 7).158159## Credit footprint160161thorough: ~25–40 credits (1–2 market-intel ×5 + 3 tier searches ×2 + ~15–25162profiles ×1; refusal rungs add 5 each — pre-run estimate fires) ·163thrifty: ~9–14 credits (1 rate call + 2 searches, no profiling)