A friend of mine has years and years of concerts logged on Concert Archives. People she knows are on What I’ve Heard, which takes the shows you were at and displays every song you have ever heard a band play live, counts them up, and prints them as a poster. On a phone call she asked how hard it would be to share her history there too.

While we talked, I pointed my agents at the question and let them run in the background.

The first thing they found changed the shape of the problem. What I’ve Heard has no concert database of its own. It reads the setlist.fm archive, the fan-run record of what bands actually played night by night, and your ticks live in your own browser. So there was no data transfer to do at all. It is a matching problem: take each show from the Concert Archives export, find the same night in setlist.fm’s archive, and mark it.

Then they built the whole thing. Concert Porter takes the spreadsheet Concert Archives emails you, looks up each show by artist and date, scores the candidates against your venue and city, and asks you to pick when two shows happened the same night. The matched history becomes a bookmarklet. You click it once on What I’ve Heard and your shows appear, ticked. Under the hood it is a single static page plus a tiny Cloudflare Worker that relays the archive lookups.

The agents did almost all of it on their own. They researched both platforms, reverse-engineered how What I’ve Heard stores a tick, wrote the matcher, built the site, and deployed everything. My whole contribution was four requests: make it prettier, make it simple enough for someone who is not technical, make it work on an iPhone and iPad, and add rate limits so nobody can hammer it. Everything else was the agents, running Fable 5 with DollhouseMCP.

Shows that setlist.fm has never heard of cannot come along, and the tool is honest about that: it hands you the list of strays so you can add them to setlist.fm, where they become part of the record for everyone.

This is what play looks like for me lately. A friend asks a question, the agents run while we talk, and a few asks later there is a finished tool anyone can use. The code is open source under AGPL:

→ Concert Porter · github.com/mickdarling/concert-porter