Research Gathering
Purpose
Assemble relevant research context for strategic sessions:
- •Collect sources by topic (competitive-analysis, pricing-strategy, etc.)
- •Filter by recency and expiry dates
- •Extract key insights and quotes
- •Prepare citation-ready references
- •Flag stale data requiring refresh
When to Use This Skill
Activate automatically when:
- •
strategy-sessionworkflow needs context for decision-making - •
content-draftingworkflow requires research backing - •User explicitly requests research on a topic
- •Building strategic memos requiring evidence
- •Planning features based on market insights
Research Topics
Supported strategic categories:
- •
competitive-analysis- Competitor capabilities, positioning, pricing - •
pricing-strategy- Pricing models, packaging, value perception - •
market-positioning- Market trends, customer segments, messaging - •
product-strategy- Feature prioritization, roadmap direction - •
customer-segmentation- Audience targeting, persona development - •
growth-strategy- Acquisition, retention, expansion tactics
Research Source Schema
Expected structure (from datasets/research/{topic}/{filename}.md):
--- title: "Source Title" kind: "file" | "url" | "note" topic: "strategic-category" url: "https://..." (if applicable) checksum: "sha256:..." added_utc: "YYYY-MM-DDTHH:MM:SSZ" expiry_date: "YYYY-MM-DD" author: "Author Name" (optional) published_date: "YYYY-MM-DD" (optional) tags: ["keyword1", "keyword2"] --- # Source Title ## Key Insights - Insight 1 - Insight 2 ## Strategic Applications - How this informs decisions - Relevant use cases ## Citations / Quotes > "Verbatim quote for future citation" > — Author, Publication (Date) ## Related Internal Links - [Meeting notes](datasets/meetings/...) - [Epic](datasets/product/epics/...)
Gathering Process
1. Determine Topic and Filters
Inputs:
- •
topic: Strategic category (required) - •
max_age_days: Maximum age of sources (optional, default: varies by type) - •
include_expired: Whether to include expired sources (default: false) - •
keywords: Additional keyword filter (optional)
Expiry guidelines:
| Source Type | Default Max Age | Rationale |
|---|---|---|
| Frameworks | 365-730 days (1-2 years) | Conceptual models change slowly |
| Market data | 90-180 days (3-6 months) | Markets evolve quickly |
| Competitor intel | 180-365 days (6-12 months) | Products change, pricing shifts |
| Customer insights | 180-365 days (6-12 months) | Needs evolve over time |
2. Collect Research Files
Scan path:
datasets/research/{topic}/**/*.md
Use Glob to find sources:
Glob pattern: datasets/research/{topic}/**/*.md
Example:
Topic: competitive-analysis → Glob: datasets/research/competitive-analysis/**/*.md
3. Filter by Recency and Expiry
For each source file:
A. Read frontmatter:
added_utc: "YYYY-MM-DDTHH:MM:SSZ" expiry_date: "YYYY-MM-DD"
B. Calculate age:
age_days = current_date - added_utc.date
C. Check expiry:
If expiry_date exists: is_expired = current_date > expiry_date Else: Use default expiry based on source type
D. Apply filters:
Keep source if: (max_age_days not set OR age_days <= max_age_days) AND (include_expired=true OR not is_expired)
E. Flag expired sources: If source is expired but included (because include_expired=true):
- •Mark source as "[EXPIRED]" in output
- •Recommend refresh in gathering report
4. Extract Key Information
For each qualifying source:
A. Read content sections:
- •
## Key Insights→ Primary takeaways - •
## Strategic Applications→ How to use this research - •
## Citations / Quotes→ Verbatim quotes for citation - •
## Related Internal Links→ Connected context
B. Extract insights: Parse bullet points from "Key Insights" section:
- Insight 1: Full text - Insight 2: Full text
C. Extract quotes: Parse blockquotes from "Citations / Quotes" section:
> "Verbatim quote text" > — Author, Source (Date)
D. Record metadata:
{
"title": "Source Title",
"path": "/absolute/path/to/source.md",
"url": "https://..." (if applicable),
"topic": "strategic-category",
"added_date": "YYYY-MM-DD",
"expiry_date": "YYYY-MM-DD",
"is_expired": true|false,
"age_days": N,
"insights": [array of insight strings],
"quotes": [array of quote objects],
"related_links": [array of internal link paths]
}
5. Apply Keyword Filters (Optional)
If keywords provided:
Search across:
- •Source title
- •Key insights text
- •Strategic applications text
- •Quote text
- •Tags
Method:
Use Grep to search for keywords (case-insensitive): grep -i "keyword" source.md
Keep source if: Any keyword match found in source content.
6. Organize Output
Group sources by sub-category (if applicable):
Example for "competitive-analysis" topic:
- •Competitor capabilities
- •Pricing comparisons
- •Market positioning
- •Feature gaps
Sort sources by:
- •Recency (most recent first)
- •Relevance (if keyword search applied)
- •Expiry status (non-expired before expired)
7. Generate Gathering Report
Output structure:
# Research Gathering Report
**Topic**: {topic}
**Sources Found**: {N total}
**Active Sources**: {N non-expired}
**Expired Sources**: {N expired}
**Date Range**: {earliest added} to {most recent added}
## Active Sources
### Source 1: {Title}
- **Added**: {YYYY-MM-DD} ({age_days} days ago)
- **Expires**: {YYYY-MM-DD} ({days_until_expiry} days remaining)
- **Path**: {file_path}
- **URL**: {url} (if applicable)
**Key Insights:**
- Insight 1
- Insight 2
**Strategic Applications:**
- Application 1
- Application 2
**Notable Quotes:**
> "Quote text"
> — Author, Source (Date)
---
### Source 2: {Title}
[... same structure ...]
## Expired Sources (Require Refresh)
### Source 3: {Title} [EXPIRED]
- **Added**: {YYYY-MM-DD}
- **Expired**: {YYYY-MM-DD} ({days_expired} days ago)
- **Recommendation**: Refresh or archive
---
## Summary
**Citation-Ready Quotes**: {N quotes extracted}
**Internal Links**: {N related meetings/epics found}
**Recommended Actions**:
1. Refresh {N} expired sources
2. Consider adding research on {identified gaps}
Integration with Workflows
Strategy Session Integration
Invoked by:
- •
strategy-sessionworkflow (context assembly phase)
Inputs:
- •Topic matching session focus
- •Default expiry filtering (exclude expired sources)
Outputs:
- •Gathered research context for decision-making
- •Citation-ready quotes
- •Source recommendations
Usage:
Strategy session on "competitive-analysis" → Gather active competitive intel → Present insights for discussion → Reference in strategy memo
Content Creation Integration
Invoked by:
- •
content-draftingworkflow (when research backing needed)
Inputs:
- •Topic matching content subject
- •Keyword filters for specificity
Outputs:
- •Research-backed claims
- •Citation sources
- •Expert insights for quotes
Manual Research Queries
Direct usage: User can query research library:
"Gather research on pricing-strategy from last 6 months" "Show competitive-analysis sources with keyword 'segmentation'"
Refresh Recommendations
When gathering detects expired sources:
Auto-generate refresh tasks:
Expired sources requiring refresh:
1. [Source Title] - Expired 45 days ago
- Original URL: {url}
- Suggested action: Re-fetch and update
2. [Source Title] - Expired 120 days ago
- No URL (manual notes)
- Suggested action: Review and archive or manually update
Offer to:
- •Re-fetch URL-based sources automatically
- •Schedule manual review for note-based sources
- •Archive sources that are no longer relevant
Success Criteria
Research gathering complete when:
- •All sources in topic directory scanned
- •Recency and expiry filters applied
- •Key insights and quotes extracted
- •Sources organized and sorted
- •Expired sources flagged for refresh
- •Output structured for consuming workflows
Common Mistakes
| Mistake | Fix |
|---|---|
| Including expired sources without flagging | Mark clearly as [EXPIRED] |
| Not extracting verbatim quotes | Preserve exact quote text for citations |
| Missing internal link extraction | Parse and include related links |
| Skipping expiry recommendations | Suggest refresh for expired sources |
| Not respecting topic boundaries | Only gather from specified topic directory |
Related Skills
- •source-integrity: Validates source checksums and metadata
- •strategy-session: Primary consumer of gathered research
- •content-drafting: Uses gathered research for citations
- •research-processing: Adds new sources to research library
Anti-Rationalization Blocks
Common excuses that are explicitly rejected:
| Rationalization | Reality |
|---|---|
| "Expired source is still relevant" | Flag as expired, recommend refresh. |
| "Close enough" on quote extraction | Preserve verbatim text exactly. |
| "Skip keyword filtering" | Apply filters as requested. |
| "One source is enough" | Gather all relevant sources. |