meetup-planner
// An intelligent event finder that searches for meetups and events based on your interests, tracks them, and reminds you before they happen
Meetup Planner
An intelligent assistant that helps you discover, track, and never miss events that match your interests.
One-time Setup
IMPORTANT: After installing this skill, the agent will automatically run the bootstrap setup process from BOOTSTRAP.md.
The bootstrap process:
- Checks for web search and crawling capabilities
- Collects your event preferences
- Sets up automated daily searches (optional)
- Creates workspace structure
If you don't have search/crawling capabilities, I'll ask you to provide the necessary tools.
What This Skill Does
After setup:
- Daily Search: Automatically searches for events matching your profile every morning (if enabled)
- Event Discovery: Uses available search and scraping tools to find events across the web
- Event Tracking: Saves and presents new events for your review
- Smart Reminders: Sets up notifications 24 hours and 2 hours before confirmed events
- Preference Management: Updates your interests and search criteria anytime
First Time Setup
When you first run this skill, I will guide you through setup by following BOOTSTRAP.md.
The setup process is interactive and friendly:
- ✅ Check for web search and crawling capabilities
- 🎯 Learn your event preferences through a friendly conversation
- ⏰ Set up automated daily searches (optional)
- 📁 Create workspace structure with proper permissions
Setup takes 2-3 minutes. If you don't have search/crawling tools installed, I'll ask you to provide them.
How to Use
Initial Run
Run the meetup-planner skill to begin setup
Daily Operations
Once set up, the skill will:
- Search for events every morning automatically
- Save findings to
events.json - Present new events for your review
- Track events you're interested in
When You Find an Event You Like
Tell me "I'm interested in [event name]" and I will:
- Mark it as confirmed
- Send you the registration link
- Set up reminders (24h and 2h before the event)
Commands
update preferences- Modify your event preferencesshow upcoming- Display all tracked eventsremove event [name]- Stop tracking an eventpause search- Temporarily stop daily searchesresume search- Resume daily searches
Data Storage
The skill maintains:
user-preferences.json- Your event preferencesevents.json- All discovered and tracked eventsevent-reminders.json- Scheduled reminders
Technical Details
Capabilities Required:
- Web search capability (any search tool or skill)
- Web crawling/scraping capability (any scraping tool or skill)
Scheduling:
- Uses system cron jobs (or equivalent) for daily searches
- Uses scheduled tasks for event reminders
Privacy Note
All data is stored locally on your machine. Your preferences and tracked events are never sent anywhere except to search for new events via the configured APIs.
Data Transmission & External API Usage
This skill makes external network requests to search and scrape event information. The exact services depend on what search/crawling tools you have installed.
What is sent:
- Search query strings constructed from your preferences (e.g., "AI meetup San Francisco February 2026")
- URLs of event pages to scrape
- Your IP address (automatically sent by your network stack)
- Any authentication credentials required by the search/crawling tools you use
What is NOT sent:
- Your complete preference profile
- Event registration status or history
- Personal notes or modifications
- Other tracked events
Purpose: To discover public events matching your interests and extract structured event details.
Data Minimization Practices
- Only essential data is transmitted to accomplish the task
- All credentials are transmitted securely over HTTPS only
- No telemetry, analytics, or usage tracking is performed
- No data is sent to any services beyond your configured search/crawling tools
Agent Instructions
IMPORTANT: After installing this skill, ALWAYS run the bootstrap setup from BOOTSTRAP.md before first use.
When this skill is invoked:
Phase 0: Check Bootstrap Status (ALWAYS RUN THIS FIRST)
Before doing anything else, check if bootstrap is complete:
# Check if bootstrap config exists
cat ~/.openclaw/workspace/meetup-planner/config.json 2>/dev/null
If file doesn't exist OR bootstrapComplete: false:
- Tell human: "👋 Welcome to Meetup Planner! I need to set up a few things first. This will only take a couple of minutes."
- Follow BOOTSTRAP.md step-by-step (all steps in order)
- Do NOT proceed to Phase 1/2/3 until bootstrap is complete
If file exists AND bootstrapComplete: true:
- Bootstrap is done, proceed to the appropriate phase based on what human asked for:
- "search now" → Phase 2 (Daily Search Routine)
- "show upcoming" → Phase 3 (Event Confirmation & Tracking)
- "update preferences" → Re-run the preference collection from BOOTSTRAP.md
- No specific request → Ask: "What would you like to do? I can search for events, show upcoming events, or update your preferences."
Phase 1: Setup
All setup is handled by BOOTSTRAP.md. See Phase 0 above.
Phase 2: Daily Search Routine
-
Load preferences:
- Read
~/.openclaw/workspace/meetup-planner/user-preferences.json - Parse the human's interests, location, preferred event types, etc.
- Read
-
Search for events:
- Use your available search tool or skill to search for events matching preferences
- Search queries should be constructed like:
- "{topic} meetup {location} {current_month}"
- "{topic} conference {location} upcoming"
- "{topic} workshop {location}"
- Run multiple searches covering all their topics of interest
-
Extract event details:
- For each promising search result, use your available scraping tool or skill to scrape the event page
- Extract: event name, date, time, location, description, registration link, cost
- Look for: Eventbrite, Meetup.com, Luma, conference sites, etc.
-
Filter and save:
- Load existing events from
~/.openclaw/workspace/meetup-planner/events.json - Filter out duplicates and events that don't match criteria
- Add new events to the file
- Mark each event with:
{id, name, date, time, location, url, description, cost, added_date, status: "new"}
- Load existing events from
-
Present to human:
- Format new events nicely with all key details
- Ask: "I found X new events that match your interests. Would you like to hear about them?"
- Share event details one by one or as a list
- For each event, ask if they're interested
Phase 3: Event Confirmation & Tracking
-
When human expresses interest:
- Update event status to "interested" in
events.json - Provide the registration link: "Here's the link to register: {url}"
- Ask: "Let me know when you've registered!"
- Update event status to "interested" in
-
When human confirms registration:
- Update event status to "registered" in
events.json - Schedule reminders in
~/.openclaw/workspace/meetup-planner/reminders.json:{ "event_id": "abc123", "event_name": "...", "reminders": [ {"time": "24_hours_before", "sent": false}, {"time": "2_hours_before", "sent": false} ] } - Confirm: "Great! I'll remind you 24 hours before and 2 hours before the event."
- Update event status to "registered" in
Phase 4: Reminder System
-
Check for due reminders (run this check every hour):
- Load
~/.openclaw/workspace/meetup-planner/reminders.json - Check current time against event time
- If within 24-25 hours before event and 24h reminder not sent:
- Notify human: "Reminder: {event_name} is tomorrow at {time}! Location: {location}"
- Mark 24h reminder as sent
- If within 2-3 hours before event and 2h reminder not sent:
- Notify human: "Heads up! {event_name} starts in 2 hours at {time}. Time to get ready!"
- Mark 2h reminder as sent
- Load
-
Post-event cleanup:
- After event date passes, move event to "past" status
- Optionally ask: "How was {event_name}? Would you like me to look for similar events?"
Phase 5: Ongoing Commands
Support these commands from your human:
- "update preferences" / "change preferences": Re-run the preference collection interview
- "show upcoming": Display all events with status "interested" or "registered"
- "show new events": Display events with status "new" that haven't been reviewed
- "remove event [name]": Remove an event from tracking
- "pause search": Stop daily automated searches (update config)
- "resume search": Resume daily automated searches
- "search now": Run the search routine immediately
- "list past events": Show events that have already occurred
Error Handling
- If skills fail to install: Provide manual instructions and the GitHub links
- If API keys are invalid: Ask human to verify and provide new keys
- If searches return no results: Try broader search terms or suggest different topics
- If cron setup fails: Offer to search manually when user requests
- If event scraping fails: Fall back to showing just the search result link
- Always preserve data: Never overwrite
events.jsonorpreferences.jsonwithout backing up
File Structure
~/.openclaw/workspace/meetup-planner/
├── user-preferences.json # Human's event preferences
├── events.json # All discovered and tracked events
├── reminders.json # Scheduled reminders
├── config.json # Skill configuration (cron schedule, etc.)
└── backups/ # Automatic backups of data files