i-am-jacob:~$

~ / projects / fish-bite

Fish Bite

A fishing forecast engine that models instead of guessing — solunar timing, weather fronts, species-specific thermal optima, live water gauges — fused into scores that get regression-pinned against an actual catch log. Built because every fishing app I tried was horoscope-grade.

shipped product · in production status: tells me when to load the truck

The problem it solves

Existing fishing apps serve up generic advice — "best fishing is usually dawn and dusk" — regardless of species, water body, or what the atmosphere is actually doing. Meanwhile anglers accumulate real knowledge: this spot produces at dusk on a falling barometer, that flat goes dead at high pressure. The knowledge exists; the apps just don't model it.

Fish Bite fuses live environmental data into a per-species, per-spot score, then holds itself accountable to logged catches. It runs continuously, refreshes on its own schedule, and answers one question plainly: is today worth the drive?

The scoring core

Dominant factors modulate; they don't average

The first scoring pass was a weighted mean of decent factors — and it produced uniform optimism. A brutal midday lull or a post-frontal high-pressure ceiling would still score 8/9 because nine mediocre-to-good inputs drowned out the one that mattered. Real fisheries behavior isn't democratic: when the dominant factor says no, the fish agree with it. So the architecture changed: factors like time-of-day and thermal fit act as multiplicative modulators, not additive weights. A midday ceiling genuinely clamps the score. A prime solunar window genuinely lifts it. The verdict badge and the number can't disagree because they're computed from the same object.

Calibrated against ground truth

Every scoring change gets pinned by regressions built from a real catch log. When the log showed proven midday catches on soaked bait, the crepuscular-only curve was wrong, not the data — so the curve got rebuilt from actual observations. Species lists are verified against state wildlife resources instead of invented. Scores start conservative and must earn their way up.

modulator layers
v3+scoring revisions
100%species claims sourced
dailyproduction use

Engineering under real constraints

  • Live data fusion: weather forecasts, solunar tables, water temperature and gauge data — each source treated as fallible, with graceful degradation when a feed dies (and feeds do die).
  • Scheduled autonomy: refresh cycles run unattended through the agent platform's cron layer; staleness is diagnosed via health endpoints first, logs second.
  • Regression discipline: every calibration fix ships with a test that fails if the old wrong behavior returns — the "flat scores" bug can never silently come back.
  • Honest UX: human-readable time formatting, timezone-correct rendering, and badges that reflect the limiting factor rather than hiding it in an average.

// field note

The best engineering lesson from Fish Bite: when the model and the catch log disagree, believe the catch log — then find out which assumption made the model wrong. Twice now, the data has been right.

What's next

Bigger species coverage, more water bodies, and deeper calibration as the log grows. The architecture is built for it — add sources, extend the seed data, re-run gates, ship.