🎣 Lure Finder by Weather

Species

Spot

Either pick a spot from the list, or enter coordinates manually.
Choose a spot or enter coordinates — weather will load automatically.

Conditions

Clarity is set manually; time of day is detected automatically (you can change it)
Weather numbers (manual entry)
How the algorithm works Input Species from selector or spot Weather and conditions Windy or manual Pass 1 · buildCond axes: temp, clarity, light, wind, precip, pressure each axis adds to the profile; species → thresholds Condition profile speed · size · depth colors · wanted / unwanted Pass 2 · hard filter water out of range → dropped Pass 2 · scoring points for matches, penalty for conflicts Sort by score color assignment Output top lures + “why” + weather match ticks Tuning points temp thresholds score weights lure database tags and colors

Species calibrates, it is not compared

The species is not turned into a profile to be compared against. It sets the water-temperature thresholds (what counts as cold/optimal/hot for that fish) and limits the candidate lures to its own list. In other words, it sets the frame before any scoring happens.

Lever: the GUILD threshold table and the contents of LURES[species].

Pass 1 — weather → condition profile

Each weather axis adds desired properties to the profile, in descending order of reliability (temperature and clarity carry the main weight, light and wind are modifiers, pressure is minimal). The output: target speed, size, depth, color priority, and wanted vs. unwanted properties.

Lever: the thresholds in the rules (what counts as “cold water”, “strong wind”) and the axis logic.

Pass 2 — filter and scoring

First the hard filter: a lure outside the water-temperature range is dropped immediately. Survivors earn points for matching the profile: speed (exact +2, adjacent +1), size (+1.5 minus the difference), depth (+1.5 / −1.5), wanted properties (+1.5), unwanted (−2.5), color (by priority). The weights are expert judgement about axis importance — they are not calibrated against real catch data.

Lever: the score weights — the first thing to calibrate once catch logs exist.

What is fixed and what is tunable

Fixed mechanics (math): the scoring arithmetic, the temperature filter, sorting, and the distance calculation to spots. Tunable judgement: weights, thresholds, the lure database, tags and colors, and the reasoning texts — that is where anyone improving the system should look. Important: the code is covered by tests (it does what it is meant to do), but it is not proven that the advice catches more fish — that requires real catch data.