Intro

Impact

909 events aggregated

76 towns covered

17 towns with live automated feeds

Methods

Municipium RSS scraper + Postgres pipeline

Claude Code + VS Code for the full build

Moderated submissions with admin queue

Iterated on real feedback from local networks

Fragmentation

Lake Garda hosts thousands of events a year; scattered across sites, PDFs, and Facebook pages, with no single place to see what’s on nearby.

I built a scraping pipeline that normalizes it all into one schema, with Claude parsing formats, flagging duplicates, and running unattended.

Trust at Scale

Automation covers towns with a clean feed: not the one whose only listing is a Facebook post, or the organizer who wants to add their own festival directly.

So GardaDay takes user submissions too: trusted partners publish instantly, everyone else waits for one-click admin approval.

Information Architecture: Day, Town, Category

A flat list breaks down fast at this scale. Navigation runs on three axes instead: Day, Town, Category.

The browsing stays fast, no matter how many events pile up. Built mobile-first for someone scanning on the street, not sitting at a desk.

Individual events rotate through evergreen pages like Events in Desenzano, so the architecture doubles as the SEO strategy.

What I Learned

Product design today isn’t just about interfaces; sourcing and structuring the data matter as much as any screen.

GardaDay is the project where I found the problem, built the product, and shipped it myself, end to end.

  • Previous ProjectHostelworld

  • Next ProjectVerify News