Claude Code Plugins

Community-maintained marketplace

Feedback

whatsapp-message-management

@natea/ExoMind
4
0

Use when user wants to capture tasks, send briefings, or manage life via WhatsApp - leverages existing WhatsApp MCP for mobile-first workflow

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name whatsapp-message-management
description Use when user wants to capture tasks, send briefings, or manage life via WhatsApp - leverages existing WhatsApp MCP for mobile-first workflow

WhatsApp Message Management

Overview

Transform WhatsApp into a powerful life management interface that works seamlessly with ExoMind's task, habit, and knowledge systems. This skill enables mobile-first workflows where you can capture thoughts, receive daily briefings, check in on habits, and manage your life through natural WhatsApp conversations.

Core principle: Meet users where they are (on their phone) with quick, actionable messages that integrate with the broader ExoMind ecosystem.

Announce at start: "I'm using the WhatsApp message management skill to help you manage your life via mobile messaging."

Quick Reference

Phase Key Activities Tool Usage Output
1. Setup Configure WhatsApp MCP connection Check MCP server status Connected messaging channel
2. Quick Capture Parse incoming messages for tasks/notes mcp__whatsapp__send_message, Task creation Captured items in system
3. Daily Briefing Generate and send morning/evening updates Life OS skills, mcp__whatsapp__send_message Timely briefings delivered
4. Habit Check-ins Send reminders and log responses Habit tracking, mcp__whatsapp__send_message Habit streaks maintained
5. Contextual Queries Answer questions using ExoMind knowledge RAG search, mcp__whatsapp__send_message Informed responses

Life OS Integration

This skill integrates seamlessly with the Life OS workflow system:

  • daily-planning: Get morning priorities and tasks for briefings
  • weekly-review: Send weekly summaries and reflection prompts
  • processing-inbox: Quick capture flows into inbox processing
  • conducting-life-assessment: Track progress via daily briefings
  • goal-setting: Link daily tasks to quarterly goals

When to Use

  • User mentions "send me" or "message me on WhatsApp"
  • Daily briefing requests ("morning summary", "evening recap")
  • Quick capture scenarios ("I'll message you the task")
  • Habit tracking reminders ("remind me to...")
  • Mobile-first workflows
  • Time-sensitive notifications
  • On-the-go task management

The Pattern

Copy this checklist to track progress:

WhatsApp Management Progress:
- [ ] Phase 1: Setup (WhatsApp MCP configured and tested)
- [ ] Phase 2: Quick Capture (message parsing and task creation working)
- [ ] Phase 3: Daily Briefing (scheduled briefings configured)
- [ ] Phase 4: Habit Check-ins (reminder system active)
- [ ] Phase 5: Contextual Queries (RAG integration functional)

Phase 1: Setup & Connection

Verify WhatsApp MCP is available:

  • Check MCP server connection status
  • Test send/receive capabilities
  • Configure user's phone number if needed
  • Set up Do Not Disturb hours (default: 22:00-07:00)

Example verification:

# Check if WhatsApp MCP is available
claude mcp list | grep whatsapp

# Test connection with a ping message
# Use appropriate WhatsApp MCP tool to send test message

Phase 2: Quick Capture (Enhanced)

Parse incoming WhatsApp messages for tasks and notes:

Capture patterns to recognize:

  • Task indicators: "remind me", "todo", "task:", "I need to"
  • Note indicators: "note:", "remember", "idea:"
  • Voice note indicators: "voice memo", "audio note"
  • Photo indicators: Image attachments
  • Context indicators: "@work", "@home", "#project-name"
  • Priority indicators: "urgent", "important", "!!!"

Enhanced Processing Workflow:

// 1. Receive message via WhatsApp MCP
mcp__whatsapp__list_messages({
  after: lastCheckTime,
  limit: 20
});

// 2. Parse different media types
async function parseQuickCapture(message) {
  if (message.hasAudio) {
    // Voice note to task conversion
    const transcription = await transcribeVoiceNote(message.audioPath);
    return parseTaskFromText(transcription);
  }

  if (message.hasImage) {
    // Photo capture for reference
    const imageContext = await analyzeImage(message.imagePath);
    return {
      type: 'note',
      content: message.caption || 'Visual reference',
      attachment: message.imagePath,
      context: imageContext
    };
  }

  // Text parsing
  return parseTaskFromText(message.text);
}

// 3. Create item and add to inbox (processing-inbox skill)
async function quickCaptureToInbox(parsedItem) {
  const inboxItem = {
    content: parsedItem.content,
    type: parsedItem.type,
    context: parsedItem.context,
    priority: parsedItem.priority,
    tags: parsedItem.tags,
    source: 'whatsapp',
    capturedAt: new Date(),
    attachment: parsedItem.attachment
  };

  // Add to inbox for later processing
  await addToInbox(inboxItem);

  // Send confirmation
  await mcp__whatsapp__send_message({
    recipient: parsedItem.userPhone,
    message: formatConfirmation(inboxItem)
  });
}

Enhanced Capture Examples:

Text Capture:

User (WhatsApp): "Remind me to call dentist tomorrow @health"
ExoMind: "āœ“ Task added to inbox: Call dentist
Due: Tomorrow | Context: health
Process inbox? Reply 'inbox'"

Voice Note Capture:

User (WhatsApp): [Sends voice note: "Remember to buy milk, eggs, and bread on the way home"]
ExoMind: "šŸŽ¤ Voice note captured and transcribed:
āœ“ Task added to inbox: Buy milk, eggs, and bread
Context: errands
Process now? Reply 'yes'"

Photo Capture:

User (WhatsApp): [Sends photo of whiteboard with caption "Project ideas from today's meeting"]
ExoMind: "šŸ“ø Photo note saved:
'Project ideas from today's meeting'
āœ“ Added to inbox with visual reference
View later: Reply 'show photos'"

Quick Batch Capture:

User (WhatsApp): "todo: buy groceries, call mom, schedule dentist @personal"
ExoMind: "āœ“ 3 tasks added to inbox:
1. Buy groceries
2. Call mom
3. Schedule dentist

Context: personal | Ready to process? Reply 'inbox'"

Integration with processing-inbox skill:

All quick captures flow into the inbox processing workflow:

  1. Capture via WhatsApp → Inbox
  2. User processes inbox (mobile or desktop)
  3. Items converted to tasks, events, or notes
  4. Context and priority preserved throughout

Phase 3: Daily Briefing (Life OS Integration)

Morning Briefing Template (07:00-09:00):

Uses daily-planning skill to generate structured morning briefing:

// Integration with daily-planning skill
const morningBriefing = {
  priorities: [], // Top 3 tasks from daily plan
  calendar: [],   // Next 3 meetings/events
  habits: [],     // Active habits for today
  energy: null,   // Energy level from yesterday
  focus: null     // Today's main focus area
};

// Send via WhatsApp MCP
mcp__whatsapp__send_message({
  recipient: userPhoneNumber,
  message: formatMorningBriefing(morningBriefing)
});

Morning Message Format:

ā˜€ļø Good morning! {Day}, {Date}

šŸŽÆ TOP 3 PRIORITIES:
1. ⚔ {Priority Task 1} ({Time estimate})
2. ⚔ {Priority Task 2} ({Time estimate})
3. ⚔ {Priority Task 3} ({Time estimate})

šŸ“… NEXT 3 MEETINGS:
• {Meeting 1} at {Time}
• {Meeting 2} at {Time}
• {Meeting 3} at {Time}

āœ… PENDING TASKS: {Count}
šŸ”„ HABITS: {Count to complete}

šŸ’” Focus: {Today's main focus area}
⚔ Energy: {Yesterday's energy level}

Reply "done" + number to check off
Reply "plan" for full daily plan

Evening Briefing Template (18:00-20:00):

Uses daily-planning skill for retrospective:

// Integration with daily-planning and weekly-review skills
const eveningBriefing = {
  wins: [],           // Min 3 wins from today
  tasksCompleted: 0,  // Count of completed tasks
  habitsCompleted: 0, // Count of completed habits
  energy: null,       // Energy level today (1-5)
  reflection: null,   // Brief reflection prompt
  tomorrow: []        // Preview of tomorrow's priorities
};

// Send via WhatsApp MCP
mcp__whatsapp__send_message({
  recipient: userPhoneNumber,
  message: formatEveningBriefing(eveningBriefing)
});

Evening Message Format:

šŸŒ™ Evening recap - {Day}

šŸŽ‰ TODAY'S WINS (min 3):
1. {Win 1}
2. {Win 2}
3. {Win 3}

āœ… COMPLETED:
• {X} tasks finished
• {X} habits maintained
šŸ”„ Active streaks: {List streaks}

⚔ ENERGY CHECK:
How was your energy today? (1-5)
Reply with number

šŸ’­ REFLECTION:
{Reflection prompt based on weekly theme}

šŸ”œ TOMORROW PREVIEW:
Top priority: {Tomorrow's #1 task}

Reply "reflect" to share insights
Reply "wins" to add more wins

Weekly Briefing (Sunday Evening):

Uses weekly-review skill:

// Integration with weekly-review skill
const weeklyBriefing = {
  weekSummary: {},    // Week's achievements
  goalProgress: [],   // Progress on quarterly goals
  nextWeekFocus: null,// Next week's main focus
  habits: {},         // Habit completion rates
  reflection: null    // Weekly reflection prompt
};

// Send via WhatsApp MCP
mcp__whatsapp__send_message({
  recipient: userPhoneNumber,
  message: formatWeeklyBriefing(weeklyBriefing)
});

Weekly Message Format:

šŸ“Š WEEK {Number} SUMMARY

āœ… ACCOMPLISHED:
• {X} tasks completed
• {X} habits maintained
• {Key achievements}

šŸŽÆ GOAL PROGRESS:
• {Goal 1}: {X}% complete
• {Goal 2}: {X}% complete
• {Goal 3}: {X}% complete

šŸ”„ HABIT STREAKS:
• {Habit 1}: {X} days
• {Habit 2}: {X} days
• {Habit 3}: {X} days

šŸ”œ NEXT WEEK FOCUS:
{Main focus area for upcoming week}

šŸ’­ WEEKLY REFLECTION:
{Reflection prompt for weekly review}

Ready for weekly review? Reply "review"

Phase 4: Habit Check-ins

Reminder scheduling:

  • Send reminders at configured times
  • Track responses for habit completion
  • Maintain streak counts
  • Send encouragement for milestones

Smart reminder logic:

  • Don't remind if already completed today
  • Adjust timing based on completion patterns
  • Scale back frequency if consistently completed
  • Send encouragement on long streaks

Example interaction:

ExoMind (15:00): "šŸƒ Time for your afternoon walk! 7-day streak šŸ”„"
User: "done"
ExoMind: "āœ… Walk logged! Streak: 8 days. You're crushing it!"

ExoMind (21:00): "šŸ“– Evening reading reminder - 30 minutes to hit your goal"
User: "skip today, busy"
ExoMind: "No problem! Your 12-day streak is safe. We'll catch up tomorrow."

Phase 5: Contextual Queries

Handle questions and requests:

  • Use RAG to search knowledge base
  • Pull relevant task/habit context
  • Provide concise, mobile-friendly answers
  • Offer follow-up actions

Query patterns:

  • "What tasks do I have for [project]?"
  • "Show me my [habit] streak"
  • "What did I note about [topic]?"
  • "When is [task] due?"

Example:

User: "What tasks do I have for the website project?"
ExoMind: "🌐 Website Project (3 tasks):
1. ⚔ Design homepage mockup (Due: Fri)
2. Write copy for About page (Due: Next week)
3. Set up hosting (No due date)

Want to see details for any of these?"

Integration

WhatsApp MCP Tools

Primary interface for all messaging:

// Send text messages
mcp__whatsapp__send_message({
  recipient: "1234567890",  // Phone number or JID
  message: "Your briefing text here"
});

// Send files/images
mcp__whatsapp__send_file({
  recipient: "1234567890",
  media_path: "/absolute/path/to/file.jpg"
});

// Send voice messages
mcp__whatsapp__send_audio_message({
  recipient: "1234567890",
  media_path: "/absolute/path/to/audio.ogg"
});

// Receive messages
mcp__whatsapp__list_messages({
  after: "2025-01-15T00:00:00Z",
  limit: 20,
  include_context: true
});

// Search messages
mcp__whatsapp__search_contacts({
  query: "John"
});

// Download media from messages
mcp__whatsapp__download_media({
  message_id: "msg_123",
  chat_jid: "1234567890@s.whatsapp.net"
});

Life OS Skill Integration

daily-planning skill:

// Get today's priorities for morning briefing
const dailyPlan = await getDailyPlan(userId);
const morningBriefing = formatMorningBriefing({
  priorities: dailyPlan.topThree,
  meetings: dailyPlan.calendar,
  habits: dailyPlan.activeHabits
});

await mcp__whatsapp__send_message({
  recipient: userPhone,
  message: morningBriefing
});

weekly-review skill:

// Generate weekly summary for Sunday briefing
const weeklyReview = await getWeeklyReview(userId);
const weeklyBriefing = formatWeeklyBriefing({
  summary: weeklyReview.achievements,
  goalProgress: weeklyReview.goals,
  nextWeek: weeklyReview.nextFocus
});

await mcp__whatsapp__send_message({
  recipient: userPhone,
  message: weeklyBriefing
});

processing-inbox skill:

// Quick capture flows into inbox
const capturedItem = parseQuickCapture(whatsappMessage);
await addToInbox(capturedItem);

await mcp__whatsapp__send_message({
  recipient: userPhone,
  message: "āœ“ Added to inbox for processing"
});

conducting-life-assessment skill:

// Track energy and reflection via WhatsApp
const energyCheck = await promptEnergyRating(userPhone);
const reflection = await promptReflection(userPhone);

await updateLifeAssessment(userId, {
  energy: energyCheck,
  reflection: reflection,
  date: new Date()
});

goal-setting skill:

// Link daily tasks to quarterly goals in briefings
const goals = await getQuarterlyGoals(userId);
const todaysTasks = await getDailyTasks(userId);
const goalLinkedTasks = linkTasksToGoals(todaysTasks, goals);

// Include in morning briefing
const briefing = formatMorningBriefing({
  priorities: goalLinkedTasks,
  goalContext: goals
});

ExoMind Components

  • Task Manager: Create, update, complete tasks from messages
  • Habit Tracker: Log completions, check streaks, send reminders
  • Knowledge Base (RAG): Search notes and context for queries
  • Calendar Integration: Pull events for briefings
  • User Preferences: DND hours, notification frequency, message style
  • Inbox System: Quick capture flows into processing workflow

Common Use Cases

Use Case 1: Morning Commute Quick Capture

Scenario: User is on the train, thinks of three tasks

User: "todo: buy groceries, call mom, schedule dentist @personal"
ExoMind: "āœ“ Created 3 tasks in Personal context:
1. Buy groceries
2. Call mom
3. Schedule dentist

All added to your inbox for processing."

Use Case 2: Daily Briefing Workflow

Morning (07:30):

ExoMind: "ā˜€ļø Good morning! Tuesday, Jan 15

šŸ“‹ Today's Focus (3 tasks):
1. ⚔ Submit quarterly report (Due today)
2. Review team feedback
3. Prep for 2pm client call

šŸŽÆ Habits: Meditation, Exercise, Reading

Ready to crush it? Reply 'done 1' to check off tasks."

Evening (19:00):

ExoMind: "šŸŒ™ Evening recap:

āœ… Completed: 2 tasks, 3 habits
šŸ”„ Streaks maintained: Meditation (45d), Reading (12d)

Tomorrow's priority: Finish marketing presentation

How did today go? (Great/Good/Tough)"

Use Case 3: Habit Accountability

Scenario: User building a meditation habit

Day 1 (07:00): "🧘 Morning meditation time! Starting your new habit."
User: "done"
ExoMind: "āœ… Great start! Day 1 complete."

Day 7 (07:00): "🧘 Morning meditation - 7 day streak! šŸ”„"
User: "done"
ExoMind: "āœ… Week 1 complete! You're building a solid habit."

Day 30 (07:00): "🧘 Meditation time! 30-DAY MILESTONE! šŸŽ‰"
User: "done"
ExoMind: "āœ… 30 DAYS! This is now part of who you are. Amazing work!"

Use Case 4: Context-Aware Note Capture

Scenario: User learns something valuable

User: "Note: React useCallback only needed when passing callbacks to optimized child components - don't overuse #dev #react"

ExoMind: "āœ“ Note saved with tags: dev, react
Connected to 3 related notes in your knowledge base.
Want to see related content?"

User: "yes"

ExoMind: "Related notes:
1. React performance optimization patterns
2. When to use useMemo vs useCallback
3. React re-render debugging guide

Reply with number to view full note."

Use Case 5: Project Context Switching

Scenario: User needs to focus on specific project

User: "Show me everything for website redesign project"

ExoMind: "🌐 Website Redesign Project:

šŸ“‹ Tasks (5):
• Design homepage (Due: Thu) ⚔
• Write new copy (Due: Next week)
• Set up hosting (No due date)
• Configure analytics (No due date)
• Mobile testing (Blocked - needs design)

šŸ“ Recent Notes: 2
šŸ”— Related Habits: Daily design review

What would you like to focus on?"

Red Flags

Do Not:

  • Spam messages - Respect user's attention and DND hours
  • Send long messages - Keep everything scannable on mobile
  • Ignore context - Remember conversation history within session
  • Be overly formal - Match user's communication style
  • Send during DND hours - Default 22:00-07:00, user configurable
  • Over-notify - Bundle related updates together
  • Lose messages - Always confirm receipt and action taken

Warning Signs:

  • User says "too many messages" → Reduce frequency
  • Messages go unread for days → Adjust timing or format
  • User always uses "skip" on habits → Habit may not be right
  • Repeated "I already did this" → Check for duplicate tracking
  • User stops responding → Too much noise, dial back

Message Style Guide

Tone:

  • Encouraging but not pushy: "Time for your walk šŸƒ" not "You MUST walk now!"
  • Celebratory on wins: "7-day streak! šŸ”„" with emojis
  • Understanding on misses: "No problem, we'll catch up tomorrow"
  • Concise and scannable: Bullets, numbers, emojis for quick reading

Formatting:

  • Emojis for context: āœ… (done), ⚔ (urgent), šŸ”„ (streak), šŸ“‹ (tasks)
  • Numbers for quick action: "Reply 'done 1' to mark complete"
  • Line breaks for readability: Never send walls of text
  • Bold for key info: Limited use, important items only

Response Patterns:

Confirmation: "āœ“ [Action completed]"
Celebration: "āœ… [Achievement] šŸŽ‰"
Reminder: "šŸ”” [Habit/Task] - [Context]"
Query result: "šŸ“‹ [Category]: [List]"
Error: "āŒ [Issue] - [What to do]"

Technical Implementation Notes

Message Parsing (Enhanced)

async function parseQuickCapture(message) {
  const patterns = {
    task: /^(todo:|task:|remind me to)/i,
    note: /^(note:|remember:|idea:)/i,
    habit: /^(done|complete|skip|did)/i,
    query: /^(show|what|when|find|plan)/i,
    context: /@(\w+)/g,
    tags: /#(\w+)/g,
    priority: /(!{1,3}|urgent|important|asap)/i,
    voiceNote: message.hasAudio,
    photo: message.hasImage
  };

  // Handle voice notes
  if (patterns.voiceNote) {
    const audioPath = await mcp__whatsapp__download_media({
      message_id: message.id,
      chat_jid: message.chatJid
    });
    const transcription = await transcribeAudio(audioPath.file_path);
    message.text = transcription;
  }

  // Handle photos
  if (patterns.photo) {
    const imagePath = await mcp__whatsapp__download_media({
      message_id: message.id,
      chat_jid: message.chatJid
    });
    return {
      type: 'note',
      content: message.caption || 'Visual reference',
      attachment: imagePath.file_path,
      source: 'whatsapp'
    };
  }

  // Extract type, content, metadata
  const type = Object.keys(patterns).find(key =>
    patterns[key] instanceof RegExp && patterns[key].test(message.text)
  );

  const contexts = [...message.text.matchAll(patterns.context)].map(m => m[1]);
  const tags = [...message.text.matchAll(patterns.tags)].map(m => m[1]);
  const hasPriority = patterns.priority.test(message.text);

  return {
    type: type || 'task',
    content: message.text.replace(patterns[type] || '', '').trim(),
    contexts,
    tags,
    priority: hasPriority ? 'high' : 'normal',
    source: 'whatsapp',
    timestamp: message.timestamp
  };
}

Briefing Generation with Life OS Integration

// Morning briefing using daily-planning skill
async function generateMorningBriefing(userId) {
  // Get data from Life OS skills
  const dailyPlan = await getDailyPlan(userId);
  const calendar = await getCalendarEvents(userId, 'today');
  const habits = await getActiveHabits(userId);
  const energy = await getLastEnergyLevel(userId);

  const briefing = `ā˜€ļø Good morning! ${formatDate('today')}

šŸŽÆ TOP 3 PRIORITIES:
${dailyPlan.priorities.slice(0, 3).map((t, i) =>
  `${i + 1}. ⚔ ${t.title} (${t.timeEstimate})`
).join('\n')}

šŸ“… NEXT 3 MEETINGS:
${calendar.slice(0, 3).map(e =>
  `• ${e.title} at ${formatTime(e.start)}`
).join('\n')}

āœ… PENDING TASKS: ${dailyPlan.pendingCount}
šŸ”„ HABITS: ${habits.filter(h => !h.completedToday).length}

šŸ’” Focus: ${dailyPlan.mainFocus}
⚔ Energy: ${energy ? energy.level + '/5' : 'Not tracked'}

Reply "done" + number to check off
Reply "plan" for full daily plan`;

  return briefing;
}

// Evening briefing using daily-planning and weekly-review skills
async function generateEveningBriefing(userId) {
  const completed = await getCompletedTasks(userId, 'today');
  const habits = await getCompletedHabits(userId, 'today');
  const streaks = await getActiveStreaks(userId);
  const tomorrow = await getTomorrowPriorities(userId);
  const reflectionPrompt = await getReflectionPrompt(userId);

  const briefing = `šŸŒ™ Evening recap - ${formatDate('today')}

šŸŽ‰ TODAY'S WINS (min 3):
${completed.slice(0, 3).map((t, i) =>
  `${i + 1}. ${t.title}`
).join('\n')}

āœ… COMPLETED:
• ${completed.length} tasks finished
• ${habits.length} habits maintained
šŸ”„ Active streaks: ${streaks.map(s => s.name + ' (' + s.days + 'd)').join(', ')}

⚔ ENERGY CHECK:
How was your energy today? (1-5)
Reply with number

šŸ’­ REFLECTION:
${reflectionPrompt}

šŸ”œ TOMORROW PREVIEW:
Top priority: ${tomorrow[0]?.title || 'Not set'}

Reply "reflect" to share insights
Reply "wins" to add more wins`;

  return briefing;
}

// Weekly briefing using weekly-review skill
async function generateWeeklyBriefing(userId) {
  const weekReview = await getWeeklyReview(userId);
  const goalProgress = await getGoalProgress(userId);
  const habitStats = await getWeeklyHabitStats(userId);

  const briefing = `šŸ“Š WEEK ${weekReview.weekNumber} SUMMARY

āœ… ACCOMPLISHED:
• ${weekReview.tasksCompleted} tasks completed
• ${weekReview.habitsCompleted} habits maintained
• ${weekReview.keyAchievements.join('\n• ')}

šŸŽÆ GOAL PROGRESS:
${goalProgress.map(g =>
  `• ${g.name}: ${g.progress}% complete`
).join('\n')}

šŸ”„ HABIT STREAKS:
${habitStats.map(h =>
  `• ${h.name}: ${h.streak} days`
).join('\n')}

šŸ”œ NEXT WEEK FOCUS:
${weekReview.nextWeekFocus}

šŸ’­ WEEKLY REFLECTION:
${weekReview.reflectionPrompt}

Ready for weekly review? Reply "review"`;

  return briefing;
}

Scheduling

// Use cron jobs for automated briefings
const cron = require('node-cron');

// Morning briefing at 7:30 AM user's timezone
cron.schedule('30 7 * * *', async () => {
  const users = await getActiveUsers();
  for (const user of users) {
    if (!isInDNDHours(user)) {
      const briefing = await generateMorningBriefing(user.id);
      await mcp__whatsapp__send_message({
        recipient: user.phone,
        message: briefing
      });
    }
  }
}, {
  timezone: user.timezone
});

// Evening briefing at 7:00 PM
cron.schedule('0 19 * * *', async () => {
  const users = await getActiveUsers();
  for (const user of users) {
    if (!isInDNDHours(user)) {
      const briefing = await generateEveningBriefing(user.id);
      await mcp__whatsapp__send_message({
        recipient: user.phone,
        message: briefing
      });
    }
  }
}, {
  timezone: user.timezone
});

// Weekly briefing on Sunday at 6:00 PM
cron.schedule('0 18 * * 0', async () => {
  const users = await getActiveUsers();
  for (const user of users) {
    if (!isInDNDHours(user)) {
      const briefing = await generateWeeklyBriefing(user.id);
      await mcp__whatsapp__send_message({
        recipient: user.phone,
        message: briefing
      });
    }
  }
}, {
  timezone: user.timezone
});

State Management

  • Track conversation context within session
  • Remember last 10 interactions for continuity
  • Clear session after 30 minutes of inactivity
  • Persist user preferences across sessions
  • Store briefing history for pattern analysis
  • Link WhatsApp interactions to Life OS data

Privacy & Security

  • No message logging - Process and discard, don't store full messages
  • Secure MCP connection - Encrypted transport
  • User data stays local - Only send what's necessary to WhatsApp
  • Opt-in by default - User must enable WhatsApp integration
  • Easy opt-out - "pause notifications" command anytime

Examples

Example 1: Full Morning Routine

[07:30 - Automated briefing]
ExoMind: "ā˜€ļø Good morning! Wednesday, Jan 16

šŸ“‹ Today's Focus (4 tasks):
1. ⚔ Submit budget review (Due today)
2. Team standup at 10am
3. Review marketing materials
4. Plan weekend trip

šŸŽÆ Habits: Meditation, Exercise, Reading, Water intake
šŸŒ¤ļø Weather: Sunny, 72°F

Reply 'done' + number to check off tasks."

[07:45 - User interaction]
User: "done meditation"
ExoMind: "āœ… Meditation complete! 46-day streak šŸ”„"

[08:30 - Quick capture]
User: "todo: book restaurant for anniversary @personal !!"
ExoMind: "āœ“ High priority task created: Book restaurant for anniversary
Added to Personal context. Due date?"

User: "friday"
ExoMind: "āœ“ Due date set: This Friday, Jan 18"

[12:00 - Contextual query]
User: "what's my afternoon looking like?"
ExoMind: "šŸ“‹ Afternoon (3 items):
• Team standup at 10am āœ… (passed)
• Review marketing materials (Due today)
• Plan weekend trip (No due date)

You're on track! šŸŽÆ"

Example 2: Habit Building Journey

[Week 1]
Day 1: "šŸƒ Afternoon walk reminder - let's start strong!"
User: "done"
ExoMind: "āœ… Day 1 complete! Great start."

Day 3: "šŸƒ Walk time! You're 3 for 3 šŸ”„"
User: "skip today, raining"
ExoMind: "No problem! Weather happens. Tomorrow's a new day."

Day 4: "šŸƒ Back at it! 3-day streak still alive."
User: "done"
ExoMind: "āœ… Resilience! That's how habits stick."

[Week 4]
Day 28: "šŸƒ Walk time - almost at 30 days! šŸ”„"
User: "done"
ExoMind: "āœ… 28 days! Weekend milestone coming up! šŸŽ‰"

[Month 2]
Day 60: "šŸƒ 2-MONTH MILESTONE! šŸŽ‰ You've walked 60 days!"
User: "done"
ExoMind: "āœ… 60 DAYS! This is officially who you are now. Incredible!"

Example 3: Project-Based Workflow

User: "Starting work on mobile app project"
ExoMind: "šŸ“± Mobile App Project activated.

Current status:
šŸ“‹ 5 tasks (2 urgent)
šŸ“ 8 notes in knowledge base
šŸ”— Related: UI design habit

Want the task breakdown?"

User: "yes"

ExoMind: "šŸ“‹ Mobile App Tasks:
1. ⚔ Fix login bug (Due today)
2. ⚔ Review PR #234 (Due today)
3. Design settings screen (Due Fri)
4. Write API docs (Next week)
5. User testing prep (No date)

Start with #1? Reply 'done 1' when complete."

[Later that day]
User: "done 1"
ExoMind: "āœ… Login bug fixed!
⚔ Next up: Review PR #234
4 tasks remaining on Mobile App"

User: "note: Login issue was OAuth token expiration, fixed by refreshing tokens every 55min instead of 60min #mobile-app #auth"

ExoMind: "āœ“ Technical note saved!
Auto-tagged: mobile-app, auth
Connected to 2 related notes.

Back to PR #234 review?"

Life OS Command Reference

Quick commands users can send via WhatsApp:

Briefing Commands

  • "morning" or "briefing" - Get current morning briefing
  • "evening" or "recap" - Get evening recap
  • "weekly" - Get weekly summary
  • "plan" - Get full daily plan

Task Management

  • "done 1" - Mark task #1 as complete
  • "done [task name]" - Mark named task as complete
  • "tasks" - List all pending tasks
  • "todo: [task]" - Quick add task to inbox

Habit Tracking

  • "done [habit]" - Log habit completion
  • "skip [habit]" - Skip habit for today
  • "streaks" - Show all active streaks
  • "habits" - List today's habits

Inbox Processing

  • "inbox" - Show inbox count
  • "process" - Start inbox processing
  • "capture: [item]" - Quick capture to inbox

Energy & Reflection

  • "energy [1-5]" - Log energy level
  • "reflect" - Start reflection prompt
  • "wins" - Add today's wins
  • "wins [text]" - Quick add win

Context & Projects

  • "show [project]" - Show project tasks
  • "focus [area]" - Set focus area
  • "context @[name]" - Switch context

Weekly Review

  • "review" - Start weekly review
  • "goals" - Show goal progress
  • "next week" - Set next week focus

Success Metrics

Track these to optimize the system:

  • Message response rate (target: >80%)
  • Time to task capture (<30 seconds)
  • Briefing read rate (target: >90%)
  • Habit completion rate improvement
  • User satisfaction with notification timing
  • Average session length
  • "Too many messages" complaints (target: <5%)

Iterate based on:

  • User feedback on timing and frequency
  • Completion patterns (morning vs evening people)
  • Response times (adjust send times)
  • Habit streaks (celebrate more, remind less as habits stick)