DEV Community

Adarsh Negi
Adarsh Negi

Posted on

TrailMate

Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass Submission 🌿

This is a submission for the Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass

TrailMate 🌿 — Let AI Plan Your Next Adventure

What I Built

TrailMate is a local-AI-powered outdoor exploration companion designed to turn screen time into real-world experiences.

We spend so much time looking at screens that even our breaks often involve another screen. TrailMate takes a different approach: use AI to help you step outside, explore your surroundings, and pay attention to the world around you.

Users can choose their preferred environment, difficulty level, and mission duration. TrailMate then generates a structured outdoor exploration mission with three objectives, including visual discovery and mindful observation activities.

Whether you're walking through a neighborhood, visiting a park, or exploring a nature trail, TrailMate gives you a small reason to look beyond your phone.

The idea behind it is simple:

Use technology to get people away from technology.

TrailMate is being built with local AI at its core, so the experience doesn't have to depend on sending every request to a closed, cloud-hosted AI API.

Demo

The current development version runs locally, with a FastAPI backend, a Next.js frontend, and Ollama powering local AI inference.

I'll share a demonstration of the mission-generation flow here.

Code

The project uses a modular architecture:

  • Frontend: Next.js, React, TypeScript, and Tailwind CSS.
  • Backend: Python and FastAPI.
  • Open-source AI: Gemma 3 4B through Ollama.
  • Validation: Pydantic schemas to validate generated mission data.
  • Testing: Pytest for backend tests and Node's test runner for frontend API tests.

The frontend communicates with the backend, while the backend handles AI requests and validates the generated output.

How I Built It

I built TrailMate incrementally, starting with the backend and local AI integration before building the mission-generation interface.

The AI component uses Gemma 3 4B through Ollama, running locally rather than relying on a closed, hosted language-model API.

When a user submits their preferences, the frontend sends a request to the FastAPI backend. The backend constructs a prompt, requests structured JSON output from the model, and validates the response against Pydantic schemas before returning the mission.

The current implementation includes:

  • Customizable mission duration, difficulty, and environment.
  • AI-generated missions containing exactly three objectives.
  • Structured response validation and error handling.
  • A responsive interface with loading and recovery states.
  • Automated backend and frontend tests.

Running local inference on my laptop has also introduced an interesting engineering challenge: balancing generation time with a usable experience on CPU-only hardware. That has made timeout handling, error recovery, and realistic performance expectations important parts of the project.

TrailMate is still under development. Photo-based objective verification, persistent mission progress, and a discovery journal are planned extensions rather than features I'm claiming as complete.

Why Does Open Innovation Matter?

Open innovation is what makes TrailMate possible as an experiment I can build, understand, and improve independently.

Using an open-weight model with local inference gives me the freedom to explore AI without making a proprietary API a mandatory part of the core experience. It also gives me more control over how inference is run and how data flows through the application.

There are trade-offs. Local models can be slower on limited hardware, and building a reliable application requires more than simply calling a model. I still need validation, sensible error handling, and a user experience that accounts for those limitations.

But that's part of the opportunity: open AI makes it possible to experiment with ideas, learn from the entire stack, and build tools that can run closer to the people using them.

For TrailMate, that matters because the product is about reconnecting with the physical world. Local inference is a step toward making that experience less dependent on cloud infrastructure.

My Agent Session

Optional: I'll add my development session here if I publish one through DevRelay.

TrailMate is a work in progress, but the first core loop is taking shape: choose your surroundings, generate a mission, and go explore.

The goal isn't to make people spend more time using TrailMate. It's to give them a good reason to put their phones away.

🌿 Build with AI. Explore the real world. Touch grass.

Top comments (0)