Privacy Policy
This policy explains exactly what information Meteredo collects, why it's needed, and how it is stored and used — written directly from the app's source code, not a generic template.
1. Introduction
Meteredo ("we", "us", "our") is developed and operated by Mubashir e Azam. This Privacy Policy explains what information the Meteredo mobile app collects, why we collect it, how it's used and protected, and the choices you have. By creating an account or using Meteredo, you agree to the practices described here.
2. Information We Collect
Personal Information
When you create a Meteredo account, we collect:
- Full name — used on your profile and shown to other members if you join a family group.
- Email address — used to sign in and to send password-reset links.
- Phone number — collected at sign-up; this field is optional.
- Password — handled entirely by Firebase Authentication. Meteredo never stores your raw password itself.
- Profile photo URL — populated automatically if you sign in with Google, or uploaded manually at any time from your Account screen using your camera or photo gallery. Manually uploaded photos are hosted with Cloudinary; see Cloud Storage & Image Hosting below.
- Firebase user ID — a unique identifier used internally to link your data across meters, readings, bills, and family groups.
Device Information
To keep authentication and notifications working, Firebase Authentication and Firebase Cloud Messaging handle some basic technical information automatically, including a device push notification token (so we can deliver alerts to the right device) and your IP address, which is processed transiently by Google's infrastructure over encrypted HTTPS connections. We do not separately log or analyse this information ourselves.
Language Preferences
Meteredo supports multiple interface languages, including English and Roman Urdu. When you select a language, your language preference is stored locally on your device using local storage so the app can remember your selection. This preference is used to display the interface in your chosen language.
The language preference is not transmitted to Meteredo's servers solely for the purpose of saving this setting. You can change your preferred language through the app's language settings.
Usage Data
Usage data is the utility information you choose to enter while using the app:
- Meters — name, owner name, reference number, electricity provider, meter type, billing/reading day, current reading, previous month's reading, units consumed this month, subsidy status, active/inactive status, and an optional photo.
- Readings — the previous and current reading values, the calculated difference, the running monthly total, an optional photo, the date and time recorded, optional notes, and who recorded the entry.
- Bills — a photo of your electricity bill (and optionally a payment receipt photo), organized by meter so you can view your bill history at a glance. Meteredo does not record bill amounts, due dates, or payment status, and does not perform any billing calculations — bills are stored purely as images for your own reference. Meteredo does not collect or process financial information.
- Family data — if you create or join a family group, we store the family name, a generated invite code, and the list of member accounts in that group.
3. Permissions We Request
Meteredo only requests the Android permissions it actually needs to function. Here is every permission declared in the app, and exactly why:
| Permission | Why We Need It | Required? |
|---|---|---|
| Internet access | Required for every cloud feature — signing in, syncing meters/readings/bills, uploading photos, and AI reading capture. | Yes |
| Network state | Lets the app check for a connection before making a request, so it can show a clear error instead of hanging. | Yes |
| Camera | Used only when you choose to photograph a meter or capture a reading with the camera. | No — optional feature |
| Read media images (not declared) | Not requested. Picking a photo from your gallery uses Android's built-in system Photo Picker, which lets you choose a photo without granting the app access to your wider media library. The legacy "Read external storage" permission below covers the gallery picker only on older Android versions that don't support the system Photo Picker. | No — not used |
| Post notifications | Needed to display push and local notifications, such as family reading alerts. | No — optional feature |
| Read external storage (legacy, Android 12 and below) | Supports the gallery photo picker on older Android versions. | No |
| Write external storage (legacy, Android 9 and below) | Supports temporary image-cropping cache files on older Android versions. | No |
Fingerprint and face-ID login use your device's built-in biometric hardware through the
local_auth library, which doesn't require a manifest permission you'd see listed above.
Meteredo never sees or stores your actual fingerprint or facial data — the operating system only tells
the app whether the check passed or failed.
Meteredo never requests access to your location, contacts, SMS or call log, or microphone. None of these are used anywhere in the app.
4. Authentication & Your Account
You can sign in to Meteredo three ways, all backed by Firebase Authentication:
- Email & password — a standard account secured by Firebase.
- Google Sign-In — one-tap OAuth login using your Google account.
- Biometric unlock — a fingerprint or face-ID check that unlocks a session you've already signed in to before. It is a convenience layer, not a separate identity.
You can reset a forgotten password via a secure link emailed to your registered address. To keep you
signed in between app launches, your session is stored using your device's encrypted, OS-level secure
storage (Android Keystore or iOS Keychain via the flutter_secure_storage library) rather than
as plain text.
5. Firebase Services We Use
Meteredo is built on Google's Firebase platform. Every Firebase product listed below is a Google Cloud service, covered by Google's own security and data-processing commitments.
| Service | What It Does |
|---|---|
| Firebase Authentication | Manages sign-up, sign-in, and password resets for all three login methods. |
| Cloud Firestore | The real-time database that stores your meters, readings, bills, and family data, and pushes updates instantly to every connected device. |
| Firebase Cloud Messaging | Delivers push notifications, such as family reading alerts. Requires storing a device notification token. |
| Firebase App Check | An anti-abuse layer that verifies requests are coming from the genuine Meteredo app rather than a bot or a tampered client. It does not collect personal data. |
| Firebase Crashlytics | Collects crash logs, stack traces, and non-fatal error diagnostics to diagnose technical bugs and maintain app stability. |
| Firebase Performance Monitoring | Collects app launch durations and network request latency to ensure optimal app performance and responsiveness. |
6. Third-Party Services
Beyond Firebase, a small number of third-party services support specific features:
| Service | Data It Receives | Purpose |
|---|---|---|
| Cloudinary | Photos you upload for meters, readings, bills, or receipts. | Image hosting and content delivery (CDN). |
| Google Sign-In | Your Google account token and basic profile info (name, email, photo). | One-tap authentication, only if you choose this sign-in method. |
| Google Generative AI (Gemini) | The cropped meter-photo image you capture. | AI-assisted reading extraction — see the next section for full detail. |
7. AI & Image Processing (OCR)
When you use camera-based reading capture, here's exactly what happens to your photo:
- You photograph the meter and crop the image down to just the digit display.
- That cropped photo is sent securely over HTTPS to Google's Generative AI service — specifically the Gemini 2.5 Flash model.
- Gemini returns a predicted numeric reading based on the digits it detects.
- You always see the predicted value on a confirmation screen, and can accept it or type a correction. Nothing is saved automatically without your review.
Meteredo does not use any on-device OCR library or text-recognition package to read your meter — reading extraction runs exclusively through the cloud-based Gemini model described above.
Prefer not to use AI capture? Manual reading entry is always available as an alternative — just type the value yourself.
8. Cloud Storage & Image Hosting
Photos you attach to meters, readings, and bills are uploaded to Cloudinary over an encrypted connection and referenced by URL in your Firestore records. This means these images are hosted by a third party outside Google's Firebase ecosystem, specifically for image storage and fast delivery.
9. How We Use Your Information
- To create and operate your account, and keep you signed in.
- To sync your meters, readings, and bills in real time across your devices.
- To share the relevant data with other members of a family group you join or create.
- To extract meter readings using AI when you choose camera-based capture.
- To send push and local notifications, such as family reading alerts.
- To maintain, secure, and improve the service.
Meteredo does not use your data for advertising, and does not sell your data to data brokers or any other third party.
10. Data Sharing
The most important thing to understand about family sharing: joining or creating a family group means your meters, readings, and bills become visible to every other member of that group. This is core to how the feature works — it's what lets a household collaborate on tracking electricity usage. Only share your family invite code with people you trust.
Outside of family sharing, we do not share your data with any third party except the service providers listed in this policy (Firebase/Google and Cloudinary), and only to the extent needed to operate the app. We do not sell your data.
11. Data Security
- All network traffic uses HTTPS/TLS encryption in transit.
- Data stored in Cloud Firestore is encrypted at rest, managed by Google.
- Your sign-in session is stored using OS-level secure storage (Android Keystore / iOS Keychain), not plain text.
- Firebase App Check helps ensure backend requests come only from genuine app installs.
No method of transmission or storage is 100% secure. We encourage you to use a strong, unique password and keep your device itself secure (screen lock, up-to-date OS).
12. Data Retention
We keep your data for as long as your account remains active. There is currently no automatic expiry of old readings, meters, or bills — your history is preserved so you can track long-term consumption trends. Your data is deleted when you request account deletion; see Deleting Your Account below for the full process and timeline.
13. Your Rights & Choices
- Access & review — all your data is visible directly within the app.
- Correction — update your name, phone number, and profile photo from the Account screen (Settings → Account). You can upload a new photo from your camera or gallery, or update it at any time.
- Deletion — request full account and data deletion at any time; see Deleting Your Account.
- Leave a family — you can withdraw from a family group at any time.
- Notifications — turn push notifications on or off anytime from Settings → Notifications inside the app, or from your device's system settings.
If you have formal data-protection rights under a law such as the GDPR or CCPA (for example, a right to data portability), you can exercise them by reaching out through the Contact Us section below. Meteredo is developed by a small independent team, and we'll respond on a best-effort basis.
14. Deleting Your Account
You can permanently delete your complete Meteredo account directly from inside the app by navigating to Settings → Delete Account → "Yes, Delete My Account", or by submitting an email deletion request if you cannot access the app. Visit our Delete Account page for step-by-step instructions and full details on what data gets removed. Email deletion requests are completed within 30 days.
15. Changes to This Policy
We may update this policy as Meteredo evolves. When we do, we'll update the "Last updated" date at the top of this page, and we'll call out any material changes clearly. Continuing to use the app after a change means you accept the updated policy.
16. Contact Us
Questions about this policy or how your data is handled? Reach us at mubashir.support@gmail.com or visit our Contact Support page.