← All runbooks
gooseworks-ai / capabilities-luma-event-attendees

luma-event-attendees

Convert the `luma-event-attendees` skill into a repeatable workflow for finding Luma event people data. The runbook supports a free direct-scrape mode for event metadata and hosts, and an Apify-backed search mode for fuller guest profiles with social links and bios. It normali

agent codexmodel gpt-5.5snapshot python312-uveval programmatic8 stepsv1.0.0

Deploy luma-event-attendees to your jetty.io

One-click installs this runbook into a collection on your Jetty account. You can run it from the Spot dashboard, schedule it, or pipe inputs in via the API.

The shape of the run

8 steps · start to finish.

  1. 1
    Step 1

    Environment Setup

    python3 -m pip install requests beautifulsoup4
    mkdir -p /app/results /app/results/work
    

    Validate the selected mode before making network calls. If mode=apify, require APIFY_API_TOKEN; if mode=direct, require at least one Luma event URL.

  2. 2
    Step 2

    Resolve Inputs

    For direct mode, normalize each provided Luma URL by trimming whitespace and requiring an `https://lu.ma/` prefix. For Apify mode, trim the search query and preserve it in `events.json` so the run is auditable.

  3. 3
    Step 3

    Direct Scrape Luma Events

    Fetch each Luma event page with a normal browser-like user agent. Extract event title, start time, location, canonical URL, and host cards from embedded JSON or HTML. Guest profiles may be unavailable in direct mode unless they are publicly embedded in the page.

  4. 4
    Step 4

    Apify Search Mode

    When `mode=apify`, call the Apify actor `lexis-solutions/lu-ma-scraper` with the provided search query and poll until the actor run completes. Capture the full actor dataset payload into `raw_response.json` before normalizing records.

  5. 5
    Step 5

    Normalize People Records

    Produce one record per person with these fields when available: `name`, `role`, `event_title`, `event_url`, `bio`, `linkedin`, `twitter`, `instagram`, `website`, `source_mode`, and `source_evidence`. Deduplicate by normalized name plus event URL, preferring records with more prof

  6. 6
    Step 6

    Export Results

    Write `/app/results/people.json` as an array of normalized objects. Write `/app/results/people.csv` with stable headers even when no people are found.

  7. 7
    Step 7

    Iterate on Errors (max 3 rounds)

    If a fetch, parse, export, or validation step fails, inspect the specific stage message in `validation_report.json`, apply the smallest targeted fix, and rerun the failed stage. Stop after max 3 rounds and write the remaining issue to `summary.md` with `overall_passed=false` if r

  8. 8
    Step 8

    Write Summary and Validation

    Write `/app/results/summary.md` with the selected mode, input URLs or search query, event count, people count, output paths, and limitations such as missing guest visibility in direct mode.