| name | offercatcher |
|---|---|
| description | Use when the user wants recruiting emails turned into native Apple Reminders on macOS/iPhone. OpenClaw should scan and parse the mail, then hand reminder writes to the local native bridge instead of relying on node directly controlling Reminders.app. |
| version | 0.1.0 |
Scans Apple Mail for recruiting emails, extracts important events (interviews, assessments, deadlines) with LLM, and syncs them to native Apple Reminders on iPhone/Mac.
- OpenClaw is responsible for orchestration: scan mail, ask the LLM to parse events, and decide whether anything should be written.
scripts/apple_reminders_bridge.pyis the only reminder write path.- The bridge prefers
remindctl(Swift + EventKit) and only falls back to AppleScript ifremindctlis unavailable. - Do not rely on
node -> Reminders.appAutomation as the primary path. On macOS this permission is often less stable than a native Reminders bridge.
- "Check my recruiting emails"
- "Any interviews coming up?"
- "Sync interview emails to reminders"
- "Don't let me miss my coding test"
1. Scan: `--scan-only` → returns JSON with raw emails
2. Parse: OpenClaw LLM extracts structured recruiting events
3. Apply: `--apply-events` → sends validated events to the native reminders bridge
python3 scripts/recruiting_sync.py --scan-onlyReturns raw email data for LLM to parse.
For each email, extract:
company: Company nameevent_type: interview / ai_interview / written_exam / assessment / authorization / deadlinetiming:{"start": "YYYY-MM-DD HH:MM", "end": "..."}or{"deadline": "..."}role: Job titlelink: Event URL
python3 scripts/recruiting_sync.py --apply-events /tmp/events.jsonThis does not write Reminders directly from OpenClaw itself. It always routes through scripts/apple_reminders_bridge.py.
Extract recruiting event information from this email. Return JSON.
Email:
{body}
Extract:
- company: Company name
- event_type: interview / ai_interview / written_exam / assessment / authorization / deadline
- timing: {"start": "YYYY-MM-DD HH:MM", "end": "..."} or {"deadline": "..."}
- role: Job title
- link: Event URL
- notes: Additional info
- Reminder title: Company + Event type (e.g., "Google Interview", "Meta Coding Test")
- Include: Time, role, link in notes
- Prefer native bridge writes through
remindctl; if remindctl is unavailable, let the bridge use its AppleScript fallback - If no new events: respond
HEARTBEAT_OK
~/.openclaw/offercatcher.yaml:
mail_account: "Gmail" # Apple Mail account name
mailbox: INBOX # Folder to scan
days: 2 # Scan last N days
max_results: 60 # Max emailsThe LLM parser works with any language—Chinese, English, Japanese, German, etc. No regex, no language-specific rules.