clothescast

Privacy Policy

Last updated: 2026-06-21

ClothesCast is a daily weather-insight app for Android. This policy describes what data the app handles, where it goes, and what control you have over it.

TL;DR

Who we are

ClothesCast is an open-source Android app developed by Mikel Ward. The source code is at https://github.com/mikelward/clothescast.

Data the app handles

Approximate location

Calendar events (optional, off by default)

Calendar-sourced theming (optional, off by default)

Notifications

Diagnostic logs and crash reports

Smart Home / Home Assistant bridge (optional, off by default)

Online TTS: shared key by default, your own key on request

Online TTS (the Gemini voice) has two paths.

Third-party services

ClothesCast talks to these services on your behalf. Their own privacy policies apply to anything they receive:

Service What we send When
Open-Meteo Coarse coordinate (forecast); your typed search text when you use the Settings location picker Always for forecast; only when you search for a place name
Google’s geocoding service (via Android’s Geocoder on Play Services devices), governed by Google’s Privacy Policy Coarse coordinate Always on Play Services devices (city / country lookup for the Today header); skipped on AOSP devices
Google Weather API (Google Maps Platform), governed by Google’s Privacy Policy Coarse coordinate and your own Gemini API key Only if you enable the “Google” forecaster on the Forecasters page and have set your own Gemini key
Google Firebase Authentication An App Check attestation, to mint and refresh an anonymous identifier (no name, email, or password) First use of the shared-key path, then periodic token refreshes
ClothesCast TTS proxy (Cloud Function, ClothesCast-operated) The short rendered insight sentence, an anonymous app identifier (as a signed Firebase ID token; plus a Firebase Installation ID during the current rollout), a Firebase App Check token, and the Gemini model name Online TTS with the shared key (default)
Google Gemini API The short rendered insight sentence (forwarded by the proxy, or sent directly when you use your own key) Online TTS, either path
Your self-hosted MQTT broker (e.g. Mosquitto inside Home Assistant) The short rendered insight sentence; the outfit-card image, TTS audio, and muxed MP4 on sibling topics; an update timestamp; and a calendar-derived has_events boolean (no event titles, times, or locations) — all as retained MQTT messages Only if you opt in to the Smart Home bridge and configure a broker
Analytics / crash-reporting service (e.g. Firebase Crashlytics + Google Analytics for Firebase) Aggregate usage events and crash diagnostics — see “Analytics and crash reporting” below for what’s in and out Possibly always, in all builds

These providers act as service providers fulfilling a single request and returning the result. When the ClothesCast TTS proxy is in the path, it adds the anonymous identifier and App Check token described above; when you use your own Gemini key, the request goes straight to Google and no anonymous identifier is attached.

Note on Gemini API: request inputs are not retained for training by default. See the provider’s policy linked above for the authoritative terms.

What we do not collect

Your controls

Analytics and crash reporting

To spot bugs and decide which features are worth keeping, ClothesCast may send two kinds of payload to a third-party reporting service (e.g. Firebase Crashlytics + Google Analytics for Firebase, or equivalent). This may be present in all builds and run for all users by default; the goal is to inform product decisions, not to identify you.

What’s sent:

What’s not sent — these are hard limits, not “best-effort”:

The reporting service receives only what’s described above and is bound by its own privacy policy (linked from the third-party services table above once a specific provider is chosen). ClothesCast is open source, so you can audit exactly what’s instrumented at https://github.com/mikelward/clothescast — or build a copy with the reporting calls stripped out, if you’d rather not participate.

Children

ClothesCast is not directed at children under 13 and does not knowingly collect personal data from them.

Changes

If this policy changes, the updated version is committed to https://github.com/mikelward/clothescast/blob/main/PRIVACY.md and the “Last updated” date at the top reflects the change. A short summary of each material change is added to the Changelog below, and material changes are also noted in the app’s release notes.

The full revision history of this file is viewable on GitHub: View all changes to PRIVACY.md →

Contact

Open an issue at https://github.com/mikelward/clothescast/issues or email the address listed on the Play Store listing.

Changelog

View full revision history on GitHub →