Every Open Mic · metro core

How we look

104 ways we look for a mic — and growing. The number of ways is a lower bound, never fixed; we add new ones as we learn them.

47 running now 20 being built 37 planned

Coverage below = how many of our 6899 venues we've actually run a method on. Every gap is a place a mic could be hiding — there is no "done".

How we find them

Venue website 7/12 running

Homepage keyword scanlivediscover 1.0% (70)
limits: homepage HTML only; misses JS, sub-pages, social
Events / calendar / what's-on sub-pageslivediscover not run
limits: only links we guess; JS calendars need render
schema.org/JSON-LD Event markuplivediscover not run
limits: most grassroots venues emit none (Finding n5)
Calendar plugins (Tribe wp-json, Squarespace ?format=json, Wix, Tockify, Google-Cal embed)livediscover 11.4% (789)
limits: per-platform probes
Linked iCal/.ics feedlivediscover not run
limits: rare on small venues
RSS/Atom feed (blog/events)livediscover not run
limits: may be news not events
sitemap.xml event-URL mininglivediscover not run
limits: discovers URLs, still needs extraction
Site blog/news postsbuildingdiscover not run
limits: unstructured; may be stale
Menu / weekly-specials / flyer PDFs ('Tue: Open Mic')buildingdiscover not run
limits: PDF/image OCR needed
Embedded event / ticketing widgetsbuildingdiscover not run
limits: artist-events only
Headless-render JS-only event pagesplanneddiscover not run
limits: RAM-heavy; reserve for known-dynamic sites
QR-code flyer → landing page (decode + follow)buildingdiscover not run
limits: QR-decode into the OCR path

Venue social 7/9 running

Instagram posts/Reels (venue account)livediscover not run
limits: throwaway acct; flyers need vision
Instagram saved Highlights (often an 'Open Mic' highlight)livediscover not run
limits: throwaway acct
Instagram hashtags (#pdxopenmic #portlandcomedy …)livediscover not run
limits: discovers new hosts, not venue-specific
Facebook Page postslivediscover not run
limits: login-walled; throwaway
Facebook Events (incl. recurring)livediscover not run
limits: no public API; throwaway read
Facebook Groups (local music/comedy/poetry groups)buildingdiscover not run
limits: BLOCKER: burner FB account (Phase-2); richest grassroots layer; search-reach partial
TikTok (venue/host clips, on-screen flyer text)livediscover not run
limits: yt-dlp metadata + OCR
X/Twitter postsplanneddiscover not run
limits: low local value
Mastodon / Bluesky cross-postslivediscover not run
limits: most reliable social feeds (RSS-able)

The host 1/4 running

The HOST's own IG/socials (where the mic usually lives)buildingdiscover not run
limits: must first identify the host
Host's Linktree/Beacons (the actual schedule)livediscover not run
limits: single most reliable once found
Comedian/musician profiles ('I host the Tue mic at X')planneddiscover not run
limits: manual research
Comedian/musician personal sites ('I host the {night} mic at X')buildingdiscover not run
limits: search-reach

Link-in-bio 1/1 running

Linktree/Beacons/Carrd parse (__NEXT_DATA__)livediscover not run
limits: must have the bio URL first

Aggregators/directories 1/1 running

Public event directorieslivediscover 0.6% (41)
limits: 21 sources, cross-referenced; never a primary source

Google/structured 2/4 running

Google Events box (SERP 'open mic near Portland')buildingdiscover not run
limits: no API; ToS-grey scrape
Google Places attributes (live_music, popular-times, type)plannedenrich not run
limits: BLOCKER: Places API key (cred-gated); no build
OSM tags (live_music, amenity, capacity)liveenrich not run
limits: undertagged
Geocoded (Photon/Nominatim)liveenrich 1.2% (84)
limits: coordinates only

Reviews/UGC 3/9 running

Google Reviews text ('great open mic Tuesdays')buildingdiscover not run
limits: BLOCKER: Places API key (cred-gated) for live; parser + search-reach subset exercised
Review-site tips mentioning open micbuildingdiscover not run
limits: BLOCKER: Yelp Fusion API key (cred-gated); search-reach subset exercised
Travel-review sitesplanneddiscover not run
limits: low density
Community forums & comment threadslivediscover 0.5% (32)
limits: thin/noisy; PRAW/RSS
Check-in app tipsplanneddiscover not run
limits: fading
Craigslist community/events open-mic postslivediscover not run
limits: reach-only; noisy
Bandcamp/SoundCloud/Mixcloud 'open mic at X' recordingsbuildingdiscover not run
limits: lagging signal
Local music/comedy/poetry Discord servers (disboard/discord.me search)livediscover not run
limits: reach-only; pinned schedules
Nextdoor neighborhood posts/eventsbuildingdiscover not run
limits: reach-only

Direct/human 2/2 running

Someone submits/tells uslivediscover not run
limits: needs a submit path
Agent canvass sweep (legacy)livediscover 3.8% (260)
limits: one-time sweep; see checks detail

Indirect signals 1/5 running

Locally-maintained scene spreadsheets/Google-Sheetsbuildingdiscover not run
limits: find via community
Karaoke/trivia/'weekly events' page co-occurrence (same page lists the mic)buildingdiscover not run
limits: —
City entertainment/sound-permit data (has a stage/live perf)plannedenrich not run
limits: capability not schedule
Stage/PA present (photos, OSM, reviews) — capability priorplannedenrich not run
limits: prior, not proof
Ask an AI answer-engine 'open mics in {city}' as a lead-generator (= the catch-all agent itself)livediscover not run
limits: agent-rule; leads then verify

How we verify them

Verification is its own phase — a discovered mic is marked for verification before it's shown as confirmed. These are the ways we confirm one is real and current.

Venue website 0/1 running

Wayback Machine history (did it run before? seasonal?)planned not run
limits: past ≠ present

Venue social 0/3 running

Instagram Stories ('tonight!' reminders)planned not run
limits: 24h ephemeral; must poll
Instagram location-tag / tagged posts (attendees posting #openmic AT the venue)building not run
limits: noisy
YouTube ('open mic at X' uploads, venue channel)planned not run
limits: lagging signal

The host 0/1 running

Host's email newsletter / Substackplanned not run
limits: subscribe; manual

Google/structured 0/1 running

Google Business Profile (posts / events / Q&A / 'from the business')building not run
limits: scrape the GBP panel

Reviews/UGC 1/3 running

Local music/comedy blogs + news articleslive not run
limits: search-driven
Local scene podcast mentionsplanned not run
limits: manual
Map/review photos showing a stage / 'open mic' chalkboard / signup sheetplanned not run
limits: vision OCR

Direct/human 1/9 running

Phone the venue ('do you host an open mic? what night?')planned not run
limits: human/voice; authoritative
Email the venue/hostplanned not run
limits: courteous; ADR-0007
DM the venue/host on IG/FBplanned not run
limits: throwaway acct
In-person visit / walk-by (stage, sign, chalkboard)planned not run
limits: human; gold-standard
Ask the host directlyplanned not run
limits: human
Ask a regular/performer who attendsplanned not run
limits: human; scene knowledge
Google Street View signage (a posted recurring sign)planned not run
limits: time-stamped; may be old
Meticulous agent research (the catch-all deep facet)live 4.1% (284)
limits: the subscription-driven human-in-loop
Venue confirmation (legacy)planned 0.0% (2)
limits: —

Corroboration 0/8 running

≥2 independent sources agree (day/time/venue)planned not run
limits: dedupe by origin
Day/time consistent across sourcesplanned not run
limits: conflicts → MoE check
How recently each source confirmed itplanned not run
limits: freshness decay
Run consistently for N weeks/monthsplanned not run
limits: needs time-series
Recurring pattern confirmed across multiple weeksplanned not run
limits: —
Same-day 'still on tonight?' volatile-source re-checkplanned not run
limits: cheap, day-of
Posts/photos FROM the mic on the expected night (live proof)planned not run
limits: throwaway acct
Explicit 'no more open mic / cancelled' detectionplanned not run
limits: decreases confidence

Indirect signals 0/1 running

Online performer sign-up lists/formsbuilding not run
limits: strong if found

Retired: Local-model read of captured website text (surface_candidates) · Local-model read of captured Instagram text (surface_candidates) · Local-model read of captured web+IG text (surface_candidates) — superseded by direct agent reasoning (kept for history).

Type
Day
More

Submit a mic

Tell us about one we're missing — we independently verify it before it goes live.