Inspiration
Over the past decade, satellite technology and weather forecasting have advanced rapidly, yet millions of people across rural Africa are still devastated by preventable climate disasters. The problem isn’t a lack of data it’s the last-mile communication gap.
Modern early warning systems release technical forecasts via dashboards, PDFs, and mobile apps. These platforms fail rural communities where internet is unreliable, smartphones are rare, and digital literacy is low. Communities receive forecasts that are too technical, too late, or completely inaccessible. We built Radio Climate to bridge this gap by transforming complex climate intelligence into localized, actionable advice delivered through the most trusted medium in rural households: the FM radio.
What it does
Radio Climate is an autonomous, open-source climate broadcasting engine. Instead of reading technical weather data, it acts as an intelligent radio presenter that tells listeners exactly what actions to take, where, and when.
Converts Data into Action: Changes warnings like "72-hour rainfall expected" into "Farmers in Njoro should harvest mature crops today and avoid crossing River Njoro tomorrow morning."
Remembers Past Disasters (Climate Memory): Uses historical disaster logs to recommend interventions that actually worked in that specific region during previous events.
Simulates Impact: Evaluates the consequences of action versus inaction to emphasize why early action matters.
Automates Broadcasting: Translates advice into local languages, generates natural offline speech, and schedules audio announcements for local FM radio transmitters without human intervention.
How we built it
Data Ingestion: A Python pipeline (geopandas, rasterio, OWSLib) regularly pulls open geospatial forecast layers (WCS/WFS) directly from IGAD/ICPAC’s East Africa Hazards Watch.
Reasoning Engine (Climate Action Agent): Ollama running Llama 3.1 8B parses raw spatial data into structured, action-oriented radio scripts. The system still support other providers
Climate Memory (RAG): PostgreSQL with pgvector stores historical disaster post-mortems and retrieves relevant community lessons.
Speech Generation: Piper TTS and Meta’s MMS (Massively Multilingual Speech) generate clear, offline audio files in local regional dialects.
Radio Automation: Liquidsoap and AzuraCast handle audio playout, automatically ducking background streams to insert urgent climate announcements into local radio broadcasts.
Challenges we ran into
Parsing OGC Geospatial Layers: Extracting precise rainfall anomalies for micro-administrative boundaries from raw ICPAC grid files required heavy geospatial data processing.
Eliminating AI Hallucinations: In early warning systems, incorrect advice can be dangerous. We had to strictly constrain the LLM's system prompt to synthesize only verified ICPAC data and ground-truth historical logs.
Offline Local Language TTS: Finding lightweight, low-latency neural Text-to-Speech models that could generate natural-sounding local languages on CPU-constrained edge hardware.
Accomplishments that we're proud of
End-to-End Automation: Built a working prototype that automatically ingests live satellite data and outputs broadcast-ready audio in under two minutes.
Zero Cloud Dependency: Achieved full offline execution on local hardware, keeping operational costs at $0 for resource-strapped community stations.
Action-First Translation: Successfully trained our agent prompt to turn abstract millimeters of rain into practical agricultural and safety advice.
What we learned
Communication beats Precision: A slightly less precise forecast communicated as clear human action saves far more lives than a hyper-accurate forecast hidden inside a complex dashboard.
What's next for Radio Climate
Human-in-the-Loop (HITL) Dashboard: Add a simple web UI for local disaster managers to review and approve AI-generated scripts before broadcast.
Pilot Program: Partner with a community radio station in East Africa to test live ACBS broadcasts during an upcoming rainy season
Log in or sign up for Devpost to join the conversation.