Effective 21 October 2026. Fish2Shark is operated by Vidit Chopra, sole proprietor of GlobalInno Services, Meerut, Uttar Pradesh, India. Contact: contact.techfusionlab@gmail.com.
This policy covers this website, the Fish2Shark Android app on Google Play and the iPhone app (in beta on Apple’s TestFlight). Where this page says “the app”, it means both.
Updated 28 October 2026: new sections describe home-game results, private invitations and local blind-level alerts. Export and deletion now cover these account records. Updated 25 October 2026: in “Optional Google Analytics”, the app from version 1.6.0 can also send a few named events, only while Usage sharing is on. Also on 23 October 2026: new section “Crash reports” (the app from version 1.3.0): anonymous crash reports, on by default, with an off switch. Also on 22 October 2026: this page now names the Android app on Google Play, and “Service providers and storage” says what Google Play handles. Also on 22 October 2026: new section “Optional Google Analytics” (the app from version 1.0.2, and this website). It is off unless you turn it on. Also new on 22 October 2026: the section “iPhone beta sign-up” covers the email you give when you join the iPhone beta on this website (with Google or Apple). In “Feedback you send”, the tester group and “Was this lesson clear?” answers (app 1.1.0 and later). Updated 21 October 2026: the operator is now named as above, with no change to how your learning data is handled, and the new section “Feedback you send” covers feedback sent from the app (version 1.0.1 and later).
Learning without an account
Guest lesson progress, practice hands, display settings and reflections are saved on your device. Clearing browser or app storage can remove them. A shared home-game display shows its configured title, chart, timer and chip values; it does not display your account or private notes.
When you create an account
You can use email and password or Google, and Sign in with Apple in the iOS app. Firebase Authentication manages email/password credentials and password reset emails. Passwords are sent securely to Firebase; they are not stored in your learning records, device progress saves or exports.
Firebase Authentication processes your Google identity, including account identifier, name, email address and profile information supplied by Google. We use that identity to connect your saved learning across devices. We do not receive your Google password or request access to Gmail, contacts or Drive.
Sign in with Apple supplies an account identifier and the name/email you choose to share, including an Apple relay address when you use Hide My Email. Firebase uses this identity to save your learning. We do not receive your Apple password.
Firebase Cloud Firestore stores your chosen learning profile, completed lessons, practice answers and hint use, timestamps, saved hands and reflections. Access rules restrict each account’s records to that account. Notes are private account data, but they are not end-to-end encrypted; avoid sensitive personal or financial information.
Home-game results and invitations
The host’s player names, chip entries, final counts and blind-timer settings are saved on that device. Running a local game does not require an account. When the host chooses to share a completed game with matching chip counts, Firestore stores a separate invitation for each selected seat: the game and seat identifiers, host account identifier and display name, player name, chips in, final chip count and relevant dates. Home-game results are separate from lesson progress, XP and learning ratings.
Each invitation has a randomly generated private code. The host chooses whom to share it with. A signed-in person with the code can preview that seat’s result and explicitly accept it; the first acceptance links the seat to that account’s stable identifier, not to a typed player name. Share codes only with the intended player. No account directory or contact access is used, and matching names do not link past games automatically.
Accepting saves your own result to your private account history. The host can see that an invitation was accepted; sharing a seat does not share the whole player list. Saved results remain until you delete your account or request deletion. If the host corrects a result, your saved copy stays unchanged unless you accept their replacement invitation for that game.
Invitation codes expire after seven days, and the host can revoke an unaccepted invitation. Expiry stops acceptance; it does not automatically erase the stored invitation or an already saved result. Unrevoked invitation records and account-to-seat links remain until removed through account deletion or a deletion request. The host’s device also keeps an invitation cache. On the invitation webpage, the code is read from the browser fragment only; it is not sent to the web server or Analytics, and opening the page does not retrieve or accept the result.
Optional blind-level alerts
New home games use fixed blinds without a countdown. If you choose timed levels, you can separately enable an alert when a level ends. The phone schedules these notifications locally, with your notification permission; timer schedules are not uploaded to a push-notification service. These alerts are independent of practice reminders. You advance the blind level yourself. Pausing or changing the timer, switching to fixed blinds, finishing the game or starting a new game cancels or replaces its pending alert.
Feedback you send
When you use Send feedback in the app, we store your message, the topic you chose and, only if you add one, the email address you want a reply at. The app attaches its version and build, the platform and system version, the device type (phone, tablet or desktop), your text size, whether reduced motion is on, the screen, lesson and step you were on, a fingerprint (hash) of Finn’s message rather than its text, whether you were signed in, a random install ID and the time. It never sends your password, saved hands or notes.
From app version 1.1.0, two more things travel the same way. If you joined the tester group with an invite code, your messages also carry the group you joined (home-game players or new to poker). The code itself only sets that group; leaving the group in the app (You › About & feedback) stops it. And when you finish a lesson you can answer “Was this lesson clear?”. If you do, the app sends your answer, any reasons or note you add, how many wrong tries each move took and how long the lesson took, once per lesson. Answering is optional.
Messages are saved on your device until they can be sent, then stored in Firebase Cloud Firestore. Only Vidit can read them; the app cannot read them back, change or delete them. If you are signed in, a message is linked to your account ID. If you are not, the app uses an anonymous Firebase sign-in only to send it: this does not create a Fish2Shark account or save any progress, and its random ID is not linked to your name or email. The install ID is replaced when you reinstall the app or delete your account.
Feedback is used to fix problems and decide what to improve. Deleting your account does not remove feedback you sent; email us and we will delete it.
iPhone beta sign-up
To join the iPhone beta on our beta page, you sign in with Google or with Apple so we know the email address is yours. We store that email address, the app you joined (Fish2Shark) and the time, to invite you to the iPhone beta through Apple’s TestFlight and to count testers. Apple receives your email address so it can send you the TestFlight invitation; Apple’s own privacy policy covers TestFlight. Nothing else is done with it: no newsletters, no marketing and no sharing with anyone else.
This sign-up service runs on Google Firebase and is shared by our apps (ForwardCheck, Bawaal, Pagefond and Fish2Shark), so one service keeps the sign-ups for all four. Signing in on the beta page does not create a Fish2Shark account or sign you in to this website; if a sign-in creates one for the first time, the page deletes it again once you have your answer. With Apple, choosing “Hide My Email” gives a relay address that TestFlight’s email may not reach. To be removed from the beta and from the sign-up list, write to contact.techfusionlab@gmail.com.
Service providers and storage
Vercel serves the website and processes technical request data needed to deliver and protect it. Google Firebase provides authentication and cloud data storage. Network requests can expose IP addresses and device/browser information to these providers. The primary learning database is configured in the United States (nam5 multi-region); authentication and provider operations may process information elsewhere.
The iOS Google Sign-In SDK declares collection of name, email, phone number, coarse location, user and device identifiers, usage data and other technical data for authentication, security and SDK analytics. These provider-level declarations do not mean Fish2Shark asks for your phone number or GPS permission. Google may process information associated with your Google account and connection when you sign in. The SDK declares no advertising tracking. See Google’s SDK privacy manifest and Firebase’s privacy information.
The Android app is downloaded and updated through Google Play, which handles that under Google’s own privacy policy. On Android, Sign in with Google runs through Google Play services (Android’s Credential Manager) before Firebase verifies it; we do not receive your Google password. Google Play Console shows us overall numbers, such as installs and crash rates, and any review you choose to post.
Fish2Shark does not include ads, sell personal information or use marketing trackers. Authentication providers process their own operational and usage data. Essential local storage supports your learning and sign-in. Firebase Authentication keeps logged IP addresses for a few weeks, and provider logs can have separate retention policies.
Optional Google Analytics
Google Analytics is optional and off by default, in the app and on this website. Nothing is sent to it unless you turn it on: in the app (version 1.0.2 and later) under You › Settings › Usage sharing, and on this website under “Analytics privacy” at the bottom of any page. Each phone and each browser keeps its own choice, separate from your Fish2Shark account.
When it is on in the app, Google Analytics for Firebase receives the names of the screens you open, from a fixed list (such as Today, Learn, a lesson, the practice table or Settings); from version 1.6.0, a few named events from a fixed list, such as a first hand dealt, Finn’s verdict on a move (the same, a different size, or a different move), “Why?” opened, the table waiting while you read, a lesson finished, a setting switched on or off, and how many decisions a session had (in ranges, such as 10–19), never the cards, the hand, the lesson’s content or anything you typed; when you open the app and how long you use it; a random app-instance ID; and technical details such as device model, operating system, app version, language and time zone. On this website it receives one generic visit, without the page address, page title, query string or referring page, and a browser identifier kept in Analytics cookies. Google processes your IP address to deliver the service and may derive an approximate region from it; it does not receive your precise location.
We never send your name, email address, account ID, the hands you play, your notes, feedback, anything you type, or your saved progress. The app does not collect the advertising identifier (IDFA) or the identifier for vendors, asks for no tracking permission, and turns off Google’s advertising features, ad personalisation and ad-network registration. The data is not used for advertising, sold, or combined with data from other companies’ apps or websites. We use the reports only to see which parts of Fish2Shark people use and where they stop.
Turning it off stops collection straight away, resets the app-instance ID on that phone or clears the Analytics cookies in that browser, and is remembered. It does not delete reports Google has already received; Google Analytics keeps event-level data for at most 14 months. See how Google uses information from sites or apps that use its services.
Crash reports
From app version 1.3.0, if the app crashes or hits an error, it sends an anonymous crash report through Firebase Crashlytics, a Google service, so the problem can be fixed. Crash reports are on by default, and you can turn them off at any time under You › Settings › Crash reports. Each phone keeps its own choice, separate from your Fish2Shark account.
A report contains what went wrong and where in the app’s code (the error, the stack trace and, for an error in the app’s scripts, the script and line), the screen you were on, from a fixed list (such as Today, a lesson or the practice table), the app version and build, technical details such as the device model, operating system, free memory and storage, and whether the app was in the foreground, and a random installation ID that Crashlytics uses to count how many installs a problem affects. Google processes your IP address to deliver the service.
Reports never include your name, email address, account ID, the hands or cards you play, chip counts, your notes, feedback, the player names you enter or anything you type. The app removes text like that from error messages before a report is sent, and never attaches a user ID. Reports are not used for advertising, sold, or combined with data from other companies’ apps or websites. Crash reports do not turn on Google Analytics: it stays off unless you turn on Usage sharing, and only then can a crash report include the names of the screens you visited just before.
Turning crash reports off stops them from that moment and deletes any report recorded on the phone that has not been sent yet. It does not delete reports Google has already received; Crashlytics keeps them for 90 days. See Firebase’s privacy information.
Retention, export and deletion
Cloud learning data remains until you delete the account or request deletion. In My game, use Export progress to save a JSON copy of your learning data. In the app’s account settings, Export progress also includes your saved home-game results, invitations you created and account-to-seat links involving your account. Account deletion on this website and in app versions supporting home-game invitations removes your cloud profile, learning records, saved home-game history, invitations you created, account-to-seat links and Firebase sign-in account. Deletion from the updated app also removes that account’s invitation cache on that phone. For an export that includes home-game records, use the updated app’s account settings or contact us. Other players’ accepted result copies and a host’s own local game records remain; deleting your account does not erase their records. Your current password or a fresh sign-in with your account provider confirms your identity before deletion. For Apple accounts, the iOS app also revokes Apple authorization before completing deletion. Local guest data on other devices is separate and should be reset on those devices.
You can also request account deletion by emailing us from the associated account. We may ask for identity confirmation. Provider logs and backups may persist under their own retention schedules after application data is removed.
Audience and changes
This product is intended for adults. It offers education and simulated practice, with no real-money wagering. We will update this page when data practices change materially.
Manage or delete your account →