- ✓Free Wi-Fi
- ✓Non-smoking
- –Dogs unknown
- ✓Cards + tap
Find a café or restaurant with real air conditioning near you, ranked by how well it actually cools. I own it end to end: the React front end, the NestJS API, the OpenStreetMap data pipeline, seven languages, the monetization, and the deploy.
3 places · confirmed AC only · Cannes
Climou started as a heat-wave annoyance: every map app can find a café, none can tell you whether it has working air conditioning. The data is sitting in OpenStreetMap tags; it just is not surfaced anywhere useful.
The strategic bet: don’t compete with Google Maps on coverage, win on one question it answers badly, “where can I actually cool down right now.” That narrows the audience to people in a heat wave in a dense city, and it makes the product opinionated: the default sort is cooling, not distance or rating, and a place with no AC evidence simply doesn’t show in confirmed-AC results.
So I built the whole thing. A NestJS API that pulls places from Overpass, merges weather from Open-Meteo, resolves photos from Wikidata, and ranks results by a Cooling Score. A React front end that has to work on a phone in the sun. Seven languages. Ads and a sponsorship tier for revenue. Deployed on Fly.io.
There is no team and no client. Every product call is mine: what the score rewards, how stale a report can be, whether a paywall is on the table, where the ad slots go. I ship each one straight to production and judge it against a single question, did it make a hot afternoon easier.
A solo product only works if it is ruthless about scope. I spent the first fortnight deciding who Climou is for, who it is not for, and what it will never become.
How I judge it. There is no revenue target worth stating yet, so success is three things: a confirmed-AC search in a covered city returns something genuinely useful, the score holds up when a stranger asks why it is 92, and the whole thing loads fast on a mid-range phone on mobile data. Anything that fails one of those is a bug, not a backlog item.
First I checked the data existed. I pulled air-conditioning tag coverage from OpenStreetMap for a dozen European cities: dense in the south, thin in the north. That decided the launch markets and told me a community-report layer was not optional, it was the product.
Then a teardown of Maps, TheFork and Foursquare on the exact job to be done. None of them answer “is it cool inside” at all, which confirmed the gap was real and not just unglamorous.
During the 2025 heat wave I put a rough build in front of friends and watched what they tapped. Two things stuck: they wanted one answer, not a list, which became the one-tap “take me somewhere cool” button; and every single person asked “why that score”, which is why the breakdown is one tap away on every result.
The idea is simple. Making it reliable, honest and self-funding was the work.
Owning it solo means every trade-off is visible and every one is mine. These are the ones that mattered.
Figures describe the build. The interface mockups on this page are reconstructions of the real UI, not live screenshots.
What I’d change. The product is right; the distribution isn’t solved. Climou only matters during a heat wave in a city with dense OSM data, and I have no answer yet for being found in that 48-hour window. That is the real problem to work on next, not another feature. I’d also revisit “confirmed AC only” as the hard default: it’s honest, but on a first visit an empty result set reads as a broken app rather than a strict filter.