16.1 How AI helped bring Estonian alternative music together in one place
I went to Hard Rock Laager for the first time in years and discovered quite a few underground bands that were previously unknown to me. Afterwards, I thought I should keep a closer eye on things, listen to more Estonian music, and go to more events. But many bands no longer have a website at all; information spreads on Facebook or Instagram, releases are on Bandcamp, tickets on Fienta. If you don’t check ten different pages every day, you miss half of the stuff, and you often only hear about new bands when the concert is already over. I wanted one place where all of this would come together.
So I built a site that would aggregate everything, so you wouldn’t have to manually comb through ten different channels. Once a week, an automation reviews sources to find new events. In addition, there is a contact form on the site to add events yourself.
That’s how skene.info was born — a curated calendar for Estonian alternative music: metal, rock, punk, dark electro. I also started a sister site, rap.skene.info, for local hip-hop. Every entry always links back to the original source: the promoter’s event page, the venue’s website, or the ticket vendor. This is a matter of principle. I don’t want to siphon traffic away from any Estonian promoter; instead, I want to direct people to where the event info actually is and where tickets are sold.
I didn’t write any code myself; I made the decisions. I use Claude, and different models did things according to their capabilities: part of the code was written by Opus, Sonnet built some things from start to finish, and the entire workflow was orchestrated by Fable. I said what I wanted and what was in scope; they wrote the HTML, set up data scraping, found a bug in the Vercel configuration that stubbornly showed the wrong page, and filled in the DNS records, while I just typed in the verification code that Squarespace sent to my email.
There are more of these decisions than meets the eye. I decided that all alternative music, including punk and rock, goes on the main site. For foreign festivals, I only cover major events — Wacken yes, a random German club night no. And all the time you have to maintain the line between a curated selection and comprehensive coverage. Such choices are an editor’s job and cannot be handed over to a machine, otherwise skene.info would lose its identity.
The site is not a static file that you have to update manually. Once a week AI uses a browser to go through over sixty sources — Facebook pages, Instagram accounts, club websites —, finds new events and releases, cross-checks each finding against at least two independent sources, adds it to the right place, and updates the site. Then it generates an image of the week’s events, which is automatically posted to Instagram in the morning. From the same dataset, the machine also compiles a weekly newsletter — I read it over and send it out to subscribers. A second process checks the contact form inbox every day: if someone submitted an event that I hadn’t found, the machine searches for it online, verifies that it’s a real event, and only then adds it to the page.
The first version was completed in a single Sunday, but it didn’t stop there — almost every day something new has been added. The site now has an archive, and past events no longer disappear into the void. Next to the band name there are buttons for Spotify, YouTube, and Bandcamp. At first, these were simple search links that didn’t find anything for smaller bands, so I had eight Sonnet agents run in parallel to check all 146 bands currently in the calendar, and only the links where something actually exists were kept. Around twenty bands aren’t on any streaming service and can only be listened to on Bandcamp. The list of sources the machine goes through every week is now publicly available on the site, and all the code is out there on GitHub under a free license.
Some things went wrong too. Automation tends to break: websites change, and if a source updates its page, the information stops coming until someone notices. Creating a Meta developer account hit a dead end because verification required an SMS to a number that Facebook itself had already deactivated. Anyone who has wanted to do more with Facebook or Instagram than just post, knows what a stupid maze a Business or a Developer account is. The contact form’s email service simply broke one day and had to be swapped out for another. The machine found an event for from previous year with the same bands, and didn’t put the new one on the site at first.
Building a website itself is, of course, nothing new, and machines have been writing code for years. What has changed, however, is that when you get an idea, building the first version takes a few hours. Just a few years ago such a thing would have required money, assistance, and months of tinkering.



