Every public event in the Twin Cities in one place, from shows to comedy, trivia, readings and markets, with a short, sourced description of what each act sounds like or does. Music gets the deepest treatment, but everything is findable. It's a personal project, built in the open.
Pick a day or a kind of event, filter by source, or search for an act, a venue or a style. Filters are kept in the address, so a view can be bookmarked or shared.
Use your location, a venue's neighborhood or any address to see what's close by.
Every venue and performer has a page with everything they have coming up, and each act's description links to where you can hear them.
Sign in to save shows to your own list and give thumbs up or down. Signing in is optional; everything else works without it.
Wrong time, cancelled, listed twice? Report it from the listing. Reports show on the Data quality page until they're fixed.
The listings page reads the production database live, so it changes within a few minutes of each daily ingest and enrichment run. Nothing is ranked yet.
Performer descriptions come from MusicBrainz links, Racket blurbs that name the act, and, for acts MusicBrainz doesn't know, a Tavily web search whose results the model picks from: official sites, Bandcamp, venue pages and local press. Each is written only from sources it could quote. The act's own Instagram, Facebook, TikTok or YouTube accounts are linked, not read. Enrichment runs each morning on acts with shows in the next eight weeks, soonest first, so new acts usually get descriptions the next day.
A show listed by several sources appears once, from the venue's own calendar when we have it, crediting every source that listed it; Racket's write-up fills in when the venue gives no description. Listings count as the same show when they're at the same venue on the same day and share an act or a title, so the odd duplicate still gets through. "TBA" means the source gave only a date. That covers most Racket calendar lines, and Driftwood's untimed support acts. Venues marked "new venue" were created from Racket's text and still need review. "May be cancelled" marks a show Racket lists that the venue's own calendar had and has since dropped.
Filters are kept in the page's address, so a view can be bookmarked or shared. "Near" measures a straight line from each venue's street address, located with the US Census Bureau's geocoder. Your own location stays in your browser; an address you type is looked up the same way and kept only in the page's address.
Kinds and genres are our own tags: each source's labels and each act's genres are mapped onto one vocabulary, and an event counts its performers' genres too. Niche genres follow the broader genre Wikidata puts them under, as in "Metal (djent)", and search finds them by either name.
The Bird Feed reads each venue's own calendar every day, with an adapter for each calendar platform, and uses publications like Racket to find shows and venues it doesn't follow yet. Acts are matched to MusicBrainz or looked up on the web, and an AI model writes a short profile from the pages it finds. Every fact has to come with a quote that's checked against its source; anything unsupported is dropped.
Profiles cite their sources. An act with nothing quotable gets links, not invented prose.
An identifying user agent, robots.txt checks, rare fetches and caching. No getting around bot challenges, and no republishing full text.
New sources always wait for a human. High-confidence facts go live; the rest wait for review.
Nothing city-specific in code. Venues, sources and settings are data, so another city could start from a file.
Coming next: a calendar feed of your saved shows, then picks for your week, ranked against what you like. The blueprint has the architecture, the data model and the full roadmap.
Built with Python on AWS Lambda, Claude Haiku 4.5 on Amazon Bedrock, Neon Postgres, Terraform and GitHub Actions, with pages on Vercel.