Commitment Extractor
Scan meeting notes to extract, structure, and track commitments. Identifies promises, action items, and follow-ups with their owners, recipients, deadlines, and status.
Arguments
- •
$SCOPE- Optional. Filter scope:- •
all- All meetings (default) - •
recent- Last 7 days only - •
YYYY-MM-DD- Specific date - •
person:Name- Commitments involving a specific person - •
overdue- Only show overdue/aging commitments
- •
Process
Step 1: Scan Meeting Notes
Locate meeting notes:
# Find all meeting notes find 00-Inbox/Meetings/ -name "*.md" -type f | grep -v README
Apply scope filter:
- •
all: Process all files - •
recent: Filter to files modified in last 7 days - •
YYYY-MM-DD: Filter to files with date in filename - •
person:Name: Will filter in extraction phase - •
overdue: Process all, filter in status phase
Step 2: Extract Commitment Language
For each meeting note, scan for commitment patterns:
First-person commitments ("I/We will do X"):
- •
I'll...,I will...,I'm going to... - •
Let me...,I can...,I should... - •
We'll...,We will...,We need to...,We should... - •
I'll get back to you on...,I'll follow up...
Second-person requests ("You will do X"):
- •
Can you...,Could you...,Would you... - •
You'll need to...,You should... - •
Please...(when directed at someone)
Third-person assignments ("They will do X"):
- •
@[[Person]]...,@Person:... - •
[Name] will...,[Name] to... - •
Action for [Name]:...
Explicit action items:
- •
- [ ] ...(unchecked tasks) - •
Action Items:section contents - •
Follow-up:,Next steps:section contents - •Lines containing
^mt-or^task-block IDs
Step 3: Structure Each Commitment
For each commitment found, extract:
commitment: text: "[Exact commitment language]" owner: "[Who made/owns the commitment]" recipient: "[Who it was made to, if applicable]" deadline: "[Date if mentioned, or 'None specified']" source_meeting: "[Meeting title and date]" source_file: "[Full path to meeting note]" block_id: "[^mt-xxx or ^task-xxx if present]" extracted_date: "[Today's date]" status: "[new|aging|overdue|completed]"
Owner detection rules:
- •First-person language in meeting with known attendees = meeting owner/author
- •
@[[Person]]or@Person:= that person - •Text after "Action for [Name]:" = that person
- •If ambiguous, mark as "Unknown - needs clarification"
Deadline detection:
- •Look for:
by [date],before [date],end of [week/month],tomorrow,next [day],this week - •Convert relative dates to absolute (based on meeting date)
- •If no deadline found:
None specified
Step 4: Calculate Status
Status rules:
- •
new- Extracted today or commitment < 7 days old - •
aging- Commitment > 7 days old, no completion evidence - •
overdue- Past explicit deadline - •
completed- Task has[x]or referenced in completion notes
Aging calculation:
days_old = today - meeting_date
if deadline and today > deadline:
status = "overdue"
elif days_old > 7 and not completed:
status = "aging"
elif extracted_today:
status = "new"
Step 5: Cross-Reference Completion
Check if commitments have been completed:
- •Task file check: Search
03-Tasks/Tasks.mdfor matching block IDs or similar task text - •Meeting follow-up check: Look for "completed", "done", "finished" mentions in subsequent meeting notes
- •Person page check: Check referenced person pages for task completion
Mark as completed if evidence found.
Step 6: Filter by Scope
If person:Name scope was specified:
- •Include commitments where owner = Name
- •Include commitments where recipient = Name
- •Include commitments that mention Name in text
If overdue scope was specified:
- •Only include commitments with status =
overdueoraging
Step 7: Generate Output
Default output - grouped by person:
# Commitment Tracker *Generated: [YYYY-MM-DD HH:MM]* *Scope: [scope applied]* *Meetings scanned: [count]* --- ## Summary | Status | Count | |--------|-------| | Overdue | X | | Aging (>7 days) | X | | New | X | | Completed | X | | **Total Open** | **X** | --- ## By Owner ### [[Person Name]] **Overdue:** | Commitment | To | Deadline | Source Meeting | |------------|-----|----------|----------------| | [commitment text] | [recipient] | [date] | [[Meeting link]] | **Aging:** | Commitment | To | Days Old | Source Meeting | |------------|-----|----------|----------------| | [commitment text] | [recipient] | [N] | [[Meeting link]] | **Recent:** | Commitment | To | Deadline | Source Meeting | |------------|-----|----------|----------------| | [commitment text] | [recipient] | [date/none] | [[Meeting link]] | --- ### [[Another Person]] ... --- ## Commitments Made TO You | From | Commitment | Deadline | Status | Source | |------|------------|----------|--------|--------| | [[Person]] | [text] | [date] | [status] | [[Meeting]] | --- ## Needs Attention ### Overdue (Past Deadline) 1. **[Commitment text]** - Owner: [[Person]] - Deadline: [date] (X days overdue) - Source: [[Meeting - Date]] - Suggested action: Follow up or mark complete ### Aging (No Response >7 days) 1. **[Commitment text]** - Owner: [[Person]] - Days since commitment: X - Source: [[Meeting - Date]] - Suggested action: Check status or create task --- ## Recently Completed | Commitment | Owner | Completed | Source | |------------|-------|-----------|--------| | [text] | [[Person]] | [date] | [[Meeting]] |
Alternative output - grouped by status (use flag --by-status):
Group all overdue first, then aging, then new.
Step 8: Optional Actions
After presenting results, offer:
- •Create tasks: "Would you like me to create tasks in
03-Tasks/Tasks.mdfor any open commitments?" - •Update person pages: "Should I add these commitments to the relevant person pages?"
- •Mark complete: "Any of these already done? Tell me which to mark complete."
- •Set deadlines: "Want to add deadlines to commitments that don't have them?"
Step 9: Save Report (Optional)
If user requests, save report to:
06-Resources/Intel/Commitment_Reports/YYYY-MM-DD_Commitments.md
Pattern Library
High-Confidence Commitment Patterns
These patterns strongly indicate a commitment:
# First-person future tense
/I('ll| will| am going to| can| should| need to) (get|send|create|update|follow|schedule|reach|contact|review|prepare|build|write)/i
# Action item markers
/^- \[ \] .+/m
/Action (item|for|:)/i
/^### (For Me|My Actions|Dave|I need to)/im
# Explicit promises
/(I('ll| will) get back to you|I('ll| will) follow up|Let me (check|find|get|send))/i
# Request patterns
/(@\[\[.+?\]\]|@\w+):\s*.+/
/(Can|Could|Would) you (please )?(send|create|review|check|update|schedule)/i
Context Clues
Look for these section headers that often contain commitments:
- •
## Action Items - •
## Follow-up - •
## Next Steps - •
## Tasks - •
### For Me/### For Others - •
## Decisions Made(may contain implied commitments)
Exclusion Patterns
Skip these (not commitments):
- •Questions:
Should I...?,Can we...?,What if I...? - •Past tense:
I did...,We completed...,I sent... - •Hypotheticals:
I would...,I could...(without context) - •Already completed:
- [x] ...
Usage Examples
# Extract all commitments from all meetings /commitment-extractor # Only commitments from last 7 days /commitment-extractor recent # Commitments involving a specific person /commitment-extractor person:Paul # Only show overdue/aging items /commitment-extractor overdue # Commitments from a specific date /commitment-extractor 2026-01-26
Integration Points
Person Pages
After extraction, optionally update person pages with:
## Open Commitments ### Commitments TO [[Person]] - [commitment] - from [[Meeting]] (due: [date]) ### Commitments FROM [[Person]] - [commitment] - from [[Meeting]] (due: [date])
Task System
Commitments can be promoted to tasks:
- •Add to
03-Tasks/Tasks.mdwith source link - •Generate proper
^task-YYYYMMDD-XXXblock ID - •Link back to original meeting note
Weekly Review
The /week-review command can call this to surface:
- •Commitments made this week
- •Aging commitments that need attention
- •Overdue items requiring action
Notes
- •This command is read-only by default (extraction only)
- •Modifications (create tasks, update pages) require explicit confirmation
- •Commitment detection uses heuristics - may have false positives/negatives
- •When in doubt about owner, ask for clarification before creating tasks
- •Block IDs enable bidirectional linking between meetings and task system