research-synthesis
Consolidate mixed discovery evidence into one durable, discovery-ready
synthesis: surface converging themes, contradictions, and gaps — then, when jobs
exist, judge what the evidence says about each one, without overstating
certainty. This is the PM's digest-the-mess machine: real client input is
spectacular but chaotic, and downstream agents can only be as good as how well
it is organised for them.
This skill consumes job knowledge; it never mints or rewrites it.
jobs-to-be-done is the single path for creating, refining, or superseding
jobs — even when the evidence on the table screams for a rewrite.
Framing: jobs when they exist, greenfield when they don't
- Jobs exist (
docs/product/jtbd/ has active jobs): they are the required
framing. Read them; preserve their wording verbatim. The synthesis renders a
job verdict per active job in scope.
- Greenfield (no jobs yet — day-one discovery): synthesize anyway. The
primary output becomes converging themes and raw new-job signals, and the
synthesis routes straight to
jobs-to-be-done to mint the first jobs from
them. Guard the drift risk explicitly: a greenfield synthesis organises
evidence for job creation — it does not quietly become the product's list of
needs.
Where it writes
docs/product/research/<YYYY-MM-DD>-<slug>.md — one append-only file per
synthesis run, in the target repo (repo-first-and-always; a Cowork folder is a
valid target, never a blocker). Never edit or delete a previous run — a
superseding synthesis says so in its own header and points back. This is the
stable citation target: PRDs, jobs, and plans cite
research/2026-07-24-onboarding forever.
docs/product/context.md Digest — a 2–4 line summary of the run plus a
pointer to the research file, so the one file every agent reads stays current
without bloating.
- Evidence not yet in
docs/product/input/ that you pulled from a connector
(Notion, Granola, Slack, ops API) is staged verbatim first as
input/<YYYY-MM-DD>-<source>-pulled/, then synthesized from there — per the
contract, skills never edit or delete batches. Pasted evidence works the same;
never block on a connector.
- No target repo/folder at all → deliver the synthesis conversationally and
offer to save; no durable claims.
Inputs
- The research question, opportunity area, or decision the synthesis supports.
docs/product/jtbd/ (framing, when present) and context.md (glossary — use
its settled terms; flag term drift you notice, don't silently coin new ones).
- Evidence: un-ingested
input/ batches, pasted notes, staged connector pulls.
- Optional: hypotheses or segment assumptions worth testing. (No personas as
framing — the A-Team works situation-and-struggle, not demographics.)
Outputs — the synthesis file
Use references/research_synthesis_input_template.md (same section order):
research question · input jobs (ids + verbatim headlines) · source inventory ·
evidence-strength notes · converging themes · contradictions · gaps ·
frequency × impact matrix · job verdicts · new-job signals · discovery
questions · handoff. Plus, A-Team-specific:
sources: frontmatter tracing every batch/file the run consumed, so a
reviewer can audit what you were told versus what you inferred.
- Job verdict per in-scope active job —
supports / challenges /
suggests refinement — citing the specific evidence. The job files stay
untouched: verdicts are routed to jobs-to-be-done (REVIEW), which owns any
confidence change or superseding rewrite.
- New-job signals: recurring struggles, workarounds, switching behavior
that fit no input job. Recorded raw, with source and why they smell like a
different job — explicitly not job statements.
Workflow
Use references/research-synthesis-framework.md for the full method. The shape:
- Frame. Confirm the research question. Load active jobs (or declare
greenfield mode out loud). Load the glossary.
- Gather & stage. Collect un-ingested
input/ batches and pasted
evidence; stage any connector pulls verbatim into input/ first.
- Normalize. Record source type, segment, timing, and caveats per source
before combining, so strength labels stay honest.
- Theme. Group repeated findings into converging themes, keeping the
supporting evidence visible instead of flattening it away.
- Contradict. Call out contradictions, segment differences, and outliers
explicitly; never smooth them into false agreement — they become discovery
questions and ledger entries.
- Label strength qualitatively (
Strong / Moderate / Directional /
Unknown) and explain each label. No numeric scores; if numbers are absent,
do not fabricate them.
- Prioritize on the frequency × impact matrix — qualitatively.
High-frequency + high-impact leads; low-frequency + high-impact stays
attached to its segment; high-frequency + low-impact is quality-of-life;
low-frequency + low-impact is noted and deprioritized.
- Judge (jobs mode): render each job verdict with its evidence. Keep job
wording untouched.
- Signal (both modes): collect raw new-job signals.
- Draft the synthesis file in template order, ending with the discovery
questions that follow from contradictions and gaps.
- Read-back — mandatory before writing. The research file and the
context.md digest note are durable: present both for correction in this
session, then write and commit (one commit, message naming what the run
found — e.g.
docs(research): onboarding synthesis — 03 challenged, 2 new signals).
- Route. Challenged/refinement verdicts and new-job signals →
jobs-to-be-done. All-supporting verdicts → discovery-plan (unknowns
into a plan) or prd-writer (scope is concrete). Close with Next likely
skill(s) · What to pass forward · Suggested next prompts.
No human present
Synthesis itself needs no grilling, but the read-back gate does need a human.
With nobody present: produce the full synthesis in your report only, write
nothing durable, and state that the run awaits review — an escalation is a
defined output, not a failure. Never commit an unreviewed synthesis: it would
become audit-grade evidence nobody audited.
Examples
- Input:
examples/example-input.md · Output: examples/example-output.md
1---2name: research-synthesis3description: research-synthesis4---56# research-synthesis78Consolidate mixed discovery evidence into one durable, discovery-ready9synthesis: surface converging themes, contradictions, and gaps — then, when jobs10exist, judge what the evidence says about each one, without overstating11certainty. This is the PM's digest-the-mess machine: real client input is12spectacular but chaotic, and downstream agents can only be as good as how well13it is organised for them.1415This skill **consumes** job knowledge; it never mints or rewrites it.16`jobs-to-be-done` is the single path for creating, refining, or superseding17jobs — even when the evidence on the table screams for a rewrite.1819## Framing: jobs when they exist, greenfield when they don't2021- **Jobs exist** (`docs/product/jtbd/` has `active` jobs): they are the required22 framing. Read them; preserve their wording verbatim. The synthesis renders a23 **job verdict** per active job in scope.24- **Greenfield** (no jobs yet — day-one discovery): synthesize anyway. The25 primary output becomes converging themes and **raw new-job signals**, and the26 synthesis routes straight to `jobs-to-be-done` to mint the first jobs from27 them. Guard the drift risk explicitly: a greenfield synthesis organises28 evidence *for job creation* — it does not quietly become the product's list of29 needs.3031## Where it writes3233- **`docs/product/research/<YYYY-MM-DD>-<slug>.md`** — one append-only file per34 synthesis run, in the target repo (repo-first-and-always; a Cowork folder is a35 valid target, never a blocker). Never edit or delete a previous run — a36 superseding synthesis says so in its own header and points back. This is the37 stable citation target: PRDs, jobs, and plans cite38 `research/2026-07-24-onboarding` forever.39- **`docs/product/context.md` Digest** — a 2–4 line summary of the run plus a40 pointer to the research file, so the one file every agent reads stays current41 without bloating.42- Evidence not yet in `docs/product/input/` that you pulled from a connector43 (Notion, Granola, Slack, ops API) is **staged verbatim first** as44 `input/<YYYY-MM-DD>-<source>-pulled/`, then synthesized from there — per the45 contract, skills never edit or delete batches. Pasted evidence works the same;46 never block on a connector.47- No target repo/folder at all → deliver the synthesis conversationally and48 offer to save; no durable claims.4950## Inputs5152- The research question, opportunity area, or decision the synthesis supports.53- `docs/product/jtbd/` (framing, when present) and `context.md` (glossary — use54 its settled terms; flag term drift you notice, don't silently coin new ones).55- Evidence: un-ingested `input/` batches, pasted notes, staged connector pulls.56- Optional: hypotheses or segment assumptions worth testing. (No personas as57 framing — the A-Team works situation-and-struggle, not demographics.)5859## Outputs — the synthesis file6061Use `references/research_synthesis_input_template.md` (same section order):62research question · input jobs (ids + verbatim headlines) · source inventory ·63evidence-strength notes · converging themes · contradictions · gaps ·64frequency × impact matrix · job verdicts · new-job signals · discovery65questions · handoff. Plus, A-Team-specific:6667- **`sources:` frontmatter** tracing every batch/file the run consumed, so a68 reviewer can audit what you were told versus what you inferred.69- **Job verdict** per in-scope active job — `supports` / `challenges` /70 `suggests refinement` — citing the specific evidence. The job files stay71 untouched: verdicts are routed to `jobs-to-be-done` (REVIEW), which owns any72 confidence change or superseding rewrite.73- **New-job signals**: recurring struggles, workarounds, switching behavior74 that fit no input job. Recorded raw, with source and why they smell like a75 different job — explicitly **not** job statements.7677## Workflow7879Use `references/research-synthesis-framework.md` for the full method. The shape:80811. **Frame.** Confirm the research question. Load active jobs (or declare82 greenfield mode out loud). Load the glossary.832. **Gather & stage.** Collect un-ingested `input/` batches and pasted84 evidence; stage any connector pulls verbatim into `input/` first.853. **Normalize.** Record source type, segment, timing, and caveats per source86 before combining, so strength labels stay honest.874. **Theme.** Group repeated findings into converging themes, keeping the88 supporting evidence visible instead of flattening it away.895. **Contradict.** Call out contradictions, segment differences, and outliers90 explicitly; never smooth them into false agreement — they become discovery91 questions and ledger entries.926. **Label strength** qualitatively (`Strong` / `Moderate` / `Directional` /93 `Unknown`) and explain each label. No numeric scores; if numbers are absent,94 do not fabricate them.957. **Prioritize** on the frequency × impact matrix — qualitatively.96 High-frequency + high-impact leads; low-frequency + high-impact stays97 attached to its segment; high-frequency + low-impact is quality-of-life;98 low-frequency + low-impact is noted and deprioritized.998. **Judge** (jobs mode): render each job verdict with its evidence. Keep job100 wording untouched.1019. **Signal** (both modes): collect raw new-job signals.10210. **Draft** the synthesis file in template order, ending with the discovery103 questions that follow from contradictions and gaps.10411. **Read-back — mandatory before writing.** The research file and the105 context.md digest note are durable: present both for correction in this106 session, then write and commit (one commit, message naming what the run107 found — e.g. `docs(research): onboarding synthesis — 03 challenged, 2 new108 signals`).10912. **Route.** Challenged/refinement verdicts and new-job signals →110 `jobs-to-be-done`. All-supporting verdicts → `discovery-plan` (unknowns111 into a plan) or `prd-writer` (scope is concrete). Close with **Next likely112 skill(s)** · **What to pass forward** · **Suggested next prompts**.113114## No human present115116Synthesis itself needs no grilling, but the read-back gate does need a human.117With nobody present: produce the full synthesis **in your report only**, write118nothing durable, and state that the run awaits review — an escalation is a119defined output, not a failure. Never commit an unreviewed synthesis: it would120become audit-grade evidence nobody audited.121122## Examples123124- Input: `examples/example-input.md` · Output: `examples/example-output.md`