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.
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.