Project Thread Detection
Strategies for identifying and connecting project-related communications across platforms
Methods for discovering projects and linking related communications.
Project Identification Strategies
Keyword Clustering:
- Extract frequent noun phrases from calendar events
- Find recurring terms in email subjects
- Identify Slack channel names and topics
- Group by co-occurrence (terms appearing together)
Common Patterns:
- Project code names (alpha, beta, launch-2025)
- Feature names (new-dashboard, api-v2)
- Client/customer names
- Initiative names (redesign, migration, optimization)
Signal Strength:
- Calendar event title: High signal
- Email subject: Medium-high signal
- Slack channel name: High signal
- Message content: Lower signal (noisy)
Cross-Platform Mapping
Calendar → Project:
- Event title contains project keyword
- Recurring meetings suggest ongoing project
- Attendee overlap indicates project team
Email → Project:
- Subject line keywords
- Thread participants (team members)
- Date ranges align with project timeline
- Attachment names/types
Slack → Project:
- Channel name matches project
- Channel purpose/topic mentions project
- Message keywords and frequency
- Pinned messages with project info
Thread Association Rules
Strong Association (confidence >80%):
- Exact keyword match in title/subject
- Same participant set (>70% overlap)
- Temporal clustering (same week)
- Direct reference to other threads
Moderate Association (confidence 50-80%):
- Partial keyword match
- Some participant overlap (40-70%)
- Related time period (same month)
- Similar topics/tags
Weak Association (confidence 20-50%):
- Fuzzy keyword similarity
- Minimal participant overlap
- Loose temporal connection
- Suggested by user or context
Project Metadata Extraction
Timeline Construction:
project_timeline:
start_date: earliest event/message date
last_activity: most recent event/message
duration_days: calculated
activity_frequency: messages per week
phases: detected from calendar/keywords
Team Identification:
team_members:
- name: Person A
role: inferred from messages/title
participation: message count
- name: Person B
# ...
Status Inference:
- Active: Recent activity (<7 days)
- In Progress: Activity within 30 days
- Completed: No activity >60 days + completion keywords
- Paused: Gap in activity >30 days then resumed
Completion Keywords: "done", "completed", "shipped", "launched", "closed", "final"
Project Directory Structure
projects/
[project-slug]/
README.md # Project overview and status
timeline.md # Chronological activity
team.md # Team members and roles
links.md # References to emails/slack/calendar
notes.md # User notes and context
README.md Template:
---
project: Project Name
status: active|paused|completed
start_date: YYYY-MM-DD
last_activity: YYYY-MM-DD
team_size: 5
platforms: [calendar, gmail, slack]
keywords: [keyword1, keyword2]
---
Overview
Brief description inferred from context
Recent Activity
- Latest calendar event
- Latest email thread
- Latest slack discussion
Key Milestones
Detected from calendar and messages
Next Steps
Inferred from recent communications
Grouping Heuristics
Participant-Based:
- Messages with same 3+ participants likely related
- Calendar invites with overlapping attendees
- Slack threads in project-specific channels
Temporal-Based:
- Activity bursts indicate project phases
- Regular cadence (weekly standups) = active project
- Long gaps = project transitions or pauses
Keyword-Based:
- Co-occurring terms across platforms
- Consistent terminology usage
- Related technical terms or jargon
Auto-Detection vs User Input
Auto-Detect When:
- Strong keyword signals across 2+ platforms
- Clear participant clustering
- Obvious calendar event patterns
- Confidence score >70%
Prompt User When:
- Ambiguous groupings (confidence 50-70%)
- Multiple possible project names
- Overlapping teams (could be 2 projects)
- User can provide context/names
Output Format
links.md Structure:
# Project Links
Calendar Events
- Event Title - Date
- Event Title - Date
Email Threads
- Thread Subject - Date
- Thread Subject - Date
Slack Discussions
- Channel Name - Date
- Channel Name - Date
Maintenance Strategy
Incremental Updates:
- Add new threads to existing projects
- Update last_activity dates
- Append to timeline
- Preserve manual edits to README
Archival:
- Move completed projects to archive/
- Keep metadata but trim old links
- Maintain searchable index