This is a submission for the Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass
What I Built
foliage-walker takes a place name and finds the nearby named trail with the most tree cover. It picks the best-weather day this week, works out when to leave so you finish before sunset, and writes a short invitation. It also exports a GPX file, so you can load the route into an offline map and put your phone away.
It's for walkers and runners who want to spend less time planning on a screen.
I live in Bengaluru, where there's no autumn colour, so the tool had to learn to say so. In places with autumn forest it ranks trails by broadleaf (deciduous) cover. Where it doesn't, it falls back to overall green cover and tells you why.
Demo
Code
punithk-verse
/
foliage-walker
find the best fall-colour trail near you, pick the day, go outside. Open pieces: OpenStreetMap (Nominatim + Overpass), Open-Meteo, and a local open-weight LLM served by Ollama. No API keys, no accounts. Usage: python foliage_walker.py "Cubbon Park, Bengaluru" --radius 8 --min-km 2
foliage-walker
Give it a place. It finds the nearby named trail with the most tree cover, picks the best-weather day this week, works out when to leave before sunset, and has a local open-weight LLM write a short invitation. It exports a GPX file so you can load the route into an offline map and put your phone away.
Built for the Hacktoberfest Open-Source AI Challenge, Week 1: Touch Grass.
Open pieces
- OpenStreetMap (Nominatim + Overpass): trails, woods and parks
- Open-Meteo: elevation and 7-day forecast
-
Ollama + an open-weight model (tested with
qwen2.5:1.5b): writes the invitation. No API keys or accounts.
Run it locally
ollama pull qwen2.5:1.5b
python foliage_walker.py "Agara Lake, Bengaluru" --radius 4 --min-km 1.5 --model qwen2.5:1.5b
Python 3 standard library only. Outputs plan.md and route.gpx (open in Organic Maps or OsmAnd).
Run it on Google Colab
The author developed and tested it on a…
How I Built It
- OpenStreetMap (Nominatim + Overpass): named trails plus mapped woods and parks. Each trail is scored by the share of its points inside green polygons (point-in-polygon).
- Open-Meteo: elevation and the 7-day forecast, which is how it picks the day.
-
A local open-weight model (
qwen2.5:1.5bvia Ollama): writes the invitation. The code computes every fact (trail, day, leave-by time) and the model only gets those. This was deliberate. In my first version the model wrote the whole plan, invented details like "flat path", and repeated a nonsense colour-peak date as fact. I built and tested this on a free Google Colab runtime, because my laptop had under 600 MB of free RAM. The tool is designed to run locally on modest hardware: it needs only a small model (1.5B parameters worked), standard-library Python and Ollama. I did not run it on my laptop, so "runs on a small machine" is the design goal, not something I verified there. What I verified is the full pipeline on Colab, with the same open model and the same code you'd run at home I used an AI coding assistant to help write and debug the script. The open-weight model, open data sources and the design decisions (like giving the model only code-computed facts) are what the project runs on.
Why Does Open Innovation Matter?
- Privacy: the model runs locally, so where you walk and when never goes to someone else's server.
-
Swappable:
--modelchanges the model with one flag, so anyone with a bigger machine can use a bigger model. - Borrowable compute: when my laptop was too small, I ran the same open model on a free Colab machine with no API key or quota.
- Open data was the point: the tool is only as good as OpenStreetMap tagging, and anyone can improve the map.
- Free: no keys, no accounts, no bill.

Top comments (0)