It started as an ML project a few years ago for my home break. Now a Python pipeline pulls NOAA's GFS-Wave model and samples it at every spot. Each spot's facing and exposure come from the coastline, so swell blocked by land doesn't count. Each hour gets a 0–100 score based on surf height, swell period and wind, and days are rated only on daylight hours. Tides come from NOAA stations, with the FES2022 tide model as a fallback. The web app is Go and SQLite.
The global model is coarse (1°) and doesn't account for local reefs or the seafloor, so sheltered spots can be rated wrong. Days 10+ are trends, not exact numbers.
Now I'm back to experimenting with ML weather models toward a wave model of our own. Looking at FourCast and GraphCast https://deepmind.google/blog/graphcast-ai-model-for-faster-a... https://arxiv.org/abs/2202.11214
Feedback is welcome, especially if your local spot is rated way off.