00

Production Data Product

VenueMatch - Artist-Venue Recommendation Engine

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

Built and deployed an explainable data product that ranks artist-venue fit using genre alignment, local demand, booking history, capacity compatibility, and artist pull.

Completed / Actively iterating2026-06PythonFastAPISQLAlchemyTypeScriptNext.jsNeon PostgresVercel

01

Case Study

Project Type

Production Data Product

Delivery State

Completed / Actively iterating

Tool Stack

PythonFastAPISQLAlchemyTypeScriptNext.jsNeon PostgresVercel

Focus Areas

Explainable RecommendationsData EngineeringBooking IntelligenceCost-Aware Infrastructure

Project Highlight

Deployed bidirectional booking intelligence across 4,002 artists, 250 venues, and 9,327 artist-event-venue relationships in 15 markets.

Overview

VenueMatch helps independent artists, managers, promoters, and venue teams identify promising booking opportunities. It consolidates fragmented artist, venue, market, and event data into ranked recommendations with visible score components, confidence indicators, and plain-language explanations.

Users can begin with an artist and target city to discover suitable venues, or begin with a venue or market to identify artists likely to perform well there.

Problem

Booking and tour-routing decisions depend on several signals at once: genre alignment, local demand, venue history, room capacity, and artist popularity.

These signals are usually spread across separate platforms and public datasets. Reviewing them manually is slow, difficult to standardize, and particularly challenging for independent teams without access to private ticket-sales systems.

VenueMatch creates a consistent decision-support workflow for comparing these signals without claiming to predict ticket sales directly.

Data Foundation

The production system currently contains:

  • 4,002 artist profiles
  • 250 venue profiles across 15 target markets
  • 9,327 artist-event-venue relationships
  • 7,130 artist-genre associations
  • 1,696 venue-genre history signals
  • 407 city-level genre-demand signals
  • 139 capacity-source records with source and verification metadata

Data comes from official APIs and public datasets, including Ticketmaster, Last.fm, MusicBrainz, JamBase, and the US Census. VenueMatch does not scrape restricted or private ticket-sales data.

System Architecture

VenueMatch uses a Python-first data and recommendation layer with a custom web application:

  • FastAPI exposes recommendation, dashboard, ingestion, and raw-data endpoints.
  • Next.js provides artist-to-venue, venue-to-artist, city-dashboard, and data-exploration workflows.
  • Neon Postgres stores normalized production data and derived recommendation features.
  • Deterministic upserts make scheduled refreshes repeatable and prevent duplicate records.
  • Protected Vercel jobs run daily ingestion and resumable venue-lineup enrichment.
  • Provider-specific error handling preserves valid data when one external API is unavailable.
  • An atomic JamBase circuit breaker limits the application to 950 monthly calls and prevents accidental overages.

Recommendation Methodology

VenueMatch uses a transparent rules-based model rather than training prematurely on weak labels.

The final recommendation score is:

final_score =
  0.35 * genre_fit_score +
  0.25 * venue_history_score +
  0.20 * city_demand_score +
  0.10 * capacity_fit_score +
  0.10 * artist_popularity_score

Genre fit blends exact Jaccard overlap with broader genre-family similarity, allowing related labels such as indie rock and alternative rock to receive partial credit.

Venue history measures how consistently a venue has booked the artist's genres. City demand uses normalized public event frequency as a local-market proxy. Capacity fit compares venue size with estimated artist draw, while popularity is log-scaled when listener data is available.

Each factor remains independent so demand or booking history is not counted twice.

Confidence and Explainability

Every recommendation includes:

  • Five visible component scores
  • A final weighted match score
  • A plain-language explanation
  • Capacity availability and provenance
  • A separate data-confidence percentage

Confidence measures whether the recommendation has supporting genre, venue-history, city-demand, capacity, and popularity data. It does not affect ranking; it communicates the completeness of the evidence behind the score.

What I Built

  • Designed the normalized artist, venue, event, genre, market, and recommendation schema.
  • Developed modular clients for five official APIs and public datasets.
  • Built deterministic ingestion, retention, aggregation, and enrichment pipelines.
  • Implemented bidirectional artist-to-venue and venue-to-artist recommendations.
  • Created city-level dashboards and inspectable raw-data workflows.
  • Added capacity provenance, verification timestamps, and manual override support.
  • Implemented protected automation, provider-error isolation, and API quota controls.
  • Migrated the original Streamlit MVP into independently deployed FastAPI and Next.js services.

Results

  • Expanded the production catalog to 4,002 artists and 250 venues.
  • Built 9,327 normalized artist-event-venue relationships for recommendation context.
  • Achieved booking-history coverage for 94.4% of venues.
  • Added sourced capacity data for 55.6% of venues.
  • Automated daily refreshes across 15 music markets.
  • Cleared the current backlog of JamBase-matched venue lineups.
  • Kept the production database to approximately 16.9 MB, about 3.4% of the Neon Free storage allowance.
  • Deployed a public interface with four recommendation and market-analysis workflows.

Business Value

VenueMatch gives booking teams a repeatable way to compare opportunities, understand why a match ranks highly, and identify where additional research is still required.

Instead of manually reconciling disconnected event listings, venue histories, capacity information, and artist signals, users receive one inspectable recommendation supported by clearly labeled evidence.

The product is especially useful for independent teams that need structured booking intelligence but do not have access to enterprise ticketing or sales platforms.

Limitations

VenueMatch is a decision-support product rather than a causal predictor of ticket sales.

City demand is inferred from public event frequency rather than attendance or revenue. Artist-popularity data currently covers 6.5% of artists, while sourced capacity data covers 55.6% of venues. Public event history also indicates that a booking occurred, but not whether it was commercially successful.

These limitations are surfaced through confidence indicators instead of being hidden through aggressive imputation.

Next Steps

  • Backfill Last.fm popularity for artists discovered through JamBase.
  • Add more public and venue-supplied capacity sources.
  • Introduce event recency and repeat-booking features.
  • Collect observed booking outcomes for evaluation and weight calibration.
  • Train the baseline classifier only after trustworthy labels are available.
  • Expand coverage into additional West Coast and secondary music markets.

Explore The Project

Open the live product, source code, or supporting material available for this project.