How spearo.app reads the sea
Last updated: 2026-08-10
spearo.app sometimes gets described as “a weather app for spearfishing”. It isn't. Weather models are one input of several: we build our own seabed maps from Sentinel-2 satellite imagery, measure water clarity from orbit, mirror wave-buoy archives from nine national networks, and use those buoys to catch the forecast models overshooting. This page lays out how the engine actually works — with real numbers, including the unflattering ones.
As far as we know, this stack is unique in the niche: no other spearfishing or freediving forecast runs its own satellite bathymetry, its own clarity model and its own mirrored buoy archive. The big marine-weather platforms serve sailors and surfers; spearo is built around one question — will you actually see anything down there today.
Coverage today: 26 countries, 1,100+ coastal towns, 9 languages — and one honest verdict per dive window: go or no-go.
A seabed map we build ourselves (Sentinel-2 SDB)
The depth windows and reef-score pins on the map come from satellite-derived bathymetry (SDB) we compute in-house: stacks of cloud-free Sentinel-2 passes run through our own optical-depth pipeline, built and hardened in production across 17 countries. The exact recipe stays in-house — what we publish is how we prove it right.
Every region is calibrated against NASA ICESat-2 ATL24: individual laser photons that measured the actual seabed. Typical calibration error is 0.9–2 m RMSE; our best region, Akumal in Mexico, sits at 0.94 m. The same calibration sets an honest applicability window (say, 0–15 m): outside it the map shows nothing rather than a guess. Where the physics genuinely fails — the turbid Humboldt upwelling in Chile, the surf-hammered east coast of Siargao — we publish “no coverage”, not a pretty fake.
Where governments run open coastal LiDAR or survey programmes we use those at 1–5 m resolution instead: Portugal, France (SHOM Litto3D), the United States (NOAA), Australia, New Zealand (LINZ), the Basque coast, Argentina's naval-survey isobaths. The reef-score layer is live in 17 countries with roughly 6,600 rated pins, and every build passes an automated QA gate: an on-land audit, a marine-reserve cut and a maritime-border audit, so a pin never lands on dry land, inside a no-take reserve or in a neighbour's territorial waters.
Water clarity measured from orbit, not guessed
Visibility is the whole game in spearfishing, so we refuse to model it from wind alone. The clarity reading on city pages is a measurement: Secchi-disk depth (ZSD, in metres) from Copernicus Marine ocean colour — a ~1 km Atlantic product read freshest-first, with a gap-free ~4 km global product underneath. Daily composites, roughly a day of latency.
We built and validated our own hybrid clarity model on top of that measurement, trained on 29 years of ocean-colour history (1997 to today, ~93,000 observations from our home coast). The freshest usable satellite reading is still the strongest signal: it comes from a measurement, not a weather-based guess. Between passes, the model uses wind, swell and other weather inputs to carry that reading forward until the satellite gets another clear look. Walk-forward validation across all four seasons produced an MAE of 2.25 m. We fit the coefficients separately for every region; we do not reuse a Cascais fit in the Aegean, where transfer without a local refit produces errors of 9–16 m.
Our own shelf of wave buoys
A model forecast is an opinion; a buoy is a fact. We run collectors that continuously mirror wave-buoy data from nine networks into our own archive: Instituto Hidrográfico (Portugal — official data access), NOAA NDBC (United States — over 2,000 station-years, back to 1990), Puertos del Estado (Spain), SOCIB (Balearics), AODN (Australia — the Sydney record starts in 1992), ISPRA RON (Italy), POSEIDON (Greece, via Copernicus Marine in-situ), SiMCosta (Brazil) and PNBOIA (Brazil — Centro de Hidrografia da Marinha / Marinha do Brasil, with Petrobras). Some mirrors reach back decades; others accumulate from live feeds we poll around the clock.
Live buoy readings appear on city pages under hard honesty gates: a reading older than 3 hours is hidden, wave data only shows from a station within ~130 km, and if no station is in range there is simply no chip. We never substitute a model value where a measurement is promised.
Buoys keep the models honest
Because we hold both the forecast and the measurement, we can score the models. The first ledger from the Portuguese buoys — forecast versus measured significant wave height — reads: Sines +0.06 m (correlation 0.83), Leixões +0.01 m, Faro +0.22 m, and Caniçal on Madeira's sheltered side +0.42 m. The pattern is systematic: raw wave models overshoot on lee shores. That bias signal is exactly what feeds our per-coast calibration — and it's why a sheltered coast can read differently on spearo than in a generic forecast app.
From the water: reports from real dives
A forecast also has to answer to what divers actually saw in the water. Spearo collects first-hand visibility reports in the app, spot by spot across all 26 countries, and reviews each one alongside that day's satellite reading and buoy conditions. We are only now integrating this growing archive into coast-by-coast calibration. Once integrated, those reports can help improve later forecasts for the same shore. Most forecast products leave this out; our aim is to check the models not only against satellites and sensors, but against the visibility a diver actually found at depth.
One verdict, six models
The go/no-go for each dive window is read from a consensus of three wave models (EWAM, GWAM, Météo-France WAM) and three wind models (ECMWF IFS, GFS, ICON). Agreement raises confidence. Disagreement never upgrades a verdict — it degrades green to yellow, and far-out windows that carry real model disagreement are marked provisional. The goal is stability: a verdict that silently flips overnight is worse than a cautious one.
Cadence and the honesty rules
- Coastal verdicts are re-read every hour; a spot forecast is cached for 10 minutes; buoy chips refresh in 15-minute buckets; satellite clarity is a daily composite checked every 6 hours; official sea warnings (IPMA and peers) ride along live.
- No data ≠ bad conditions. A cell without measurements says “no data” — never a fake low score.
- Every layer carries its provenance and precision: hydrographic survey vs coastal LiDAR vs Sentinel-2 SDB vs model estimate, labelled in the UI.
- No-take zones are digitised from primary legal texts — decrees and park regulations, not third-party summaries — and the engine fails closed: if we can't verify, no pin goes there.
- Nothing on spearo.app is for navigation.
The data we stand on
- Copernicus — Sentinel-2 imagery; Copernicus Marine ocean colour and in-situ data.
- NASA ICESat-2 ATL24 bathymetric photons (calibration ground truth).
- Wave-buoy networks: NOAA NDBC · Instituto Hidrográfico (PT) · Puertos del Estado (ES) · SOCIB · AODN (AU) · ISPRA RON (IT) · POSEIDON/HCMR (GR) · SiMCosta (BR) · PNBOIA — CHM / Marinha do Brasil · Petrobras (BR).
- National coastal LiDAR & survey programmes: SHOM (FR), NOAA (US), LINZ (NZ), Australian state agencies, DGT/Instituto Hidrográfico (PT), b5m (ES), SHN (AR) and others — each credited on the map layer it powers.
- Open-Meteo and national met services (IPMA and peers) for model fields and warnings.
Everything above is inspectable on the live map: depth windows, clarity, buoys, no-take zones — each layer with its own source label.
The full stack, built in-house
Spearo is the only spearfishing platform that builds its own satellite bathymetry, mirrors nine national buoy networks, models water clarity from three decades of ocean-colour history and collects first-hand visibility reports from divers. Other platforms buy one of those layers or leave them out. We build the full stack ourselves, across 26 countries.