Skip to content

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:

JobScheduleWhat It Checks
early-meeting-reminder9pm dailyTomorrow for 7-8am meetings AND after 8pm meetings
late-meeting-reminder5pm dailyToday for after 8pm meetings
Terminal window
# 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-deliver

Why —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_TOMORROW
07:30 AM - Standup with London team
07:45 AM - India sync
LATE_MEETINGS
08:30 PM - Customer review (APAC)

The agent receives this output and formats a friendly iMessage reminder.