559 lines
13 KiB
Markdown
559 lines
13 KiB
Markdown
|
|
# Teams Transcript Processing Workflow
|
||
|
|
|
||
|
|
Manual workflow for processing Teams meeting transcripts (.docx) into structured meeting notes with action items.
|
||
|
|
|
||
|
|
## Table of Contents
|
||
|
|
1. [Workflow Overview](#workflow-overview)
|
||
|
|
2. [Prerequisites](#prerequisites)
|
||
|
|
3. [Step-by-Step Process](#step-by-step-process)
|
||
|
|
4. [Templates](#templates)
|
||
|
|
5. [Integration Points](#integration-points)
|
||
|
|
6. [Best Practices](#best-practices)
|
||
|
|
7. [Troubleshooting](#troubleshooting)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Workflow Overview
|
||
|
|
|
||
|
|
```
|
||
|
|
Teams Transcript (.docx)
|
||
|
|
↓
|
||
|
|
[Manual: Upload transcript]
|
||
|
|
↓
|
||
|
|
[Extract text content]
|
||
|
|
↓
|
||
|
|
[AI Analysis: Extract key info]
|
||
|
|
├─→ Attendees
|
||
|
|
├─→ Topics discussed
|
||
|
|
├─→ Decisions made
|
||
|
|
└─→ Action items
|
||
|
|
↓
|
||
|
|
[Create Obsidian meeting note]
|
||
|
|
├─→ Use meeting-notes template
|
||
|
|
├─→ Include transcript summary
|
||
|
|
└─→ Extract action items as tasks
|
||
|
|
↓
|
||
|
|
[Optional: Sync to Basecamp]
|
||
|
|
├─→ Create todos in Basecamp
|
||
|
|
└─→ Assign to project
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Prerequisites
|
||
|
|
|
||
|
|
### Tools Needed
|
||
|
|
- Teams (for recording and downloading transcripts)
|
||
|
|
- Python with `python-docx` library (for text extraction)
|
||
|
|
- Obsidian (for storing meeting notes)
|
||
|
|
- Basecamp MCP (for syncing action items - optional)
|
||
|
|
|
||
|
|
### Install Dependencies
|
||
|
|
|
||
|
|
```bash
|
||
|
|
pip install python-docx
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Step-by-Step Process
|
||
|
|
|
||
|
|
### Step 1: Download Teams Transcript
|
||
|
|
|
||
|
|
**In Teams**:
|
||
|
|
1. Go to meeting recording
|
||
|
|
2. Click "..." (more options)
|
||
|
|
3. Select "Open transcript" or "Download transcript"
|
||
|
|
4. Save as `.docx` file
|
||
|
|
5. Note filename (includes date/time)
|
||
|
|
|
||
|
|
**Filename format**: `MeetingTitle_YYYY-MM-DD_HHMM.docx`
|
||
|
|
|
||
|
|
### Step 2: Extract Text from DOCX
|
||
|
|
|
||
|
|
**Python script** (`/tmp/extract_transcript.py`):
|
||
|
|
|
||
|
|
```python
|
||
|
|
#!/usr/bin/env python3
|
||
|
|
from docx import Document
|
||
|
|
import sys
|
||
|
|
import os
|
||
|
|
|
||
|
|
def extract_transcript(docx_path):
|
||
|
|
"""Extract text from Teams transcript DOCX"""
|
||
|
|
try:
|
||
|
|
doc = Document(docx_path)
|
||
|
|
full_text = '\n'.join([para.text for para in doc.paragraphs])
|
||
|
|
return full_text
|
||
|
|
except Exception as e:
|
||
|
|
print(f"Error reading DOCX: {e}")
|
||
|
|
return None
|
||
|
|
|
||
|
|
if __name__ == "__main__":
|
||
|
|
if len(sys.argv) != 2:
|
||
|
|
print("Usage: python extract_transcript.py <transcript.docx>")
|
||
|
|
sys.exit(1)
|
||
|
|
|
||
|
|
docx_path = sys.argv[1]
|
||
|
|
text = extract_transcript(docx_path)
|
||
|
|
|
||
|
|
if text:
|
||
|
|
print(text)
|
||
|
|
# Optionally save to text file
|
||
|
|
output_path = docx_path.replace('.docx', '.txt')
|
||
|
|
with open(output_path, 'w') as f:
|
||
|
|
f.write(text)
|
||
|
|
print(f"\nExtracted to: {output_path}")
|
||
|
|
```
|
||
|
|
|
||
|
|
**Usage**:
|
||
|
|
```bash
|
||
|
|
python extract_transcript.py "MeetingName_2026-01-28_1400.docx"
|
||
|
|
```
|
||
|
|
|
||
|
|
### Step 3: AI Analysis of Transcript
|
||
|
|
|
||
|
|
**Prompt for AI** (ask your AI assistant):
|
||
|
|
|
||
|
|
```
|
||
|
|
Analyze this Teams meeting transcript and extract:
|
||
|
|
|
||
|
|
1. Attendees:
|
||
|
|
- Names and roles (if mentioned)
|
||
|
|
- Who spoke the most
|
||
|
|
- Any key stakeholders
|
||
|
|
|
||
|
|
2. Topics Discussed:
|
||
|
|
- Main topics (3-5 key items)
|
||
|
|
- Brief summary of each topic
|
||
|
|
|
||
|
|
3. Decisions Made:
|
||
|
|
- Clear decisions with reasoning
|
||
|
|
- Format: "Decision: [what] - [reasoning]"
|
||
|
|
- Include: "Deferred decisions" if applicable
|
||
|
|
|
||
|
|
4. Action Items:
|
||
|
|
- Extract specific, actionable tasks
|
||
|
|
- Include: owner (@mention), due date (if mentioned), priority (implicit from context)
|
||
|
|
- Format: "- [ ] Task description #meeting #todo 🔼 👤 @name 📅 YYYY-MM-DD"
|
||
|
|
|
||
|
|
5. Next Steps:
|
||
|
|
- Follow-up meetings needed
|
||
|
|
- Deliverables expected
|
||
|
|
- Blockers or dependencies
|
||
|
|
|
||
|
|
Format output in markdown ready for Obsidian meeting template.
|
||
|
|
```
|
||
|
|
|
||
|
|
### Step 4: Create Obsidian Meeting Note
|
||
|
|
|
||
|
|
**Ask AI to**:
|
||
|
|
- Use meeting-notes skill template
|
||
|
|
- Format extracted content
|
||
|
|
- Create proper frontmatter
|
||
|
|
- Add wiki-links to related projects/areas
|
||
|
|
|
||
|
|
**Template structure** (from meeting-notes skill):
|
||
|
|
|
||
|
|
```markdown
|
||
|
|
---
|
||
|
|
title: "[Meeting Title]"
|
||
|
|
platform: teams
|
||
|
|
date: YYYY-MM-DD
|
||
|
|
time: HH:mm-HH:mm
|
||
|
|
duration: "X minutes"
|
||
|
|
attendees: [names]
|
||
|
|
transcript_file: "MeetingName_2026-01-28.docx"
|
||
|
|
project: [[Project Name]]
|
||
|
|
tags: [meeting, work, teams]
|
||
|
|
---
|
||
|
|
|
||
|
|
## Attendees
|
||
|
|
- [Name] - [Role]
|
||
|
|
- [Name] - [Role]
|
||
|
|
|
||
|
|
## Topics Discussed
|
||
|
|
### [Topic 1]
|
||
|
|
- [Summary]
|
||
|
|
|
||
|
|
### [Topic 2]
|
||
|
|
- [Summary]
|
||
|
|
|
||
|
|
## Decisions Made
|
||
|
|
1. [Decision] - [Reasoning]
|
||
|
|
2. [Decision] - [Reasoning]
|
||
|
|
|
||
|
|
## Action Items
|
||
|
|
- [ ] [Action description] #meeting #todo 🔼 👤 @name 📅 YYYY-MM-DD
|
||
|
|
- [ ] [Action description] #meeting #todo 🔽 👤 @self 📅 YYYY-MM-DD
|
||
|
|
|
||
|
|
## Next Steps
|
||
|
|
- [ ] Schedule follow-up meeting
|
||
|
|
- [ ] Share notes with team
|
||
|
|
```
|
||
|
|
|
||
|
|
### Step 5: Save to Obsidian
|
||
|
|
|
||
|
|
**Location**:
|
||
|
|
```
|
||
|
|
~/CODEX/01-projects/work/[project]/meetings/[topic]-YYYYMMDD.md
|
||
|
|
```
|
||
|
|
|
||
|
|
**Ask AI to**:
|
||
|
|
- Determine project from context
|
||
|
|
- Create proper folder structure
|
||
|
|
- Use kebab-case for filename
|
||
|
|
- Add to project MOC
|
||
|
|
|
||
|
|
### Step 6: Sync Action Items to Basecamp (Optional)
|
||
|
|
|
||
|
|
**When to sync**:
|
||
|
|
- Meeting was about a specific project
|
||
|
|
- Action items have clear owners
|
||
|
|
- Project uses Basecamp for task tracking
|
||
|
|
|
||
|
|
**Ask user**: "Sync these action items to Basecamp?"
|
||
|
|
|
||
|
|
**If yes**:
|
||
|
|
1. Delegate to basecamp skill
|
||
|
|
2. Ask: "Which Basecamp project?"
|
||
|
|
3. Create todos with:
|
||
|
|
- Proper due dates
|
||
|
|
- Assignees (from @mentions)
|
||
|
|
- Linked to project
|
||
|
|
4. Confirm: "Created X todos in [project]"
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Templates
|
||
|
|
|
||
|
|
### AI Analysis Prompt Template
|
||
|
|
|
||
|
|
**Copy this prompt** for consistent results:
|
||
|
|
|
||
|
|
```text
|
||
|
|
You are a meeting analysis assistant. Analyze this Teams meeting transcript and extract:
|
||
|
|
|
||
|
|
1. Attendees:
|
||
|
|
- List all participants mentioned
|
||
|
|
- Identify speakers (who talked most)
|
||
|
|
- Note any key stakeholders (managers, decision-makers)
|
||
|
|
|
||
|
|
2. Topics Discussed (3-5 main topics):
|
||
|
|
For each topic:
|
||
|
|
- Title (2-4 words)
|
||
|
|
- Summary (2-3 sentences)
|
||
|
|
- Time spent on topic (if discernible from transcript)
|
||
|
|
|
||
|
|
3. Decisions Made:
|
||
|
|
For each decision:
|
||
|
|
- Decision statement (what was decided)
|
||
|
|
- Reasoning (brief justification)
|
||
|
|
- Consensus level (unanimous / majority / proposed)
|
||
|
|
- Format as checklist item: `- [ ] Decision: [text]`
|
||
|
|
|
||
|
|
4. Action Items:
|
||
|
|
For each action item:
|
||
|
|
- Description (specific, actionable verb)
|
||
|
|
- Owner (@mention if clear, otherwise "Unassigned")
|
||
|
|
- Due date (YYYY-MM-DD if mentioned, else "No deadline")
|
||
|
|
- Priority (implicit: ⏫ urgent, 🔼 high, 🔽 low)
|
||
|
|
- Format: `- [ ] Task #meeting #todo [priority] 👤 @owner 📅 date`
|
||
|
|
|
||
|
|
5. Next Steps:
|
||
|
|
- Follow-up meetings needed?
|
||
|
|
- Deliverables expected?
|
||
|
|
- Blockers or dependencies?
|
||
|
|
|
||
|
|
**Output Format**: Markdown ready for Obsidian meeting note template.
|
||
|
|
|
||
|
|
**Meeting Type**: [standup / 1:1 / workshop / decision]
|
||
|
|
|
||
|
|
Transcript:
|
||
|
|
[PASTE TEAMS TRANSCRIPT HERE]
|
||
|
|
```
|
||
|
|
|
||
|
|
### Meeting Note Template (Enhanced for Teams)
|
||
|
|
|
||
|
|
```markdown
|
||
|
|
---
|
||
|
|
title: "[Meeting Title]"
|
||
|
|
platform: teams
|
||
|
|
date: YYYY-MM-DD
|
||
|
|
time: HH:mm-HH:mm
|
||
|
|
duration: "X minutes"
|
||
|
|
attendees: [Name 1 - Role, Name 2 - Role, ...]
|
||
|
|
transcript_file: "transcripts/[Topic]-YYYYMMDD.docx"
|
||
|
|
recording_link: "[Teams recording URL if available]"
|
||
|
|
project: [[Project Name]]
|
||
|
|
tags: [meeting, work, teams, transcript]
|
||
|
|
---
|
||
|
|
|
||
|
|
## Attendees
|
||
|
|
|
||
|
|
| Name | Role | Company |
|
||
|
|
|-------|-------|---------|
|
||
|
|
| [Name] | [Role] | [Company] |
|
||
|
|
| [Name] | [Role] | [Company] |
|
||
|
|
|
||
|
|
## Agenda
|
||
|
|
[If agenda was known in advance]
|
||
|
|
1. [Item 1]
|
||
|
|
2. [Item 2]
|
||
|
|
3. [Item 3]
|
||
|
|
|
||
|
|
## Transcript Summary
|
||
|
|
|
||
|
|
[AI-generated summary of transcript]
|
||
|
|
|
||
|
|
## Topics Discussed
|
||
|
|
|
||
|
|
### [Topic 1]
|
||
|
|
- [Summary points]
|
||
|
|
- [Time spent: X minutes]
|
||
|
|
|
||
|
|
### [Topic 2]
|
||
|
|
- [Summary points]
|
||
|
|
- [Time spent: X minutes]
|
||
|
|
|
||
|
|
## Decisions Made
|
||
|
|
|
||
|
|
1. ✅ [Decision 1]
|
||
|
|
- **Reasoning**: [Why this decision]
|
||
|
|
- **Owner**: [Who made decision]
|
||
|
|
- **Due**: [If applicable]
|
||
|
|
|
||
|
|
2. ✅ [Decision 2]
|
||
|
|
- **Reasoning**: [Why this decision]
|
||
|
|
- **Owner**: [Who made decision]
|
||
|
|
|
||
|
|
### Deferred Decisions
|
||
|
|
- [ ] [Decision deferred] - [Why deferred, revisit date]
|
||
|
|
|
||
|
|
## Action Items
|
||
|
|
|
||
|
|
- [ ] [Task 1] #meeting #todo 🔼 👤 @owner 📅 YYYY-MM-DD
|
||
|
|
- [ ] [Task 2] #meeting #todo ⏫ 👤 @owner 📅 YYYY-MM-DD
|
||
|
|
- [ ] [Task 3] #meeting #todo 🔽 👤 self 📅 YYYY-MM-DD
|
||
|
|
|
||
|
|
### Action Item Summary
|
||
|
|
|
||
|
|
| Task | Owner | Due | Priority |
|
||
|
|
|-------|--------|------|----------|
|
||
|
|
| [Task 1] | @owner | YYYY-MM-DD | ⏫ |
|
||
|
|
| [Task 2] | @owner | YYYY-MM-DD | 🔼 |
|
||
|
|
| [Task 3] | @self | N/A | 🔽 |
|
||
|
|
|
||
|
|
## Next Steps
|
||
|
|
|
||
|
|
- [ ] Schedule follow-up meeting: [Topic] - [Proposed date]
|
||
|
|
- [ ] Share notes with: [attendee list]
|
||
|
|
- [ ] Update project status in Basecamp
|
||
|
|
|
||
|
|
## Notes
|
||
|
|
|
||
|
|
[Additional notes, observations, or clarifications]
|
||
|
|
|
||
|
|
## Links
|
||
|
|
|
||
|
|
- 📹 Teams Recording: [URL if available]
|
||
|
|
- 📄 Transcript: [[transcript_filename]]
|
||
|
|
- 🗄 Project: [[Project Name]]
|
||
|
|
- 📄 Related Docs: [[Related Outline Doc]](outline://document/abc123)
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Integration Points
|
||
|
|
|
||
|
|
### With meeting-notes Skill
|
||
|
|
|
||
|
|
**Flow**:
|
||
|
|
```
|
||
|
|
User: "Process transcript: [file.docx]"
|
||
|
|
|
||
|
|
1. Extract text from DOCX
|
||
|
|
2. Ask AI to analyze transcript
|
||
|
|
3. AI extracts: attendees, topics, decisions, action items
|
||
|
|
4. Create meeting note using meeting-notes skill
|
||
|
|
5. Ask: "Sync action items to Basecamp?"
|
||
|
|
```
|
||
|
|
|
||
|
|
### With basecamp Skill
|
||
|
|
|
||
|
|
**Flow** (optional):
|
||
|
|
```
|
||
|
|
User: "Yes, sync to Basecamp"
|
||
|
|
|
||
|
|
1. Ask: "Which Basecamp project?"
|
||
|
|
2. List available projects
|
||
|
|
3. For each action item:
|
||
|
|
- create_todo(project_id, todolist_id, content, due_on, assignee_ids)
|
||
|
|
4. Confirm: "Created X todos in [project]"
|
||
|
|
```
|
||
|
|
|
||
|
|
### With obsidian-management Skill
|
||
|
|
|
||
|
|
**Flow**:
|
||
|
|
```
|
||
|
|
1. Create meeting note at: 01-projects/work/[project]/meetings/[topic]-YYYYMMDD.md
|
||
|
|
2. Update project MOC with link to meeting:
|
||
|
|
- Add to "Meetings" section in project _index.md
|
||
|
|
3. If decision made, create in decisions/ folder
|
||
|
|
4. If applicable, export decision to Outline wiki
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Best Practices
|
||
|
|
|
||
|
|
### During Meeting
|
||
|
|
1. **Use Teams recording**: Get transcript automatically
|
||
|
|
2. **Name attendees**: Add their roles to transcript
|
||
|
|
3. **Speak clearly**: Improves transcript accuracy
|
||
|
|
4. **Agenda first**: Helps AI structure analysis
|
||
|
|
|
||
|
|
### Processing Transcripts
|
||
|
|
1. **Process quickly**: Within 24 hours while fresh
|
||
|
|
2. **Clean up text**: Remove filler words (um, ah, like)
|
||
|
|
3. **Be specific**: Action items must be actionable, not vague
|
||
|
|
4. **Assign owners**: Every action item needs @mention
|
||
|
|
5. **Set due dates**: Even if approximate (next week, by next meeting)
|
||
|
|
|
||
|
|
### Storage
|
||
|
|
1. **Consistent location**: All work meetings in project/meetings/
|
||
|
|
2. **Link everything**: Link to project, related docs, areas
|
||
|
|
3. **Tag properly**: #meeting, #work, #teams, #transcript
|
||
|
|
4. **Archive old**: Move completed project meetings to archive/
|
||
|
|
|
||
|
|
### Basecamp Sync
|
||
|
|
1. **Sync important meetings**: Not every meeting needs sync
|
||
|
|
2. **Use project context**: Sync to relevant project
|
||
|
|
3. **Verify in Basecamp**: Check todos were created correctly
|
||
|
|
4. **Follow up**: Check completion status regularly
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Troubleshooting
|
||
|
|
|
||
|
|
### Transcript Won't Open
|
||
|
|
|
||
|
|
**Problem**: DOCX file corrupted or wrong format
|
||
|
|
|
||
|
|
**Solution**:
|
||
|
|
1. Re-download from Teams
|
||
|
|
2. Try opening in Word first to verify
|
||
|
|
3. Use alternative: Copy-paste text manually
|
||
|
|
|
||
|
|
### AI Misses Action Items
|
||
|
|
|
||
|
|
**Problem**: Transcript analysis misses clear action items
|
||
|
|
|
||
|
|
**Solution**:
|
||
|
|
1. Manually add missed items to meeting note
|
||
|
|
2. Reprompt AI with specific context: "Review transcript again, focus on action items"
|
||
|
|
3. Check transcript: Was the audio clear?
|
||
|
|
|
||
|
|
### Wrong Project Assigned
|
||
|
|
|
||
|
|
**Problem**: Meeting note created in wrong project folder
|
||
|
|
|
||
|
|
**Solution**:
|
||
|
|
1. Move file to correct location
|
||
|
|
2. Update links in project MOCs
|
||
|
|
3. Use consistent naming conventions
|
||
|
|
|
||
|
|
### Basecamp Sync Fails
|
||
|
|
|
||
|
|
**Problem**: Todos not created in Basecamp
|
||
|
|
|
||
|
|
**Solution**:
|
||
|
|
1. Check Basecamp MCP is connected
|
||
|
|
2. Verify project ID is correct
|
||
|
|
3. Check assignee IDs are valid
|
||
|
|
4. Check todo list exists in project
|
||
|
|
5. Retry with fewer items
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Example End-to-End
|
||
|
|
|
||
|
|
### Input
|
||
|
|
**Teams transcript**: `api-design-review_2026-01-28_1400.docx`
|
||
|
|
|
||
|
|
### AI Output
|
||
|
|
```markdown
|
||
|
|
## Attendees
|
||
|
|
- Alice (Product Owner)
|
||
|
|
- Bob (Lead Developer)
|
||
|
|
- Charlie (Tech Lead)
|
||
|
|
- Sarah (UX Designer)
|
||
|
|
|
||
|
|
## Topics Discussed
|
||
|
|
1. API Authentication Design (20 min)
|
||
|
|
2. Rate Limiting Strategy (15 min)
|
||
|
|
3. Error Handling (10 min)
|
||
|
|
|
||
|
|
## Decisions Made
|
||
|
|
1. Use OAuth2 with refresh tokens - Industry standard, better security
|
||
|
|
2. Implement 1000 req/min rate limit - Based on load tests
|
||
|
|
|
||
|
|
## Action Items
|
||
|
|
- [ ] Create OAuth2 implementation guide #meeting #todo 🔼 👤 @alice 📅 2026-02-05
|
||
|
|
- [ ] Document rate limiting policy #meeting #todo 🔼 👤 @bob 📅 2026-02-10
|
||
|
|
- [ ] Update error handling documentation #meeting #todo 🔽 👤 @sarah 📅 2026-02-15
|
||
|
|
```
|
||
|
|
|
||
|
|
### Obsidian Note Created
|
||
|
|
**File**: `~/CODEX/01-projects/work/api-integration-platform/meetings/api-design-review-20260128.md`
|
||
|
|
|
||
|
|
### Basecamp Sync
|
||
|
|
**Project**: API Integration Platform
|
||
|
|
**Todos created**: 3
|
||
|
|
- OAuth2 guide (assigned to Alice, due 2026-02-05)
|
||
|
|
- Rate limiting (assigned to Bob, due 2026-02-10)
|
||
|
|
- Error handling (assigned to Sarah, due 2026-02-15)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Automation (Future n8n Implementation)
|
||
|
|
|
||
|
|
When n8n is added, automate:
|
||
|
|
|
||
|
|
1. **Watch transcript folder**: Auto-trigger on new .docx files
|
||
|
|
2. **AI auto-analysis**: Use AI API to extract meeting info
|
||
|
|
3. **Auto-create meeting notes**: Save to Obsidian automatically
|
||
|
|
4. **Auto-sync to Basecamp**: Create todos for action items
|
||
|
|
5. **Send notifications**: "Meeting processed, X action items created"
|
||
|
|
|
||
|
|
**Workflow diagram**:
|
||
|
|
```
|
||
|
|
Teams transcript folder
|
||
|
|
↓ (n8n: Watch folder)
|
||
|
|
[Trigger: new .docx]
|
||
|
|
↓
|
||
|
|
[Extract text]
|
||
|
|
↓
|
||
|
|
[AI Analysis]
|
||
|
|
↓
|
||
|
|
[Create meeting note]
|
||
|
|
↓
|
||
|
|
[Sync to Basecamp] (conditional)
|
||
|
|
↓
|
||
|
|
[Send ntfy notification]
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Quick Reference
|
||
|
|
|
||
|
|
| Action | Tool/Script |
|
||
|
|
|--------|--------------|
|
||
|
|
| Download transcript | Teams UI |
|
||
|
|
| Extract text | python extract_transcript.py |
|
||
|
|
| Analyze transcript | AI assistant prompt |
|
||
|
|
| Create meeting note | meeting-notes skill |
|
||
|
|
| Sync to Basecamp | basecamp skill |
|
||
|
|
| Store in Obsidian | obsidian-management skill |
|
||
|
|
| Export decision | outline skill (optional) |
|