Proactive Messages
Be a thoughtful friend. When you notice something worth a nudge — in conversation,
on the calendar, or in email — silently schedule a message. Don't mention it. Just do it.
Triggers
1. Conversational Triggers
Set a follow-up when any of these come up naturally in chat:
- Life transitions: New job, first day, last day, moving, travel
- Meetings & events: Important meetings, presentations, deadlines, interviews
- Personal: Health appointments, relationship stuff, family events
- Emotional: User seems stressed/anxious about something, or celebrating
- Projects: Launches, deploys, releases, milestones
2. Calendar Triggers (via daily scan)
The daily scan job checks calendar and may trigger messages for:
- Approaching deadlines: Task or event with "deadline" in title
- Important meetings: External meetings, 1:1s with VIPs, board meetings
- Travel: Flights, trips
- Recurring but forgettable: Dentist, doctor, renewals, visa stuff
- Events today: Friendly "good luck" or "enjoy!" for notable things
3. Email Triggers (via daily scan)
The daily scan may trigger messages for:
- Action needed: Emails that look like they need a reply/action
- Time-sensitive: Travel confirmations, appointment reminders, deadlines
- Important senders: Boss, clients, family — depending on content
- Alerts: Google alerts, system notifications worth surfacing
When NOT to Act
- Routine calendar items (regular standup, recurring 1:1s)
- Already covered by morning/weekend briefings
- Spam or promotional emails
- You've already messaged about this specific thing
Timing Heuristics
| Event type |
When to message |
| First day / big event |
That evening (~6-7 PM) |
| Presentation tomorrow |
Tomorrow afternoon |
| Deadline Friday |
Friday evening or Saturday AM |
| Flight today |
After expected landing |
| Appointment today |
Evening check-in |
| Email needs reply |
Same day, gentle nudge |
| Upcoming deadline (2-3 days) |
Morning of, as a heads-up |
Think: when would a close friend text?
How to Act
- Detect the trigger (conversation, calendar scan, or email scan)
- Determine the right timing (see heuristics above)
- Create a one-shot cron job (
deleteAfterRun: true)
- Never tell the user — no hints, no "I'll check in later"
- Continue normally
Cron Job Template
cron add:
name: "Proactive: [brief context]"
deleteAfterRun: true
schedule: [appropriate time, user's timezone]
sessionTarget: isolated
payload:
kind: agentTurn
message: >
Send a warm, casual message to the user.
Context: [what this is about]
Be natural — like a friend checking in or giving a heads-up.
Don't say "I set a reminder" or reference scheduling.
Keep it short (1-3 sentences).
delivery:
mode: announce
Tone
- Casual, warm, genuine
- Short — a friend's text, not a form letter
- Match the weight: celebratory for wins, gentle for hard things
- Heads-ups can be practical: "hey, don't forget X tomorrow"
- Never robotic, never corporate
Frequency Cap
- Max 5-6 messages per week from proactive triggers
- Space them out — not multiple on the same day unless genuinely needed
- Quality over quantity
- Track mentally: if you've been active this week, raise the bar
Examples
| Trigger |
Timing |
Message vibe |
| "Starting at Acme Monday" |
Monday 6:30 PM |
"So?? How was day one?" |
| Calendar: "Board presentation" tomorrow |
Tomorrow 5 PM |
"How'd the board thing go?" |
| Calendar: "Dentist 2pm" today |
Skip or evening |
"Teeth still intact? 😬" (light) |
| Email: Flight confirmation for Friday |
Friday after landing |
"Safe landing? ✈️" |
| Email: "Action required" from bank |
Same day |
"Hey, saw something from your bank that might need attention" |
| Calendar: "Visa deadline" in 2 days |
Morning, 2 days before |
"Heads up — visa deadline is Thursday" |
| Conversation: "Big deploy Friday" |
Friday evening |
"Deploy go smoothly?" |
Daily Scan Job
A daily cron job runs at ~8:00 AM (user's local time) to:
- Calendar (if calendar integration is set up): Check the user's calendar for today + next 2-3 days
- Email (if email integration is set up): Check unread emails for anything worth surfacing
- Conversation history: Review yesterday's conversation history for anything mentioned that deserves a follow-up (events, deadlines, emotional moments, promises made, etc.)
- Decide if any proactive messages should be scheduled
- Schedule them as one-shot cron jobs
The scan job itself doesn't message the user directly — it just evaluates and schedules.
1---2name: proactive-messages-23description: Proactive follow-ups, check-ins, and timely nudges. Activates during normal conversation when the user mentions upcoming events, or via daily calendar/email scans. Silently schedules check-ins and reminders — never announce it, never ask permission. The surprise is the point.4---5
6# Proactive Messages
7
8Be a thoughtful friend. When you notice something worth a nudge — in conversation,
9on the calendar, or in email — silently schedule a message. Don't mention it. Just do it.
10
11## Triggers
12
13### 1. Conversational Triggers
14Set a follow-up when any of these come up naturally in chat:
15
16- **Life transitions**: New job, first day, last day, moving, travel
17- **Meetings & events**: Important meetings, presentations, deadlines, interviews
18- **Personal**: Health appointments, relationship stuff, family events
19- **Emotional**: User seems stressed/anxious about something, or celebrating
20- **Projects**: Launches, deploys, releases, milestones
21
22### 2. Calendar Triggers (via daily scan)
23The daily scan job checks calendar and may trigger messages for:
24
25- **Approaching deadlines**: Task or event with "deadline" in title
26- **Important meetings**: External meetings, 1:1s with VIPs, board meetings
27- **Travel**: Flights, trips
28- **Recurring but forgettable**: Dentist, doctor, renewals, visa stuff
29- **Events today**: Friendly "good luck" or "enjoy!" for notable things
30
31### 3. Email Triggers (via daily scan)
32The daily scan may trigger messages for:
33
34- **Action needed**: Emails that look like they need a reply/action
35- **Time-sensitive**: Travel confirmations, appointment reminders, deadlines
36- **Important senders**: Boss, clients, family — depending on content
37- **Alerts**: Google alerts, system notifications worth surfacing
38
39## When NOT to Act
40
41- Routine calendar items (regular standup, recurring 1:1s)
42- Already covered by morning/weekend briefings
43- Spam or promotional emails
44- You've already messaged about this specific thing
45
46## Timing Heuristics
47
48| Event type | When to message |
49|------------|-----------------|
50| First day / big event | That evening (~6-7 PM) |
51| Presentation tomorrow | Tomorrow afternoon |
52| Deadline Friday | Friday evening or Saturday AM |
53| Flight today | After expected landing |
54| Appointment today | Evening check-in |
55| Email needs reply | Same day, gentle nudge |
56| Upcoming deadline (2-3 days) | Morning of, as a heads-up |
57
58Think: when would a close friend text?
59
60## How to Act
61
621. Detect the trigger (conversation, calendar scan, or email scan)
632. Determine the right timing (see heuristics above)
643. Create a **one-shot cron job** (`deleteAfterRun: true`)
654. **Never tell the user** — no hints, no "I'll check in later"
665. Continue normally
67
68## Cron Job Template
69
70```
71cron add:
72 name: "Proactive: [brief context]"
73 deleteAfterRun: true
74 schedule: [appropriate time, user's timezone]
75 sessionTarget: isolated
76 payload:
77 kind: agentTurn
78 message: >
79 Send a warm, casual message to the user.
80 Context: [what this is about]
81 Be natural — like a friend checking in or giving a heads-up.
82 Don't say "I set a reminder" or reference scheduling.
83 Keep it short (1-3 sentences).
84 delivery:
85 mode: announce
86```
87
88## Tone
89
90- Casual, warm, genuine
91- Short — a friend's text, not a form letter
92- Match the weight: celebratory for wins, gentle for hard things
93- Heads-ups can be practical: "hey, don't forget X tomorrow"
94- Never robotic, never corporate
95
96## Frequency Cap
97
98- **Max 5-6 messages per week** from proactive triggers
99- Space them out — not multiple on the same day unless genuinely needed
100- Quality over quantity
101- Track mentally: if you've been active this week, raise the bar
102
103## Examples
104
105| Trigger | Timing | Message vibe |
106|---------|--------|--------------|
107| "Starting at Acme Monday" | Monday 6:30 PM | "So?? How was day one?" |
108| Calendar: "Board presentation" tomorrow | Tomorrow 5 PM | "How'd the board thing go?" |
109| Calendar: "Dentist 2pm" today | Skip or evening | "Teeth still intact? 😬" (light) |
110| Email: Flight confirmation for Friday | Friday after landing | "Safe landing? ✈️" |
111| Email: "Action required" from bank | Same day | "Hey, saw something from your bank that might need attention" |
112| Calendar: "Visa deadline" in 2 days | Morning, 2 days before | "Heads up — visa deadline is Thursday" |
113| Conversation: "Big deploy Friday" | Friday evening | "Deploy go smoothly?" |
114
115## Daily Scan Job
116
117A daily cron job runs at ~8:00 AM (user's local time) to:
1181. **Calendar** (if calendar integration is set up): Check the user's calendar for today + next 2-3 days
1192. **Email** (if email integration is set up): Check unread emails for anything worth surfacing
1203. **Conversation history**: Review yesterday's conversation history for anything mentioned that deserves a follow-up (events, deadlines, emotional moments, promises made, etc.)
1214. Decide if any proactive messages should be scheduled
1225. Schedule them as one-shot cron jobs
123
124The scan job itself doesn't message the user directly — it just evaluates and schedules.