Privacy policy
Effective date: October 29, 2026
1. Who we are
ZeroSpoils is a mobile app for tracking household food inventory and reducing food waste. It is operated by 11895079 Canada Inc., a Canadian corporation. In this policy, "ZeroSpoils", "we", "us", and "our" refer to 11895079 Canada Inc..
Questions about this policy? Email us at hello@zerospoils.com.
2. What data we collect
2a. Data you enter into the app
ZeroSpoils is offline-first. The food items, expiry dates, quantities, shopping list entries and receipt images you add are stored on your device. Text recognition runs on your device; scanning a receipt does not itself upload its image for recognition. Optional Google Drive backup sends a copy of these records to your own Drive, as described in 2h. Barcode lookup, usage events and feedback have separate data paths described below.
2b. Crash reports and technical diagnostics
We use Firebase Crashlytics (Google) to collect crash reports automatically and diagnose failures. Reports can include:
- Device model, OS version, and app version
- Stack traces and thread state at the time of the crash
- Firebase installation and crash-report identifiers
We do not deliberately attach your food inventory, name or email to a crash report. Firebase Sessions also sends session and technical information used to understand app stability. On Android, ML Kit sends app and device information, installation identifiers and recognition-performance metrics, such as latency and error codes. These diagnostic paths operate separately from the custom usage setting in 2c. The current app does not provide a switch to disable them.
2c. Usage analytics and your choices
Our custom usage events help us understand which features work, where people get stuck and whether they return. This collection is on by default. You can opt out through Settings → Privacy → Share Anonymous Usage Data. These events are stored in Firestore and can include:
- Screen names, actions, capture methods, timing, categories and recorded storage locations
- Your selected goals and household-size bucket, item quantities and counts, and used or wasted outcomes
- App version, build number and platform (iOS or Android), plus device model, operating system version, language and your text-size and reduce-motion settings, so we can reproduce problems on the device where they happened
- A hashed installation identifier that lets us associate repeat sessions and events with the same installation
The custom export uses a predefined list of events and does not deliberately include item names, descriptions, receipt images or your account email. Its hashed identifier is pseudonymous: it can still connect activity from one installation, so it is not a guarantee of anonymity. Turning the setting off stops new custom usage events from being recorded or sent; it does not delete events already sent.
Android Google Analytics is separate. The Android app also includes Google Analytics for Firebase, which automatically collects app lifecycle and session activity, an app-instance identifier and, when available, the Android advertising identifier. It derives approximate location from a masked IP address. The custom usage switch does not turn off Google Analytics, Firebase diagnostics or ML Kit metrics. The current app does not offer an in-app control for those SDK collection paths. Optional beta screen recording has its own choice in 2g.
2d. Accounts and sign-in
We use Firebase Authentication. The app creates an anonymous Firebase account automatically, with a unique account ID, even if you do not sign in. You can also create an account with email and password or sign in with Google. Firebase processes sign-in credentials and connection information, including IP addresses, to manage accounts and prevent abuse. Google sign-in provides:
- Your email address
- Your name, as it appears on your Google Account
- Your Google profile photo URL, if you have one set
- A unique account identifier assigned by Firebase
We use account information to identify you, provide signed-in features, handle feedback and protect the service. Signing in does not give us access to your contacts, calendar or emails. If you authorize Drive backup, the app can access its own private backup folder, as described in 2h.
2e. Waitlist and email signups
If you join our waitlist at www.zerospoils.com, we collect your email address and, if you choose to provide it, your preferred platform (iOS/Android). We use this information solely to send you your beta invitation, a short survey and updates about the beta and launch. We do not sell or share your email address with third parties for their marketing purposes. You can unsubscribe at any time via the link in any email we send.
2f. Remote configuration
We use Firebase Remote Config to push configuration values (such as feature flags and default settings) to the app without a full app update. It uses Firebase installation identifiers and app/device context, such as app version, operating system and language, to deliver configuration. It is not controlled by the custom usage switch.
Firebase App Check uses app/device attestation information and tokens to help protect backend requests from abuse. Network services also receive the connection information needed to handle a request, including an IP address.
The app also initializes Firebase Cloud Messaging for notification delivery. Google processes app/device metadata, installation identifiers and notification registration tokens for this service. Notification permission controls whether your device displays notifications; it is separate from SDK registration. Your local expiry reminders are scheduled on your phone and do not require uploading your inventory to a messaging server. The custom usage switch does not disable Cloud Messaging.
2g. Screen recordings (beta testers, opt-in)
In beta versions of the app we offer an optional setting, off by default, called "Help improve ZeroSpoils with anonymous screen recordings" (Settings → Privacy). Recordings stay off until you say yes, either in the question after onboarding or in Settings → Privacy. If you turn it on, we use PostHog to record how you move around the app (taps, scrolling and which screens you open) so we can find places where the app gets in your way. These recordings are pseudonymous:
- All text and images on screen are masked, so recordings show layout and taps, not what you typed or photographed
- Recording stops on receipt capture and review, camera and scanning screens, and your account screens
- We do not attach your name, email or account to a recording. It uses a random installation identifier that is reset when you turn the setting off
- PostHog receives your IP address and currently uses it to derive approximate location. Masking screen content does not remove these connection details
- Recordings are stored with PostHog in the United States and kept for 30 days
You can turn the setting off at any time; recording stops immediately. We can also switch the feature off for everyone remotely. It is not part of the app for people who did not choose beta testing.
2h. Backup to your Google Drive
If you use the backup feature, ZeroSpoils saves a copy of your inventory, shopping list and settings, receipt records and receipt images to a private app folder in your own Google Drive. Receipt records can include purchase details you captured. The app reads this folder to restore your data, but the backup does not pass through our servers and we cannot open it through our backend. You can delete it from your Google account at any time. Restoring a backup is your choice.
2i. Feedback you send us
If you send feedback from inside the app, we receive your message, category, app version and build number, device model and operating system version, language, Firebase account ID, an installation fingerprint, and any optional email address you type to help us reproduce problems and respond. If you have turned on screen recordings (section 2g), we also receive the ID of your current recording, so we can find the recording that matches your report. We do not attach your inventory.
2j. Barcode product lookup
When a barcode is not in the app's local catalog, ZeroSpoils can send that barcode to the public Open Food Facts API to find a product name and category. This lookup can also happen for a barcode read from a receipt. Open Food Facts receives the barcode, our app's User-Agent header and your connection's IP address. We do not add your ZeroSpoils account ID to that request. Open Food Facts is an independent service with its own privacy practices.
Cookies and similar technologies
This site sets no cookies and loads no analytics or advertising scripts. Your light or dark choice is kept in your browser. The waitlist form sends your email to Loops.
3. How we use your data
We use the data described above to:
- Operate the app and provide the food-tracking features you use
- Diagnose and fix crashes and technical problems
- Understand which features are most useful and improve the app (custom usage events are on by default; you can opt out of that export in Settings, as explained in 2c)
- Send your beta invitation, a short survey and updates about the beta and launch to waitlist subscribers
We do not use your data for targeted advertising and we do not sell your personal information.
4. Third-party services
We use the following third-party services. Each has its own privacy policy:
Cloudflare
Our site host. See Cloudflare Privacy Policy.
Firebase (Google)
Authentication (anonymous, email and Google sign-in), Crashlytics, Firebase Sessions, Remote Config, Cloud Messaging and App Check (configuration, notification delivery, stability and service protection), and Firestore (custom usage events and feedback). Data is stored in the United States and other countries where Google operates. See Firebase Privacy.
Google Analytics and ML Kit
Android app usage analytics and recognition diagnostics, described in 2b and 2c. Google Analytics is separate from our custom Firestore export. See Google Privacy Policy.
Loops
Email delivery for our waitlist and newsletter. Waitlist email addresses are stored in Loops in the United States. See Loops Privacy Policy.
PostHog
Optional screen recordings for beta testers (section 2g). Data is stored in the United States. See PostHog Privacy Policy.
Apple (App Store and TestFlight)
On iPhone the app is delivered through the App Store and, for beta testing, TestFlight. Apple processes your Apple ID, downloads and, for TestFlight, crash and feedback reports you choose to share with us. See Apple Privacy Policy.
Google Drive
Where your optional backup is stored, in your own account (section 2h). See Google Privacy Policy.
Open Food Facts
Product lookup using a barcode, described in 2j. See Open Food Facts Privacy Policy.
5. Data retention
App data lives on your device until you clear it or uninstall the app. Your optional Google Drive backup remains until you remove it from Drive. Clearing this phone's records does not delete that backup.
Crash reports and their associated identifiers are kept by Firebase for 90 days before starting removal from live and backup systems.
Our custom usage events in Firestore are not automatically deleted after a fixed period. They remain until manually deleted. Turning off the custom usage setting stops new events from that path; it does not erase earlier records. If you provide an installation identifier, we can check for records that can be associated with it when handling a deletion request.
Google Analytics event data retention is set to 2 months and user data retention to 14 months in our linked property. New activity can reset the user retention period. These controls do not limit most standard reports based on aggregated data and do not set a deadline for Firestore records.
Screen recordings (section 2g) are kept for 30 days in PostHog. That recording-content setting does not establish the lifetime of every related event, IP address or other SDK record.
Accounts and feedback remain until deleted through the request process in section 7 or other support handling. Removing the live Firebase sign-in account is separate from Google's backend deletion cycle. Firebase documents removal of authentication information from its live and backup systems within 180 days after account deletion is initiated; authentication IP logs are kept for a few weeks. Other SDK diagnostics follow their service-specific retention practices.
Firebase installation identifiers used by Remote Config and Cloud Messaging can remain until the installation is deleted through Firebase's APIs. Firebase documents removal from live and backup systems within 180 days after that deletion is initiated. Deleting a sign-in account does not itself delete a Firebase installation.
Waitlist email addresses are retained until you unsubscribe or request deletion by emailing hello@zerospoils.com.
6. Children's privacy
ZeroSpoils is not directed to children under 13. We do not knowingly collect personal information from children under 13. If you believe a child has provided us with personal information, please contact us and we will delete it.
7. Your rights
Depending on where you live, you may have the right to access, correct, or delete the personal data we hold about you. To make a request, email hello@zerospoils.com. We will respond within 30 days.
Delete your ZeroSpoils account
You can request deletion of your ZeroSpoils account and associated data without installing or signing in to the app. Opening this page does not delete your account or send a request.
- Email hello@zerospoils.com from the email address you use to sign in to ZeroSpoils. Use the subject "ZeroSpoils account deletion" and tell us that you want your account and the data linked to it deleted.
- We verify that you own the account before acting. We may ask you to confirm your request from that address; we never ask for your password or sign-in codes.
- We respond within 30 days with the next steps and timing. A request is complete only after we confirm the outcome.
What we delete
We delete your ZeroSpoils sign-in account and profile held with Firebase, your feedback and other records linked to your account. We also arrange deletion of identifiable linked data held by our service providers, such as a recording identified by your feedback. Deleting your ZeroSpoils account does not delete your Google Account.
What stays under your control
An account-deletion request does not erase inventory or other records on your phone, or backups in your own Google Drive. Use Delete All Data in the app to remove this phone's records, and manage the hidden ZeroSpoils backup separately in Google Drive's app settings. Back up anything you want to keep before clearing local data.
Retained data and confirmation
We do not keep a live account profile or account-linked feedback after confirming their deletion. Provider backup removal can take longer, as explained in section 5. If a legal or security obligation requires us to retain specific records, we explain what is kept, why and for how long in our response.
Unlinked crash reports and usage events may not be identifiable from your account email and follow the retention periods in section 5. If you have an installation or recording identifier, include it so we can check for additional linked records. Turning off analytics or signing out does not itself delete data already sent.
8. Changes to this policy
We may update this policy from time to time. When we do, we will update the effective date at the top of this page. If the changes are material, we will notify waitlist subscribers by email. Continued use of ZeroSpoils after changes are posted constitutes your acceptance of the updated policy.
9. Contact
11895079 Canada Inc.
Privacy contact: the founder, hello@zerospoils.com