Discover, curate, and auto-register for crypto conference side events. Fetches events from Luma pages and community-curated Google Sheets, filters them using your preferences with LLM intelligence, and handles Luma RSVP via browser automation.
bash
# First time: interactive setup
bash scripts/setup.sh my-conference
# Run the full pipeline
bash scripts/discover.sh my-conference
bash scripts/curate.sh my-conference
bash scripts/register.sh my-conference
# Or all at once
bash scripts/discover.sh my-conference && bash scripts/curate.sh my-conference && bash scripts/register.sh my-conference
# Monitor for new events
bash scripts/monitor.sh my-conference
CommandScriptDescriptionsetupbash scripts/setup.sh <name>Interactive config — walks you through preferences, URLs, authdiscoverbash scripts/discover.sh <id>Fetch events from Luma + Google Sheets → events.jsoncuratebash scripts/curate.sh <id>LLM-driven filtering and ranking → curated.mdregisterbash scripts/register.sh <id>Auto-RSVP on Luma for recommended eventsmonitorbash scripts/monitor.sh <id>Re-discover + re-curate, flag new events
Per-conference data lives in conferences/{conference-id}/:
config.json — user preferences, URLs, strategy, user infoevents.json — all discovered events (normalized schema)events-previous.json — snapshot from last run (for monitoring diff)curated.md — the curated schedule output (grouped by day, tiered)luma-session.json — persisted Luma browser session cookiescustom-answers.json — user answers to custom RSVP fields (reused across registrations)Skill-level shared files:
luma-knowledge.md — shared Luma page patterns (learned by agent, speeds up registration)You MUST run the bash scripts for every pipeline stage. Do NOT attempt to perform discovery, curation, or registration yourself by browsing pages directly. The scripts handle looping, error recovery, state tracking, and tab cleanup that you cannot reliably do in a single agent turn.
When the user asks you to:
bash scripts/setup.sh <conference-id>bash scripts/discover.sh <conference-id>bash scripts/curate.sh <conference-id>bash scripts/register.sh <conference-id> (processes 10 events per batch)bash scripts/register.sh <conference-id> --retry-pendingbash scripts/monitor.sh <conference-id>The scripts will invoke you for individual tasks (one event at a time for registration). Follow the prompts they give you. Never try to loop through events yourself — the scripts control the loop to ensure every event is attempted.
When the scripts invoke you for browser tasks, use your browser capability to interact with pages. Do not hardcode CSS selectors or DOM paths. Instead:
Registration processes events in batches of 10. You MUST follow this loop until all events are processed:
Run bash scripts/register.sh <conference-id>
IMMEDIATELY tell the user the batch results (registered/failed/needs-input/remaining counts)
Read conferences/<id>/registration-status.json
If new_fields is not empty: ask the user for answers, write them to conferences/<id>/custom-answers.json
If done is false: run register.sh again immediately for the next batch — do NOT wait for the user to ask
When done is true and there are ⏳ Needs input events: run register.sh --retry-pending
Read registration-status.json — if manual_registration is not empty, present the list to the user:
"These events need manual registration (not on Luma):"
Report final results to the user
CRITICAL: After each batch completes, you MUST either run the next batch or tell the user why you stopped. Never silently stop between batches.
When invoked by the script for individual events:
needs-input status with the field labels.registered status without touching the form.The scripts handle most error recovery automatically. When invoked for a single event:
failed statuscaptcha status (script will stop the loop)closed statussession-expired status (script will stop the loop)The registration script ( register.sh) automatically stops and asks the user when:
Other pipeline stop conditions: