I posted KaraokeCrowd in r/cincinnati last weekend and asked people to help find all the karaoke in Cincinnati.

That thread had a great response from the community: People named missing karaoke nights, pointed out spots over the river in Northern Kentucky, and confirmed things that were hard to verify online. That is the whole point of KaraokeCrowd: local karaoke knowledge is scattered, and the directory only gets good when people who know the scene can help fix it.

A few days later, I reached out to the Karaoke Singers of Cincinnati Facebook group, and we found EVEN MORE great karaoke nights in the area! By now the Cincinnati karaoke map looks really amazing, thanks to all the people who chimed in or even went and added listings themselves!

So most of the work in this update is about making the path from "I know about a karaoke night" to "it's in the directory and it's right" feel less rough. That means city pages, the forms for adding karaoke, choosing clearer words to describe things, and making the detail pages for venues and karaoke nights better.

City pages know about neighbors now

A city page used to only know about karaoke inside that city's boundaries. That is wrong for large places like Cincinnati, where the useful map crosses city and state lines fast.

City pages now include karaoke from nearby cities in the same metro area. This works for US, EU, Canada, South America, Australia, and Asia metros now. City pages also extend the one-off event window from 3 to 12 months, so you actually see what's coming up further out.

A few smaller things in the same area:

  • Export events. City pages and city/day pages have an "Export events" button to conveniently copy roundups to post in local groups.
  • Geo filter pre-seed. Clicking through to the recent-nights feed from a city page now pre-seeds the geo filter to that city, instead of dropping you on an unfiltered feed.

"Cancelled" is now "Not happening"

Small but visible: the event status we use to remove a karaoke night used to be "Cancelled", which carried a heavier meaning than it usually deserved. Most of the time a karaoke night doesn't happen for various reasons (e.g. mistake in our data, venue had a private event, host got sick, holiday), and "cancelled" just didn't capture all that. The status is now "Not happening" everywhere it's shown.

Sharing karaoke, again

The step-by-step form for adding a karaoke offering from last time got more polish:

  • Dedupe step. Before you fill out the rest of the form, it tries to catch submissions that probably already exist.
  • Manual recurrence. For nights that don't fit weekly / biweekly / monthly (think "every other Thursday except holidays"), you can now encode the pattern manually instead of giving up and picking "irregular".

The "spreadsheet intake" path is now called "list import". Same idea, broader name, because people send karaoke listings in lots of structures that aren't really spreadsheets.

Under the hood, karaoke is becoming its own first-class thing instead of being stored as a rough venue category. One venue can have multiple karaoke offerings: private rooms, a weekly hosted night, live-band karaoke, self-service karaoke, all with different schedules.

That data model split now shows up as two separate add-karaoke forms, depending on what kind of karaoke you're adding:

  • Karaoke nights. Scheduled events with a date and usually a host: recurring weekly nights, live-band karaoke, one-off shows. The form walks you through date, host, and schedule. The result lands on the calendar.
  • Karaoke rooms and lounges. Places you book or walk into during opening hours, no host or scheduled night required: private KTV rooms, karaoke lounges where the song queue runs itself, coin machines. The form walks you through opening hours and how you book or pay. The result lands on the venue page as a karaoke offering at that venue, not as a calendar event.

This is a big step toward representing the real world without forcing it into one box, and most of this update is the visible side of that work.

Activity, stats, and profiles

The public activity feed for meaningful directory changes (new karaoke nights, confirmations, "not happening" reports, new city activity) is in place. The stats page now reads from canonical tables, so the numbers reflect what's actually in the directory instead of a slightly-stale snapshot. /hosts defaults to "Newest" sort, which is more useful when you're trying to see what's been added recently.

Profiles got a few things: you can list a website and connected listings (venues and hosts you're associated with), and empty profile tabs (like a guide tab with nothing in it) no longer render at all.

A few things worth knowing about the loop that keeps the directory accurate:

  • RSVP an upcoming night. If you RSVP and someone reports the event isn't happening before the date, you get an immediate email. Not the daily digest, right away. You can RSVP privately if you want the alert without broadcasting that you're going. (How RSVPs and "not happening" alerts work.)
  • Confirm a night you went to. After a karaoke night happens, anyone who attended can confirm it actually took place. You don't need to have RSVP'd. Past events flip from Expected to Confirmed that way, and that's how the directory stays current without a constant manual edit cycle. (How event statuses work.)
  • Set a location, get weekly or monthly roundups. Add a location to your profile and pick a cadence in your location settings. KaraokeCrowd then emails you a periodic roundup of karaoke near you, instead of pinging on every new listing.

Memories: built but not live yet

Behind the scenes, I spent a lot of time on a new feature called Memories in this period:

A singer-centric room report flow for capturing what a night felt like. Imagine the usual social media stories format, but tied to karaoke nights or venues. In the long run, when people share what the night was like, we will be able to aggregate over the anonymized memories and give a high-level idea what to expect at a given karaoke night.

But Memories isn't live on production yet. I gated both the UI and the JSON API to staging and dev servers only, so on the public site there's nothing to see for now. There's still polish, moderation work, and product decisions to sort out before I can actually put this into your hands to try.

If you know a karaoke night

The directory gets better every time someone shares what they know. If you tried to add something a couple of days or weeks ago and hit a wall, this is again a good moment to try again. Many issues should be addressed by now.

Basically, I bit off a lot here and thanks to your contributions and interest, I'm now doing all the work to make it actually work. Looking at where you report getting stuck or what is breaking and fixing and improving it all from there.

Sabine