Your logbook,
with a memory.
Most fishing apps hand everyone the same generic bite forecast. Neptune reads your own catch history, then tells you which conditions actually put fish in your hands, and how old the fish you just caught really is.
Free, and in open beta on TestFlight. Needs an iPhone on iOS 17 or later. Covers 15 East Coast states. Screens below are faithful recreations of the app's interface; the figures in them are representative sample data.
- Factors learned
- 7
- Species aged
- 39
- Insight cards
- 13
Saturday · Esopus Creek
Good morning
Today's conditions score
Last trip
3h 42m5 fish · 2 species
Personal best
24.5″Brown Trout
Next prime window
Above your average catch density
Moon & pressure
Conditions forecast
The walkthrough
One trip, end to end.
The more you log, the more Neptune can tell you. Here's what happens to a single fish, from the moment you tap it into the app to the point where Neptune can tell you how old it is and which conditions produced it.
01 Log
Two taps on the water, not twenty.
Start a live trip and Neptune runs a timer, holds your location, and keeps a running tally while you fish. Log the fish's species and length, and you're back to casting. Taking a break pauses the clock. Everything saves to your phone first, so no signal on the river still means no lost catches. It syncs once you're back in range.
- Live trip tracking with elapsed time, breaks, and a per-catch GPS pin.
- Offline-first writes. Log with no bars; sync reconciles later.
- Four ways in from the ⊕ button: log a catch, start a trip, log a past trip, or plan one.
Esopus Creek
5 fish · 2 species · 1 break
8:41 AM · dry fly
8:12 AM · nymph
7:38 AM · nymph
02 Enrich
Every catch arrives pre-loaded with its weather.
Nobody writes down the barometer reading every time they land a fish. So Neptune does it for you. The moment you save a catch, it looks up the weather, water and tide conditions at that spot and time and stores them with the fish.
You typed in two things. Neptune saved another fourteen next to them, and those are what make everything later possible.
- Auto-captured: barometric pressure and its trend, air and water temperature, wind speed and direction, cloud cover, UV index, precipitation, moon phase and illumination.
- Saltwater aware: tide stage, tide height, and minutes to the next tide change, from real NOAA station data.
- Pressure you can't measure: day of week, weekend and holiday flags, and a human-traffic index, because crowds move fish too.
Catch detail
Brown Trout
Conditions at catch AUTO
Location
Tackle
Notes
Riffle below the bend, third cast. Fish held tight to the seam once the light went off the water.
Year class
2020 · age 603 Learn
It works out what actually produces your fish.
Most apps look at the conditions you caught fish in and call the common ones your best conditions. The trouble is that this mostly tells you when you go fishing. If you only get out on Saturday mornings, Saturday mornings will always look magic.
Neptune divides by the time you put in instead. Every number is fish per hour fished, compared against your own average. The hours you fished and caught nothing count too, and that's what stops your usual Saturday spot from looking better than it really is.
- Eight factors: barometric pressure and its trend, water temp, air temp, wind speed, cloud cover, precipitation, and moon illumination. Each one is drawn as a curve so you can see the whole range at a glance, with the current reading marked on it.
- It allows for how much it looked at. Check enough things and a couple will look meaningful by pure luck. Neptune keeps track of how many it checked and raises the bar accordingly, so the odds of it showing you even one false pattern stay around 1 in 10. It shows three findings at most.
- Most of the time it says nothing. A pattern has to be both clear enough to be real and big enough to be worth acting on. Until one is, the card tells you it hasn't found anything yet, instead of showing you the best-looking noise.
Conditions window
Barometric pressure
Catch rate · fish per hour fished
Now: 30.12 inHg · 1.8 fish/hr
Falling · 2.1 vs 1.1 fish/hr
90% interval 1.3-2.8 · 41 trips
52-56 °F · 1.7 fish/hr
90% interval 1.1-2.2 · 36 trips
No solid pattern yet
Intervals still cross 1.0×
04 Score
A 0-100 score that shows its work.
Now point all of that at tomorrow's forecast. Neptune checks how close each condition is to the range that has actually worked for you, and gives the day a score out of 100. Conditions that matter more in your history count for more.
You always get to see the breakdown. If tomorrow scores 78, you can see it's mostly the pressure and water temperature carrying it, and decide for yourself whether you agree. A number you can't check is just a horoscope.
- Per-factor point contributions, sorted by weight, the score is an explanation, not a verdict.
- Hour-by-hour curve plus a multi-day forecast strip, so you can pick the window, not just the day.
- Alerts when a genuinely good window appears on water you fish, and a home-screen widget for the day's score.
Tomorrow · Esopus Creek
Conditions score
out of 100
Strong window
Conditions match · factors met
Peak 3 of 3 · 6-8 AM
Next 5 days
Best day: Wednesday
Alert
Esopus Creek · 7-day lookahead · quiet hours respected
05 · The part no other logbook does
Year Class: how old is that fish, and is it prime?
You caught a 19½-inch brown trout. Most apps write down the length and stop there. Neptune works out that the fish hatched in 2020, so it's six years old, that six is right in the prime years for a brown trout, and that the same batch of fish was stocked into three other waters within driving distance.
How it gets there
-
1
Length becomes age. Fish of a given species grow at a fairly predictable rate, and biologists have published those growth curves. Neptune runs one backwards: give it a length, it gives you an age.
-
2
Age becomes a hatch year. Take the year you caught it, subtract the age, and you have the year that fish was born.
-
3
That year gets matched to stocking records. State records say when a batch of fish was stocked and how old they were, so the same subtraction gives each batch a birth year too. Neptune looks for batches born within a year of your fish, and it searches every water in the state, not just the one you were standing in.
-
4
Prime, or not. 39 species carry a curated trophy-potential age window. If the fish's age falls inside its species' window, it's flagged PRIME.
Year class
Brown Trout
19.5″ · Esopus Creek · 2026
Estimated age
6 yrYear class
2020Prime window · ages 5-9
Tier A · agency citation
Same cohort stocked at
Stocking history · Esopus Creek
Showing 3 of 12 recent records
Why it matters
Read a water body's future, not just its past.
If a lake got a heavy 2020 stocking and that species peaks at ages 6-12, you know something concrete about the next few seasons there. Stocking numbers alone don't tell you that; age does.
Why it matters
Find the same fish somewhere quieter.
Cross-water-body cohort matching means the well-known river isn't your only option. The same batch of fish, the same age, often went into water nobody is crowding.
Your statistics
Thirteen ways to read your own history.
Insights isn't one fixed dashboard. It's 13 cards you can reorder to suit you, split into Charts, Intelligence and Records, with your favourites pinned to the home screen. All of them are built from your catches and nobody else's. There used to be 22, but several were answering the same question in slightly different ways and sometimes contradicting each other, so we kept the ones that answer it best.
Bite Window: the only card that counts the hours you caught nothing
Other bite charts plot when you caught fish, which mostly shows when you go fishing. Bite Window plots fish per hour fished, so the hours you blanked pull the line down like they should. It also doesn't assume the clock is the right way to look at it. You can chart the same rate against the clock, the sun (hours before and after sunrise or sunset, since fish feed to the light rather than to 6 AM), the tide (hours either side of the nearest high or low, shown only where there's a real tide station nearby), or the moon (the solunar major and minor periods). Narrow it to one species, season or water and the rate is recalculated for just those trips.
Conditions Window
Every condition as a response curve across its whole range, with the current reading marked on it, and the marker refuses to be drawn when today sits outside the range your log actually covers, rather than clamping to the end and implying a prediction it can't make.
Size & weight distributions
Tiny through Trophy, ranked by percentile against your own catches of that same species, so "trophy" means trophy for you, and a 20″ pickerel isn't judged against a 20″ bass.
Species breakdown
What you're catching, and how the mix shifts by season and water.
Lure performance
Which lures, sizes, and colours earn their place in the box.
Top spots
Your most productive water, ranked, with per-trip stats behind each.
Moon times
Moonrise, moonset, illumination and phase for your next trip.
Milestones & personal bests
Length and weight records per species, plus badges you actually earn: first 20″ fish, 100 catches, Night Owl, a 30-day streak.
Stocking origins
Which of your catches trace back to a stocked cohort at that water, grouped by trip or by location.
The Logbook, for people who like a spreadsheet
Trips and catches as a filterable, sortable table with 30 selectable columns: every manual field and every auto-captured condition, down to pressure trend and traffic index, plus saved views and CSV export in portable Imperial and ISO-8601.
On your lock screen, without opening the app
A home-screen widget carries the day's score and the best day ahead. Start a trip and a Live Activity puts the running timer, the water, and your catch count in the Dynamic Island.
Explore & Discover: find water like the water you already love
A similarity engine matches water bodies on their characteristics and on an observed-forage layer: what bait actually lives there, curated per state from agency reports, forum corroboration, and regional assemblage defaults. Stocking data, regulations, species and habitat profiles sit alongside it, plus a clustered map that stays smooth at tens of thousands of pins.
Where it works
Four states deep, fifteen states wide.
Logging, conditions and your own stats work anywhere in the world, because all they need is your catches and public weather data. The state-specific data (stocking, regulations, forage) is a different story, and it's being built one state at a time. Here's exactly where each piece stands:
- Full depth in NY, NJ, PA and FL: stocking history, regulations, and survey-grade forage profiles.
- Stocking pipelines live in 10 of 15 states, drawn from each agency's own feed: ArcGIS services, JSON APIs, even per-county PDFs. Where a state publishes a schedule rather than a delivery log, it's stored as a schedule and kept out of "recently stocked" alerts.
- Named-water forage now reaches 12 of 15 states, sourced from official survey reports rather than estimated. Where only a coarse regional estimate exists, the app badges it as exactly that instead of passing it off as a survey.
- Regulations stay in the four deep states only, and stay blank everywhere else rather than approximate. It's the one place a wrong number has legal consequences.
- Water bodies
- 85,644
- Stocking records
- 68,830
- Tide stations
- 1,833
Where it stops
An engine that says "I don't know".
Neptune would rather tell you nothing than tell you something that sounds right and isn't. That's a deliberate choice, and it shows up all over the app:
- A pattern that could still be down to chance makes no claim at all, no matter how many catches are behind it.
- When a state doesn't publish how many fish it stocked, that stays blank. It's never counted as zero, which would push a real stocking to the bottom of the list.
- A stocking record that doesn't say how old the fish were is never matched to a year class.
- An uncurated species gets no PRIME badge, not a guessed one.
- A missing forecast value drops its factor from the score, silently.
Open beta
No ads. No social feed. No selling your spots.
Neptune is a private logbook that happens to be good at statistics. Your catch history exists to serve your own insights and nothing else.
And if you film yourself fishing, Incognito hides the water's name, the map and your catch pins behind a mask for the whole trip. A screen recording gives your spot away in about a second otherwise. The trip still logs exactly as it always did; the masking is display-only, and built so it structurally can't reach what gets stored.
Requires iOS 17 or later and the TestFlight app. Reference data covers 15 East Coast states at varying depth; full stocking, regulations and forage data currently covers New York, New Jersey, Pennsylvania and Florida. Expect rough edges, and tell us about them; there's a Report a Bug button in Settings.