← appaday

Schwarzwald Events, what Google doesn't know

Schwarzwald Events is one page with everything that happens around Rottweil, Villingen-Schwenningen and Balingen: concerts, village festivals, club nights, cinema times, church services, and the week's yoga, Pilates and martial-arts classes. Today it holds 5,480 dates from 104 sources in 71 towns.

It started in April as one agent pass over the regional tourist calendars. The rule from that first week is still in the handoff notes:

Datenqualität ist wichtiger als Präsentation.

Data quality matters more than how it looks.

A newspaper-style page headed SCHWARZWALD·EVENTS, Anzeiger, Rottweil, Villingen-Schwenningen, Balingen, Tuttlingen and 20 km. A row of counters reads Termine 5480, Orte 71, Kategorien 20, Quellen 104, Festivals 7, and a clock. Below, tabs: Heute, Events, Konzerte, Kino, Regelmäßig, Kirche, Locations, Kursplan, Festivals. The Heute tab for Monday 26 October lists three numbered top picks, a piano recital in Bad Dürrheim, a communal dinner in St. Georgen and a build-your-own cuckoo clock workshop in Furtwangen, then more: sauna evenings, a ski-jump tour with VR, two exhibitions, a games afternoon, a full-moon torch walk
The Heute tab today: three picks, the rest of the day, and how many films are on.

Where the events actually are

The big calendars were the easy part. What they miss is what people go to. In July:

a lot of events are now advertised on instagram alsmost exclusively

A week later I handed it four festivals it had missed (a one-day electronic thing in Dormettingen, Bassaffekt in Balingen, the Waldfestival in Eningen, the Bergfest open air in Dürbheim) and asked for more than the four:

once you got those, reverse engineer how you could have found them on your own

So the sources are mostly small ones. A ticket site that blocks scripts still publishes its XML sitemap. A brass-band association's RSS feed covers about fifty village bands. Then there are Facebook event tabs, Instagram bios that list the next parties, and the weekly PDF gazettes the villages print. 1,209 of the dates came from a language model searching the web.

Narrower, and deeper

On 7 September the area got smaller on purpose:

let's try to narrow focus on Rottweil - VS - Balingen.... those 3 plus some bubble around them... [...] one hidden thing that is hard to find on the internet is the black forest run club.... you know stuff like that that google just doesn't know about

The plan was to walk Instagram's follow graph: start from accounts known to post events and see who they follow. The first run tried to open every single follower, and I stopped it:

ok I think you may be overdoing it looking at EVERY follower ... I think you could just pull metadata of follower count or even look at the name of accounts with a cheap model to decide if this is likely just a normal person or if it is an institution / someone well connected

The same evening the distance rule was set. Close to home, everything counts. Further out, only what is worth the drive:

the concerts worth driving for are like the katy perry jassfest earlier this year etc... so not the no name stuff

in the hyperlocal region everything is admitted, outside of that only name brands

The Black Forest Run Club is on the board now, on 1 November in Villingen. It came in through the model's web search.

The Events tab: filter buttons for category, town, sort order and unchecked entries, then a table for October 2026 with columns Datum, Event, Ort, Kategorie, Info. Every row is marked Heute Mo: a special exhibition on Paul Ehrlich and the Ariston at the clock museum in Schramberg at 18:00, a communal dinner and a games afternoon at Café Vielfalt in St. Georgen, an after-work meetup, a first-aid course and Qigong in Villingen-Schwenningen. Each row names its source site, and most show 16 km on the right
The Events board. Every row says where it came from. The kilometres on the right are counted from Dunningen until you give the page your own postcode.

Whose distance

In August:

I live in Dunningen now, which is nearer to Rottweil... but I wanted to make the site more mass marketable anyway, so... find a way to scrape the stuff near here as well and let people enter their zip code for distance estimation / calculation

So every date has a distance, counted from Dunningen unless you type a postcode or let the browser share your location. The page remembers whichever you chose.

The week's classes

The Kursplan tab lays every studio's week out in one timetable. The classes come from booking-system APIs, studio websites, and in one case a timetable that is only a picture, read by a vision model. In July it still showed each class only once:

after all you can assume that most slots repeat weekly. it seems right now you only assume they happen once which realy isnt how schedules usually work is it

The Kursplan tab, headed Sport und Bewegung, Der Kursplan der Region. Day buttons from Monday to Sunday with class counts 124, 90, 96, 81, 55, 7 and 16. Below, filter chips for about fifty studios, from 861 Kampfkunst Fridingen and Bikram Yoga Balingen to WTAA Zimmern ob Rottweil and Yoga Rottweil, and for the kind of class: Eskrima, Fitness, Functional Fitness, Hot Yoga, Kampfkunst, Kampfsport, Karate, Pilates, Selbstverteidigung, Tanz, Yoga
Kursplan: 124 classes on a Monday, filterable by studio and by kind.
dates
5,480 in 71 towns, 439 venues and studios, 20 categories
sources
104: calendars, sitemaps, RSS, ICS, PDFs, Facebook, Instagram, model web search
page
one static HTML file that loads a 2.6 MB events.json; no framework, no build step
refresh
full scrape weekly, cinemas every morning at six
AI cost
every model call goes through one budget module with a hard cap

Still rough

The cap is there because of July:

please stop all use of gemini api now.... there is something massively wrong with the cost exploding way too much

Since 28 August all 22 model-backed scrapers share one budget module that stops them at the cap. As of this morning they run on Claude instead of Gemini.

On a phone the header, the banner and the lists are wider than the screen.

The same page at phone width. The subtitle, the counters and the Ausgabe banner run off the right edge, and the Heute list is cut off on the right as well
412 pixels wide. Everything runs off the right edge.

A fifth of the board is a model's word for it. Since August a separate pass checks those dates for invented ones, and the board has a switch for entries that were never checked.

The page is in German only.