Extract leads from conferences, meetups, hackathons, and podcasts by analyzing speaker lists, sponsor lists, hackathon entries, and podcast guests. Discovers events via Sessionize, Confs.tech, Meetup, Luma, ListenNotes, and Devpost. Looks back 90 days and forward 180 days.
npx gooseworks install --all # then, in Claude Code, Cursor, or Codex: /gooseworks use the event-signals skill
Extract leads from the conference and events ecosystem. Events represent public declarations of priorities — a VP speaking about "scaling our infrastructure" is a stronger signal than a Reddit comment, and a company sponsoring a conference category has committed real budget.
requests and optionally python-dotenv.env (for Meetup and Luma — optional).env as LISTENNOTES_API_KEY (for podcast search — optional, free tier gives 300 req/mo)If not already available from prior skills:
"To find the right event-based leads, I need:
- What does your product do? (one-liner)
- What industry/vertical are you in? (this determines which conferences matter)
- What technologies or keywords are in your space?
- Who is your ideal buyer? (their role, what conferences they'd attend)
- Any specific conferences or events you know about? (names, URLs)
- Are you registered on Luma or Meetup for any events? (if yes, we may be able to access attendee lists)"
This is the most agent-driven phase. The agent must actively research to find the right events.
Use multiple approaches in parallel:
2a. Confs.tech (automated):
The tool can query confs.tech for conferences by topic. Common topics available: devops, javascript, ruby, python, golang, rust, java, php, css, data, security, ux, android, ios, general, dotnet, elixir, networking, cloud, ai.
2b. Web search (agent-driven): Search for conferences in the user's space. Queries to try:
2c. Check for Sessionize events: Many tech conferences use Sessionize for their schedule. When you find a conference:
sessionize.com/api/v2/EVENTID in the page source2d. Check for upcoming events (forward-looking 180 days): Search for events happening in the next 6 months. The user wants to reach prospects BEFORE the event.
2e. Check for recent events (backward-looking 90 days): Recent event speakers/sponsors still have the same priorities. Search for:
3a. Meetup.com (automated): Generate search queries based on the user's space:
3b. Luma (automated via matyascimbulka/luma-event-scraper):
Search Luma for events by category and city. The Luma actor accepts slugs (categories) and cities instead of free-text search.
tech, food, ai, arts, climate, fitness, wellness, cryptosan-francisco, new-york, london, etc.3c. Ask the user about their registrations:
"Are you registered for any events on Luma or Meetup? If you're registered for a Luma event, the attendee list is often publicly visible — I can extract it. For some Meetup events, RSVP lists are public too."
4a. Identify relevant podcasts: Do a web search to find podcasts in the user's space:
4b. Search for specific episodes: Use ListenNotes to search for episodes by keyword:
5a. Devpost: Search Devpost for hackathons with projects using relevant technologies:
5b. Other hackathon platforms:
Present all discovered events to the user in a table:
CONFERENCES (Sessionize available):
Event | Date | Location | Sessionize ID
KubeCon NA 2026 | Oct 13-16 | Salt Lake City| abc123
DevOpsDays NYC | Jun 5-6 | New York | def456
CONFERENCES (need website scraping):
Event | Date | URL
AWS re:Invent | Nov 30-Dec 4 | reinvent.awsevents.com
MEETUP QUERIES: "kubernetes meetup", "cloud native meetup"
LUMA CATEGORIES: "tech", "ai" | CITIES: "san-francisco", "new-york"
PODCAST QUERIES: "kubernetes scaling", "infrastructure challenges"
DEVPOST HACKATHONS: "cloud-native-hack-2026", "kubernetes-challenge"Ask the user to review and approve. Also ask if they want to add or remove any events.
For conferences NOT on Sessionize, the agent should manually extract:
Speaker lists:
Sponsor lists:
Save scraped data to ${CLAUDE_SKILL_DIR}/../.tmp/manual_event_signals.json in this format:
[
{
"person_name": "Jane Smith",
"company": "Acme Corp",
"signal_type": "conference_speaker",
"signal_label": "Conference Speaker",
"event_name": "KubeCon NA 2026",
"event_type": "Conference",
"talk_or_role": "Scaling Kubernetes to 10,000 Nodes",
"bio": "VP of Infrastructure at Acme Corp",
"url": "https://kubecon.io/speakers/jane-smith",
"linkedin": "",
"twitter": "@janesmith",
"website": "",
"date": "2026-10-14",
"source": "Manual"
}
]cat > ${CLAUDE_SKILL_DIR}/../.tmp/event_signals_config.json << 'CONFIGEOF'
{
"keywords": ["kubernetes", "cloud native", "infrastructure"],
"sessionize_event_ids": ["abc123", "def456"],
"confstech_topics": ["devops", "cloud"],
"meetup_queries": ["kubernetes meetup", "cloud native meetup"],
"meetup_location": "",
"luma_categories": ["tech", "ai"],
"luma_cities": ["san-francisco", "new-york"],
"podcast_queries": ["kubernetes scaling", "infrastructure challenges"],
"devpost_slugs": ["cloud-native-hack-2026"],
"manual_signals_file": "${CLAUDE_SKILL_DIR}/../.tmp/manual_event_signals.json",
"skip": []
}
CONFIGEOFpython3 ${CLAUDE_SKILL_DIR}/scripts/event_signals.py \
--config ${CLAUDE_SKILL_DIR}/../.tmp/event_signals_config.json \
--output ${CLAUDE_SKILL_DIR}/../.tmp/event_signals.csvThe tool handles structured sources. The agent handles conference website scraping in Step 7 (before running the tool), saving results to the manual signals file.
To skip specific sources:
Add to the config's skip array: "sessionize", "confstech", "meetup", "luma", "podcast", "devpost"
11a. Overall Stats
11b. Speaker Analysis
11c. Sponsor Analysis
11d. Hackathon & Community Analysis
11e. Podcast Analysis
11f. Time-Based Urgency
For conference speakers:
For sponsors:
/enrich-company first, then find the right person.For meetup organizers/attendees:
For hackathon participants:
For podcast guests:
Cross-signal validation:
"Would you like me to:
- Enrich the top speakers/companies via SixtyFour
- Cross-reference with GitHub/community/job signals data
- Scrape more conference websites for additional speakers/sponsors
- Set up monitoring for upcoming events (recurring scan)
- Export for manual review first"
| Column | Description |
|---|---|
| person_name | Speaker name, organizer, podcast guest, or team member |
| company | Company/organization |
| signal_type | Internal signal type code |
| signal_label | Human-readable signal label |
| event_name | Conference/meetup/hackathon/podcast name |
| event_type | Conference, Meetup, Hackathon, Podcast, Luma Event |
| talk_or_role | Talk title, sponsorship tier, project name, episode title |
| bio | Speaker bio or event/project description |
| LinkedIn URL (if available from Sessionize) | |
| Twitter/X handle (if available) | |
| website | Personal/company website (if available) |
| date | Event date or episode date |
| signal_score | Weight based on signal type |
| source | Sessionize, Meetup, Luma, ListenNotes, Devpost, Manual |
| url | Link to the event/talk/episode/project |
| Signal Type | Score | Rationale |
|---|---|---|
| Conference Speaker | 9 | Company-approved public statement of priorities |
| Workshop Host | 9 | Deep expertise + company investment in teaching |
| Podcast Guest | 8 | Public discussion of challenges and stack |
| Panel Participant | 8 | Industry voice, often reveals pain points |
| Conference Sponsor | 8 | Committed budget to the space |
| Meetup Organizer | 7 | Community leader and influencer |
| Hackathon Entry | 7 | Active builder using relevant tech |
| Podcast Host | 6 | Creates content in the space — influencer |
| Meetup Attendee | 5 | Interest signal but lower commitment |
| Event Attendee | 5 | Interest signal |
When discovering events, consider ALL of these event types based on the user's ICP:
Major Developer Conferences: KubeCon, AWS re:Invent, Google Cloud Next, Microsoft Build, QCon, DevOpsDays, GopherCon, PyCon, RustConf, JSConf, ReactConf, DockerCon, HashiConf, Datadog DASH, GitLab Commit, GitHub Universe, Vercel Ship
Industry/Vertical Conferences: SaaStr (SaaS), MWC (mobile), CES (consumer tech), RSA (security), Black Hat (security), Gartner summits, Forrester events
Startup Events: YC Demo Day, TechCrunch Disrupt, Web Summit, Collision, SXSW Interactive, Product Hunt launches
Meetup Platforms: Meetup.com, Luma, Eventbrite, Bevy (community-led events)
Hackathon Platforms: Devpost, MLH events, Devfolio, company-hosted hackathons
Podcast Networks: Changelog, Software Engineering Daily, The New Stack, InfoQ podcasts, a16z podcast, industry-specific pods
The agent should adapt this list based on the user's specific vertical.
| Source | Cost | Notes |
|---|---|---|
| Sessionize | Free | Public API, no auth |
| Confs.tech | Free | JSON on GitHub |
| Meetup (Apify) | ~$0.05-0.10/search | Pay-per-event |
| Luma (Apify) | $29/mo + usage or pay-per-event | Depends on actor |
| ListenNotes | Free (300 req/mo) | Free tier sufficient for most |
| Devpost | Free | Custom scraping |
| Manual scraping | Free | Agent uses web tools |
| Typical run | $1-5 total | Most sources are free |
Render a 'model comparison grid' video from a config — a fal-style "same prompt, N contenders" showcase — a dark real-DOM stage where per beat a monospace prompt fades in centered, docks to a small top strip, then a labeled 2-4 panel grid (static images OR muted video clips, mixable per cell) staggers in and holds for comparison, plus a minimal end card — frame-stepped via Playwright (video cells are frame-seeked deterministically) and encoded with FFmpeg. Deterministic assembly, FREE (cell media comes from create-image-fal / create-video-fal, music from create-music-elevenlabs), text stays pixel-crisp. Use for the model-comparison-grid format.
Render a punchy ~12s vertical (9:16) music-only direct-response OFFER ad as a 4-beat kinetic-typography film — HEADLINE slam → real PRODUCT drop → CLAIM/proof → CTA pill — from one config of copy slots, a real product photo, a brand palette, fonts, bpm, and beat split. DETERMINISTIC + FREE (a bundled Remotion project; springs + interpolate, no AI-gen for visuals). Backgrounds are engine gradient divs off the palette, props are inline SVG, the ONLY composited bitmap is the REAL product photo (objectFit:contain, never stretched), and ALL headline/claim/CTA/URL/wordmark text is typeset in the engine — never AI-rendered (the format's credibility guard). A driver binds the config to Remotion input props, renders the 9:16 master, and derives a 1:1 center-crop with ffmpeg. Two gating checks run before render (claim verbs must match the product's physical format; the claim beat needs an edge-entry mechanism prop). Use for the motion-graphics-offer-ad format.
Assemble a myth-vs-fact kinetic-typography explainer video ad (≈29.5s, 9:16) from N myth/fact pairs + hook / turn / punch copy + palette + a brand end-card PNG + a VO track — a hook, 3 red-strike MYTH cards that flip to teal-check FACT cards (per-line strikethrough that crosses EVERY wrapped line), a "what actually works" turn, an optional proof reveal, a punch line, and a static end card. DETERMINISTIC assembly with ZERO AI-gen visuals — HTML hyperframes rendered frame-exact via Playwright (`window.renderAt(t)`, animation a pure function of beat-local time), Whisper beat-snap to VO word onsets, concat at a uniform fps, karaoke `.ass` captions burned last (suppressed on the proof + end-card beats), and a VO + optional music mix (music −20 dB, `amix normalize=0`, tail fade). FREE (Python + Playwright + ffmpeg); the recipe supplies the copy / palette / end-card / VO and gates the paid VO / music / Whisper calls to their own capabilities. Use for the myth-vs-fact format.