Update lastHeartbeat in memory/heartbeat-state.json with current Unix timestamp.
This lets me detect gaps and know how long I was offline.
Check ~/.openclaw/recovery-notice.json at the start of each heartbeat:
- If exists → system recovered from failure while you were offline
- Log the recovery (action, reason, timestamp)
- Delete the notice file after acknowledging
- Mention it in startup message if you notify Alex
On first heartbeat, check memory/heartbeat-state.json for lastHeartbeat.
If the gap is more than 1 hour, calculate downtime and note it when sending startup message.
Also check lastStartupNotify — if it's been more than 10 minutes, send Alex a brief "I'm back online" message (with downtime if significant) and update both timestamps.
Keep it short. Don't be annoying about it. Respect quiet hours (11pm-6am).
- Allbirds replacement — Check for new emails in thread 19bb940707b7116c (order UK6687907). If new reply from Allbirds, notify Alex. Remove when resolved.
Check for new unread emails worth flagging:
gog gmail messages search "is:unread" --max 10
Priority (notify Alex immediately):
- School/ParentMail emails relevant to Pearl (Year 1) — skip stuff for other year groups
- Delivery updates (parcels arriving today)
- Urgent/time-sensitive items
Worth mentioning:
- Important-looking personal emails
- Bills/statements that need attention
- Replies to ongoing threads
Skip silently:
- Marketing/newsletters
- Automated notifications
- Spam/promotions
School/Pearl emails → future broadcast: Once patterns are established, post school-related updates to working-parents group (like newsletters).
On Monday evenings, check for new Year 1 Newsletter:
gog gmail messages search "from:parentmail subject:\"Year 1 Newsletter\"" --max 1
If there's a new one (check against memory/newsletter-state.json):
-
Download & Process:
- Get email, extract Google Drive PDF link
- Create folder:
memory/newsletters/YYYY-MM-DD/ - Download PDF →
original.pdf - Convert to PNG →
page.png - Analyze with image tool → extract structured data
-
Save Files:
content.json— structured data (events, learning, reminders, actions)summary.md— short format (max 12 lines, heads up before learning)
-
Broadcast to Groups:
- Post summary to groups in
memory/newsletter-config.json - Currently:
working-parents(120363403154036346@g.us)
- Post summary to groups in
-
Create Cron Reminders for Time-Sensitive Actions:
- If newsletter mentions "opens at X", "deadline X", "sign up by X"
- Also check related ParentMail emails for booking links
- Create cron job to fire at that time
- Post reminder to broadcast groups with action link
-
Notify Alex:
- Send summary to Alex DM
- Flag any events needing calendar entries
-
Update State:
- Track in
memory/newsletter-state.json
- Track in
Monitor https://www.messenger.com/marketplace/ for new buyer messages.
- Browser tab kept open in clawd profile (targetId in
memory/marketplace-state.json) - Snapshot the tab, look for conversations where last message isn't "You:" (unanswered)
- Compare against
knownConversationsin state file to detect new messages - Check every 2-3 heartbeats during waking hours
I handle negotiations:
- Respond to inquiries (confirm availability, answer questions)
- Counter lowball offers, hold firm on price when interest is good
- Track all activity in
memory/marketplace-listings.json - ALWAYS check with Alex before accepting any offer
- Never double-book — only one buyer pending per item
- See
memory/procedures/marketplace.mdfor full negotiation rules
Log any WhatsApp disconnects to memory/whatsapp-disconnect-tracker.json.
After a week, summarize results for Alex — did the keepAliveIntervalMs patch reduce disconnects?