outreach-manager
Use when the user asks to "write influencer outreach", "follow up with a creator", "pitch a journalist, hunter, or launch partner", or "negotiate partnership terms"; produces personalized pitches, multi-touch follow-up sequences, negotiation scripts with objection handling, and a status pipeline tra
By aaron-he-zhu · 745 installs
npx skills add aaron-he-zhu/aaron-marketing-skills --skill outreach-manager
Source repository · Upstream listing
Outreach Manager
Craft personal, professional, persistent outreach; manage negotiations; track relationship progress. Home discipline is influencer (creator outreach), and the same mechanics engine — personalization, multi touch cadence, negotiation scripts, pipeline tracking — serves media/analyst and launch partner targets when [press media relations](../../../launch/mobilize/press media relations/SKILL.md) hands over its media list, angles, and embargo terms, and social selling / advocate recruitment targets when [social selling planner](../../../social/host/social selling planner/SKILL.md) or [advocacy program designer](../../../social/craft/advocacy program designer/SKILL.md) hands over a warm 1:1. The list, the angle, and the embargo stay with the handing off skill; this skill owns the pitch execution.
Quick Start
Shortest invocation:
Negotiate a gap between ask and budget:
Skill Contract
Reads : a stable opaque creator ref when one is carried by an authorized upstream artifact, plus transient target handle/profile locator(s), platform, follower count, niche; campaign and product context; compensation type and budget; deliverables and timeline; jurisdiction, intended channel, lawful basis reference, contact source/eligibility evidence, and pseudonymous consent subject ID; any prior contact history supplied by the user or loaded from memory. For a rostered creator, reuse a creator registry aggregate ID only when its identity link is verified, resolve it through the authorized artifact or verified registry link, then check memory/creators/<aggregate id .md — the [creator registry](../../../protocol/creator registry/SKILL.md) projection — for the confirmed contact path, last agreed rate, and negotiation/response history. Never derive the path from a raw handle.
Writes : return the outreach artifact inline by default; save it to memory/influencer/outreach manager/YYYY MM DD <topic .md only with exact WARM save authorization. Reuse an explicitly carried opaque creator ref , or a verified creator registry aggregate ID; otherwise generate one random creator <UUIDv4 once for this lineage. Never derive creator ref from a raw handle, name, profile URL, email, provider ID, or deterministic hash. Before saving, replace raw locators and resolved recipient identities with the stable creator ref and resolvable opaque recipient ref , contact source ref , handle ref , and evidence/approval references. A raw URL or handle is never a persisted source ref . When no authorized source artifact or verified registry link can resolve an opaque identity/contact ref, set identity status: unresolved , save no hidden raw locator mapping, set cross session locator required: true , and request the transient locator again at dispatch. Never persist a raw handle, name, profile URL, email, phone, postal address, provider ID, or credential. When a cycle closes, each outcome update (final agreed rate, response history, confirmed contact path reference) requires a separate exact authorization for an operation: propose request to memory/events/creators.ndjson ; only creator registry writes canonical roster records.
Promotes : only with separate exact authorization, promote durable facts (confirmed partners, agreed rates, top objection patterns, response rate baselines) to memory/hot cache.md .
Done when :
A personalized pitch (plus at least one variation) exists for each target influencer.
Every personalization fact records source ref and observed at ; unverifiable facts remain placeholders or are omitted.
A follow up cadence and pipeline status are recorded for every contacted creator, including terminal no contact states.
Jurisdiction, channel, lawful basis, and contact eligibility are explicit; any send/schedule remains gated by exact approval and a live suppression check.
Confirmed partners are flagged with agreed terms for handoff.
Primary next skill : [contract helper](../contract helper/SKILL.md)
Handoff Summary
Emit the standard shape from [skill contract.md §Handoff Summary Format](../../../references/skill contract.md).
Data Sources
Drafting needs no live integration (Tier 1). The skill works from inputs you provide — paste the influencer handles, follower counts, niche, budget, and deliverables, and it can produce a clearly labeled draft without any tool connection. Sending or scheduling is different: it requires the pseudonymous subject ID and a live [consent registry](../../../protocol/consent registry/SKILL.md) suppression query immediately before dispatch; an unavailable or failed query is not permission to send.
Where a connector could speed up the work, use these ~~ placeholders:
~~influencer database — pull handle, follower count, niche, and past partnerships instead of typing them.
~~social platform analytics — verify audience demographics and recent posts for personalization.
~~CRM — sync pipeline status, last contact dates, and next actions.
~~email/DM tool — dispatch only the single currently due, exactly approved touch after its fresh eligibility and live suppression checks. Future touches remain unscheduled drafts regardless of provider features.
See [CONNECTORS.md](../../../CONNECTORS.md) for the free/keyless recipe per category. No integration is required; when one is absent, ask the user for the inputs directly. Missing target or campaign details do not block a reversible draft: use explicit bracketed placeholders, generalize any unverified personalization, and identify the smallest inputs needed to finish it.
Instructions
Runtime Reads
../../../references/runtime invocation.md
../../../references/registry event protocol.md
Procedure
When a user requests outreach help, run these steps. Each step has a fill in template in [references/templates.md](references/templates.md) — copy the matching block and replace the placeholders. Apply the hard copy rules in [references/cold copy rules.md](references/cold copy rules.md) before any message ships.
Draft/send boundary : drafting is reversible; sending or scheduling is an external side effect. Even when the shortlist or personalization facts are missing, produce an inline first touch draft labeled DRAFT — NOT SENT with explicit placeholders and no invented facts, then state what is still needed for personalization. Never stop with only an input request when a safe placeholder draft can be produced.
Do not send or schedule anything until all of these are true:
The exact recipient (not a segment or placeholder), intended channel, final message, and—when scheduling that one touch—one concrete ISO 8601 dispatch at timestamp plus timezone are shown and explicitly approved. Approval covers only the single currently due touch. Draft windows such as Day 3–4 are not exact approval, and no approval or provider feature authorizes pre scheduling later cadence touches.
Jurisdiction, channel, lawful basis with its evidence reference, and contact eligibility are recorded. Unknown or missing eligibility fails closed; this skill does not invent a legal basis or provide legal advice.
Inside each actual delivery job, after resolving the transient recipient and immediately before the provider send call, resolve and verify the bundle runtime as shown below, then run live [consent registry](../../../protocol/consent registry/SKILL.md) is suppressed . A suppressed result, missing subject ID, inaccessible/corrupt history, runtime/schema failure, or query error stops that dispatch. A not suppressed result removes only the suppression block; it does not itself prove lawful basis or authorize contact. Never reuse a cached result across cadence touches.
PROJECT ROOT must be supplied by the host as the verified absolute user project root; do not infer it from the skill bundle, $PWD , a raw event, or user controlled outreach content. When the subject ID, project root, runtime, or another send gate input is missing, return a NEEDS INPUT consent check handoff to [consent registry](../../../protocol/consent registry/SKILL.md) containing only the pseudonymous subject ID if supplied, required project root/runtime capability, intended channel, eligibility evidence refs, and the pending dispatch ref; do not claim that is suppressed ran or automatically resume delivery. Always leave later cadence touches as unscheduled drafts. When the next touch becomes due, resolve its transient recipient again, obtain fresh exact approval for that touch, repeat every eligibility/runtime/suppression check inside its delivery job, and dispatch only that one touch.
If a recipient declines the offer or says they do not take sponsored work, void every remaining draft touch for that cadence, do not relabel the offer or switch channels, and record only the exact scoped preference inline ( campaign/offer/category scope , observed at , and opaque source ref ); persisting it or proposing it to creator registry needs separate exact authorization. A prior preference blocks a new cadence inside its recorded scope until newer cited evidence shows the creator reopened that scope; if the old preference's scope or superseding evidence is unknown, fail closed with NEEDS INPUT rather than inventing a cooling period. Do not call global suppress for a scoped decline or commercial objection alone. An explicit stop contact request, unsubscribe, verified channel/provider spam complaint, or consent withdrawal voids every remaining draft touch across channels and uses the consent registry's direct deny only suppress path with the exact subject free reason code: stop contact → user request ; unsubscribe → unsubscribe ; verified spam/provider complaint → complaint ; consent withdrawal → withdrawal . If the verified runtime is unavailable, emit its exact immediate suppress handoff and state that suppression has not yet been recorded.
1. Gather outreach context and lock identity — capture campaign/product context, transient target handle/profile locator(s), platform, followers, niche, compensation type, budget, deliverables, and timeline. Reuse an explicitly carried opaque creator ref , or a creator registry aggregate ID only when its identity link is verified; otherwise generate one random creator <UUIDv4 once for this lineage. Never use or hash a raw locator into creator ref . Save an opaque handle ref , recipient ref , contact source ref , or evidence source ref only when an authorized source artifact or verified registry link resolves it. Otherwise set identity status: unresolved , persist no raw locator or hidden mapping, set cross session locator required: true , and require the raw locator again at dispatch. Any saved artifact or handoff contains only opaque identity/contact/evidence refs plus jurisdiction, channel, lawful basis evidence, and contact eligibility result—never a raw handle, name, profile/content URL, email, phone, postal address, provider ID, or credential. Re engaging a verified rostered creator starts from the confirmed contact path reference and last agreed rate, not a cold pitch. Template: [Step 1](references/templates.md step 1 outreach parameters).
2. Create personalized outreach — list personalization points (recent content, style, audience, values, past partners), and attach source ref plus observed at to every factual point before using it. Omit or generalize anything unverifiable; never invent personal viewing, purchasing, product use, or relationship history. Then write the primary message plus a DM friendly short version and a formal email/management version. Template: [Step 2](references/templates.md step 2 personalized outreach). Media/analyst/hunter targets : personalize on beat and recent coverage, lead with the story angle (not a compensation offer), carry the embargo terms verbatim from the press media relations artifact, and never invent quotes or data — claims come from the a