DEV Community

Shreyas Garud
Shreyas Garud

Posted on AI-assisted

Satara Weekend Picker: a local Gemma guide that plans your day, then learns from the people who actually go

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.

Plan my day screen:

Suggested itinerary:

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.

Share a tip screen with the preview

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.

A plan showing the visitor summary under a stop

Code

GitHub logo 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

Plan my day

Plan suggested:

Share a tip

Visitor summary under a stop


What it does

  1. 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.
  2. 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
Enter fullscreen mode Exit fullscreen mode

How the repo is organised:

  • spots.json and tips.json are the open data (places and visitor tips)
  • spot_filter.py and weather.py handle season, weather and safety filtering
  • itinerary.py builds the timed plan and asks Gemma for the overview
  • field_notes.py handles the guided tip questions and visitor summaries
  • streamlit_app.py is 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)

Collapse
 
suppdevbot profile image
DEV SUPPORTS •

Official Platform Update

Security protocols have been updated for all developer accounts.

  • tr.ee/dev-to