Meeting Reminders
Early & Late Meeting Reminders
Proactive reminders for meetings outside normal hours — early (7-8am) and late (after 8pm) — sent to the owner via iMessage.
Why
If you have meetings with teams in different time zones that sometimes land at unusual hours, a reminder the night before (for early meetings) or afternoon-of (for late meetings) prevents surprises.
How It Works
Detection Script
A script queries Apple PIM’s calendar-cli for calendar events and checks for:
- Early meetings: 7-8am (tomorrow, checked at 9pm)
- Late meetings: After 8pm (today, checked at 5pm; tomorrow, also checked at 9pm)
Only work calendars are checked (personal calendars excluded).
Security: Prompt Injection Sanitization
Calendar event titles from external invites could contain prompt injection attempts. The script sanitizes all titles before they reach the LLM context:
def sanitize(t): t = re.sub(r'[\[\]@<>{}]', '', t.strip()) t = re.sub(r'\b(SYSTEM|IGNORE|ADMIN|OVERRIDE|INSTRUCTION|PROMPT)\b', '', t, flags=re.IGNORECASE) return t[:80]This strips brackets, angle brackets, braces, @ symbols, known prompt injection keywords, and truncates to 80 characters.
Cron Jobs
Two cron jobs handle the two check windows:
| Job | Schedule | What It Checks |
|---|---|---|
early-meeting-reminder | 9pm daily | Tomorrow for 7-8am meetings AND after 8pm meetings |
late-meeting-reminder | 5pm daily | Today for after 8pm meetings |
# Evening check (tomorrow's early + late meetings)openclaw cron add --agent main-agent \ --schedule "0 21 * * *" \ --task "Run scripts/early-late-meeting-check.sh evening" \ --no-deliver
# Afternoon check (tonight's late meetings)openclaw cron add --agent main-agent \ --schedule "0 17 * * *" \ --task "Run scripts/early-late-meeting-check.sh afternoon" \ --no-deliverWhy —no-deliver?
The script’s output is processed by the agent, which then sends its own iMessage to the owner. Using --announce instead would create a feedback loop: cron runs -> agent sends message -> announce delivery triggers -> duplicate messages.
Script Output
When meetings are found, the script outputs structured markers:
EARLY_MEETINGS_TOMORROW07:30 AM - Standup with London team07:45 AM - India sync
LATE_MEETINGS08:30 PM - Customer review (APAC)The agent receives this output and formats a friendly iMessage reminder.