About Sauna Sightings

Two parts: a short essay on why this exists, and a longer note on how it was built.

A sunset in Ireland doesn't last very long.

Not the full two-hour window you see on your phone. The part that actually matters, the part your nervous system responds to, is closer to 6 minutes. Maybe 8.

And only then, if a few things align.

The best ones are always over water. Your brain finally stops worrying about fight or flight long enough to settle into what's in front of it.

A sunset in the city is something that happens to you. A sunset over water is something you experience.

The same is true of a sauna at the right hour.

We've mapped every sauna on the island of Ireland. Not just where they are, but which ones face sunrise or sunset over water, and when they actually have availability. So you can plan around the moment rather than around your schedule.


How we built this

A side project. An AI tools experiment. And a lot of time thinking about sunrise times.

Finding the saunas

This project was inspired by two things: the Guinndex, which maps the price of a pint of Guinness in every pub in Ireland, and Pubs in the Sun, which mapped them by when the light hits the beer garden. Both solved a specific, small, real problem with data and a bit of obsession.

The question here was simpler and more annoying: could you find a sauna session at sunset without becoming half astronomer, or checking 37 different websites, only to discover there is nothing available for four months?

It turned out you could not. So we built something that could.

Before we could track availability, we needed to know what we were tracking. The starting point was Google Maps. Using the Places API, we built a query that searched the island of Ireland for sauna-related businesses, pulling name, location, contact details, ratings, review counts, and category data for every result. This gave us a working dataset of over 250 venues, which formed the foundation of everything that followed.

The Google Maps pull is currently a snapshot rather than a live feed. Keeping it automatically updated as new saunas open is on the roadmap. For now, we run it periodically and merge new entries manually. If your sauna is missing, the corrections form is the fastest way to get it added.

The data layer

The second challenge was availability. There are over 250 saunas operating on the island of Ireland, booking across more than a dozen different platforms. Acuity Scheduling, Wunderbook, SimplyBook, Wix Bookings, FareHarbor, Bookwhen, Servicify, Cowlendar and others. Each platform has its own API, its own authentication method, and its own opinion on how availability data should be structured.

We used AI coding assistants to build and iterate on a suite of platform connectors that link to each operator's own live booking system. These run automatically every morning, pulling current availability directly from the source. When you see a slot on Sauna Sightings, it reflects what is actually available on the operator's own booking page at the time of the last update.

Of the 250 plus saunas in the dataset, we have so far built working connectors for fewer than half. The remainder either use platforms we have not yet connected, book exclusively through Instagram DMs or WhatsApp, or do not publish availability online at all. Building connectors is time consuming, each platform is different, and some are actively resistant to being read programmatically. We are working through the list.

The connectors took considerable iteration to get right. Booking platforms are not designed to be read by third parties, and several required significant reverse engineering with AI assistance to understand their data structures. What started as a single connector became eight, covering the majority of the Irish sauna market that publishes availability online.

We would love to hear from operators about what would make this more useful for their businesses. The corrections form is open to everyone, and operator input in particular genuinely shapes what gets built next.

The failures

The solar classification problem looked, initially, like something a computer could solve.

The theory was elegant: take the coordinates of each sauna, use OpenStreetMap polygon data to identify nearby bodies of water, calculate the angle from the sauna to the water, compare it against sunrise and sunset azimuth values for that location and time of year, and classify automatically. Coastal sauna facing 95 degrees east with sea within 200 metres: sunrise candidate. Done.

The practice was considerably messier.

OpenStreetMap water polygon coverage in Ireland is inconsistent. Coastal geometry is complicated. A sauna sitting 150 metres from a sea inlet that opens westward is not a sunset sauna just because water is nearby. The azimuth calculation works in theory but requires clean data about exactly where the sauna is relative to exactly where the water is and exactly what direction the view faces from the specific outdoor area where guests actually sit, not the building centroid.

After several weekends of increasingly elaborate attempts to automate the classification, we gave up and did it by hand.

Every sauna in the dataset was manually reviewed: satellite imagery, street view where available, operator websites, Instagram accounts, and booking page photos. Over 250 individual assessments, one at a time, which is exactly as tedious as it sounds and also the only way to get it right.

The automated approach would have been faster. It would also have been wrong in ways that are difficult to detect and embarrassing to explain to someone who drove an hour to watch the sunrise from a sauna that faces a car park.

The solar layer

Once the classification was done, the solar calculation was the straightforward part.

For each sauna classified as facing sunrise or sunset over water, we used an astronomical library to calculate precise solar event times for that sauna's exact latitude and longitude, for every day across a 90-day rolling window. These calculations update automatically each night, keeping the solar data current as the season changes and the sun moves.

The result is a view that joins live availability to live solar events. When you see a slot labelled as a sweet spot, it means the session starts before the relevant solar event at that specific location on that specific date. Not approximately. Not based on a central Ireland average. At that sauna, on that day.

The infrastructure

The project runs on a small virtual machine that pulls fresh availability data every morning and writes it to a Supabase database. The frontend, built with an AI-assisted development tool called Lovable, queries that database directly.

The stack is deliberately simple: a Linux server, a PostgreSQL database, and a React frontend. No microservices, no complex orchestration. The kind of thing one person can understand and maintain.

AI tools were used extensively throughout: for writing and debugging the platform connectors, for generating and iterating on the frontend, for data enrichment, and for a significant amount of the writing you are reading right now. The solar calculations, the database schema, the booking platform integrations, and the editorial voice were all developed in close collaboration with AI coding and writing assistants.

The parts that required human judgment: deciding which saunas face the right direction, verifying data accuracy, making product decisions, and knowing when something that technically works does not actually feel right. Those parts took longer than expected. They always do.

The map

The map contains every sauna we have been able to verify on the island of Ireland, including Northern Ireland. The classification data was compiled from satellite imagery, operator websites, Google Maps, and booking page photographs.

The Google ratings and review counts displayed are sourced from Google Maps data at the time of compilation. They are not updated in real time.

The availability data updates every morning. The solar data updates every night. The sauna count updates when we add new venues, which happens regularly as the Irish sauna market continues to grow.

What this is not

Sauna Sightings does not operate any saunas. It does not take bookings. It does not earn commission. Not a penny. When you click through to book, you are booking directly with the operator on their own system, on their own terms, at their own price.

This is not about starting a marketplace or chasing clout. There is no business model here that involves taking a cut of anyone's revenue or building a platform that operators become dependent on.

This is about connecting a passion for technology and a genuine enthusiasm for great experiences, to see what happens when you point decent tools at a real problem. If it is useful, share it with someone who would appreciate it. Then go book the sauna and support the people who actually built it, maintain it, chop the wood for it, and stand outside it in the Irish weather waiting for you to finish your cold plunge.

They are the ones doing the hard part.

A note on the AI tools

Several people have asked whether this was entirely AI-generated. The honest answer is: not entirely, but more than most people would be comfortable admitting.

The platform connectors were written with AI assistance and required significant human debugging and iteration. The frontend was built using an AI development tool and required extensive prompting, correction, and judgment. The writing was drafted with AI assistance and edited by a human who kept changing their mind about the tone.

The classification of every sauna on the island of Ireland was done by hand, by one person, over a very long weekend.

What AI made possible was compressing what would have been a significant project for a small team into something one person could build alongside a day job. This kind of thing used to require a developer, a designer, a data analyst, and several months of meetings. It still requires judgment, taste, and the willingness to manually review 250 satellite images, but the technical barrier is meaningfully lower than it was even two years ago.

Most of it was built on the Luas. Forty-five minutes each way, red line, standing up when it was busy. Claude on the phone, problems getting solved one stop at a time between Belgard and Broombridge. There is something appropriate about building a tool for finding the right moment in the right place, mostly while in motion, watching Dublin pass by.

That feels worth being honest about, both because it is true and because the people who might find that most interesting are probably the same people who most need to hear it.