This is a submission for the Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass
What I Built
I'm from Satara, Maharashtra, and I wanted my laptop to tell me where to go this weekend without sending my mood, my location, or my habits to someone else's server.
Satara Weekend Picker is a day planner for Satara district. You tell it your mood, who you're travelling with, your fitness level, your transport, and how many hours you have. It returns a timed itinerary of nearby stops grouped by area, a carry list, a leave time, and a short friendly overview written by Gemma running locally on my laptop.
Who it’s for: anyone planning a day trip around Satara, and anyone who wants to adapt it to their own district, since the places and tips are plain open JSON files.
How it gets people outside: the planning takes a minute and then you leave. The app is meant to be the shortest part of the day.
The part I'm proudest of is the loop afterwards. After a trip you answer four quick questions (how crowded, how was the road, best time, what stood out). You review the tip that will be shared, and only then is it saved. The next person's plan shows what past visitors said, for example "Based on 6 visits: 4 of 6 found it crowded."
Demo
I'm not sharing a live link. The model runs on my own laptop, so there is no hosted version, and exposing my machine through a public tunnel link isn't something I want to leave open. Here is what the app does, step by step.
1. Plan a day. I choose a mood, who I'm travelling with, my fitness level, my transport, and my hours. The app returns a timed itinerary, a leave time, a carry list, and a short overview written by Gemma running locally.
2. Share a tip after a visit. I answer four multiple-choice questions, check the tip exactly as other visitors will see it, and only then is it saved.
Pressing the location button finds the nearest listed place and offers to take a tip for it.
3. See what past visitors said. The next plan shows counts from real tips under each stop, for example how many visitors found a place crowded.
Code
shreyasGarud
/
weekend-outdoor-picker
A web app to suggest places to visit based on your mood
Weekend Outdoor Picker
🌿 Satara Weekend Picker
A local AI guide that plans your day in Satara, then asks you to come back and tell it what you found.
Built for the Hacktoberfest Open-Source AI Challenge: Week 1 (Touch Grass).
I'm from Satara, and I wanted my laptop to tell me where to go this weekend, without sending my mood, my location, or my habits to someone else's server. So I built a planner that runs an open-weight model (Gemma) locally, uses real weather, and learns from the people who actually visit these places.
📸 Screenshots
What it does
- Plans a day, not just a place. You choose your mood, who you're travelling with, your fitness level, your transport, and how many hours you have. The app builds a timed itinerary of nearby stops.
- Respects the real world. It pulls today's forecast, drops spots that are unsafe or out…
To run it yourself, you need Ollama and Python 3.8 or newer:
ollama pull gemma3:1b
git clone https://github.com/shreyasGarud/weekend-outdoor-picker
cd weekend-outdoor-picker
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
streamlit run streamlit_app.py
How the repo is organised:
-
spots.jsonandtips.jsonare the open data (places and visitor tips) -
spot_filter.pyandweather.pyhandle season, weather and safety filtering -
itinerary.pybuilds the timed plan and asks Gemma for the overview -
field_notes.pyhandles the guided tip questions and visitor summaries -
streamlit_app.pyis the web interface
Licensed under MIT. Anyone can add a place or a tip with a pull request.
How I Built It
Stack: Gemma 3 (the 1B model) served locally by Ollama, a Streamlit interface, Python 3.8, and the free Open-Meteo weather API. I developed it on a Ubuntu laptop with 7.6 GB of RAM and no supported GPU, so everything runs on CPU. I used an AI assistant to help plan the design and draft code and this write-up. I ran, tested, and edited everything myself.
The rule that shaped the design: the model never decides facts
Here is who does what:
| Job | Done by | Why |
|---|---|---|
| Season, weather and safety filtering | Plain code | Safety rules shouldn't depend on a small model's judgement |
| Choosing stops, timings, distances | Plain code | Facts need to be repeatable and checkable |
| Carry list and leave time | Plain code | |
| Visitor tips | Structured answers, counted in code | Counts across visitors beat one person's sentence |
| Friendly overview of the plan | Gemma, locally | Turning a finished plan into natural language is what a language model is good at |
The pipeline is: filter places by traveller profile (fitness, group, transport), then by season, weather and time available, then group the survivors by area and fit as many stops as the hours allow, then build the schedule, and only then ask Gemma to introduce the plan. Gemma never sees a place that failed the filters. If it errors or goes off-script, the app falls back to a plain sentence instead of breaking.
The thresholds (20 mm of rain counts as heavy rain, 38 °C counts as extreme heat, 40 km/h average road speed) are my own starting guesses, not measured values. They are easy to tune in the code.
Honest limits
- The place list is small and hand-written by me, so distances and timings are approximate.
- Tips are shared through the repo's
tips.json, not a live server, and they are unverified opinions with no moderation yet. - The weather lookup needs internet. The weather lookup needs internet, so the plan can’t be generated fully offline.
- A 1B model writes simple prose, which is why it only writes the overview.
Why Does Open Innovation Matter?
I want to be honest about this: a hosted API could write the same overview paragraph. What changes with an open-weight model is everything around it.
- Privacy: my mood and the places I'm planning to visit are handled by a model running on my own laptop, not a third-party service. The location check uses your position only to find the nearest place, and the app doesn't save it. When I opened the app on my phone through a tunnel, that traffic passed through the tunnel provider, so that setup was not private in the same way.
- Cost: it costs nothing to run. Ollama and Open-Meteo are free, and there are no per-request fees.
- Hardware: it runs on a modest laptop with no GPU, which is the kind of machine many people actually have.
- Swappable: changing the model is a one-line edit, so anyone can try another Gemma size or a different open model.
- Open data: the places and tips are plain JSON, so someone in another district can add their own places with a pull request.
Prize Categories
Best Use of Gemma: Gemma 3 runs locally through Ollama and writes the plan overview.








Top comments (1)
Official Platform Update
Security protocols have been updated for all developer accounts.