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

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.

WhatWhyHow to delete it
Scan history — the result and the photographs that produced itSo you can look back at what you identifiedProfile → Clear scan history
Saved stones and bookmarksSo your saved items persistProfile → Clear saved stones
Your collection: names, notes, locations you typed, photographsThe specimen collection featureDelete individual entries, or uninstall the app
Preferences — theme, onboarding completion, recent searchesSo the app behaves consistentlyUninstall 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:

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 recordedWhat 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 collectGoogle Play Data safetyApple privacy labelPurpose
Product events and screen viewsApp activity → App interactionsProduct InteractionAnalytics
Crash reportsApp info and performance → Crash logsCrash DataApp functionality, Analytics
Performance tracesApp info and performance → DiagnosticsPerformance DataApp functionality, Analytics
Other diagnostic metadata sent with the aboveApp info and performance → DiagnosticsOther Diagnostic DataApp functionality, Analytics
App-instance identifier; anonymous quota identifierDevice or other IDsDevice IDApp 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

Permissions

PermissionWhat it is for
CameraPhotographing 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 stateSending 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:

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.