Automatically extract actionable tasks from Gmail meeting transcripts using Claude AI and create organized meeting notes in Obsidian.
Requirements: Anthropic Claude API key + Google OAuth credentials (free tiers available)
- π§© AI Task Clustering - Automatically groups similar/related tasks with persistent storage
- β‘ Dynamic Label Processing - Add unlimited email types via configuration
- π€ AI Task Extraction - Claude intelligently extracts tasks, assignees, and priorities
- π Visual Dashboard - Interactive task management with cluster view and filtering
- π Smart Organization - Automatic folder structure (TaskAgent/Label/YYYY/MM/)
- β»οΈ Email Reprocessing - Update notes with improved extraction logic
The plugin monitors Gmail labels you configure and processes emails differently based on type:
transcriptlabel β Meeting transcripts with conversation-style extractionactionlabel β Action item emails with task-focused extraction- Add your own labels β Configure any Gmail label to create custom workflows
Example: Apply the action label to an email in Gmail, and the plugin will:
- Detect the label during next sync
- Extract action items using specialized prompts
- Create a note in
TaskAgent/Action/YYYY/MM/ - Add tasks to your dashboard
No code changes needed - just configure labels in plugin settings!
- Google OAuth Setup Guide - Start here! Step-by-step Google Cloud setup
- Dashboard User Guide - Complete guide to using the task dashboard
- System Architecture - Technical architecture and diagrams
- Build & Deployment Guide - Development and deployment instructions
- Example Outputs - Sample meeting notes, clusters, and task formats
- CLAUDE.md - AI assistant instructions for contributors
---
title: Q1 Planning Meeting - Product Team
emailId: 19960e976514fa1d
label: transcript
gmailUrl: https://mail.google.com/mail/u/0/#inbox/19960e976514fa1d
---
# Q1 Planning Meeting - Product Team
**Email:** [View in Gmail](https://mail.google.com/...)
**Date:** 2025-01-15
## Action Items
### π΄ High Priority
- [ ] Review PRD for new dashboard features [[@Sarah]] π
2025-01-20 π΄ β οΈ 92% #product
- Context: Need feedback before dev kickoff next week
> "Sarah, can you review the PRD by Friday?"
- [ ] Update API rate limits in production [[@Dev Team]] π
2025-01-18 π΄ π§© cluster:api-work β οΈ 88% #backend
- Context: Current limits causing issues for enterprise customers
### π‘ Medium Priority
- [ ] Document new clustering algorithm [[@Jim]] π
2025-01-25 π‘ π§© cluster:docs β οΈ 85% #documentation
- [ ] Schedule user interview sessions [[@UX Team]] π
2025-01-22 π‘ β οΈ 78% #research
- Context: Need 5 participants for dashboard usability study
## Next Steps
- Follow up on API performance metrics
- Review clustering feedback from beta usersWhen you open the dashboard, AI automatically groups related tasks:
π¦ Cluster: API Performance & Scalability
- Update API rate limits in production [[@Dev Team]]
- Monitor API response times [[@DevOps]]
- Implement caching layer [[@Backend Team]]
π‘ Claude suggests: These tasks are related to API infrastructure - consider combining into a single epic for coordinated deployment.
π¦ Cluster: Q1 Documentation
- Document new clustering algorithm [[@Jim]]
- Update README with v3.2 features [[@Jim]]
- Create video tutorial [[@Marketing]]
π¦ Cluster: User Research Initiative
- Schedule user interview sessions [[@UX Team]]
- Prepare interview scripts [[@Sarah]]
- Recruit beta testers [[@Product]]
β
Smart Task Extraction - Pulls assignees, dates, priorities from natural language
β
Cluster IDs - Tasks tagged with π§© cluster:id for persistent grouping
β
Confidence Scores - β οΈ 92% shows AI extraction confidence
β
Context Preservation - Keeps quotes and additional details
β
Gmail Integration - Direct links back to source emails
curl -fsSL https://raw.githubusercontent.com/jimallen/TasksAgent/master/install.sh | bashDownloads and installs the plugin automatically. Works on macOS, Linux, and Windows (Git Bash).
Safe for updates: Only updates plugin code files. Your settings, API keys, and OAuth tokens are never overwritten.
git clone https://github.com/jimallen/TasksAgent.git
cd TasksAgent
npm install
npm run deployThe interactive script will find your Obsidian vaults and install the plugin automatically.
- Download
main.js,manifest.json, andstyles.cssfrom latest release - Create folder:
<vault>/.obsidian/plugins/meeting-tasks/ - Copy the files to that folder
- Enable plugin in Obsidian settings
- Anthropic Claude API - For AI-powered task extraction
- Google OAuth credentials - For Gmail integration
-
Claude AI Setup (Required)
- Get API key from Anthropic Console β API Keys
- Add to plugin settings: Settings β Community Plugins β Meeting Tasks
- Choose model:
claude-sonnet-4(recommended) orclaude-3-5-haiku(faster/cheaper) - Free tier available, pay-as-you-go pricing
-
Google OAuth Setup (Required)
- Follow the Google OAuth Setup Guide for detailed instructions
- Quick summary: Create project β Enable Gmail API β Configure OAuth β Get credentials
- Copy Client ID and Secret to plugin settings
-
Plugin Settings
- Set lookback time (e.g., "3d" for 3 days)
- Configure Gmail labels (e.g., "transcript, action")
- Configure label processors (maps labels to folders and extraction types)
- Set base notes folder (default: "TaskAgent")
Adding Custom Labels:
Want to process different types of emails? Just add more labels!
- In Gmail: Create a label (e.g., "standup", "reports")
- Apply that label to emails you want processed
- In plugin settings: Add the label to your configuration
- Configure the folder name and extraction type (meeting or actionitem)
Example configuration:
Labels: transcript, action, standup
Processors:
- transcript β Transcript folder (meeting extraction)
- action β Action folder (action item extraction)
- standup β Standup folder (meeting extraction)
Configuration Reference:
- See
data.json.examplefor complete configuration structure - All settings are managed through Obsidian's plugin settings UI
- The plugin creates
data.jsonautomatically with your credentials
- Command Palette:
Cmd/Ctrl + Pβ "π§ Process meeting emails" - Keyboard Shortcut:
Cmd/Ctrl + Shift + M - Ribbon Icon: Click the mail icon
- Reprocess: Click "π Reprocess this email" link at bottom of any meeting note
- Instant view toggle: Switch between task list and clustered view (no API calls)
- Multi-filter support: Select multiple filters simultaneously (High + Past Due, etc.)
- Simplified filters: π΄ High, π‘ Medium, β° Past Due, π This Week, π₯ Delegated, β Done
- Filter persistence: Active filters maintained when switching views
- My Tasks only: Always shows only your assigned tasks (except delegated view)
- Auto-clustering: Tasks are automatically clustered during email import
- Cluster view: See grouped related tasks with AI-powered suggestions
- Click to complete tasks
- Edit task details inline
π See the complete Dashboard User Guide for detailed instructions, tips, and troubleshooting.
npm install # Install dependencies
npm run dev # Development build
npm run build # Production build
npm run deploy # Deploy to vaultSee Build & Deployment Guide for details.
This repository showcases not just the plugin code, but also the AI-assisted development workflow used to build it.
The BMAD (Better Method for Agile Development) framework orchestrates AI agents through structured workflows for the entire software development lifecycle. This directory contains:
- Specialized AI agents (PM, Architect, Developer, QA, etc.)
- Structured workflows for analysis, planning, and implementation
- Development methodology with scale-adaptive documentation
Note: BMAD is development-time tooling only and is NOT deployed with the plugin.
Custom Claude Code configurations including:
- Custom slash commands for rapid development
- Agent configurations for specialized tasks
- BMAD framework integration commands
See .claude/README.md for details.
Including development tooling demonstrates:
- Systematic approach to software development
- Professional AI-assisted workflows
- Documentation-first thinking
- Modern development practices
- Automatic clustering: Runs in parallel during email import
- Smart grouping: Identifies duplicates, similar tasks, and related projects using source email context
- Persistent storage: Cluster IDs saved in task lines (
π§© cluster:abc123) - Auto-restore: Dashboard automatically rebuilds clusters from saved IDs (shows normal view by default)
- Instant toggle: Switch between views without re-clustering
- JSON auto-repair: Automatically fixes truncated Claude responses
- Combination suggestions: Claude recommends merging tasks with confidence scores
- Editable cluster titles: Customize cluster names with modal editor (persisted separately)
- Smart vs Force re-clustering: Choose between incremental or complete re-analysis via dropdown
- Progress notifications: Real-time status updates during clustering process
- Multi-filter support: Select multiple filters (OR logic) - e.g., High + Past Due
- Simplified filters: 6 essential filters with emojis for clarity
- Filter persistence: Active filters maintained across view toggles
- My Tasks only: Removed toggle - always shows your tasks (except delegated view)
- Instant view switching: No API calls when toggling between list and cluster views
- Unified task layout: Both clustered and normal views use same card-based layout grouped by assignee
- Split button UI: Single re-cluster button with dropdown for smart/force modes
- Dynamic label processor architecture - add email types via configuration
- Dual extraction modes for meetings vs action items
- Single base folder with label subfolders
- Vault-based caching scales to 100K+ emails
- Authentication fails: Verify OAuth credentials, ensure Gmail API is enabled
- Tasks not extracting: Check Anthropic API key and usage limits
- Changes not showing: Reload Obsidian (
Cmd/Ctrl + R)
Framework: Vitest (fast, modern TypeScript testing)
Run tests:
npm test # Run all tests once
npm run test:watch # Watch mode (re-runs on changes)
npm run test:ui # Visual UI in browser
npm run test:coverage # Generate coverage reportCurrent Coverage:
- 133 tests across 4 test suites
- ProcessorRegistry: 100% coverage (24 tests)
- ClaudeExtractor: 70.16% coverage (47 tests)
- TaskClusterer: 85.83% coverage (28 tests)
- LabelProcessor: 54.6% coverage (34 tests)
Test Structure:
tests/
βββ unit/ # Unit tests for pure logic
β βββ processorRegistry.test.ts
β βββ claudeExtractor.test.ts
β βββ taskClusterer.test.ts
β βββ labelProcessor.test.ts
βββ integration/ # Integration tests (planned)
βββ mocks/ # Mock data and fixtures
β βββ gmailMessage.mock.ts
β βββ claudeResponse.mock.ts
βββ __mocks__/ # Module mocks
βββ obsidian.ts # Mock Obsidian API
For features requiring Obsidian integration:
- Build:
npm run build- Verify TypeScript compilation - Deploy:
npm run deploy- Install to test vault - OAuth Flow: Test Gmail authentication and token refresh
- Email Processing: Process emails and verify task extraction
- Dashboard: Test filters, clustering, and inline editing
Console Verification: Monitor DevTools (Ctrl+Shift+I) for errors
- Testing Strategy - Comprehensive testing plan and testable components
- Testing Setup - Step-by-step guide for adding new tests
Phase 1 (Complete):
- β Vitest framework configured
- β ProcessorRegistry unit tests
- β Mock Obsidian API infrastructure
Phase 2 (Complete):
- β ClaudeExtractor tests (prompt building, response parsing, fallback logic)
- β TaskClusterer tests (clustering logic, JSON auto-repair)
- β LabelProcessor tests (note formatting, task metadata)
- β Mock data factories (gmailMessage, claudeResponse)
- β 133 tests covering all testable business logic
Phase 3 (Future):
- Integration tests for Gmail/Claude API
- E2E tests for dashboard interactions
- CI/CD pipeline with automated quality gates
Note on Coverage: Overall project coverage is 10.91% because most of the codebase consists of integration code (Gmail API, OAuth, Obsidian UI) that was intentionally excluded from unit testing. The testable business logic components have high coverage (54-100%), which was the goal of Phase 2.
MIT License