Submission for Hacktoberfest Week 1: Touch Grass
πΏ TrailMate β Explore More with Local AI
What if AI could help us spend less time scrolling and more time exploring the outdoors?
TrailMate is an AI-powered outdoor discovery planner that finds nearby places and generates personalized exploration recommendations.
What I Built
- π Discover nearby outdoor places using your location.
- πΊοΈ Retrieve real-world places using OpenStreetMap.
- π Filter by radius and sort by distance.
- π€ Generate personalized plans using local Gemma AI.
- π§ Open Google Maps directions to selected places.
Demo
π» Source code: GitHub Repository
The project currently runs locally and is not publicly deployed.
How I Built It
Tech stack: React, Vite, Node.js, Express, OpenStreetMap, Gemma 3 1B, Ollama, and MongoDB Atlas.
TrailMate retrieves nearby places through the Overpass API, processes their coordinates and distances, and passes the available places and user preferences to Gemma running locally through Ollama. Recommendations are validated against actual OpenStreetMap results.
One major challenge was handling unreliable Overpass endpoints. I improved query filtering, added bounded retries and fallback handling, and tested failure scenarios alongside backend checks and frontend builds.
I used GitHub Copilot to help implement features and debug issues throughout development.
Why Open Innovation Matters
Using open-weight Gemma and OpenStreetMap let me combine local AI inference with openly available geographic data without depending on a paid hosted AI API for recommendations.
It also gave me the freedom to experiment, inspect the implementation, and learn how AI can encourage real-world exploration.
My Agent Session
I curated my GitHub Copilot development session so others can explore the process behind TrailMate.
π View the TrailMate Agent Session
Prize Categories
- Best Use of Gemma β Local AI-powered recommendations.
- Best Use of GitHub Copilot β AI-assisted development and debugging.
Built with πΏ, open data, and local AI.
Top comments (0)