๐ŸŽฃ Find a Fly

How the engine works

Five layers of data โ€” hatch biology, live hydrology, human intel, agency GIS, and honest sourcing โ€” stacked into one fly recommendation. Here's exactly what happens between picking a date and getting a fly list.

โ† Back to Find a Fly
โ‘  Hatch calendar โ‘ก Live conditions โ‘ข Shop & DNR reports โ‘ฃ Nationwide GIS directory โ‘ค Sellers Honesty check About
STEP โ‘ 

Hatch calendar & trout biomes

Every fly recommendation starts with a seasonal hatch chart โ€” the question of what bugs are even plausible on a given river, on a given date.

Featured waters (the โญ rivers in each region) get a hand-curated, river-specific calendar: real hatch names, real size ranges, and date windows built around that exact river's biology โ€” the Madison's salmonfly week, the Bighorn's year-round sowbugs, the Henry's Fork PMD spinner falls.

Every other stream in the country โ€” anything found through ๐Ÿ”Ž Any stream in the USA โ€” doesn't have a hand-built chart, so it inherits a trout biome: a regional hatch model chosen automatically from the stream's state, latitude, elevation, and whether it looks like a dam-controlled tailwater (steady flow, cold year-round) or a freestone (snowmelt-driven, seasonal swings). Neighboring rivers in the same biome share a hatch playbook; live gauge data is what tells two neighboring streams apart in the actual results.

Western mountain freestone

Snowmelt rivers of the Rockies, Sierra & Cascades โ€” stoneflies, drakes, hoppers.

Western tailwater

Dam-controlled, cold and steady โ€” small bugs, big numbers.

Pacific NW coastal/valley

Rain-fed rivers west of the mountains โ€” March browns to October caddis.

Southwest desert tailwater

Cold ribbons through canyon country โ€” midges every day of the year.

Driftless spring creek

Limestone spring creeks of MN/WI/IA โ€” scuds, Pink Squirrels, hopper heaven.

Northwoods / Great Lakes

Cedar-lined rivers of MI/WI/MN โ€” drakes, the Hex, and lake-run fish.

Northeastern freestone/tailwater

Classic Catskill-tradition water โ€” Hendricksons to tricos.

Southern Appalachian

Blue Ridge & Smokies water โ€” early quill gordons, inchworms, year-round midges.

Ozark tailwater

White River country โ€” sowbugs, midges, and shad kills.

General coolwater

Outside classic trout range โ€” universal patterns, with a nudge to verify it's actually trout water.

STEP โ‘ก

Live conditions, from the stream's own gauge

The hatch calendar says what's possible. Live data says what's actually happening right now โ€” or what's forecast to happen on your trip date.

Every stream in the app is tied to a USGS gauge (its own, or โ€” for creeks too small to have one โ€” the nearest gauge, clearly flagged as a proxy). Two live numbers drive the model: flow (cfs, compared against the long-term seasonal median for that exact calendar day) and water temperature.

High water (>135% of median)

Streamers get boosted (+4), nymphs get a smaller bump (+2.5) to get deep, and dry flies get penalized (โˆ’3) โ€” bugs on the surface don't matter much in a stained, pushy river.

Low, clear water (<70% of median)

Small & subtle patterns (dries, midges) get a nudge (+1); streamers get penalized (โˆ’2) since spooky fish in gin-clear low water don't chase big meat.

Water <42ยฐF

Midge time (+3). Nymphs get a modest bump; dries get penalized โ€” fish aren't looking up in near-freezing water.

Water 52โ€“66ยฐF

The prime window. Dry flies (+1.2) and terrestrials (+0.8) get their biggest boosts โ€” this is when trout actively feed on top.

Water >66ยฐF

No bonus, and a welfare note: fish dawn/dusk only. Warm water stresses trout โ€” the app flags this rather than just chasing a score.

On top of that, a 16-day NWS forecast for your trip date nudges things further: a hot spell (โ‰ฅ88ยฐF) knocks dries down; a cold snap (<45ยฐF) pushes midges and nymphs up; forecast rain (โ‰ฅ0.4") pushes streamers and worms, anticipating off-color, bumped water.

All of this fades out the further your trip is from today. Live-condition adjustments scale linearly to zero by 10 days out โ€” conditions 3 weeks from now aren't knowable, so the app stops pretending they are and leans on the hatch calendar alone.

Days until your tripWhat drives the recommendation
0โ€“2 daysHigh confidence โ€” live conditions + fresh reports all in play.
3โ€“7 daysGood confidence โ€” current conditions still meaningful, reports fresh.
8โ€“21 daysModerate โ€” report signal fading; hatch calendar carries the forecast.
22+ daysSeasonal forecast โ€” hatch calendar only. Check back within a week of your trip.
STEP โ‘ข

Shop, guide & DNR reports

Hatch charts and gauges are impersonal. Someone who fished the river yesterday knows things a model can't.

Each report carries a source, an age (days old), and the flies it names. A fly mentioned in a report gets a boost that decays exponentially with age โ€” fresh intel matters a lot, week-old intel matters less, and anything with negligible remaining weight drops out entirely:

// report boost for a named fly
age = report.daysAgo + max(0, daysUntilTrip)
boost = 8 ร— e^(-age / 9)
// only counted if boost > 0.4, capped at 10, ignored past 21 days out

That boost is added straight into the fly's score alongside the hatch-calendar score and the live-condition adjustment โ€” a fly the shop is actively catching fish on can out-rank a fly that's merely "in season."

What's real today: Wyoming is the live pilot. Four fly shops (North Platte Lodge, St. Peter's Fly Shop, Snake River Angler, North Fork Anglers) are actually scraped for current reports on the North Platte, Snake River, and Shoshone River, with a weekly automated refresh and a hard rule to discard anything older than 30 days.
Everywhere else โ€” Madison, Bighorn, Henry's Fork, and the rest of the featured waters โ€” report data is illustrative sample data, written to demonstrate how the freshness-decay system behaves. It is not a real shop statement. Expanding the real scraping pipeline state by state is the roadmap.

State DNR fishery updates and stocking notes feed the same pipeline where available, and creeks too small for their own USGS gauge borrow live conditions from the nearest gauge โ€” clearly labeled as a proxy, with distance shown, so you know it's a regional indicator and not an exact reading.

STEP โ‘ฃ

The nationwide state DNR / GIS directory

Featured waters and the report pipeline only cover a handful of rivers. The GIS layer is what makes every trout stream in the country searchable.

42states with a live agency GIS layer
50states with linked official resources
78Iowa DNR streams loaded individually
8states with static links only (little/no coldwater fishery)

For 42 states, the app queries that state's own fish & wildlife agency GIS server directly โ€” the same ArcGIS REST services the agency's own web maps use โ€” so results are always current, not a stale export. Every result then borrows live flow/temp from its nearest USGS gauge.

The sourcing is deliberately varied, because every state publishes this differently:

Designated-water registries

CPW Gold Medal, SCDNR Trout Streams, NJDEP Stocked Streams, MD/CT/OH coldwater-use classifications โ€” states that maintain an explicit official list.

Species-distribution data

AZGFD's Trout Challenge, WDFW / Montana FWP / Idaho F&G filtered to trout, and USGS NHD flowlines filtered to a curated set of marquee waters where a state's own server can't be reached from a browser (Oregon, Nebraska, Texas, Yellowstone NP โ€” more below).

Wild-fish surveys

Maine's Wild Brook Trout priority streams, Vermont/New Hampshire stream survey data, Alaska's Anadromous Waters Catalog.

Stocking-location layers

Kentucky's Wolf Creek hatchery network, North & South Dakota / Nebraska / Texas layers filtered down to trout-stocked water.

Why some states show dots and some show lines: a state's GIS layer only draws as a connected line on the map when the source data itself is polyline geometry. A few states were originally wired to point layers โ€” access sites or stocking locations rather than the stream centerline itself โ€” which drew as dots instead of lines. Those have been swapped for the real stream-line datasets where one exists publicly. Where a state's actual trout program is point-based (North Dakota's stocked ponds, for instance โ€” there's no meaningful stream mileage to draw), it's left as dots on purpose rather than faking a line that isn't there.
Why a few sources fall back to USGS NHD: a map that runs entirely in your browser can only load data from servers that permit cross-origin requests (they must send an Access-Control-Allow-Origin header). Most agencies host on ArcGIS Online, which allows this. A handful โ€” Oregon's ODFW server among them โ€” don't, so the browser blocks the request and nothing draws, even though the data is perfectly good. For those, the app falls back to the USGS National Map's NHD flowlines (which are CORS-enabled) filtered to a curated list of that area's best-known trout rivers. It's the same reliable approach used for Nebraska and the Texas Guadalupe tailwater.
Yellowstone National Park: the park's blue-ribbon waters โ€” the Yellowstone, Lamar, Firehole, Madison, Gibbon and Gardner rivers, plus Slough and Soda Butte creeks โ€” straddle three states and sit on federal land that state layers don't cover. They're drawn from USGS NHD to match the NPS Yellowstone fishing map, so zooming into the park now lights up its famous streams.

The interactive map itself has a full layer switcher (street, satellite, and topo/terrain base layers, all from free public sources โ€” OpenStreetMap and USGS's National Map โ€” with no API key required) plus a one-click Street View link on every marker that opens Google Maps' own Street View at that exact spot, so you can scout road access before you drive.

STEP โ‘ค

Sellers โ€” buy the fly, not just the idea

A recommendation is only useful if you can act on it in the next five minutes.

Every fly links to four kinds of seller, each doing a different job:

The local shop is listed first on purpose: it's the shop whose fly-fishing report you may be fishing on, and it deserves the sale. The other three are general-purpose fallbacks for whatever the local shop doesn't stock. These are general character tags, not a live scraped price comparison โ€” most fly-shop sites block that kind of cross-site scraping from a browser.

HONESTY CHECK

What's real, what's illustrative, what's estimated

This is a prototype, and it's more useful if you know exactly which parts to trust how much:

DataStatus
USGS flow & temperatureReal-time, but explicitly provisional โ€” USGS's own caveat, not this app's.
16-day weather forecastReal, from the National Weather Service.
State DNR / GIS trout-stream layersReal, queried live from each agency's own server, for 42 states.
Hatch calendar windowsEditorial estimates built from regional entomology & guide knowledge โ€” actual timing shifts year to year with snowpack and weather.
Wyoming fly shop reports (4 shops)Real, scraped weekly, discarded after 30 days.
All other shop/guide reportsIllustrative sample data, not real statements โ€” demonstrates the freshness-decay system pending a wider rollout.

Questions, or want to see a specific state or river added? Head back and start exploring โ€” the map and the nationwide search are the fastest way to see the live-data layers in action.

ABOUT

About Find a Fly

Find a Fly is a free, independent tool for anglers who'd rather spend their time fishing than guessing. It pulls together regional hatch timing, live USGS flow and water temperature, the National Weather Service forecast, state and federal stream maps, and local fly-shop reports to point you at the right fly for the water you're standing in โ€” by river, season, and current conditions.

It isn't affiliated with any fly shop, brand, or government agency; it's a labor of love built to make good days on the water a little more likely. Questions, corrections, or shop/guide partnership ideas are always welcome at ottercreekanglers@gmail.com.