Inspiration
The 2019–2020 Black Summer fires burned over 5.8 million hectares in Victoria, Australia alone — killing an estimated 3 billion animals and displacing thousands of people. What struck us most was not just the scale of the disaster, but how unprepared communities were. People had little access to reliable, hyperlocal, and actionable fire risk information before the fires reached them.
We asked ourselves: what if a system could predict dangerous fire conditions days in advance, identify which wildlife habitats are most at risk, and estimate the environmental impact — all in real time? That question became ClimFire.
What it does
ClimFire is a real-time forest fire risk intelligence system for Victoria, Australia.
- 7-Day Fire Risk Forecast — a Machine Learning model predicts daily fire risk levels (LOW / MODERATE / HIGH) based on live climate data fetched from the Open-Meteo API
- Interactive Risk Map — Victoria's five major protected areas are displayed on a dark map, color-coded by their structural fire vulnerability
- Wildlife Impact Dashboard — six endangered species native to Victoria are monitored in real time, each with a dynamic alert that reflects the current weekly risk level
- Environmental Impact Calculator — users can simulate a fire scenario by selecting risk level, duration, and protected zone to estimate hectares affected, trees threatened, CO₂ released, and animal populations at risk
How we built it
We built ClimFire in four distinct phases, each focused on a core skill:
Phase 1 — API Integration We connected to the Open-Meteo Forecast and Archive APIs using Python and requests, pulling real-time and historical climate data for Victoria.
Phase 2 — Machine Learning We downloaded 10 years of historical climate data (2015–2024), engineered a "consecutive dry days" feature from raw precipitation data, labeled 3,653 days with fire risk levels based on Bureau of Meteorology thresholds, and trained a Random Forest Classifier using scikit-learn. The model achieved 99% accuracy on 731 unseen test days.
Phase 3 — Web Dashboard We built a Flask backend that serves live predictions via a REST API, and a vanilla HTML/CSS/JavaScript frontend that consumes it. The interactive map was built with Leaflet.js using CARTO dark tiles. Flames in the background are CSS-only animated elements.
Phase 4 — Deploy We deployed the full stack to Render using Gunicorn as the production server, with the GitHub repository connected for automatic redeploys on every push.
Challenges we ran into
Imbalanced training data — initially, 99.1% of labeled days were LOW risk because Victoria's climate is mild most of the year. We had to carefully tune the labeling thresholds to achieve a realistic distribution across all three risk classes without fabricating data.
API changes — the Open-Meteo API had renamed a variable (
relativehumidity_2m_max→relative_humidity_2m_max) which caused our first API call to fail with a 400 error. Debugging this taught us to always validate API responses carefully.Feature engineering — raw precipitation data alone was not enough. We had to build the "consecutive dry days" counter from scratch by iterating through the historical dataset, which turned out to be the second most important predictor in the model.
Accomplishments that we're proud of
- A Random Forest model that achieves 99% accuracy on unseen climate data
- The consecutive dry days engineered feature, which the model ranked as the second most important variable — validating our domain knowledge about fire risk
- A fully deployed, publicly accessible application with live data refreshed on every page load
- Connecting fire risk predictions directly to endangered wildlife alerts — something most weather apps completely ignore
- Building the entire project from scratch in Python as a first-year developer
What we learned
- How to consume REST APIs and handle real-world data quality issues
- The complete Machine Learning pipeline: data collection → cleaning → feature engineering → training → evaluation → deployment
- How a Flask backend serves a frontend through a REST API
- How to deploy a Python web application to production using Render and Gunicorn
- That the most important insight in a dataset is often not in the raw data — it has to be engineered from it
What's next for ClimFire — Forest Fire Risk Intelligence System
- SMS alerts — integrate Twilio to send fire risk warnings to registered users in affected areas, making ClimFire accessible in low-connectivity environments and covering the Offline & Rural track
- NASA FIRMS integration — connect to NASA's real-time active fire detection satellite data to validate and improve model predictions
- Expand coverage — extend the system to other fire-prone regions such as California, the Amazon, and southern Europe
- Push notifications — allow users to subscribe to daily risk alerts for specific protected zones
- Historical fire overlay — display past fire perimeters on the map to provide context for structural risk levels
Built With
- css
- flask
- html
- javascript
- leaflet.js
- open-meteo-api
- pandas
- python
- render
- scikit-learn


Log in or sign up for Devpost to join the conversation.