Privacy Policy
Stone Identifier · Last updated 14 September 2026
Stone Identifier identifies rocks, minerals, gemstones, crystals and fossils from photographs. This policy explains what happens to your data. It is short because the app does very little with it.
The short version
- There is no account. You never give us a name, an email or a password to use the app.
- Your scans, photographs, saved stones and collection notes are stored on your device only.
- When you ask for an identification, the photographs you selected are sent to our server and on to Google's Gemini API, analysed, and not kept.
- The app does send usage events, crash reports and performance timings to Google Firebase. They describe how the app behaves, never what your photographs, notes or searches contain.
- There is no advertising: no ad networks, no advertising identifier, no ad personalisation, no cross-app tracking, and nothing is sold or shared with data brokers.
- The app never reads your location, contacts, microphone, calendar or messages.
Who we are
Stone Identifier is published by Wixpa, established in Pakistan, which is the controller of the limited data described here. For anything in this policy, write to usmansgd42@gmail.com.
What the app stores on your device
All of the following stays in the app's private storage area. It is not uploaded, not synchronised to any server of ours, and not readable by other apps.
| What | Why | How to delete it |
|---|---|---|
| Scan history — the result and the photographs that produced it | So you can look back at what you identified | Profile → Clear scan history |
| Saved stones and bookmarks | So your saved items persist | Profile → Clear saved stones |
| Your collection: names, notes, locations you typed, photographs | The specimen collection feature | Delete individual entries, or uninstall the app |
| Preferences — theme, onboarding completion, recent searches | So the app behaves consistently | Uninstall the app |
A "location" recorded against a specimen is text you typed yourself. The app does not request or read your device's location, and holds no location permission.
Backups differ by platform, and we would rather say so than imply more than is true:
- Android: automatic backup is switched off. The app sets
allowBackup="false"and excludes every data domain from both cloud backup and device-to-device transfer, so this data is not copied to your Google account or to a new phone. - iOS: the app's Documents folder — where your photographs and records live — is included in your own iCloud backup and in device-to-device migration by default, like most apps. That copy is yours, held in your Apple account, and we have no access to it. You can exclude it by turning this app off under iCloud backup settings.
Uninstalling the app deletes everything it stored on the device.
What leaves your device
Photographs you choose to identify
When you tap Identify, the photographs you selected — and your answers to any follow-up questions, which
are sent as option numbers rather than text — are transmitted over HTTPS to our
identifyStone Cloud Function (Firebase project stone-identifier-b2145, region
us-central1) and from there to Google's Gemini API for analysis. The result comes back to
your phone. Our function does not store the photographs, and no database of ours contains them. Google
processes them in order to answer the request; their handling is governed by the
Gemini API terms.
Only the images you pick are sent. The app never uploads your photo library, and never sends a photograph in the background.
An anonymous identifier
The app signs in anonymously to Firebase. This is not an account: it has no email, no password
and no profile, and you are never asked to create one. It exists so our server can count how many
identifications a single installation has requested and stop one device from exhausting the service for
everyone. The only server-side record is a document in a quotas collection, keyed by that
anonymous id, holding the counts and the times they started — nothing else. Clearing the app's data or
reinstalling produces a new identifier and discards the old one.
Usage, crash and performance data
The app includes Firebase Analytics, Firebase Crashlytics and Firebase Performance Monitoring, from Google. We use them to see which features people actually use, to find out about crashes we would otherwise never hear about, and to see where the app is slow. Collection is switched off in debug builds — the developer's own hot restarts and test crashes stay out of the numbers — and is on in the release builds distributed through the app stores.
| What is recorded | What it contains |
|---|---|
| Product events | A fixed list of eleven event names: scan_started, scan_completed,
scan_failed, scan_refined, stone_saved,
stone_favorited, collection_entry_added, guide_opened,
compare_used, search_used, article_opened. Their parameters
are limited to counts, fixed enum values and yes/no flags — how many images were in a scan, which
confidence band the result fell into, whether the result was a stone, why a scan failed, how many
search results came back, whether a collection entry has a photo. Firebase Analytics also records
screen names as you move around the app. |
| Crash and error reports | The error message, the stack trace, and the standard device and app metadata Crashlytics collects with them: device model, operating system version, app version, and device state such as available memory, disk space and whether the app was in the foreground. |
| Performance traces | Timings only: app start, screen rendering, network request durations, and one custom trace around an identification carrying the number of images in it. |
| An app-instance identifier | A random identifier Firebase Analytics generates so these events can be attributed to one installation. It is not your name, your email or a device serial number, and reinstalling the app replaces it. |
What is never in any of this: your photographs, your notes, the text you type into search, a specimen name or location you typed, or the text of an identification result.
No advertising identifier is collected. On Android the advertising-ID permission
(com.google.android.gms.permission.AD_ID) and the two AdServices permissions are explicitly
removed from the app's manifest, and ad-ID collection and ad-personalisation signals are switched off
there as well; on iOS the app is built against the Firebase Analytics variant that has no IDFA support
at all. There is no ad network in the app, no profiling and no cross-app or cross-site tracking — which
is why no App Tracking Transparency prompt appears.
How this maps to the store privacy labels
So that the app's store declarations, its privacy manifest and this policy say the same thing:
| What we collect | Google Play Data safety | Apple privacy label | Purpose |
|---|---|---|---|
| Product events and screen views | App activity → App interactions | Product Interaction | Analytics |
| Crash reports | App info and performance → Crash logs | Crash Data | App functionality, Analytics |
| Performance traces | App info and performance → Diagnostics | Performance Data | App functionality, Analytics |
| Other diagnostic metadata sent with the above | App info and performance → Diagnostics | Other Diagnostic Data | App functionality, Analytics |
| App-instance identifier; anonymous quota identifier | Device or other IDs | Device ID | App functionality, Analytics |
None of it is linked to your identity — we have no identity to link it to — and none of it is used for tracking. Photographs are transmitted to answer an identification request in real time and are not retained by us, so they are not declared as collected data.
Device attestation
The app activates Firebase App Check, which uses Google Play Integrity on Android and App Attest or DeviceCheck on iOS to tell Google's servers that the traffic the Firebase SDKs send comes from a genuine, unmodified copy of this app. It does not identify you to us. It is not applied to the identification request itself: that endpoint accepts the anonymous sign-in token and relies on the per-device quota instead.
Reports and support email
If you report an identification or contact support, the app opens your email app with a message prepared. Nothing is sent until you send it, and you can read and edit it first. A report contains the reason you chose, anything you wrote, the name the model returned and an internal reference for the result. It contains no photograph and no personal information. The app collects nothing in this flow.
What we do not do
- No advertising, no ad identifiers, no ad personalisation, no profiling, no data brokers.
- No selling or sharing of personal information. We hold essentially none to sell.
- No cross-app or cross-site tracking, so no App Tracking Transparency prompt appears.
- No processors other than Google (Firebase and the Gemini API). Nothing goes to a third-party analytics, attribution or advertising company.
- No user accounts, no email lists, no push notifications.
Permissions
| Permission | What it is for |
|---|---|
| Camera | Photographing a specimen inside the app. Asked for only when you open the camera. |
| Photo library (iOS) | Choosing an existing photograph. On Android the system photo picker is used, which grants access to the single item you pick and needs no permission. |
| Add to photo library (iOS) | Only when you choose Save Image from the share sheet. |
| Motion and orientation (iOS) | The Magnet Test reads the magnetometer — the sensor a compass uses — to show how strongly a specimen affects the magnetic field. It does not track your movement and needs no permission on Android. |
| Internet / network state | Sending an identification request, and telling you when you are offline instead of failing silently. |
The app requests nothing else. It has no location, contacts, storage, phone or SMS permission, and the microphone and storage permissions that its camera library would otherwise add are explicitly removed from the app before it is built.
Children
Stone Identifier is a general-audience reference app and is not directed at children under 13. We do not knowingly collect personal information from children. The app has no accounts and asks no one for personal details; if you believe a child has sent us something through the support address, write to us and we will remove it.
Your rights and our legal basis
If you are in the UK or the EU, the lawful basis for each thing we do is:
- Sending your photographs for identification — necessary to perform the service you asked for (Article 6(1)(b)).
- The anonymous quota identifier — our legitimate interest in keeping a free service available and affordable and in preventing abuse (Article 6(1)(f)).
- Usage, crash and performance data — our legitimate interest in understanding how the app is used and in fixing what breaks (Article 6(1)(f)).
You may have rights to access, correct, export or delete personal information we hold about you. In practice we hold almost none: there is no account, and everything the app records about your use of it is either on your own device, under your control and deletable from the Profile tab or by uninstalling, or is the anonymous quota counter described above. The analytics, crash and performance reports are tied only to a random app-instance identifier and cannot be traced back to you by us. Reinstalling the app resets both identifiers.
This version of the app does not show a consent prompt before analytics, crash and performance reporting start, and has no in-app switch to turn them off; the only way to stop them is to stop using the app. If you want the anonymous quota record for your installation removed, or written confirmation of any of the above, contact usmansgd42@gmail.com.
Accuracy and limitations
Identifications are produced by an AI model from photographs and are estimates, not determinations. A photograph cannot establish density, refractive index, streak or chemical composition. Do not rely on a result as the sole basis for a purchase, sale, insurance or valuation decision. See the Terms of Use.
Changes
If this policy changes we will update the date at the top and, where the change is significant, note it in the app's release notes.