Methodology
How the Hunt Score is calculated.
The Hunt Score is a 0–100 forecast of how productive a tooth-hunting beach is likely to be on a given day. It is not a guarantee — it is a calibrated heuristic built from public, auditable data sources.
Inputs
- NOAA CO-OPS — predicted tide extremes (high/low) and harmonic curves for the nearest tidal station.
- Open-Meteo — hourly wind speed, gust, and bearing for the site coordinates.
- SunCalc — sunrise, sunset, and lunar phase derived from the date and lat/lon.
- NDBC buoys (where available) — significant wave height for storm exposure.
- Site dossier — score model (tidal-beach, river-low-water, spoil-pile, inland-creek), good wind direction, and access type.
Components (tidal-beach model)
Each row below is an additive component of the daily score, with its exact maximum in points. The sum is then multiplied by a storm modifier (1.00–1.30×) and an event boost is added on top, then the result is clamped to 0–100. Every per-day score on a location page exposes the same numbers in the “Show the math” toggle so you can verify by hand.
Tide range
0–50 ptsSpring-tide proximity
0–15 ptsDaylight window
0–15 ptsRecent stir
0–10 ptsWind setup at low
−10 to +10 ptsSurf bonus
0–5 ptsRecent rainfall
0–3 ptsStorm multiplier
×1.00–1.30Event boost
+0 to +25Other site models
- river-low-water — gauge level + recent rainfall instead of tide. Best when water is dropping and gravel bars emerge.
- spoil-pile — dredge or quarry sites. Tide-independent. Penalizes high-wind dust days, slight bonus after heavy rain rinses fresh material.
- inland-creek — small drainages where exposure depends almost entirely on recent storm flows. Bumps after rain, fades with drought.
What the colors mean
Reliability tiers
Each site advertises how trustworthy its live score is:
- full — NOAA tide station + Open-Meteo, all model inputs available.
- partial — model runs but one input is approximated (e.g. nearest buoy > 50 km away).
- dossier-only — global heritage / inland sites with no live oceanographic data. The dossier is real; the daily score is a baseline placeholder.
Not currently in the model
Transparency goes both ways — here is what we deliberately don’t use today, and why:
- Hunt pressure (info-only). The number of hunts logged at a site in the past 7 days is shown as a chip on each location page, but does not change the score yet. We need more volume per location before a penalty would be statistically meaningful.
- Wave period and swell direction. We use significant wave height only. Open-Meteo doesn’t expose period reliably for most sites.
- Barometric pressure trend. A falling barometer is an early storm signal, but our existing wind-based stir already captures the same effect once the wind arrives.
- Water temperature, clarity, salinity. Affect comfort and snorkel visibility, not (directly) what teeth wash up on the beach.
- Weekday vs weekend. A 70 on Tuesday is often better in practice than a 70 on Saturday because of crowds, but we don’t adjust for that.
- Beach renourishment. Fresh sand buries everything. Captured only when an admin logs a manual event — there’s no auto-detection from satellite imagery yet.
Open source & auditable
The full scoring implementation lives in src/lib/huntScore.ts in our public repository. If you spot an error or have a calibration suggestion, file an issue.
Calibration is ongoing. We compare predicted scores against logbook outcomes (when users opt in) and adjust weights quarterly.
Last reviewed: April 2026