Privacy Policy

Fisher King — fishing spots, sea & weather conditions, private catch log

Who we are

Fisher King is an independent, small-team iOS app for recreational fishing: a spot finder, hourly sea and weather conditions, a catch score estimate, and a private catch log. This policy explains what data the app and its backend handle, and why.

What we collect and why

Location

When you use the spot finder or check conditions, Fisher King reads your device location — only while the app is open; we do not request background location. The coordinates are sent to our backend (a Cloudflare Worker) to look up nearby fishing spots and the hourly forecast for your position. We do not persist raw location coordinates on our server; forecast responses are cached briefly (keyed to a rounded coordinate, not to you) purely to avoid repeat requests to upstream providers, then expire. Location is never linked to advertising and never used to track you across other apps or websites.

Catch log — local by default, sync is opt-in

Your catch entries (species, size, location, notes, and photos if you add them) are created and stored locally on your device. That is the default and requires no account.

Default Catch log stays on-device only. Nothing is sent anywhere unless you sign in.

If you choose to sign in with Apple, Fisher King can additionally back up and sync your catch log — species, date, size, weight, your notes, and its visibility setting — to our server so it carries over to a new device. This is optional and off until you sign in. When sync is on:

Photos Catch photos never leave your device, sync on or off. There is no upload path for photo files anywhere in the app — only the text fields above (species, date, size, weight, notes, visibility) are ever sent to our server. If we ever add photo backup in a future version, it will be opt-in and this page will say so explicitly before it ships.

Regardless of sync, your saved fishing spots (the ones only you know about) are never uploaded — they stay on-device only, always.

Nickname

If you sign in, you can optionally set a nickname (shown in your account settings). The nickname is stored on our server tied to your account. A regional leaderboard feature that would display nicknames alongside a badge count and a variety score exists in the app's code but is not turned on in this version — it stays hidden until it's backed by real data. If we enable it in a future version, it will only ever show a nickname and those two aggregate numbers — never your location, your spots, catch dates, or catch details — and we'll update this page first.

Fishing coach

The in-app fishing coach requires signing in — this lets us apply a per-account usage limit so the feature isn't abused. When you send a message, we forward it, together with your recent conversation in that session, to our backend. Along with your message, the request can include: your rough location (rounded to about 1 km, only if you've shared your location), your targeted species and fishing method if set, a short label for your general area, a short summary of recent conditions, the names of a few nearby fishing spots close to your rounded location, your water-type setting, and — only with your separate consent per catch — a brief summary of a recent catch (species and time of day, not its exact location). Your Apple account identifier, your exact/unrounded location, and your device identifier are never included in what's sent to the model.

As of this version, coach requests are handled by an AI model (Meta's Llama 3.3) running on Cloudflare Workers AI — inside the same infrastructure as our backend — rather than being sent to an outside AI vendor. We may change providers in a future version; if we do, we'll update this section first. We do not store your coach conversation on our server after the reply is generated — the conversation history is kept on your device and resent with each new message so the coach has context.

Weather & sea conditions

Coordinates for conditions you check are forwarded to Open-Meteo, a third-party weather and marine data provider, to fetch forecasts, tides, currents, and sea state. Open-Meteo's own privacy practices apply to that request. Depth readings are the exception: they're computed from a bathymetry grid (GEBCO) we host ourselves, so a depth lookup never leaves our own infrastructure.

Map, rain radar & place search

The map is built on Mapbox. Viewing it requests map tiles from Mapbox for the region you're viewing; Mapbox's privacy policy governs that request. We turn off Mapbox's optional usage-telemetry setting before the map ever loads, so Mapbox does not receive a device identifier from Fisher King. The rain radar overlay, when you turn it on, requests radar tile images (for the map area you're viewing) from RainViewer and, as a fallback, LibreWXR — no other data is sent. Searching for a place by name uses Apple's on-device-triggered Maps search (MKLocalSearch), which sends the text you type to Apple to find matching places; we don't see or store that search text ourselves.

Preferences

A small number of app settings (e.g. whether onboarding is complete, your unit preferences) are stored locally with iOS UserDefaults and never leave your device.

What we do not collect

We don't run analytics or crash-tracking SDKs, don't run advertising or ad-tracking, don't require account creation to use the app, and don't collect device identifiers (like IDFA) for tracking purposes.

Location — the short version

Your catch log location data is private by default and stays that way unless you explicitly change an entry's visibility. We built Fisher King this way on purpose: a good fishing spot is worth protecting, and we don't want Fisher King to be the reason someone else finds yours.

Third parties we send data through

PartyWhat they receivePurpose
CloudflareHosts our backend (Worker, database, and the AI model that powers the coach); coordinates, coach messages, and — if you sign in — synced catch data pass through it. Infrastructure & coach AI processing
Open-MeteoCoordinates, per requestWeather & marine forecast data
MapboxThe visible map region as you pan and zoom (map tiles only — Mapbox's optional usage-telemetry is turned off before any map loads) Map tiles
RainViewerRadar tile requests for the map area you're viewing, if you turn on the rain overlayRain radar overlay
LibreWXRSame as RainViewer — used as a fallback if RainViewer is unavailable, and for the optional satellite cloud overlay Rain radar & satellite overlay
Apple (Sign in with Apple)Standard Sign in with Apple identity exchange, handled by iOSOptional account & sync authentication
Apple (Maps search)The place name text you type when searching for a location by name (MKLocalSearch)Search-by-name suggestions
Apple (StoreKit)Purchase processing, handled entirely by iOS — we never see your payment detailsIn-app purchases (not yet enabled in this version — v1 ships without paid tiers)

None of these are used for advertising. We don't sell data, and we don't share it for cross-app or cross-site tracking. Depth data comes from a GEBCO bathymetry grid we host in our own storage, so it isn't a third party we send data to — see "Weather & sea conditions" above.

How long we keep data

Your right to deletion

You can delete individual catch entries at any time from within the app; deleting an entry removes it locally and, if sync is on, on our server as well.

To delete your account and all associated synced data, use Settings > Account > Delete Account in the app, or contact us at support@fisherking.app from the email associated with your request and ask for account deletion. This is a real deletion, not a hide-it-and-keep-it: your account row, nickname, and synced catch data (species, dates, sizes, notes, and any location you'd set to approximate or exact) are removed from our active database, not just marked hidden. The internal coach fair-use counter tied to your account is deleted in the same request; if that step fails, the deletion is reported back to the app as partial rather than quietly claimed complete. One thing can remain after deletion: a deletion receipt that stores a one-way hash of your account identifier (not the identifier itself) purely as a record that the request happened. Any lingering backup copies age out within 30 days. Note: account deletion does not revoke Sign in with Apple itself — that's managed separately in your Apple ID settings.

If you never signed in, there is no server-side account or data to delete — simply deleting the app removes everything, since your catch log, spots, and preferences live only on your device.

Your choices

Children's privacy

Fisher King is not directed at children and we do not knowingly collect personal data from users under 13 (or the relevant local age of digital consent). If you believe a child has provided us with personal data, contact us at support@fisherking.app and we will delete it.

Security

Data in transit to our backend and the third parties listed above is encrypted (HTTPS). Synced catch data is authenticated using Apple's identity token scheme; we don't handle or store your Apple account password. No method of transmission or storage is 100% secure, but we don't collect more than the app needs to function.

Changes to this policy

We'll update this page as the app changes and update the date below. Material changes will also be reflected in the App Store listing where required.

Contact

Questions about this policy or your data: support@fisherking.app. See also our contact page.