Public beta Native SwiftUI · iOS 17+ Offline-first

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
6:14

Saturday · Esopus Creek

Good morning

Today's conditions score

Pressure+31
Water temp+24
Moon+14
Cloud+9

Last trip

3h 42m

5 fish · 2 species

Personal best

24.5″

Brown Trout

Next prime window

6:00-8:00 AM IN 1H 46M

Above your average catch density

Moon & pressure

PhaseWax. Gib.
Illum.62%
TrendFalling

Conditions forecast

Sa78
Su64
Mo41
Tu55
We81

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.
9:02
LIVE 02:47:13

Esopus Creek

5 fish · 2 species · 1 break

Brown Trout

8:41 AM · dry fly

19.5″
Rainbow Trout

8:12 AM · nymph

12.0″
Brown Trout

7:38 AM · nymph

14.25″

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.
9:04

Catch detail

Brown Trout

19.5 in 3.1 lb Trophy tier

Conditions at catch AUTO

Pressure30.12
Water54°F
Air61°F
Wind6 NW
Cloud80%
Precip0.02″
Moon62%
UV3

Location

Tackle

LureElk Hair Caddis
Size / colour#14 · Tan
Main line6 lb mono
Leader5x fluoro

Notes

Riffle below the bend, third cast. Fish held tight to the seam once the light went off the water.

Year class

2020 · age 6
PRIME

03 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.
21:30

Conditions window

Barometric pressure

Catch rate · fish per hour fished

29.429.730.030.330.6

Now: 30.12 inHg · 1.8 fish/hr

Pressure trend1.9×

Falling · 2.1 vs 1.1 fish/hr

90% interval 1.3-2.8 · 41 trips

Water Temp1.5×

52-56 °F · 1.7 fish/hr

90% interval 1.1-2.2 · 36 trips

Everything elsen/a

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.
21:31

Tomorrow · Esopus Creek

Conditions score

78

out of 100

Strong window

Pressure+31
Water temp+24
Moon+14
Cloud+9

Conditions match · factors met

5a9a1p5p9p

Peak 3 of 3 · 6-8 AM

Next 5 days

Sa78
Su64
Mo41
Tu55
We81

Best day: Wednesday

Alert

Notify above 70 ON

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. 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. 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. 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. 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.
Looked up, or left blank. Never invented. Most of these age ranges come straight from state and federal fisheries research (walleye 8-15 years, muskellunge 8-15, where the average one an angler catches is 11 years old and 45 inches). When no published trophy age exists for a species, Neptune works the range out from that species' growth curve and tells you that's what it did. If there's no range for a species, you get no badge at all rather than a guess. Bait species like Golden Shiner are left out on purpose, since nobody is out chasing a trophy shiner.
9:06

Year class

Brown Trout

19.5″ · Esopus Creek · 2026

Estimated age

6 yr

Year class

2020
PRIME

Prime window · ages 5-9

036912

Tier A · agency citation

Same cohort stocked at

Esopus Creek2020 · age-1
Beaverkill2020 · age-1
Willowemoc Creek2021 · age-0
Matches your 22.0″ Brown Trout caught at Beaverkill, 2024.

Stocking history · Esopus Creek

20244,200 · age-1
20223,850 · age-1
20205,100 · age-1

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.