Privacy Policy
This policy covers the two MeterChamp apps that Harmony Communities provides: the MeterChamp app for iPhone and Android phones, made for the App Store and Google Play (called "the store app" below), and the MeterChamp web app at mc.harmonydev.ai (called "the web app" below). Each statement applies to both apps unless it names one.
Our website, harmonycom.com, has its own privacy policy at https://harmonycom.com/privacy.
Who we are
MeterChamp is provided by Harmony Communities, 3121 W. March Ln. Ste. 200, Stockton, CA 95219, phone (209) 932-8747.
MeterChamp is a work app that Harmony Communities provides to its staff and park managers to photograph utility meters and record readings. There is no sign-up in the apps: Harmony Communities creates each account.
What the apps collect and how
- Sign-in details. Your work email address and password, which you type when you sign in. Your password goes to our sign-in provider, which checks it. The apps do not save your password on your phone or in the meter reading records.
- Your account. An account identifier and a sign-in session, kept on your phone so you stay signed in and so the app can show you the parks you are assigned to. Each photo record notes which account took it.
- Meter photos and readings. Photos of utility meters that you take in the app, and the details of each reading: the park, the unit, the meter type, the time the photo was taken, any reading you type, and a photo-quality score. Each upload also carries an identifier the app gives the photo and, when available, the AI's quick read of the sticker on the meter and whether the unit and the meter type were picked by you or taken from the AI's suggestion. The stored photo file is labelled with the park, the time the photo was taken and the account that took it.
- Basic device information sent with each upload: in the store app, the app's version and the phone's operating system (Android or iOS) with a number that identifies its version; in the web app, the web browser's identification string.
- Crash and error reports. What the app was doing when an error happened, and technical details about the app and the phone or browser it ran on, such as the operating system. Both apps also send our crash-reporting service a short record each time they are opened (the web app, each time a page is opened), so we can see how often they run without crashing. The web app also sends a small sample of performance timings, for example how long a page took to load. Both apps also send a short summary at the end of a scan session, even when nothing went wrong: for example how many photos were taken, how long the session lasted and how fast the camera worked. Our server also sends a small sample of performance timings for the requests it handles from both apps. A report or summary can also include the app's recent log lines (in the store app, for example, a scan session's summary and each photo's file name, size and time taken) and the web addresses of the app's recent requests. When our server hits an error while handling a request from either app, its report can keep that request's web address. A photo upload's address carries that photo's details, such as the park, the unit, the meter type, any reading you typed and the AI's quick read of the sticker, and in the web app also the location. The web app and our server remove those details, other than the park, from the web addresses they send to our crash-reporting service. Reports sent before we made this change can still hold them for as long as reports are kept (see "How long we keep it").
- Network address. As with any online service, the servers that run MeterChamp receive your phone's IP address with each request.
Location. The store app does not collect your location and does not ask for location permission. The web app asks your browser for the phone's approximate location only at the moment you take a meter photo. It uses the phone's quick estimate rather than a high-accuracy GPS fix. A photo never waits for a location: if you do not allow location, or the location is slow to arrive, the photo is taken anyway and saved with the most recent location from the last five minutes, or with none. The latitude, longitude and accuracy (in meters) are saved with that photo's record and with the stored photo file. They are kept as a record of where each photo was taken. The web app does not ask for your location at any other time, and it does not follow where you go. You can allow or block location for mc.harmonydev.ai in your browser's settings at any time.
Notifications. If you turn on notifications in the web app, we save your browser's notification address and keys, and its identification string, linked to your account. We use them to tell you when someone reviewing a photo you took rejects it and asks for a retake. Each message says that a meter photo was rejected and can include the reason given (or, when the reviewer gave none, the note left when the AI could not read the photo), with a link to that photo in the app. The messages do not name the park or the unit. You can turn notifications off in the web app or in your browser's settings at any time. The store app does not use push notifications. Both apps also list these notices on an alerts screen inside the app.
Stored on your phone. Until a photo uploads, it is held in the app's storage on your phone, so photos taken without a signal are not lost. Once it uploads, the app removes that waiting copy from your phone. To show you your photos, the apps can keep full-size copies of uploaded photos on the phone: the web app lets your browser store a copy of each photo it shows you and reuse it for up to a year, and the store app keeps a copy of each photo shown on its Track screen in its cache folder. The apps also keep your sign-in session, offline copies of screens such as your dashboard, and your settings on the phone. The web app uses cookies only to keep you signed in, to remember the park you selected, and to remember one capture setting. It uses no advertising or tracking cookies.
What MeterChamp does not collect. Your contacts, other photos on your phone, advertising identifiers, or information about how you use other apps. MeterChamp shows no ads.
How we use it
To record meter readings for the parks we manage, to read the unit sticker in meter photos automatically so the app can suggest the unit and staff can confirm it, to bill utilities, to tell you when a photo needs a retake, to find and fix errors in the apps, and to measure how well the apps and our server work.
How the AI is used: when you take a meter photo while the phone is online, the app sends the photo to our server (the web app sends a smaller copy), and our server asks an AI model to read the unit number on the sticker on the meter, so the app can suggest the unit. After the photo uploads, our server can ask the AI to read the sticker again from the stored photo, so staff can check the unit. The AI is not asked to read the meter's own numbers.
Who processes it for us
- Supabase: sign-in, accounts and the database that holds the readings.
- Amazon Web Services: storage of meter photos.
- Vercel: hosting for the web app and for the MeterChamp server that both apps send photos and readings to, and the AI Gateway that passes meter photos to Google's AI model.
- Google: an AI model (Gemini) that reads the unit sticker in meter photos, reached through Vercel's AI Gateway.
- Sentry: crash and error reports, the records of when the apps are opened, both apps' scan summaries, and the samples of performance timings from the web app and our server.
- Rent Manager: utility billing. It receives meter readings only when our office enters or imports them, never directly from the apps.
The apps and our server send data to these services only for the jobs listed above, and send nothing to Rent Manager.
Each of these services is bound to protect the data, with the same or equal protection as this policy describes. We do not sell this data.
The apps send your data to our servers only over encrypted (HTTPS) connections, and only signed-in users can get to the photos and readings, limited to what their role and assigned parks allow; where our office's review tool shows a photo through a private link, that link stops working after 15 minutes.
In the web app, notifications are delivered through the push service run by your browser's maker (for example Apple, Google or Mozilla); each message is encrypted with your browser's notification keys on the way.
The web app loads a small piece of code from jsDelivr, a public code-delivery service, to shrink a copy of a photo before the AI reads it. When that code loads, jsDelivr receives your phone's IP address and the browser's identification string, as any website does; it receives no photos or readings.
How long we keep it
- Meter photos and readings, including the web app's location for each photo: kept for utility billing and archived for backup, unless our office removes them (for example a duplicate or a test photo). When our office closes a park's month, the photos from that month that were rejected for a retake are deleted, together with their stored photo files. You can also remove a photo you took that is not yet reviewed, which hides it but keeps it, or one that was confirmed, which can delete its record and its reading. In the web app's review screen, any user assigned to a park can remove another user's photo at that park in the same two ways. Removing a photo in the apps leaves the stored photo file in our storage.
- Web app notification settings (your browser's notification address, keys and identification string, and whether notifications are on): removed if your account is deleted. Past notifications about your photos are kept with those photos for as long as the photos are kept.
- Photos waiting on your phone: removed from the phone once they upload.
- Copies of uploaded photos on your phone: in the web app, stored by your browser, which may reuse each copy for up to a year; in the store app, kept in the app's cache folder.
- Crash and error reports: kept only as long as needed to run and fix the service, then deleted or archived.
- Your account: kept only as long as needed to run and fix the service, then deleted or archived.
- Network addresses in the servers' logs: kept only as long as needed to run and fix the service, then deleted or archived.
Deleting your data
To ask for your MeterChamp account or your data to be deleted, contact Harmony Communities by phone at (209) 932-8747, by email at appstore@harmonydev.ai, by mail at Harmony Communities, 3121 W. March Ln. Ste. 200, Stockton, CA 95219, or through the contact form at https://harmonycom.com/contact. Readings that are part of utility billing records may need to be kept for those records. Our database does not allow an account that has taken photos to be removed outright, so for such an account the photos and readings are kept as billing records, and on request we close the account by turning off its sign-in.
Questions
For any question about this policy, contact Harmony Communities in the same ways.