Skip to the content.

Data-honesty principles

Submarius operates under three principles that show up in the source code, the model, the API responses, and the user-facing copy. They are load-bearing — they shape what the product is willing to say and what it refuses to fake.

1. Never claim what we don’t measure

If the model isn’t actually computing something from real data, the app doesn’t display a number for it. There is no fake confidence, no placeholder text that reads as a forecast, no “looks good!” copy that isn’t backed by signal.

Concretely:

The discipline is unglamorous — every product team is tempted to fill empty space with confident-sounding output — but trust is the product. A wrong “GO” verdict that turns out to be 1 m visibility is a worse user experience than no verdict at all.

2. No hardcoded jurisdiction-specific data

Submarius does not ship lookup tables of “Florida = clear, New Jersey = murky”. It does not bake state-by-state lists of species, regions, or thresholds into the code or the copy.

Why:

When the model needs to classify a location (e.g. “is this an enclosed bay or an open coast?”), the classification comes from coastline geometry analysis (offshore distance, shelter angle, adjacent water cover), not from a list of named places. Same for seasonal climatology — driven by latitude band and date, not a list of “warm states”.

The single exception is regulations data — fishing size and bag limits per jurisdiction — which is genuinely per-jurisdiction and is shipped as a structured YAML file with a clearly-dated last-update field. When that file is stale, the app surfaces the date and tells the user to verify with local authority.

3. Safety features are permanently free

Three features bypass the entitlement middleware regardless of subscription tier and remain available to every user:

This is permanent product policy, not a free-trial. The reasoning is covered on features/safety.md and features/pro-vs-free.md.

How these show up in the API

The Submarius public conditions API returns, for every clarity query:

Anyone building on the API can verify the principles above by inspecting the response. There is no hidden state; the model’s reasoning is on the wire.

Things you might expect that we don’t do

Some product practices we’ve explicitly declined:

Where this came from

These principles aren’t aspirational — they’re enforced by code review and live in the product’s architecture decisions. The water-clarity model spec encodes the “never claim what we don’t measure” rule in the data-status path; the entitlement middleware encodes the safety-permanently-free rule in the access-control path; the classification subsystem encodes the no-hardcoded-jurisdiction-data rule by computing classifications from coastline geometry rather than from a list of named places.

The three rules survive feature work because they have to. Without them Submarius would be just another marine app guessing at what might happen.