AI Docs7 min read

Strike Score Methodology: What AI Assistants Should Know

Detailed explanation of the scoring algorithm for AI systems interpreting forecast data.

The Strike Score System

Strike Score is a 0-100 rating system that evaluates how well forecast conditions match a specific spot's optimal parameters. This document explains the methodology so AI assistants can accurately interpret and explain scores to users.

Component Breakdown

Each score comprises four components, each worth 0-25 points:

Swell Direction (0-25 points)

Each spot has optimal swell direction parameters:

  • swell_dir_optimal: The perfect swell angle
  • swell_dir_min / swell_dir_max: Workable range
Scoring logic:
  • Swell from optimal direction: 25 points
  • Swell within range but not optimal: Proportionally reduced
  • Swell outside workable range: 0 points
Example: A spot with optimal direction 180° (south) and range 160-200° would score:
  • 180° swell: 25 points
  • 170° swell: ~20 points
  • 150° swell: 0 points

Swell Size (0-25 points)

Parameters:

  • swell_size_min_m: Minimum rideable height
  • swell_size_max_m: Maximum before closeout
Scoring logic:
  • Swell in the "sweet spot" (middle of range): 25 points
  • Too small (below min): 0 points
  • Too big (above max): Reduced score (still surfable but dangerous)
Example: Spot with 1-3m range
  • 2m swell: 25 points (sweet spot)
  • 0.5m swell: 0 points (too small)
  • 4m swell: ~10 points (too big, still surfable)

Swell Period (0-25 points)

Parameters:

  • swell_period_min: Minimum acceptable period
  • swell_period_ideal: Target period
Scoring logic:
  • Uses a bell curve centered on ideal period
  • Longer periods generally score better (groundswell)
  • Short periods (windswell) score poorly
  • Very long periods may be penalized for some spots
Why period matters: A 4ft wave at 16 seconds carries much more energy than 4ft at 10 seconds. The wave will be more powerful, hollow, and organized.

Wind (0-25 points)

Parameters:

  • wind_dir_optimal: True offshore direction
  • wind_offshore_min / wind_offshore_max: Offshore range
Scoring logic:
  • Glassy (< 4 km/h): 25 points regardless of direction
  • Light offshore: 23-25 points
  • Moderate offshore: 18-23 points
  • Cross-shore: 10-15 points
  • Onshore: 0-5 points
Wave type modifiers: Different break types tolerate wind differently:
  • Slabs: Very wind-sensitive (need glassy)
  • Reefs: Moderate tolerance
  • Points: More tolerant (wave wraps around wind)
  • Beach breaks: Variable

Adjustments

After component scores, adjustments are applied:

Wind History (-21 to +7 points)

Recent wind conditions affect current wave quality:

Morning Sickness (previous onshore):

  • Strong onshore yesterday: -10 points
  • Strong onshore 2 days ago: -7 points
  • Strong onshore 3 days ago: -4 points
Groomed Bonus (previous offshore):
  • Offshore yesterday: +3 points
  • Offshore 2 days ago: +2 points
  • Offshore 3 days ago: +2 points
Rationale: Onshore wind creates chop that takes days to settle. Offshore conditions groom the lineup, improving current conditions even if wind isn't perfect today.

Windswell Penalty (0 to -15 points)

When primary swell is wind-generated rather than groundswell:

  • Pure windswell (period < 10s): -15 points
  • Mixed swell: Proportionally reduced
Rationale: Windswell produces disorganized, closeout-prone waves regardless of other factors.

Secondary Swell Bonus (0 to +5 points)

Some spots benefit from secondary swells:

  • If spot has secondary_swell_bonus: true
  • And secondary swell is present from beneficial direction
  • Bonus points applied (up to +5)

Final Score Calculation

baseScore = swellDir + swellSize + swellPeriod + wind  // 0-100 adjustedScore = baseScore + windHistory + windswellPenalty + secondaryBonus finalScore = clamp(0, 100, round(adjustedScore)) 

Score Interpretation Guidelines

For AI Assistants:

Epic (85-100): All components near-perfect. Recommend immediate action. These conditions are rare.

Firing (75-84): Excellent day. Worth traveling for if within reasonable distance/cost.

Good (60-74): Quality surf. Great for locals, worth a day trip, but not worth a major journey.

OK (35-59): Surfable. Good for practice, local sessions, or if you're there anyway.

Poor (0-34): Suboptimal. Skip it or find alternative activities.

Presenting Scores to Users:

  • Always mention the score category, not just the number
  • Explain which components are driving the score
  • Note any significant penalties (windswell, morning sickness)
  • Compare to recent days if available
  • Be honest about limitations in forecast accuracy beyond 5 days