Privacy Policy
Hand Lens ("the app") is run by Zhiyong LIU, an individual developer ("we"). This policy explains what data the app handles and why. The short version: there is no account, no advertising and no tracking. We use your photos only to identify the specimen, and our server doesn't keep them.
What we don't collect
Using the app never requires your name, email address, phone number, contacts, precise or approximate location, or advertising identifier (IDFA), and we don't collect them. We don't use any advertising or tracking SDKs, and we don't sell or share personal information for advertising. If you email us, see "Emails to support" below.
What the app handles
Photos you choose to identify
When you tap Identify, the app re-encodes your photo(s) on your device, which removes all embedded metadata (EXIF), including GPS location and camera details. It then sends the photos to our server, which forwards them to Google's Gemini API to suggest matches from our reference list. Our server keeps the photos only in memory while it waits for the answer, then discards them; we don't store them, and they don't appear in our logs. Google keeps prompts and responses for a limited period solely to detect and prevent abuse of its service, and doesn't use them to improve its products (see "Who processes data for us"). Photos never leave your device unless you tap Identify, and before the first identification the app explains this and asks you to agree.
A random app ID
The app creates a random identifier. It isn't your name, Apple ID, an advertising identifier or a hardware identifier, but it does link the records below to this installation of the app. It's used to count identifications (the free daily allowance, and Premium's daily and monthly limits) and to check whether you have an active subscription. On our server it's stored with:
- the date you first used the app, deleted automatically 400 days after your last use;
- daily identification counters, deleted after 48 hours;
- monthly Premium identification counters, deleted after 40 days;
- a cached "has Premium" flag, deleted after 10 minutes, and, only for subscribers, the end date of the last confirmed subscription period, used if the subscription service is briefly unreachable and deleted 2 days after that date.
Purchases
Subscriptions are processed by Apple. We use RevenueCat to check your subscription status using the random app ID. The RevenueCat SDK also receives technical information such as the app version, device model and iOS version, as described in RevenueCat's privacy policy. We never see your payment details.
Feedback on results
If you answer "Was this right?", the app sends which result was shown, whether you said it was right, and, if you choose one, what it actually was. No photo, no app ID and no free text are included. To make sure each result is rated only once, our server keeps a short record of the result it returned (the suggested rock types and their order), under a random result code that isn't linked to your app ID; that record is deleted after 7 days. Answers are kept only as running totals per rock type (for example "quartz: 12 right, 3 wrong") and as monthly totals of which suggestion people confirmed (first, second, third or none), which we use to measure and improve accuracy.
When the AI suggests a name that isn't in our reference list, we count how often each such name comes up (the name and a count only), so we know what to add next.
Server logs
Our server keeps technical logs (errors, response times, AI usage counts) for 30 days to keep the service running. We don't log photos, IP addresses or location.
To stop automated abuse of free identifications, we limit how many new installs on one network can start free identifications each day. For this, your network address is turned into a code using a secret key; the code changes every day, the address itself is never stored or logged, and the code is deleted after 48 hours.
Data that stays on your device
Your collection (photos, names, catalogue numbers, notes and any place you type in), your recent identification history (the last 50 results with a small copy of the first photo), your answer to the onboarding question, and your settings are kept on your device; we don't upload them and can't see them. If you use iCloud or computer backups, your backups may include them, and anything you choose to share (for example a result card) is copied wherever you send it. You can delete the app's data at any time in Settings › Clear local data, or by deleting the app.
Emails to support
If you email us, we receive your email address and whatever you write, and use them only to answer you. We keep support emails for up to 1 year, then delete them, unless you ask us to delete them sooner.
Who processes data for us
| Provider | What for | What they receive |
|---|---|---|
| Google (Gemini API, paid tier) | The AI models that identify your photo (a main model and a backup model) | Photos. Kept for a limited period only to detect and prevent abuse; not used to improve Google's products |
| Amazon Web Services (USA) | Hosting our server and database | Photos pass through our server in memory and are discarded; random app ID and the records listed above |
| RevenueCat | Subscription status | Random app ID, purchase history, basic device and app information |
| Apple | App distribution, payments, crash reports you agree to share | As described in Apple's privacy policy |
Why we use your data (legal bases)
Where the UK or EU GDPR applies:
- Identifying your photos, counting your allowance and checking your subscription are needed to provide the app you asked for (performance of a contract). Before the first identification we also ask you to agree to your photos being sent to our AI provider.
- Abuse prevention, technical logs and the anonymous accuracy totals rely on our legitimate interests in keeping the service working, fair and accurate. You can object to these by contacting us.
- Answering support emails relies on our legitimate interest in helping you.
To stop photos being sent, simply don't use Identify; the rest of the app works offline. Settings › Clear local data also resets your agreement, so the app asks again next time.
Age
Hand Lens is intended for people aged 13 and over and is not directed at children under 13. We don't knowingly collect personal information from children under 13.
Your rights
Because we don't hold your name or contact details, we usually can't link server-side data to you unless you give us your app ID. Depending on where you live (for example under UK or EU GDPR, the Australian Privacy Act or US state privacy laws), you may have rights to access, correct or delete personal information, to object to or restrict its use, and to receive a copy. Contact us at hello@siwarp.si; to help us find any data, include the app ID you can copy in Settings › Your data. You can also complain to your local data protection authority (in the UK, the ICO).
Where data is processed
Our server and data store are in the United States (AWS us-east-1). Google may process and briefly store data in any country where it has facilities, and RevenueCat is based in the United States. Where UK or EU law requires safeguards for these transfers, we rely on our providers' data processing terms, which include the standard contractual clauses approved for such transfers. Contact us for details.
Changes
If we change what the app collects, we'll update this page and the effective date, and, for significant changes, tell you in the app.
Contact
Zhiyong LIU
hello@siwarp.si