---
name: research-to-presentation
description: Transforms Notion research content into branded presentations through an automated workflow. Collects research from Notion pages/databases, synthesizes content to extract key topics and agenda items, creates presentation structure with slide plans, and generates branded PPT/Figma presentations. Use when converting research into meeting materials, creating data-driven presentations from Notion content, transforming documentation into executive presentations, or building slide decks from scattered research notes.
---

# Research to Presentation Workflow

Automated pipeline for transforming Notion research into professional presentations with brand consistency.

## Quick Start

```bash
# Full automated workflow
python scripts/run_workflow.py --notion-url [URL] --output-format [pptx|figma]

# Step-by-step execution
python scripts/extract_notion.py [URL] > research.json
python scripts/synthesize_content.py research.json > synthesis.json
node scripts/generate_presentation.js synthesis.json output.pptx
```

## Workflow Steps

### Step 1: Research Collection

Extract research from Notion:
```python
# Use Notion tools to gather content
results = notion_search(query="research topic")
content = notion_fetch(page_ids)
extracted_data = extract_key_findings(content)
```

For detailed extraction patterns: [references/research_patterns.md](references/research_patterns.md)

### Step 2: Content Synthesis

Analyze and structure content:
```python
synthesis = synthesize_content(extracted_data)
# Returns: executive_summary, key_topics, agenda_items, supporting_data
```

Topic prioritization guide: [references/agenda_templates.md](references/agenda_templates.md)

### Step 3: Presentation Planning

Create slide-by-slide structure:
```javascript
const slidePlan = generateSlidePlan(synthesis);
// Outputs: title, agenda, content slides with speaker notes
```

Layout options: [references/slide_layouts.md](references/slide_layouts.md)

### Step 4: Slide Generation

Convert to presentation format:

**PowerPoint Output:**
```javascript
node scripts/generate_pptx.js synthesis.json output.pptx
```

**Figma Output:**
```javascript
node scripts/export_to_figma.js synthesis.json --api-key [KEY]
```

### Step 5: Brand Application

Apply corporate styling:
```python
python scripts/apply_brand.py output.pptx --config assets/brand_config.json
```

## Input Sources

**Notion Pages**: Individual research pages with `notion://page/[ID]`
**Notion Databases**: Research collections with `notion://database/[ID]`
**Multiple Sources**: Comma-separated URLs for comprehensive synthesis

## Output Formats

**PowerPoint (.pptx)**: Full presentation with animations and transitions
**Figma Slides**: Web-based collaborative presentation format
**HTML Preview**: Quick preview with `--preview` flag

## Presentation Types

### Executive Summary
- High-level findings (3-5 slides)
- Key metrics and KPIs
- Strategic recommendations
- See [references/executive_template.md](references/executive_template.md)

### Research Report  
- Comprehensive findings (10-20 slides)
- Detailed methodology
- Data visualizations
- See [references/research_template.md](references/research_template.md)

### Meeting Prep
- Agenda-driven structure (5-10 slides)
- Discussion topics
- Decision points
- See [references/meeting_template.md](references/meeting_template.md)

## Customization

### Brand Configuration
Edit `assets/brand_config.json`:
```json
{
  "colors": {
    "primary": "#1a73e8",
    "secondary": "#34a853"
  },
  "fonts": {
    "heading": "Poppins",
    "body": "Lora"
  }
}
```

### Slide Templates
Modify HTML templates in `assets/templates/`:
- `title.html` - Title slide layout
- `content.html` - Content slide layout  
- `data.html` - Data visualization slide

### Processing Rules
Adjust synthesis patterns in `scripts/config.py`:
- Topic extraction thresholds
- Agenda prioritization weights
- Content chunking sizes

## Best Practices

1. **Start broad**: Cast wide net in Notion search, then filter
2. **Validate sources**: Check last-edited dates for currency
3. **Chunk large content**: Process in batches for token efficiency
4. **Preview first**: Use `--preview` to check before final generation
5. **Version control**: Keep synthesis.json for iteration

## Troubleshooting

**"No content found"**: Verify Notion permissions and page URLs
**"Synthesis failed"**: Check research.json structure and content
**"Brand not applied"**: Ensure brand_config.json is valid
**"Figma export error"**: Validate API key and network access

## Advanced Usage

### Batch Processing
```bash
# Process multiple research sets
for url in $(cat notion_urls.txt); do
  python scripts/run_workflow.py --notion-url "$url" --output "output_$(date +%s).pptx"
done
```

### Custom Workflows
See [references/custom_pipelines.md](references/custom_pipelines.md) for:
- Conditional slide generation
- Dynamic template selection
- Multi-language support
- Automated scheduling

## Dependencies

- Python 3.8+ with pandas, pydantic
- Node.js 16+ with pptxgenjs, @ant/html2pptx
- Notion API access via MCP
- Optional: Figma API key for web export
