Bordeaux in data: maps, a radar, and a vintage that writes itself

Bordeaux in data: maps, a radar, and a vintage that writes itself

bordeaux.guru started as a site for En Primeur tasting notes — wines tasted while they still age in barrel. Scores, texts, châteaux. But wine is not just the flavour in the glass: it is the result of weather, soil, and decisions a winemaker made on a specific day of a specific year. And that part was missing.

This is part one of the Building bordeaux.guru series. Five days of work in tandem with AI produced an entire data layer — and the last thing we built has been writing itself ever since.

Maps first: fifteen appellations that are not flat

I wanted maps that are not decoration. So no pictures of appellations, but real boundaries — with switchable layers on top of them.

Map layers on bordeaux.guru — temperature, rainfall, wind, humidity, sunshine, ET0, overlay, relief, soil, plots, terraces, varieties

Twelve layers, with one shared legend and scale across every appellation — because comparability is the whole point. What is in them:

The climate database: 9 variables, 15 appellations, every day of the season

Under the maps sits a table holding daily climate for every appellation: maximum, minimum and mean temperature, rainfall, wind, humidity, sunshine hours, evapotranspiration and solar radiation. The source is ERA5, the European climate reanalysis — a model that reconstructs past weather from all available measurements and reaches back to 1940.

One decision was made right at the start: store the data in the database, do not just fetch it at build time. The reason is simple — I want to be able to ask it questions later. When someone asks why a particular wine earned a particular score, I want to answer with data about flowering, frost and drought in that year.

Later came soil moisture at two depths — topsoil (0–7 cm) and the root zone (28–100 cm). ERA5 only provides it hourly, so we fetch hourly data and average it into days. The very first look at it told a story: in August 2026 the topsoil in Pauillac is the driest of all three measured years, yet the root zone holds more water than last year. That is the data proof of the old wine adage that old vines with deep roots ride out a dry year — and young plantings suffer.

The vintage radar: a page that writes itself

The most interesting thing came last. The ripening season is running right now, so why not have a page that continuously shows how this vintage is doing?

The 2026 vintage radar — six signals: heat, drought, heat waves, spring frost, disease pressure, sunshine

Six signals, each with a status and a reading of what it means for the fruit. And this year the numbers are a story in themselves:

These historical comparisons are not estimates. We pulled 47 seasons back (1979–2025) and compute percentiles always to the same day of the season — comparing August with a full year would be nonsense. So when the page says "the warmest since 1979", it is computed, not felt.

On top of that: a fourteen-day ECMWF forecast loaded live in the browser, and phenology — when the vine flowered, when veraison happened, when picking starts. 2025 is documented from official château brochures; this year we still estimate from the thermal lead and honestly mark it hatched until we can confirm it.

Data that does not exist, and data nobody will give you

The most instructive part of the whole job was the source research. It turned out that:

So we took the one road nobody can shortcut: digitising parcel maps from official château brochures. Photograph the map, correct the perspective, sample the variety colours, trace the parcels, georeference them onto real coordinates, then a control batch for approval. Two estates so far — Gazin in Pomerol (19 parcels) and Brane-Cantenac in Margaux (93 parcels). Every figure is labelled "château data" and the rendering is honestly described as indicative.

Incidentally, this data is exactly why the site has two access levels. Open data stays public with attribution; what we acquired ourselves sits behind membership. With one exception: the first digitised estate stays free as a sample. If someone wants to see what it looks like, let them see it.

Terroir as ten signals — and what they mean for the grape

The best chart is useless if nothing next to it says what it means. So the terroir page carries ten signals — each a mini-map from real data, a number, and a sentence on why it decides. Not for a meteorologist: for someone deciding whether to buy the wine.

Ten signals that make a vintage — mini-maps with real numbers and their reading

And since the season is running, a teaser now shows the current vintage against the two previous ones — on the homepage and on the terroir page:

Season radar teaser on the homepage — cumulative heat curves of three seasons

What I enjoy most: it runs on its own

The whole climate layer would be worthless if someone had to refresh it manually every week. So it refreshes itself: a scheduled task pulls fresh data once a week and writes it into the database. The script has exactly one privilege — writing into the single climate table, nowhere else. If the download fails, the database is left untouched.

And between runs? ERA5 lags by about five days, so the page fills the last few days live from the forecast model and marks them. The radar is therefore always current as of today, even when the database is a few days behind.

Lessons I want to remember

What follows from all this

This was not work on a prettier website. It was groundwork: the database now holds thousands of days of climate, elevation, soils, parcels and phenology — all tied to specific wines and châteaux. On top of it we are building an assistant that can answer "why does this wine have this score" with data about how the season actually went.

And the 2026 season is writing itself so far: the warmest since 1979, drier than 98 % of seasons, healthy fruit. Whether it turns out great will be decided in September.

The vintage radar is public at bordeaux.guru/season, the maps at bordeaux.guru/maps. Data sources: Copernicus ERA5 via Open-Meteo, Copernicus DEM, IGN/INAO, Etalab (DGFiP), BRGM. If you have your own experience building data layers on open sources, message me on LinkedIn.