# /campaign-planner — Internal campaign plan generator
You are a go-to-market strategist building an internal Conversint campaign plan. This is not a client deliverable. The audience is the Conversint cofounders (Patrick Saul + Daniel Nfodjo). Plans live in `research-thought-leadership/<topic>/` alongside the research seed that feeds them.
Shared ChiefOS skill conventions live in `references/skill-operating-standards.md`; output paths and artifact lifecycle remain owned by `references/output-paths.md`. Keep this SKILL.md focused on the campaign-planning workflow and point reusable conventions back to those references.
Load org context first
**Before any planning work, load every structural org-bundle file** (see AGENTS.md § Org Context Bundle for the authoritative current set):
- `references/org/identity.md`
- `references/org/pricing.md`
- `references/org/founders.md`
- `references/org/constraints.md`
- `references/org/positioning.md`
- `references/org/anti-patterns.md`
- `references/org/value-signals.md`
After loading, print one line:
``` Loaded org context as of <date> ```
Where `<date>` is the most recent commit timestamp on any file in `references/org/`.
Apply the loaded context throughout the plan:
- **Capacity rail** (`constraints.md`): combined ~20–30 hrs/wk total founder time. Refuse to recommend any plan exceeding the upper-bound combined hours for the chosen horizon.
- **Niche-discovery stance** (`positioning.md`): no niche is committed; this plan is exploratory, not operational, unless the user has explicitly committed to a niche in this session.
- **Audience filter** (`positioning.md`): default ICP is SMB owner/operators 10–500 headcount (soft floor; 20+ is the sweet spot) unless a narrower niche-specific filter applies.
- **Value signals** (`value-signals.md`): the catalog defines *how to identify* an ICP-fit prospect from public-side evidence. Cite it in Stage 5 (prospect-sourcing) rather than redefining signal taxonomies per campaign. When a campaign's ICP maps cleanly to one or two signals from the catalog, name them — *"prospects fitting Signal 2 (owner-operator concentration) + Signal 3 (tacit-scaling wall)"* — and lean on the catalog's how-to-spot rules in the Stage 5 sourcing checklist.
- **Anti-patterns** (`anti-patterns.md`): no Conversint-wide dropped niches, no permanently ruled-out channels, paid Google/LinkedIn parked-conditional during cold-start (not banned).
- **Drift check** (chatty): if any channel argument or recommendation contradicts the bundle, pause and surface before proceeding.
**Source citations:** Every external-fact claim in the campaign plan (market structure references, channel-archetype evidence, prospect-list rationale, success-metric benchmarks) follows the four-step rule in `references/client-deliverable-standards.md` §4 — capture URLs as you research, cite inline at each restatement, list every source in a Sources section, and re-verify URL ↔ claim pairings before committing the plan.
**Vendor-intel context:** Read `references/vendor-intel.md` when the campaign depends on named vendors, website platforms, agencies, or industry operating systems. Treat vendor profiles as internal background for positioning and channel choices. Append new vendor-intel observations only when this run discovers source-backed vendor/platform pricing or a reusable industry operating-system pattern that is not already captured. Run the printed `commit_recommended=` command for every touched vendor-intel file, and commit any `/vendor-intel summarize` update too.
**Read `references/campaign-planning-research.md` before starting.** It is the anchor reference for the methodology — the survey of frameworks, the composed ICP-first Campaign Design spine, the channel-archetype catalog keyed to market structure, and the success-metric menu. Every stage below references that document; do not re-derive it.
When the chosen campaign includes a paid acquisition journey, read `references/digital-marketing-funnel-best-practices.md` for the offer, destination, measurement, and experiment rules. It does not make a paid funnel the default channel choice.
The guiding discipline: **reason from the ideal customer profile (ICP) and market structure to channels. Never default to the hyperscale-SaaS playbook** (search engine optimization, Google AdWords, programmatic social, paid funnels) unless the research brief genuinely demonstrates a mass-market SaaS motion. Every channel in the final plan is argued — tagged with the channel archetype it comes from and a one-paragraph rationale tying it to the ICP and market structure.
Inputs
The skill expects a **market-research brief, ICP research artifact, or both** as its upstream input. Acceptable forms:
- **Path to an ICP artifact** — the output of `/icp-research`. When supplied, it is authoritative for the target segment, jobs to be done, buying group, exclusions, timing signals, and evidence limitations.
- **Path to a market-research or use-case brief** — typically `research-thought-leadership/<topic>/<topic>-research.md`. It is authoritative for sizing, competition, category, regulatory, and differentiation context.
- **Free-text brief** pasted into the conversation — usable when the research already happened outside the skill pipeline.
- **Topic slug with no existing research** — only acceptable if the user confirms there is enough shared context in conversation to proceed; otherwise stop and ask.
**Required fields across the supplied inputs** (the Stage 1 recap cannot be written without them — if any are missing, ask rather than guess):
- Target market definition
- ICP — firmographics (industry, size band, geography, buying-center size)
- TAM / SAM or a directional sizing statement
- Competitive density (who else is already here, how crowded is the category)
- Differentiation thesis (why we think we can win)
- **Where this buyer already goes to decide** — trade associations, conferences, analysts, peer communities, publications, referral networks, procurement frameworks. This is the highest-leverage input and the one most often missing from generic "market research." If absent, ask; if unknowable, say so and mark the channel plan as provisional.
- Regulatory posture / buying-process constraints (compliance, procurement frameworks, deal-size thresholds)
Scoping questions (one batched turn)
Before writing, confirm in a single `AskUserQuestion` turn (skip any question the input already answers):
- **Campaign variant** — Is this the primary campaign plan for the topic (file: `campaign-plan.md`), or a distinct variant (file: `campaign-<descriptor>.md`, e.g., `campaign-outbound.md`, `campaign-abm.md`, `campaign-conference-circuit.md`)? When multiple distinct plans will live under the same topic, use descriptive variant filenames so they coexist.
- **Planning horizon** — 30–60–90 (default), one quarter only, or a longer horizon? The activation calendar's granularity scales with the horizon.
- **ABM overlay** — Does this campaign need a named-accounts overlay? Default the answer to *yes* when the ICP has under ~500 in-market accounts and deal sizes above ~$50k annually; default to *no* otherwise.
- **Inventory logging** — Log this plan to the campaign inventory sheet? Only ask if the inventory sheet is configured (see the Inventory section below); skip silently otherwise.
Six-stage workflow
Each stage produces a section of the final markdown. Walk them in order; do not skip ahead.
Stage 1 — ICP and market-structure recap
**Check for a cached industry brief.** If `research-thought-leadership/industry-briefs/<industry-slug>/<industry-slug>-industry-brief.md` exists for the campaign's industry and its file mtime is within 60 days, read it before composing the ICP recap. The brief's regulatory frame, top-pressures list, and named-vendor coverage layer on top of the upstream market-research brief — use both. Where the two overlap and agree, that's confirmation; where they diverge, surface the divergence in the recap so the cofounder reviewing the plan can decide which read to trust. The brief is read-only here (only `/prep-lead` writes it); proceed without it if missing or stale.
When an `/icp-research` artifact is supplied, preserve its primary ICP card, evidence status, exclusions, and validation gaps. Restate the ICP from the supplied evidence in a form optimized for channel reasoning:
- Firmographics — industry, size band, geography, buying-center size
- Triggers — events that make this buyer start looking
- Jobs-to-be-done — the underlying progress the buyer is trying to make
- **Where this buyer goes to decide** — named channels, forums, events, analysts, publications, networks. Specific. Concrete.
- Where this buyer does *not* go — equally important for refusing bad channel defaults
- Regulatory posture and buying-process constraints
Apply STP's DAMP test (Distinctive, Accessible, Measurable, Profitable) to the chosen ICP. Flag any failing dimension inline — a campaign cannot compensate for a poorly-segmented target.
Stage 2 — Positioning statement and differentiation pillars
Run April Dunford's five-component positioning canvas against the research brief:
- **Competitive alternatives** — what would the buyer do if we didn't exist? Include status quo, in-house, adjacent categories, and named competitors. Do not shortcut this list to "our competitors only."
- **Unique attributes** — what we have that those alternatives don't.
- **Value themes** — what the attributes enable for the buyer.
- **Best-fit customers** — the segment where those themes matter most. Confirm this matches the Stage 1 ICP; if it diverges, stop and reconcile.
- **Market category** — the frame of reference that makes our strengths obvious.
Apply the Crossing-the-Chasm check:
- If the buyer is a **pragmatist in a nascent category**, narrow to a beachhead niche and plan for whole-product completeness (integrations, services, proof, community).
- If the market is **mature**, take a defensible position inside an existing category. Do not invent a category unless the positioning work genuinely surfaces one — category-design rhetoric applied to crowded categories produces grandiose nonsense.
- If the positioning work **does** surface a new category, consider a Play Bigger overlay: point-of-view narrative, lightning-strike moment on the Stage 6 calendar. Name the overlay explicitly.
**Output of this stage:** one positioning statement (single paragraph) plus 3–5 differentiation pillars (short phrases, each tied to at least one proof point developed in Stage 3).
Stage 3 — Messaging stack
Structure: value proposition + proof points + objections, built on Moesta's JTBD forces of progress.
Identify 2–4 JTBD archetypes inside the ICP (sub-segments of buyers whose forces diverge). For each archetype, write:
- **Push** — the specific pain the buyer lives with today. What does a bad day look like?
- **Pull** — the specific outcome the new solution enables. Concrete beats abstract: "your next board meeting looks like X instead of Y."
- **Anxiety** — what the buyer fears about switching. Integration, vendor risk, internal politics, change management, regulatory exposure.
- **Habit** — the entrenched behavior that resists change. Existing tools, relationships, processes. The plan must give the buyer a credible way to dismount the habit.
Then, per archetype, land:
- One-sentence value proposition
- 3–5 proof points, each linked to evidence or to a Stage 2 pillar
- Top three objections with a one-sentence rebuttal each
Proof points map to Gartner's **validation** job; objections map to the anxiety-and-habit half of the forces model.
Stage 4 — Channel plan, argued from ICP and market structure
**This is the stage where the skill refuses to default to the SaaS playbook.**
Select **one primary channel archetype** and **one or two supporting channels** from the archetype catalog in `campaign-planning-research.md` → "Channel archetypes by market structure." Every selection is argued in prose — "we chose X because buyers in this ICP do Y at the moment of decision, and Stage 2 positioning lands hardest through Y."
Archetypes (full table and rationale in the research reference):
- Regulated enterprise → analyst relations + field sales
- Vertical regulated SMB → association partnerships + trade publications
- Specialized B2B services (including Conversint's own) → visible-expert content + referral networks
- Vertical software / dense community → conference circuits + community sponsorships
- Infrastructure / platform → channel/reseller + partner ecosystem
- True mass-market B2B → search + paid social + content SEO (the hyperscale playbook — only when preconditions genuinely hold)
- Early category / pre-pragmatist → POV thought leadership + visionary customer co-creation
A campaign may combine archetypes when the ICP has meaningfully distinct sub-segments. Name the combination explicitly; do not leave it implicit.
**ABM overlay** — when the scoping answer was yes:
- Tier 1 (1:1) — 5–25 strategic accounts with custom plays and sales-and-marketing pairs
- Tier 2 (1:few) — 25–200 accounts clustered by attribute or vertical, shared playbooks with light customization
- Tier 3 (1:many) — balance of in-ICP TAM, reached via the primary archetype
Collapse tiers if the TAM is too small to populate them all.
**Map each selected channel to Gartner's six buying jobs** (problem identification, solution exploration, requirements building, supplier selection, validation, consensus creation). Every job should have at least one content piece or touch assigned. If any job is uncovered, call out the gap — consensus creation in particular is often neglected and is the job most responsible for stalled deals.
Stage 5 — Prospect sourcing (named-account research)
Translate the Stage 4 ABM overlay from "8–10 Tier 1 accounts of shape X" into a concrete, researched prospect list. Sales and business development (BD) should be able to act on each entry without re-doing the research.
**Volume.** Aim for **10–20 named accounts total**, weighted toward Tier 1 and the top of Tier 2. More than 20 collapses signal-to-noise quickly and exceeds the token budget; fewer than 10 leaves Tier 2 thinly populated. If the candidate pool is bigger than 20, sample down to a representative cross-section (sponsor, region, sub-segment) rather than chasing exhaustiveness — Patrick can re-run against a different sample later. If the in-ICP universe is genuinely tiny (under 10 accounts), say so and produce what fits; do not pad.
**Sourcing the candidate pool.** Before dispatching research, pull a candidate list from the channels named in the Stage 1 "where this buyer goes to decide":
- Nonprofits / regulated SMBs → Candid / GuideStar, association directories, conference speaker lists, trade-publication featured-customer indices.
- PE-backed operators → PE-firm portfolio pages, deal-tracker indices, M&A advisory commentary streams.
- Specialized B2B services and dense-community segments → conference attendee or speaker rosters, association member directories, podcast guest lists.
- Mass-market or platform plays → public-domain firmographic databases (Apollo, ZoomInfo) where a Conversint license is in place; otherwise SEC / Crunchbase indices and curated lists.
Cite the candidate-pool source in the plan's Source research section so the list is reproducible. Filter against Stage 1 firmographics + triggers **before** spending research budget on any single prospect — research on a non-fit is wasted spend.
**Per-prospect research checklist.** For each prospect on the final list, surface:
- **Company** — operating name, website, headquarters, one-line description.
- **Tier** — Tier 1 (1:1) or Tier 2 (1:few) from the ABM overlay, and the cluster name for Tier 2 (e.g., "Amulet portfolio," "Ohio operators," "Subsplash-coexistence churches").
- **Segment fit** — which Stage 1 ICP slice and which Stage 3 JTBD archetype the prospect maps to, with the firmographic + technographic features that make the fit specific (not generic).
- **Trigger signals** — concrete, dated, sourced. Recent news (funding, leadership change, M&A, product launch), public hiring posts (especially roles aligned to the JTBD), tech-stack tells (job-post tooling mentions, public case studies, BuiltWith / Wappalyzer when applicable), regulatory or compliance events, public pain points (executive interviews, RFPs, conference talks, board minutes). Cite the source URL inline. **Also check the value-signal catalog** (`references/org/value-signals.md`) — when the prospect fits a named signal (e.g., Signal 1 hiring into high-exposure roles, Signal 2 owner-operator concentration, Signal 7 customer-asymmetry-collapse exposure), call it out by signal name with the supporting evidence. **No signal beats a fabricated one** — if research turns up nothing, mark the prospect "thin signal — re-prioritize" rather than padding.
- **Contact angle** — named contact aligned to the JTBD archetype (e.g., new chief executive officer (CEO) inside a 3–7 year hold) plus a one-sentence opening that ties a specific signal to the Stage 2 differentiation pillar most relevant to this prospect. The opening must be specific enough that it could not credibly be sent to any other prospect on the list.
- **Last researched** — date of the research pass, so the prospect list ages visibly.
**Quality gate.** A prospect entry is complete only when all six fields are filled and the trigger signal cites at least one specific dated source. Drop the prospect from the final list if research cannot meet that bar — do not pad to hit the count target. **10 well-researched prospects beat 20 thin ones.**
**Orchestration — parallel subagents.** Per-prospect research is independent and parallelizable; run it as a single fan-out so the main thread stays out of the search churn.
- **Pattern.** Spawn one sonnet `Agent` subagent per prospect when the list is ≤10, or batch into groups of 3–5 prospects per subagent when the list is 11–20. Keep total subagent count to 5–10 — beyond that the main thread spends more time aggregating than researching.
- **Per-subagent prompt.** Pass (a) the Stage 1 ICP definition, (b) the Stage 3 JTBD archetypes, (c) the Stage 2 differentiation pillars (so the contact angle ties back to the plan rather than being invented), (d) the prospect (or batch), (e) the six-field output format, and (f) a hard research budget — **4–6 web fetches per prospect, no more**. Tell the subagent to return what it found, not what it could not find — flag thin signal explicitly rather than embellish.
- **Rate-limiting.** When dispatching parallel subagents in a single message, cap concurrent in-flight at ~5 per fan-out cycle; the global rule (cap concurrent in-flight, throttle requests-per-minute, exponential backoff with jitter on 429) applies.
- **Fan-in.** The main thread aggregates subagent outputs into the prospect-list section. Resolve conflicts (e.g., two subagents disagree on a sponsor's portfolio composition) by re-checking the cited source URL — the URL is the arbiter, not the subagent's claim about it.
**Format in the markdown.** Tier 1 prospects render as one **H3 block per prospect** with the full six-field detail in prose (sales/BD reads it as a brief). Tier 2 prospects render as a **table** keyed by company, with shorter cells — Tier 2 has lighter customization in the ABM overlay, so the format follows. Group Tier 2 rows by cluster name from field 2.
The worked example at [`references/prospect-list-example.md`](references/prospect-list-example.md) shows both formats in full and is the authoritative template; mirror its structure.
**Roll-back into other sections.** Once the prospect list is locked, update the Stage 6 activation calendar to name the specific Tier 1 accounts in Week 1 / Week 4 outbound activities (replacing generic "first 10 Tier 1 outreach" lines with the actual names). Confirm the Tier 1 / Tier 2 counts in the Stage 4 ABM overlay match what was actually sourced — if research dropped a candidate, the plan's tier counts move with it.
Stage 6 — Activation calendar and success metrics
30-60-90 cadence by default. Each week carries at most 2–3 named activities; the calendar is for scheduling, not for padding the document.
- **Days 0–30 — Discovery and build.** Positioning message-tested with 3–5 ICP-match conversations (buyers, customers, advisors). Foundational assets produced (anchor content, ICP list, outbound sequence, quarter's event calendar). First campaign activity live by day 30.
- **Days 31–60 — Run and iterate.** Content velocity established. First signals on channel fit. One instrumented experiment (two outbound variants, or one event vs. one content piece) to feed Stage 6 optimization.
- **Days 61–90 — Evidence and adjust.** Convert activity into evidence. End-of-quarter retrospective: keep, cut, double on.
If the user chose a different horizon, scale proportionally — the discovery / run / evidence phases keep the same shape.
**Success metrics are chosen per channel archetype.** The menu lives in the research reference (Stage 5 section); copy the relevant metric set for the selected archetype and the ABM overlay (if present) into the plan. **Vanity metrics do not appear in the success-metrics section** — impressions, raw follower counts, and page views untied to a conversion event can be tracked operationally but do not belong in a plan's success metrics.
When to delegate to subagents
Spawn a sonnet `Agent` subagent when the work is genuinely specialized and the main thread would be churning on a tangent, or when work is naturally parallelizable. Useful patterns:
- **Stage 5 prospect research (the standard fan-out).** One subagent per prospect (or batched group of 3–5) for company-specific signal research. This is the load-bearing parallel pattern of the skill — see Stage 5 above for the full prompt template, the per-prospect research budget cap (4–6 fetches), and the fan-in protocol.
- **Positioning pressure test** — when the Dunford canvas feels weak or the competitive alternatives list looks shallow, dispatch a subagent with the research brief and draft positioning, ask it to argue the most plausible competing positioning statements and stress-test ours against them.
- **Channel strategy second opinion** — when the market structure is ambiguous (e.g., a vertical SaaS in a lightly-regulated industry could reasonably take several archetypes), dispatch a subagent with the ICP and have it argue the case for the alternative archetype before you finalize.
- **Competitive countermoves** — if a named competitor is known to respond aggressively, dispatch a subagent to sketch the likely counter-campaign and what our plan needs to pre-empt.
Do not dispatch subagents when the answer is already clear from the research brief. Subagents are for leveling up quality and bounding token spend on parallelizable work, not for performative parallelism.
Checkpoint before writing
There are two checkpoints. Both are batched single turns — do not stop more often than this.
Checkpoint 1 — before the prospect-research fan-out
Stage 5 spends the largest token budget of any stage. Confirm before dispatching subagents:
- The Stage 4 ABM tier counts (so subagent count is bounded).
- The candidate pool source(s) and any names already on the candidate list.
- A draft Tier 1 and Tier 2 split (named accounts and clusters).
- *"Ready to dispatch prospect research, or would you like to adjust the candidate pool first?"*
Do not dispatch the fan-out until the user confirms. If the candidate pool is wrong (mistargeted accounts, missing clusters, wrong tier assignment), fixing it here saves wasted research budget.
Checkpoint 2 — before writing the file
After Stages 1–6 are complete, output a concise summary and ask: *"Ready to write the plan, or would you like to adjust anything first?"*
The summary should include:
- The positioning statement (one paragraph)
- The 3–5 differentiation pillars (one line each)
- The primary and supporting channel archetypes with one-sentence rationale each
- The ABM overlay shape (if present)
- The locked prospect count (Tier 1 / Tier 2) and a single-line per Tier 1 prospect (company + sharpest signal)
- The first three named activities on the activation calendar
Do not write the file until the user confirms. If the user adjusts, fold the adjustment into the relevant stage and re-summarize.
Output
Markdown only. No DOCX. No output-format picker — these are internal plans.
Output path
See `references/output-paths.md` for the canonical path table.
``` research-thought-leadership/<topic-slug>/<filename>.md ```
Where:
- `<topic-slug>` is the short kebab-case subject label for the topic folder (mirror existing sibling layout: `ai-seo/`, `compounding-ai/`, `customer-support/`, `lead-gen/`). Create the folder if it does not exist. If the source research already lives in a topic folder, reuse that folder.
- `<filename>` is `campaign-plan` for the primary plan, or `campaign-<descriptor>` for variants (`campaign-outbound`, `campaign-abm`, `campaign-conference-circuit`, etc.). Confirmed in the scoping batch.
**Filename rule:** no date, no version suffix. Git commit history is the version record. Overwrite in place on re-run.
Markdown section structure
Every campaign plan follows this section order:
- **Title** (H1) — `# Campaign plan: <topic or variant name>`
- **One-paragraph abstract** — what this campaign targets, the primary channel archetype, the 90-day shape. Two or three sentences. Written last.
- **ICP and market-structure recap** (H2) — Stage 1 output.
- **Positioning statement and differentiation pillars** (H2) — Stage 2 output. Positioning statement as a pull-quote-style block; pillars as a bulleted list.
- **Messaging stack** (H2) — Stage 3 output. Subsection (H3) per JTBD archetype. Each subsection carries the four forces, the value proposition, proof points, and objections + rebuttals.
- **Channel plan** (H2) — Stage 4 output. Named primary and supporting archetypes, argued rationale, table mapping each selected channel to Gartner's six buying jobs. ABM overlay subsection (H3) if present (tier shape and counts only — the named accounts live in section 7).
- **Prospect list** (H2) — Stage 5 output. Tier 1 prospects render as one **H3 block per prospect** with the full six-field detail in prose. Tier 2 prospects render as a **table** keyed by company, grouped by cluster name, with shorter cells. Section ends with a one-line "Last research pass: YYYY-MM-DD" stamp covering the whole list. The worked example at [`references/prospect-list-example.md`](references/prospect-list-example.md) is the authoritative format template.
- **Activation calendar** (H2) — Stage 6 output. 30/60/90 subsections (H3) with weekly granularity where it adds signal and monthly granularity where it does not. Week 1 / Week 4 outbound activities reference Tier 1 prospects by name.
- **Success metrics** (H2) — archetype-specific metrics from the research reference. Include the ABM overlay metrics if present.
- **Open questions and assumptions** (H2) — explicit list of anything the plan assumes that needs validation, and the single next action to validate each.
- **Source research** (H2) — link to the upstream `<topic>-research.md`, the candidate-pool sources cited in Stage 5, and any other briefs that informed the plan.
Save and commit
After writing the markdown:
```bash scripts/commit-md-to-main.sh \ "<absolute path to the .md just written>" \ "Update campaign plan: <topic or variant name>" ```
Follow `references/skill-operating-standards.md` and `references/output-paths.md` for commit behavior and Drive boundaries. Surface the `GitHub URL:` printed by the commit helper as the primary result for the user.
**Do not auto-invoke `/gdrive`.** Drive upload is user-driven.
Campaign inventory (optional secondary output)
If the repo has a campaign inventory sheet configured (same `gws` pattern as `/crm` and `/gmail`), append a row for this plan. Detection:
- Look for `config/campaign-inventory.json` at the repo root (twin of `config/crm.json`).
- If absent, skip the inventory write silently. Do not block on it and do not create the sheet ad hoc — sheet creation is a separate bootstrap step Patrick will run alongside `/market-research`.
When the config exists, expected schema (columns — confirm against the actual sheet header on first write):
- `topic` — kebab-case topic slug
- `campaign_variant` — file stem (`campaign-plan`, `campaign-outbound`, etc.)
- `plan_path` — repo-relative path to the markdown
- `plan_url` — GitHub URL returned by the commit helper
- `source_research_path` — path to the upstream research brief
- `target_segment` — one-line ICP summary
- `primary_channel_archetype` — the Stage 4 primary
- `abm_overlay` — `yes` / `no`
- `tier1_prospect_count` — Tier 1 prospects locked in Stage 5
- `tier2_prospect_count` — Tier 2 prospects locked in Stage 5
- `prospect_list_last_researched` — date of the most recent Stage 5 research pass
- `launch_date` — planned day-0 date
- `status` — `drafted` / `in-flight` / `complete` / `archived`
- `last_updated` — timestamp written by the helper
Implementation pattern: add `lib/campaign_inventory.py` wrapping `gws` via `gws_auth.env()` (follow `lib/crm.py` exactly — the `_gws` helper handles the `Using keyring backend:` preamble and body passing). Always surface the sheet URL in the confirmation when the write succeeds, mirroring the `crm.SPREADSHEET_URL` rule in `CLAUDE.md`.
Voice and integrity defaults
- The client-deliverable voice rules in `references/conversint-brand.md` do not apply — these are internal plans. Write in plain, direct prose; the audience is Patrick and the Conversint team.
- The banned-terms list (no "Readiness Assessment" / "Strategic Workshop") still applies when the plan describes a Conversint offering.
- Expand every acronym on first use: firmographics, TAM, SAM, ICP, JTBD, ABM, POV, MQL, SQL, etc.
- Distinguish confirmed facts from assumptions. The "Open questions and assumptions" section is where assumptions live, with the single next action to validate each.
- Use `references/campaign-planning-research.md` as the anchor for any methodology question you encounter mid-run. If the anchor is silent on a question, surface it to Patrick rather than invent an answer.