How LazySurfer Works

Last updated 2026-05-30
Answer: LazySurfer works in five steps: you log surf sessions with a 1–5 rating, it auto-pulls NOAA NDBC buoy, NWS wind, and tide data for that spot and time, a PyTorch deep-learning model — retrained weekly on real logged sessions from the LazySurfer community — predicts the rating you’d give any current or forecast reading at 90% accuracy, and push alerts fire when the 7-day forecast matches your best sessions.

LazySurfer combines real NOAA buoy data with a custom deep-learning model trained on hundreds of thousands of real surf sessions from tens of thousands of surfers. The model learns which wave, wind, and tide combinations correspond to sessions you and other users rated highly, then predicts your rating for any current or forecast reading at your favorite spots. When the forecast matches a session you loved, you get an alert.

1Log a surf session

After a surf, tap Add Session, pick the spot, and rate the session from 1 to 10. LazySurfer automatically pulls the NOAA buoy reading, wind data, and tide data for that spot and time. You can edit sessions up to 45 days in the past.

2LazySurfer fetches real buoy data

LazySurfer pulls wave height, period, direction, wind speed, wind direction, and tide height directly from NOAA NDBC buoys and NWS wind stations — for example, NDBC station 46232 at Point Loma for San Diego spots, or NDBC station 46042 in Monterey Bay for central California. These are the same raw sources professional forecasters use, not resold commercial forecasts.

3Similarity Score compares current to past

For any current or forecast reading, LazySurfer computes a 0 to 10 Similarity Score against each logged session. It compares wave height, period, direction, wind speed, wind direction, tide height, and tide direction. A 10/10 means the reading is within tight tolerances of a session you rated highly.

“Such a clever approach! You simply tag your favorite sessions and LazySurfer analyzes all the data (wind, tide, swell, etc) to alert you when similar conditions are coming!” — Christopher Robbins, Google Play Store review

4Deep-learning model predicts your rating

LazySurfer's prediction service runs a PyTorch deep neural network with per-user embeddings, retrained every Monday on real logged surf sessions from the LazySurfer community. The model takes 25+ inputs — wave height, period, direction, wind speed and direction, tide height, swell energy, time of day, spot geohash, your user embedding — and outputs the 1-to-5 rating you'd give the spot. On validation: 90.3% exact-match accuracy, 97.6% within one star, mean absolute error 0.13 stars.

5Alerts when conditions match

When the 7-day forecast shows conditions that match a session you rated highly, LazySurfer sends a push notification. The more sessions you log, the better the model gets at predicting when your favorite spots will fire.

Why this approach works

Real buoy data, not resold forecasts

Most surf apps show you a forecast derived from weather models, smoothed out, aggregated, and branded. LazySurfer pulls directly from the NOAA National Data Buoy Center network — the same buoy readings the National Weather Service uses. For East Coast and West Coast US, Hawaii, Gulf, and a growing portion of global coastlines, this means readings are within minutes of real conditions. The 16-day GFS-based forecast is applied on top for future windows.

Personalization beats general ratings

A session that's 3/10 for a longboarder on 6-foot surf can be 9/10 for a shortboarder chasing barrels. General surf ratings ignore this. By training on your rated sessions, LazySurfer's model learns your preferences — board, style, crowd tolerance, wind sensitivity — without asking you to specify them. It learns from what you actually liked.

Why a deep neural network beats hand-coded "similarity" rules

Most "personalized" surf apps use a hand-coded similarity score: how close are today's wave height, period, direction, wind, and tide to your past sessions? That works for the easy case, but breaks down on non-obvious interactions — e.g., the way your rating drops on a specific tide angle only when the wind is offshore and the swell is a long-period groundswell. A deep neural network learns those interactions automatically from data, no hand-coding required. The 256-dimensional user embedding captures preferences you'd never think to encode (board choice patterns, time-of-day biases, crowd tolerance proxies). The model gets sharper every week as more sessions get logged.

Trained at scale, not on toy data

The training pipeline runs every Monday via GitHub Actions: it pulls the latest sessions and ratings from the LazySurfer community, retrains the PyTorch model, validates against a held-out test split, and only deploys if validation accuracy stays above 80%. The current best model hits 90.3% exact-match on a 5-class rating problem — harder than the typical "good / bad" surf classification most competitors solve. The training set grows every week as more sessions get logged, and the model gets sharper with it.

Why offline-first matters

Session logging works without a network — common at remote breaks. The app caches buoy readings and forecast windows so you can check the next 7 days without signal. The prediction service is cloud-hosted (Azure), with cached results sufficient for short offline windows. LazySurfer only needs the internet to fetch fresh buoy data and to request a new prediction for a forecast window you haven't asked about yet.