Skip to content
All work

Music × Recommendation systems / 2026-06

VenueMatch

Explainable booking intelligence for matching artists, venues, and local demand.

Concept artwork: blue stage lights cutting through a dark concert hall.
Concept cover artwork / VenueMatch

The work, in brief

Built bidirectional booking intelligence; an October 5, 2026 production audit recorded 6,041 artists, with dated coverage and data-quality checks.

Overview

VenueMatch helps artists, managers, promoters, and venue teams compare booking opportunities. Start with an artist and city to find suitable rooms, or with a venue to identify potential performers. Every recommendation exposes its component scores, supporting evidence, and missing information.

I built the data pipeline, recommendation engine, API, and web interface, evolving a Streamlit prototype into a FastAPI and Next.js product backed by Neon Postgres.

Problem

Booking decisions combine genre, local demand, venue history, capacity, and artist draw. Those signals are fragmented, and public event listings rarely reveal attendance or financial outcomes. The product turns available evidence into a repeatable comparison without claiming to predict ticket sales.

Data Foundation

The catalog changes as providers refresh. These are dated repository audit results, not live counters:

  • October 5, 2026 artist-resolution audit: 6,041 production artists; 228 existing valid MusicBrainz IDs.
  • September 23, 2026 historical-data audit: 5,520 artists, 469 venues, and 14,568 artist-event-venue relationships; 20 configured target markets.
  • Historical portion of the September audit: 8,715 relationships spanning July 14–September 22, 2026.
  • Evidence coverage in that September snapshot: venue genre history: 91.47%; venue capacity: 57.14%; artist popularity: 8.95%.

A relationship is one artist appearing at one event and venue; a multi-artist concert produces multiple records. The artist-resolution audit measures a later snapshot and should not be combined with the earlier counts as if they came from one database export.

The October audit proposed 3,344 additional high-confidence or exact identity matches. Those are candidates for review, not completed production enrichment. Interface option counts and projected backfills are not used as catalog totals.

What I Built

  • Normalized artist, venue, event, genre, and market records with deterministic upserts.
  • Modular clients for Ticketmaster, Last.fm, MusicBrainz, JamBase, and US Census data.
  • Bidirectional recommendations, city dashboards, and an inspectable raw-data view.
  • Capacity provenance, verification timestamps, and manual override support.
  • Protected scheduled ingestion, resumable enrichment, provider-error isolation, and application-level API budgets.
  • Read-only historical and identity audits to determine what the data can support before training a model.

Recommendation Methodology

The deployed baseline is transparent and rules-based:

match_score =
  0.35 × genre_fit +
  0.25 × venue_history +
  0.20 × city_demand +
  0.10 × capacity_fit +
  0.10 × artist_popularity

Genre fit combines exact overlap with broader genre-family similarity. City demand uses public event frequency as a proxy; capacity fit compares room size with estimated artist draw. Available audience signals are log-scaled.

A separate confidence percentage describes evidence completeness. It is not a probability of a successful booking and does not alter the ranking.

Results and Evaluation

The product brings data ingestion, recommendations, explanations, and market exploration into one workflow. Its audits also expose the boundary between a useful product and a validated prediction model.

The September historical audit identified 8,671 eligible historical bookings, including 8,531 with at least five candidate venues. Candidate availability was restricted to venues observed by the event date to reduce temporal leakage. However, the data covered only 70 historical days, and no market passed the audit's combined depth and candidate-readiness thresholds. A larger catalog alone did not establish readiness for the final historical benchmark.

What I Learned

An explainable score still needs an honest account of its evidence. Provenance, missing-data indicators, and temporal audits are part of the recommendation experience, especially when outcome labels are incomplete.

Limitations and Next Steps

A recorded booking does not reveal ticket sales, attendance, or commercial success. Public event frequency is not measured audience demand. Sparse popularity and capacity coverage remain visible limitations in the dated audit.

The next research step is to review identity matches, deepen historical coverage, and establish trustworthy temporal evaluation before learning weights or training a predictive model. Historical-enrichment projections remain separate from completed backfills.

Keep exploringResidential Real Estate AI Prediction System