“What can we do with the kids this weekend?” was the starting point for Okolo. Around Linz, the answers are spread across town websites, museum programmes, parish calendars and posters on kindergarten doors. There’s quite a lot happening. Finding it can take longer than it should.

I wanted to put those events on a map, where you could see what was nearby and whether it fitted into your afternoon. Getting the information onto that map has been most of the work.

Okolo Linz artwork with event pins around the city

Every website does it a little differently

Some calendars offer a feed with dates and venues neatly separated. Others put everything in a paragraph, hide it on a second page or use a layout that only makes sense once you’ve looked at it.

Okolo checks for structured information first. If a calendar already gives me the date in a field, there’s no reason to ask an AI to find it again. Many Austrian municipalities also use the same publishing system, GEM2GO. Writing a reader for its layouts meant I could reuse that work across a lot of towns. In one Upper Austria snapshot from July, it handled almost three quarters of the working sources.

For the remaining pages, an AI model extracts a small set of facts: the event name, date, time, venue and a few useful categories. Missing information stays missing. If there isn’t a reliable date, the event gets skipped.

Photographed posters use a similar process, with an extra step: the person uploading one can check and edit the result before publishing it.

Getting the place right

A venue name is often less helpful than it looks. “Parish hall” might be perfectly clear to someone living in the town and almost useless to a map.

Okolo first checks venues it already knows, then looks up the published address or the venue and town together. It checks the result against the expected area. A confident match a hundred kilometres away is still wrong.

When I can only establish the town, the event is shown at that level of accuracy. I’d rather someone know they need to check the address than send a family to the wrong building. Once a venue is verified, later events can reuse its location.

Keeping the map up to date

The same event can appear on an organiser’s page, a tourism site and a municipal calendar. Okolo compares titles, dates and places to catch duplicates, but has to be careful with similar events happening nearby. Removing a real listing is an easy mistake to hide.

The crawler also keeps track of when sources change. If a page is unchanged, there’s no need to extract it again. It spaces out requests to each site and respects its crawling rules, which matters when the source is a small local website.

On the map side, the app loads events for the area you’re looking at. Zoom out and they’re grouped together; zoom in and individual listings appear. There’s no need to download the whole collection just to look around your neighbourhood.

Each event keeps a link to its source. Times and venues can change, and I want people to be able to check the original announcement. Okolo collects the useful facts without copying the publisher’s photographs or full description.

There’s still plenty of unglamorous work in adding another town: finding its calendar, understanding the format and checking where its venues really are. But that’s what makes the map useful. The little event you would otherwise have missed is often on one of those awkward websites.