AI Weather is a free Android weather app with no ads and no account. It shows the forecast, air quality and UV, and it can read you a short spoken AI morning briefing for your location. I'm Balaji, a freelance dev (Flutter and QA automation), and this is a quick write-up of how the briefing works and why I built it the way I did.
Play Store: https://play.google.com/store/apps/details?id=com.aiweather.weather
Demo video (unlisted, no audio): https://www.youtube.com/watch?v=NC6xgVWT7j4
The idea
Most weather apps give you a grid of numbers and leave the interpretation to you. I wanted something closer to a friend glancing out the window and saying "bring a jacket, air quality is poor this morning". So the app takes the data it already has for your location and turns it into a few spoken sentences.
How the briefing is generated
- The app fetches weather, air quality and UV data for your location.
- It builds a small, compact JSON payload from that data. Raw upstream API responses are never sent anywhere.
- The payload is sent to a server-side endpoint that calls the language model and returns the briefing text.
- The app speaks the text using text-to-speech.
The model call happens on the server on purpose. That way there is no API key on the device, so nothing to extract from the APK.
When the AI is down
A morning briefing that goes silent is worse than a plain one. If the AI request fails, the app falls back to a templated sentence built from the same data. It is less charming, but it is always there.
Caching
The briefing text is cached per weather payload. If the weather payload is the same, the app reuses the existing text instead of making another AI call. That keeps the server load down and makes repeat opens instant.
Stack
The app is built with Flutter and targets Android. Nothing exotic: a thin client, a server-side step for the AI part, and a fallback so the feature degrades gracefully.
What's next
I'm planning a Product Hunt launch on November 3, 2026. Until then I'd love feedback, especially on whether the briefing tone is useful or annoying, and what you would want it to mention first.
If you try the app, tell me what broke or what felt off in the comments.
Top comments (1)
Same setup as ours: the model call lives on the server, so there's no key in the APK. It paid off in a way we didn't plan for: when OpenAI retired the small model we were using, we changed it in the server config and the installed versions started working again without an app update.
On the cache: keyed on the raw weather payload, it may rarely hit, because temperature or AQI moves a little on almost every fetch (14.2 vs 14.3). Rounding the values the briefing actually mentions (whole degrees, AQI band, UV level) before building the key should make repeat opens hit far more often, without changing what gets said.
On what to mention first: whatever changed since yesterday or needs action (rain later, air worse than usual), then the rest. And write the text for the ear: "14 degrees" and "air quality is poor" sound better than "14°C" or "AQI 152", which some TTS engines read out oddly.