Privacy Policy
Contents
1. Who we are
Batch Hunter (the “app”) is an Android application that helps grocery shoppers automate the process of screening and accepting batch offers. The app is published under the package name com.batchhunter.app and is referred to in this policy as “Batch Hunter,” “we,” or “us.”
Batch Hunter is an independent tool, not affiliated with, endorsed by, or sponsored by any delivery platform.
2. Scope of this policy
This policy describes how Batch Hunter handles information when you use the Android app. It does not cover the privacy practices of any delivery platform, Google Play, or any other third party whose service you may use alongside Batch Hunter.
3. Data we collect
Batch Hunter is designed to be local-first. The categories below describe the only data that leaves your device.
3.1 Subscription & device-binding data
To enforce a one-device-per-subscription policy and to verify your purchase status, Batch Hunter stores the following in Google Cloud Firestore (a Google Firebase service):
- Purchase token — issued by Google Play when you subscribe. This token does not contain your name, payment details, or Google account identity.
- Random device identifier (UUID) — generated locally on first launch. It is not a hardware ID, advertising ID, IMEI, MAC address, or phone number.
- Registration timestamp — when the device was first bound to the subscription.
- Last-seen timestamp — refreshed periodically so we can detect inactive devices.
- Anonymous Firebase Authentication token — used solely to authorize the Firestore reads and writes above. No email, phone, or social account is involved.
3.2 Crash diagnostics
Batch Hunter uses Firebase Crashlytics. If the app crashes or stops responding, a report is sent containing the technical detail needed to fix it: the stack trace, the device model, the Android and app version, how long the app had been running, and a Crashlytics installation identifier that is generated on your device and is not tied to your name, email, or Google account.
Reports also carry a small amount of context about how the app was configured when it failed — how many filter rows exist, whether multiple-filter mode was on, and which screen you were on. No batch information is included: not pay, distance, retailer, address, store list, or the values you set in your filters.
If the app crashes before a report can be sent, it is stored on the device and sent on the next launch. Android may also collect its own crash report through Google Play; those are governed by Google Play's privacy practices.
3.3 Information you provide voluntarily
If you contact us by email, we will receive whatever you choose to put in that email (your address, your message, attachments). We use it only to reply to you.
4. Data we do not collect
Batch Hunter does not collect, transmit, sell, or share:
- The text, pay, tip, distance, retailer, address, items, units, shops, customers, batch type, or any other contents of any batch you see in the delivery app.
- Your earnings, hours worked, deliveries completed, or any other performance data.
- Your location, GPS coordinates, or movement history.
- Your contacts, calendar, photos, messages, microphone, camera, or call logs.
- Your Google account email, name, profile picture, or any identifier tied to your real-world identity.
- Your IP address (beyond what is incidentally observed by Google Firebase during authenticated requests and discarded after request handling per Google’s policies).
- Your phone number, IMEI, MAC address, Android Advertising ID, or any hardware fingerprint.
- Information about other apps installed on your device, except for a single check of whether the delivery app and WhatsApp are present (required by Android 11+ package visibility rules so Batch Hunter can guide you to install them).
Batch Hunter contains no advertising SDKs, no analytics SDKs, and no behavioural tracking. We do not build user profiles. We do not sell or rent data to anyone — there is no data to sell.
5. How Batch Hunter uses the Accessibility Service
Batch Hunter requests Android’s Accessibility Service permission. Per Google Play policy, we are required to disclose exactly how this permission is used. Here it is in full:
- Why we need it. The Accessibility Service is the only Android API that lets one app read text rendered by another app. Batch Hunter needs to read the batch cards displayed by the delivery app so it can compare each batch against your filters.
- What it reads. The service is configured to only receive events from the delivery app's package. Events from every other app are filtered out by Android before they reach Batch Hunter.
- What it does with what it reads. Batch text is parsed in memory to extract values (pay, distance, items, units, shops, customers, retailer, batch type), compared against the filter group you configured, and then discarded. Nothing is written to disk except a short rolling diagnostic log, capped at 500 KB and overwritten oldest-first. It stays on your device unless you choose to send it to us from Settings → Share diagnostic log; nothing about a batch is transmitted automatically.
- How it acts. When an batch matches, Batch Hunter dispatches a tap at the screen coordinates you configured for the Accept button. When an batch does not match, Batch Hunter dispatches a scroll gesture you configured to move past it. These are the same gestures you would perform by hand.
- Diagnostic log. For troubleshooting, Batch Hunter keeps a short on-device log of recent rule evaluations (e.g. “batch rejected: distance 14.7 mi over limit 10”). This log never leaves your device and you can clear it from Settings at any time.
- You can turn it off. The Accessibility Service can be disabled at any time from Android Settings → Accessibility → Batch Hunter. When disabled, Batch Hunter cannot read batches or perform any taps.
Batch Hunter does not use Accessibility Service data to advertise to you, profile you, or share with anyone. This is consistent with Google Play’s Use of Accessibility API policy.
6. Other permissions Batch Hunter requests
- SYSTEM_ALERT_WINDOW (Display over other apps) — required to draw the floating bubble overlay that shows scan status. The bubble runs entirely on-device.
- POST_NOTIFICATIONS — required on Android 13+ so Batch Hunter can show you the foreground-service notification and match alerts. You may turn notifications off in system settings.
- com.android.vending.BILLING — required by Google Play Billing to process your subscription.
- ACCESS_NETWORK_STATE — lets the app tell “you are offline” from “the server said no”, so a failed subscription check is not reported as a refusal.
- WAKE_LOCK — held briefly while a batch is being evaluated so the check is not cut short by the screen sleeping.
- INTERNET — required only for Google Play Billing and the subscription/device-binding checks described in §3.1. No other network calls are made by the app.
- QUERIES (package visibility) — Batch Hunter declares a narrow query list for the delivery app and WhatsApp so Android will tell us whether those two apps are installed. Batch Hunter cannot see any other installed apps.
Batch Hunter does not request location, camera, microphone, contacts, SMS, call logs, calendar, body sensors, file storage beyond its own sandbox, or QUERY_ALL_PACKAGES.
7. How we use the data we do collect
- Subscription enforcement. We use the purchase token + device UUID to verify that the account using Batch Hunter has a valid Google Play subscription, and to ensure that a single subscription is not being shared across many phones.
- Trial tracking. The first-launch timestamp is stored locally on your device (using Android DataStore) so we can correctly count the days remaining in your 3-day free trial. It is not uploaded.
- App functionality. Your filter rules, batch-type switches, timing preferences, button style, and other settings are stored locally on your device using Android Room and DataStore. They are not synced to any server.
- Support. If you email us, we use what you sent to reply.
We do not use any data for advertising, profiling, or training machine-learning models.
8. Sharing & third parties
We use the following service providers strictly for the limited purposes above:
- Google LLC (Google Play Billing) — processes your subscription. Governed by Google’s Privacy Policy.
- Google LLC (Firebase Authentication & Cloud Firestore) — receives the anonymous auth token, purchase token, device UUID, and timestamps described in §3.1, in order to enforce one-device-per-subscription. Governed by Firebase Privacy and Security.
- Google LLC (Firebase Analytics) — receives anonymous reliability events: an event name and a single outcome label, such as whether a subscription check succeeded. No batch contents, no filter values, no identifiers beyond the random device identifier described in §3.1. Governed by Firebase Privacy and Security.
- Google LLC (Firebase Crashlytics) — receives crash reports: stack trace, device model, OS and app version, a device-generated installation identifier, and the configuration context described in §3.2. No batch data. Governed by Firebase Privacy and Security.
- Google LLC (Firebase App Check / Play Integrity) — receives an attestation token proving the request came from a genuine, unmodified install of this app. This is what stops a stranger reading or writing the subscription records above. It carries no information about you or your batches. Governed by Firebase Privacy and Security.
We do not share data with advertisers, data brokers, analytics vendors, or any party not listed above. We do not sell personal information, including under the California Consumer Privacy Act (CCPA) definition of “sale.” If we are ever legally compelled to disclose information (subpoena, court order), we will disclose only what is required and, where lawful, notify the affected user.
9. Data retention
- On your device: filter rules, settings, the batches list on the Recent screen, and the diagnostic log are kept until you clear them, uninstall the app, or wipe app data from Android Settings.
- In Firestore: the device-binding record (purchase token, device UUID, timestamps) is kept while your subscription is active. If you cancel and the subscription expires, the record is purged within 30 days. You may also email us to request deletion sooner; we will verify ownership via the purchase token and remove the record.
10. Security
Data transmitted to Firebase is encrypted in transit via HTTPS/TLS. Firestore data is encrypted at rest by Google. Access to our Firestore project is restricted by security rules: anonymous clients can only read and refresh their own device-binding document, and cannot modify the device identifier once written.
Locally, Batch Hunter relies on Android’s app sandbox. Other apps on your device cannot read Batch Hunter’s database or DataStore files unless your device is rooted, which is outside our control.
No system is perfectly secure. If we ever discover a breach affecting personal data, we will notify affected users by in-app notice or email (if we have one for you) and, where required, the appropriate regulator, within the timelines set by law.
11. Your rights
Because Batch Hunter stores almost all data on your device, you can exercise most data rights yourself:
- Access / portability: your filter rules and settings are visible inside the app. We can also email you a copy of any device-binding record we hold on request.
- Rectification: edit your settings inside the app at any time.
- Erasure: uninstall the app or clear its data from Android Settings to remove local data. For Firestore records, email us as described in §9.
- Withdraw consent: disable the Accessibility Service or revoke the overlay/notification permissions at any time. The app will stop functioning until they are re-enabled.
- Object / restrict processing: stop using the app, or contact us for specific concerns.
- Lodge a complaint: if you are in the EEA, UK, or another jurisdiction with a data protection authority, you may complain to that authority.
California residents (CCPA/CPRA): you have the right to know what we collect, request deletion, and correct inaccuracies. We do not sell or “share” (cross-context behavioral advertising) personal information. There is no financial incentive program. To exercise these rights, contact us at the address below.
12. Children
Batch Hunter is intended for adult grocery shoppers. We do not knowingly direct the app to anyone under 16, and we do not knowingly collect data from such users. If you believe a child has provided information to us, contact us and we will delete it.
13. International users
The Firebase services we use are operated by Google LLC in the United States. By using Batch Hunter outside the United States, you understand that your subscription/device-binding data will be transferred to and processed in the U.S. Google relies on Standard Contractual Clauses and other lawful transfer mechanisms for data originating in the EEA, UK, and Switzerland.
14. Changes to this policy
We may update this policy as the app evolves. When we do, we will update the “Last updated” date at the top. If a change is material (for example, adding a new category of data collection or a new third-party processor), we will notify you in-app before the change takes effect.
15. Contact
Questions, privacy requests, or complaints? Email support@batchhunter.app. We will respond within 30 days, or sooner where required by law.