GILLI · · 6 min read
Göteborg Did Not Have Seabass
The app showed a 92 for seabass in Göteborg while the species request was empty. Warm water had filled the gap. Presence has to land before conditions get a name.
In July we caught the app showing a seabass day in Göteborg that the water did not support.
The number on screen jumped from 0 to 92. Warm water. Summer. The kind of score that makes someone drive to the harbour. The species request behind it had come back empty. While that request was pending, the screen had filled the gap with a generic weather score and labelled it seabass.
European seabass on the Swedish west coast is a range-edge fish. Visitors happen. A routine target they are not. July and warm water can make a vagrant look established. That is the trap.
Two questions, in that order
A named-species forecast has to answer two questions, and they are not the same.
First: is this fish a routine target in this water, this month. That is availability. It is geography, season, and stock. It is not a temperature.
Second: given that the fish is actually there, how suitable are the conditions. Temperature, light, wind, clarity, time of day. That is opportunity.
The second question must not manufacture the first. Good weather for seabass does not put seabass in the harbour. Temperature can shut a present fish down. It cannot expand the map.
We had collapsed the two. A weather score is cheap. A presence call is slow. The UI preferred the cheap number.
What a range edge actually is
Seabass have been moving north for years. That sentence is true and still not a forecast.
A fish that is increasingly recorded is not a fish you can treat as local. Rare, vagrant, and unverified are different states. Rare can carry a heavily capped score and stay out of the routine target list. Vagrant should be a zero. Unverified should be withheld. Filling any of those with a generic summer day is how an app lies without meaning to.
The same failure waits on other edges. A species that is ordinary on one coast can be a stray two hundred kilometres north. A calendar month that is peak in the Channel can be empty in the Skagerrak. One species name is not one presence.
What we changed
A named target never receives a generic weather score while its species response is unresolved. Empty days stay empty. They are not backfilled with conditions.
Regional status now survives the trip from the species bundle to the screen. Absent, vagrant, and unverified stay those words. Unknown locations do not inherit a global default of "present." Score caps on range-edge fish stay on the fish. The client does not rescale an authoritative score to make the ring look healthier.
That is a fail-closed rule, not a finished northern seabass model. Presence still has holes. Some regions are unverified on purpose. A withheld number is the honest product there.
The alternative is the fishing-app default: never look stupid, never say this fish is not a target here, always fill the ring.
Why the 92 was worse than a blank
People download a fishing app because they want a number they can act on. The trust is spent on the days the number should have been zero.
A blank screen is annoying. A 92 for a fish that is not a routine target in that harbour is a wasted evening and a reason not to open the app again.
If you target seabass on the northern edge, treat presence as the first filter. Conditions come second. The app is no longer willing to show you the second answer while it still owes you the first.
Related
GILLI · 8 July 2026 · 6 min read
Atlantic Salmon Are Not a Bite Forecast
Adult salmon in a river are migrating, not hunting like pike. A generic fishing model will give them a perfect summer day. That call is a lie, so GILLI refuses to make it.
GILLI · 3 July 2026 · 6 min read
July Heat Is Not Summer Peak
A calendar summer label lied for coldwater fish. Vendace in 18 °C July water are in thermal refuge, not a feeding peak. Phase has to come from the species, not the month.
GILLI · 6 May 2026 · 5 min read
Turbidity Changes How Fish Hunt
Dirty water is not just ugly. It shortens how far a pike can see, changes which lures still work, and can turn a sight-feeder off while a vibration bite stays on.