A demand-sensing live-music discovery directory built on the Vertical Directory engine, fed by the Ticketmaster/Marquee feed, that captures visitor interest as a graph to decide which venue sites to build next.
livemusictonight.com is a Vertical Directory (one host row routed by includes/vd-router.php → includes/vertical-directory.php). It is not a bespoke page — it reuses the VD engine. It started empty because vdFetchEvents() read the unpopulated dynamic_section_cache; it now sources real shows.
Live music is a NOW thing, so the homepage leads with location + Tonight and lets the visitor expand outward in time and space.
?lat&lng from the geolocate button, or approximate fromCloudflare CF-IPLatitude/Longitude): live Ticketmaster geo feed via marqueeTmFetch() (gained latlong/radius/unit/endDateTime/sort), closest first. If nothing falls in the radius/window, an empty state nudges widening — it never silently dumps far-away national events on a located visitor.
marquee_events, then a live national fallback so the page isnever blank. This is the browse mode where search/filter belongs (future).
location on first load (remembers a denial via sessionStorage, no nagging).
vdWindowEnd() hard-caps everything at +30 days (no stray next-year listings). Tonight is here-and-now; This Week / This Month are calendar-bounded; Next 7 Days / Next 30 Days roll forward from today regardless of the date. The nav exposes the rolling options via dropdowns on This Week / This Month.
Every Interested and Tickets click records a demand signal to lmt_interest (?ajax=lmt_interest, ip-hash rate-limited) keyed to venue identity + genre + area. This is OUR derived demand signal, not a mirror of Ticketmaster's catalog (ToS-clean). Admin → Marquee → "Live Music Demand" ranks venues by interest (interested×3 + ticket×5) and hands a venue to the build flow. So real demand decides which venue sites Prospector and the Cloud Factory build next — the flywheel applied to events.
header (magic-link sign-in), so Interested can tie to a real person.
tm_venue_id onto thebusinesses row when it builds a venue site (marqueeStampVenueId), so _vdLinkVenues links a live event to its Doozer site deterministically (businesses.tm_venue_id = event.tm_venue_id) instead of fuzzy name matching. This is the durable handle a venue's own business site can use to point back at LMT or any vertical directory.
renderBusinessEventsSection) carries an Interested button (internal bookmark via lmt_interest) beside Tickets and + Calendar — the network keeps the save instead of pushing people to an external calendar.
The Marquee admin (marqueeRecentVenues) surfaces ONE row per distinct venue (keyed by tm_venue_id, else name+city+state), NEW venues (no Doozer site) first, built ones marked. The product is finding businesses to build through the live event feed — not listing events. Build acts on a representative event; the rest of the venue's shows become its site's calendar.
gatherings; clicking a show could spin up a Gathering on GoHe.re (gated on the gatherings surfaces); non-ticketed/community shows union into the same feed.