Product

πŸ“Œ Fishing Conditions

Status
in-progress
Phase
building
Priority
P0
Owner
kj
Complexity
high
Updated
March 21st 2026

The pitch: You know how surfers check an app to see if the waves are good before driving to the beach? That doesn't really exist for fishing. This feature builds it β€” and it makes every destination page a reason to come back daily instead of once.

The Surfline Comp

What we're building is Surfline for freshwater fishing. Surfline (~$10–30M revenue, subscription model) solved a simple problem for surfers: should I go out today? We're solving the same problem for anglers β€” and fishing is a 10x larger market (~50M US anglers vs. ~5M surfers).

Surfline layers real-time ocean data (swell, wind, tide, water temp) into a decision engine that tells surfers when and where to paddle out. We're doing the same with USGS gauge data, weather, hatches, stocking reports, and regulations β€” telling anglers when to wade, when to float, and when to stay home.

Within Meridia, this is the feature that makes destination pages alive β€” not static guides, but real-time fishing companions that give anglers a reason to return daily. Conditions data is the connective tissue between content (destinations) and commerce (bookings).

Why Not FishBrain?

FishBrain (13M+ users) owns the social/community layer β€” catch logs, spots, species ID. But their conditions data is a weather widget and a basic tide chart. No USGS gauge integration, no flow classification, no hatch matching, no synthesis into an actual decision.

FishBrain tells you where other people caught fish last week. We tell you whether you should go fish today, and exactly how.

FishBrain is backward-looking and social. This is forward-looking and data-driven. That's the Surfline distinction too β€” surfers don't check Surfline to see who surfed yesterday, they check it to decide if they're paddling out right now. The other gap: FishBrain is species/catch-centric and mostly warmwater/conventional. The fly fishing world β€” which skews older, higher-income, and travel-heavy β€” is dramatically underserved. Those are the anglers who book $500/night lodges and $600/day guides, which is Meridia's actual monetization path.

Route: meridiaoutdoors.com/:destinationSlug/fishing-conditions


Current Capabilities

  • Fishing Conditions Pages β€” per-destination pages with historical gauge data, visx charts, 15-min continuous USGS data
  • Gauge Detail Pages β€” slug-based routing, SEO-friendly slugs (strip filler words)
  • Chart System β€” crosshair tooltips, pulsing live marker, zone thresholds (wadeable / floatable / dangerous), live USGS backfill
  • Gauge Infrastructure β€” gauge-sync cron worker, USGS OGC API (migrated from legacy), API key support for higher rate limits, 3s timeout guard
  • Structured Data β€” @graph JSON-LD (WebApplication + Dataset + FAQ) on gauge pages
  • Flow Classification β€” zone classification with unit tests
  • Gauges Router β€” integration tests

Initial build shipped 2026-03-13 (34 commits).


Product Vision: Fishing Decision Engine

The gauge pages are step one. The full vision:

  1. Real-time conditions β€” USGS flow + temp data βœ…
  2. Historical context β€” "flow is high compared to the 30-day average" (PARTIAL β€” charts show history)
  3. Hatch charts β€” what bugs are active, what flies to use
  4. Stocking reports β€” when and where fish were stocked (pipeline has this data)
  5. Weather overlay β€” precipitation forecast impacts flow predictions
  6. The Decision β€” synthesize all data into a simple recommendation: "Great day to wade fish the upper Delaware" or "Too high β€” drift boat only"

Step 6 is where we become Surfline. Everything before it is infrastructure.


Conditions by Destination Type

The conditions page can't be one-size-fits-all. The data sources, metrics, and decision logic change completely based on destination type:

Destination TypeKey Data SourcesCore MetricsDecision Logic
Rivers & StreamsUSGS gauges, hatch charts, stocking reportsFlow (cfs), water temp, gauge heightWade vs. float vs. stay home
Lakes & ReservoirsWater level, temp sensors, stockingSurface temp, water level, turnover statusShore vs. boat, depth targeting
Coastal / InshoreNOAA tides, buoys, wind stationsTide stage, wind speed/direction, water clarity, sea tempFlats timing, wade windows, sight fishing conditions
Offshore / ChartersNOAA buoys, sea state, SST satelliteWave height, swell period, SST, current breaksGo/no-go for charters, target species by temp break

This means the destination type (or a fishing-context subtype) must drive which conditions template renders. A Catskills river page showing USGS flow charts is useless for someone looking at Islamorada flats, and vice versa.

Implication for pipeline: each destination type needs its own data enrichment path for conditions β€” USGS for freshwater, NOAA for coastal/offshore. The decision engine in step 6 also branches by type.

Sequencing: Rivers & streams first (USGS data is live, fly fishing audience is highest-value). Coastal/inshore second (NOAA data is accessible, expands TAM significantly). Lakes and offshore are lower priority β€” less real-time decision-making and harder to differentiate.


Monetization

Surfline monetizes with subscriptions ($99/yr premium) for detailed forecasts and cam access. Our equivalent:

  • Free: basic conditions, last 24h data
  • Premium: extended forecasts, historical trends, personalized alerts ("notify me when the Beaverkill drops below 300 cfs"), hatch match recommendations
  • Tie-in: conditions pages drive users to book lodges and guides at the right time β€” "conditions are perfect this weekend, here are 3 lodges with availability"

The conditions-to-bookings pipeline is the sharpest expression of the broader Meridia thesis: best-in-class vertical tools that earn daily engagement, monetized through the highest-value commercial action (lodge/guide bookings).


To Do

  • [ ] Hatch chart integration β€” match conditions to recommended flies
  • [ ] Stocking report overlay on gauge pages
  • [ ] Weather/precipitation forecast overlay
  • [ ] Destination type β†’ conditions template mapping (river vs. lake vs. coastal vs. offshore)
  • [ ] NOAA tide/buoy/wind integration for coastal and offshore destinations
  • [ ] "Conditions summary" decision engine (the Surfline moment) β€” branches by destination type
  • [ ] Premium gating β€” alerts, extended history, forecasts
  • [ ] Mobile chart optimization pass

Done:

  • [x] USGS gauge data fetch + continuous 15-min data
  • [x] Gauge detail pages with slug routing
  • [x] visx charts with crosshair tooltips, zones, pulsing marker
  • [x] Gauge-sync cron worker
  • [x] JSON-LD structured data (@graph)
  • [x] Flow classification with unit tests
  • [x] Migration to modern USGS OGC API
  • [x] SEO-friendly gauge slugs

  • πŸ“Œ Destinations β€” parent feature, conditions live on destination pages
  • πŸ”’Projects/Meridia/Data Pipeline/Data Pipeline β€” USGS data flows through the pipeline
  • Surfline: https://www.surfline.com β€” the comp
  • USGS Water Services: https://waterservices.usgs.gov β€” data source
Previous
πŸ“Œ Destinations