PMM Research Brief — the research front door
A user rarely hands you clean parameters. They dump a product, ten features, and a
goal in one breath. Your job is to distill that ramble into a complete research plan
the pipelines can run: extract the product, infer the ICP and market, and scope every
research discipline with named entities — so pmm-research-desk can execute the full
sweep and the rest of PMM OS hydrates from real evidence.
Research is comprehensive and mandatory, not pick-and-choose. An impeccable launch
needs customer + competitive + market + pricing + channels + analyst/KOL + events +
GTM/launch motion + product — all of it, the way a real PMM works. You decide each
desk's scope and the run order; you never decide whether to skip a discipline.
This runs before research and strategy. It produces the plan; it doesn't (yet)
produce positioning or a launch — that comes after the desks return evidence.
Workflow
- Capture the input — the user's description plus any docs/URL/repo they point to.
Read
.agents/product-marketing.md if it exists. Don't ask for what's already there.
- Distill the Product Brief from
../product-marketing-os/assets/research-brief-template.md:
product name, one-line what-it-is, what it does, key features (deduped to capabilities),
ICP hypothesis (segment · seniority · company type), market/category, the
goal/motion (launch? GTM? positioning?), constraints, and explicit unknowns.
Infer where reasonable, but mark every inference as a hypothesis to verify — never
assert invented facts (that's the whole point of researching them).
- Set the Scope — adaptively. Before planning desks, decide which scope dimensions
actually constrain this product and at what granularity, per
../product-marketing-os/references/research-scope-model.md:
geography (county → metro → region → national → international — name the places when
tight), timeframe & seasonality (the launch window + which quarters carry the
signal; annual vs one-off), exhaustiveness targets (events ≥ 12–15 in-geo,
competitors = the full set, channels/KOLs ≥ 10), segments (B2C/B2B), and
constraints (budget, regulatory). These are user/strategy-dependent — a local
service business is one county; a global SaaS is "international, events cluster by
region." Ask the user the few that genuinely change the research (e.g. "Which
geography and time of year should events cover?") rather than guessing; infer the rest
and mark inferences. Write a ## Scope block into .agents/research/brief.md — every
desk reads it.
- Build the Research Plan — distill, then scope ALL of it. The plan is a complete,
mandatory sweep across all ten desks
(
../product-marketing-os/references/research-desks/README.md):
product, customer, competitive, market, pricing, channels, analyst/KOL, events,
reviews, and GTM/launch motion. For each desk you scope it with named entities (candidate
competitors, the segment, the market, the events, the specific questions) and set a run
order by dependency — but you do not skip any. This is where a ramble becomes engine
parameters: you name "research Amplitude, Mixpanel, PostHog" so the Competitive Desk has targets,
"segment = PMs at self-serve SaaS" so the Customer Desk is scoped, and "PM meetups +
SaaStr + data conferences" so the Events Desk knows where to look. Events is always
in — the question is which events, never whether. Each desk also inherits the
## Scope (geo · timeframe · exhaustiveness target) from step 3.
- Pass the Plan gate — hypothesis + issue tree BEFORE any engine call. Research here
is hypothesis-driven, not exploratory drift (the standard:
deliverable-standard §1 #4–6 and §5 gate 1).
Precondition — ground the product first. If the product has a codebase, a live app, or
founder artifacts (demo scripts, decks, planning sheets), run
pmm-product-context Stage 0 and produce
.agents/research/product-grounding.md before writing the hypothesis — a day-1 hypothesis
about a mis-defined product poisons every desk downstream. The hypothesis and issue tree are
written about the grounded product (shipped capabilities, real gating, the
intent-vs-implementation gaps), never about the founder's unverified description.
Write two artifacts into .agents/research/:
hypothesis.md — the day-1 hypothesis: "Likely answer: X, because A/B/C" plus
the disconfirming evidence that would kill it, named. As desk findings land they
score supporting / refuting / neutral against it, and pivots are logged in this
same file — append, never overwrite — so a defensible current-best-answer exists at
every point of the run.
issue-tree.md — a MECE issue tree decomposing the goal: 2–4 branches per
level, open what/how/why questions, leaves testable by an engine call. Score every
leaf priority = impact-on-answer × evidence-availability, then write the depth
allocation: deep leaves get the multi-engine fan-out, low-priority leaves get one
quick pass, and de-scoped leaves are named as "not investigated" — never silently
dropped.
Every desk run maps its engine calls to tree leaves. No engine call happens before
both files exist — this is the pipeline's Plan gate, and pmm-research-desk checks it.
- Write
.agents/research/brief.md (the Product Brief + ## Scope + Research Plan)
and seed the context spine via pmm-product-context.
- Confirm, then run. Research can be long and (for some sources) metered, so show the
brief + scope + plan and the desks you'll run, in priority order. On "go" (or if the user
already said run it), hand each planned desk to
pmm-research-desk highest-priority first.
Desks run as a sequence of sprints, not one batch: each desk opens its own
mini-hypothesis, and closes by appending re-scoping findings to
.agents/research/carry-forward.md, which the next desk reads at scope time (see the
README's Desk sprints rule) — so the run order you set is also the learning order.
As evidence accrues in the ledger, the hard gate on downstream strategy is satisfied.
Output
- Product Brief — the distilled understanding, hypotheses marked.
## Scope — geography (+ granularity) · timeframe/seasonality · exhaustiveness
targets · segments · constraints, adapted to this product. The desks filter and pursue
against this.
- Research Plan — a ranked desk-by-desk table: relevance · scoped entities · key
questions · which engines/sources. This is the bridge from ramble → pipeline.
- The Plan-gate artifacts —
.agents/research/hypothesis.md (day-1 hypothesis +
disconfirming evidence + the append-only pivot log) and .agents/research/issue-tree.md
(the scored MECE tree + depth allocation). No desk may fire an engine call before both exist.
- The queued desk runs (or the executed ones, if the user said go).
Worked example (a real ramble → brief + plan)
"I have a product called Plotline — self-serve product analytics PLUS a shared metrics
layer. Any PM can ask a product question in plain English and get the funnel or cohort
in minutes instead of filing a ticket for the data team and waiting days. It keeps one
definition of 'activated' so teams stop arguing about whose number is right. I want a
successful launch + GTM."
Brief: Plotline — self-serve product analytics + a shared metrics layer. Core job:
stop waiting days in a data-team queue for product answers (plain-English questions →
funnels/cohorts in minutes, no SQL) + one shared definition of activation so every team
reads the same number. ICP hypothesis: PMs/PMMs at product-led SaaS teams without a large
data org; possible motion to heads of data (deflect the self-serve question queue). Market:
product analytics. Goal: launch + GTM. Unknowns: PLG-only vs. also sales-assisted, pricing,
the real competitive set, the primary channel.
Scope (ask the user the few that move the research): Geography — the product is
online (PLG), so channels skew digital/global; but field events cluster by city, so
ask "which metros?" (e.g. SF Bay Area, NYC, Austin). Timeframe — launch
window + the conference calendar (Q3 SaaS conferences, Q1 planning cycles). Exhaustiveness —
events ≥ 15 in-geo, the full competitor set (not top-3), channels/KOLs ≥ 10.
Segments — PMs/PMMs at self-serve SaaS (primary) + heads of data (secondary).
Plan (all ten, scoped — nothing skipped):
- Product 🟢 — confirm Plotline's capabilities/differentiators from its docs.
- Customer 🔴 — PM/PMM pains around data-team queues (r/ProductManagement, r/analytics, PM Slack communities); + head-of-data pains for the deflection angle.
- Competitive 🔴 — Amplitude, Mixpanel, PostHog, Heap, June, Pendo, dashboards-in-BI (Looker, Metabase) (incl. their self-serve/AI-query features).
- Market 🔴 — product-analytics category; why-now: data-team backlogs, AI natural-language querying, dashboard sprawl.
- Pricing 🟡 — Amplitude / Mixpanel / PostHog free-tier + MTU/event-based models.
- Channels 🔴 — r/ProductManagement, Product Hunt, LinkedIn, PM newsletters (Lenny's), data-tool communities.
- Analyst/KOL 🟡 — PM/analytics creators (Lenny Rachitsky, product-analytics voices on LinkedIn/YouTube).
- Events 🔴 — product-management meetups (city), SaaStr, ProductCon, analytics/data conferences, launch-week showcases; B2B if selling to data leads: dbt Coalesce, Data Council — where you can table, sponsor, or speak.
- Reviews 🔴 — G2/Capterra/TrustRadius pages for Amplitude, Mixpanel, PostHog, Heap, Pendo (dislike fields + switching reviews); Glassdoor for org-health CI on the top 2.
- GTM/Launch 🔴 — how Amplitude/Mixpanel/PostHog launched (Product Hunt, open-source communities, free tiers), PLG-vs-sales motion, activation moment, launch-day plan.
Run order: Product → Customer → Competitive → Reviews → Channels/Events/GTM → Market/Pricing/KOL.
The full sweep — every discipline a PMM owns plus the GTM/launch motion. None skipped.
Hand off to
PMM OS is a chain, not a menu — don't dead-end at a plan. Pass the work on:
1---2name: pmm-research-brief3description: PMM Research Brief — the research front door4---56# PMM Research Brief — the research front door78A user rarely hands you clean parameters. They dump a product, ten features, and a9goal in one breath. Your job is to **distill that ramble into a complete research plan10the pipelines can run**: extract the product, infer the ICP and market, and **scope every11research discipline** with named entities — so `pmm-research-desk` can execute the full12sweep and the rest of PMM OS hydrates from real evidence.1314Research is **comprehensive and mandatory**, not pick-and-choose. An impeccable launch15needs customer + competitive + market + pricing + channels + analyst/KOL + **events** +16**GTM/launch motion** + product — all of it, the way a real PMM works. You decide each17desk's *scope* and the *run order*; you never decide whether to skip a discipline.1819This runs **before** research and strategy. It produces the plan; it doesn't (yet)20produce positioning or a launch — that comes after the desks return evidence.2122## Workflow23241. **Capture the input** — the user's description plus any docs/URL/repo they point to.25 Read `.agents/product-marketing.md` if it exists. Don't ask for what's already there.262. **Distill the Product Brief** from27 [`../product-marketing-os/assets/research-brief-template.md`](../product-marketing-os/assets/research-brief-template.md):28 product name, one-line what-it-is, what it does, key features (deduped to capabilities),29 **ICP hypothesis** (segment · seniority · company type), **market/category**, the30 **goal/motion** (launch? GTM? positioning?), constraints, and **explicit unknowns**.31 Infer where reasonable, but **mark every inference as a hypothesis to verify** — never32 assert invented facts (that's the whole point of researching them).333. **Set the Scope — adaptively.** Before planning desks, decide *which scope dimensions34 actually constrain this product* and at what granularity, per35 [`../product-marketing-os/references/research-scope-model.md`](../product-marketing-os/references/research-scope-model.md):36 **geography** (county → metro → region → national → international — name the places when37 tight), **timeframe & seasonality** (the launch window + which quarters carry the38 signal; annual vs one-off), **exhaustiveness targets** (events ≥ 12–15 in-geo,39 competitors = the full set, channels/KOLs ≥ 10), **segments** (B2C/B2B), and40 **constraints** (budget, regulatory). These are **user/strategy-dependent** — a local41 service business is one county; a global SaaS is "international, events cluster by42 region." **Ask the user the few that genuinely change the research** (e.g. "Which43 geography and time of year should events cover?") rather than guessing; infer the rest44 and mark inferences. Write a `## Scope` block into `.agents/research/brief.md` — every45 desk reads it.464. **Build the Research Plan — distill, then scope ALL of it.** The plan is a **complete,47 mandatory sweep across all ten desks**48 ([`../product-marketing-os/references/research-desks/README.md`](../product-marketing-os/references/research-desks/README.md)):49 product, customer, competitive, market, pricing, channels, analyst/KOL, **events**,50 **reviews**, and **GTM/launch motion**. For each desk you **scope it with named entities** (candidate51 competitors, the segment, the market, the events, the specific questions) and set a **run52 order** by dependency — but you **do not skip any**. This is where a ramble becomes engine53 parameters: you name "research Amplitude, Mixpanel, PostHog" so the Competitive Desk has targets,54 "segment = PMs at self-serve SaaS" so the Customer Desk is scoped, and "PM meetups +55 SaaStr + data conferences" so the Events Desk knows where to look. Events is **always**56 in — the question is *which* events, never *whether*. Each desk also inherits the57 `## Scope` (geo · timeframe · exhaustiveness target) from step 3.585. **Pass the Plan gate — hypothesis + issue tree BEFORE any engine call.** Research here59 is hypothesis-driven, not exploratory drift (the standard:60 [deliverable-standard §1 #4–6 and §5 gate 1](../product-marketing-os/references/deliverable-standard.md)).61 **Precondition — ground the product first.** If the product has a codebase, a live app, or62 founder artifacts (demo scripts, decks, planning sheets), run63 [`pmm-product-context` Stage 0](../pmm-product-context/SKILL.md) and produce64 `.agents/research/product-grounding.md` *before* writing the hypothesis — a day-1 hypothesis65 about a mis-defined product poisons every desk downstream. The hypothesis and issue tree are66 written **about the grounded product** (shipped capabilities, real gating, the67 intent-vs-implementation gaps), never about the founder's unverified description.68 Write two artifacts into `.agents/research/`:69 - **`hypothesis.md`** — the day-1 hypothesis: *"Likely answer: X, because A/B/C"* plus70 the **disconfirming evidence that would kill it**, named. As desk findings land they71 score **supporting / refuting / neutral** against it, and pivots are **logged in this72 same file — append, never overwrite** — so a defensible current-best-answer exists at73 every point of the run.74 - **`issue-tree.md`** — a **MECE issue tree** decomposing the goal: 2–4 branches per75 level, open what/how/why questions, leaves testable by an engine call. Score every76 leaf **priority = impact-on-answer × evidence-availability**, then write the depth77 allocation: deep leaves get the multi-engine fan-out, low-priority leaves get one78 quick pass, and de-scoped leaves are **named as "not investigated"** — never silently79 dropped.80 Every desk run maps its engine calls to tree leaves. **No engine call happens before81 both files exist** — this is the pipeline's Plan gate, and `pmm-research-desk` checks it.826. **Write `.agents/research/brief.md`** (the Product Brief + `## Scope` + Research Plan)83 and seed the context spine via `pmm-product-context`.847. **Confirm, then run.** Research can be long and (for some sources) metered, so show the85 brief + scope + plan and the desks you'll run, in priority order. On "go" (or if the user86 already said run it), hand each planned desk to `pmm-research-desk` highest-priority first.87 **Desks run as a sequence of sprints, not one batch**: each desk opens its own88 mini-hypothesis, and closes by appending re-scoping findings to89 `.agents/research/carry-forward.md`, which the next desk reads at scope time (see the90 README's *Desk sprints* rule) — so the run order you set is also the learning order.91 As evidence accrues in the ledger, the hard gate on downstream strategy is satisfied.9293## Output9495- **Product Brief** — the distilled understanding, hypotheses marked.96- **`## Scope`** — geography (+ granularity) · timeframe/seasonality · exhaustiveness97 targets · segments · constraints, adapted to this product. The desks filter and pursue98 against this.99- **Research Plan** — a ranked desk-by-desk table: relevance · scoped entities · key100 questions · which engines/sources. This is the bridge from ramble → pipeline.101- **The Plan-gate artifacts** — `.agents/research/hypothesis.md` (day-1 hypothesis +102 disconfirming evidence + the append-only pivot log) and `.agents/research/issue-tree.md`103 (the scored MECE tree + depth allocation). No desk may fire an engine call before both exist.104- The queued desk runs (or the executed ones, if the user said go).105106## Worked example (a real ramble → brief + plan)107108> *"I have a product called Plotline — self-serve product analytics PLUS a shared metrics109> layer. Any PM can ask a product question in plain English and get the funnel or cohort110> in minutes instead of filing a ticket for the data team and waiting days. It keeps one111> definition of 'activated' so teams stop arguing about whose number is right. I want a112> successful launch + GTM."*113114**Brief:** Plotline — self-serve **product analytics + a shared metrics layer**. Core job:115stop waiting days in a data-team queue for product answers (plain-English questions →116funnels/cohorts in minutes, no SQL) + one shared definition of activation so every team117reads the same number. ICP hypothesis: PMs/PMMs at product-led SaaS teams without a large118data org; possible motion to heads of data (deflect the self-serve question queue). Market:119product analytics. Goal: launch + GTM. *Unknowns: PLG-only vs. also sales-assisted, pricing,120the real competitive set, the primary channel.*121122**Scope (ask the user the few that move the research):** *Geography* — the product is123online (PLG), so channels skew digital/global; but **field events cluster by city**, so124ask "which metros?" (e.g. SF Bay Area, NYC, Austin). *Timeframe* — launch125window + the conference calendar (Q3 SaaS conferences, Q1 planning cycles). *Exhaustiveness* —126events ≥ 15 in-geo, the **full** competitor set (not top-3), channels/KOLs ≥ 10.127*Segments* — PMs/PMMs at self-serve SaaS (primary) + heads of data (secondary).128129**Plan (all ten, scoped — nothing skipped):**130- **Product** 🟢 — confirm Plotline's capabilities/differentiators from its docs.131- **Customer** 🔴 — PM/PMM pains around data-team queues (r/ProductManagement, r/analytics, PM Slack communities); + head-of-data pains for the deflection angle.132- **Competitive** 🔴 — Amplitude, Mixpanel, PostHog, Heap, June, Pendo, dashboards-in-BI (Looker, Metabase) (incl. their self-serve/AI-query features).133- **Market** 🔴 — product-analytics category; why-now: data-team backlogs, AI natural-language querying, dashboard sprawl.134- **Pricing** 🟡 — Amplitude / Mixpanel / PostHog free-tier + MTU/event-based models.135- **Channels** 🔴 — r/ProductManagement, Product Hunt, LinkedIn, PM newsletters (Lenny's), data-tool communities.136- **Analyst/KOL** 🟡 — PM/analytics creators (Lenny Rachitsky, product-analytics voices on LinkedIn/YouTube).137- **Events** 🔴 — product-management meetups (city), **SaaStr**, ProductCon, analytics/data conferences, launch-week showcases; B2B if selling to data leads: **dbt Coalesce, Data Council** — *where you can table, sponsor, or speak.*138- **Reviews** 🔴 — G2/Capterra/TrustRadius pages for Amplitude, Mixpanel, PostHog, Heap, Pendo (dislike fields + switching reviews); Glassdoor for org-health CI on the top 2.139- **GTM/Launch** 🔴 — how Amplitude/Mixpanel/PostHog launched (Product Hunt, open-source communities, free tiers), PLG-vs-sales motion, activation moment, launch-day plan.140141Run order: Product → Customer → Competitive → Reviews → Channels/Events/GTM → Market/Pricing/KOL.142The full sweep — every discipline a PMM owns plus the GTM/launch motion. None skipped.143144## Hand off to145146PMM OS is a chain, not a menu — don't dead-end at a plan. Pass the work on:147148- [`pmm-research-desk`](../pmm-research-desk/SKILL.md) — run each planned desk149- [`pmm-product-context`](../pmm-product-context/SKILL.md) — seed the context spine150- [`product-marketing-os`](../product-marketing-os/SKILL.md) — the full chain after evidence lands.