DEV Community

Om Apar
Om Apar

Posted on

Trail-Quest: I Put an AI in My Pocket With One Job - Get Me Outside !

What I Built:

Starting Screen

Home Screen

Most apps compete for more of our attention. TrailQuest is built around the opposite idea: use a little technology to help you spend less time using technology.

TrailQuest is an Android outdoor-mission generator. Instead of opening a social feed or spending ten minutes deciding what to do, you choose an activity, how much time you have, and the level of difficulty. TrailQuest uses a small language model running locally on your phone to turn those choices into a structured outdoor mission.

The current activity options are walking, hiking, running, and nature exploration. You can choose a 15-, 30-, or 60-minute session and select Easy, Moderate, or Challenging.

The goal is simple: give someone a concrete reason to step outside, complete a few intentional tasks, and put the phone away.

No leaderboards. No social feed. No account to create.

Demo -->
Watch the real Android workflow: https://drive.google.com/drive/folders/1oxGZ-9AqAamQh7EKwnTyDiP0iO2Qg2Ci?usp=sharing

Current build status: The Android MVP has been built and tested on a physical Samsung Galaxy F34 5G. All 63 unit tests pass, and on-device Gemma inference successfully generated a structured outdoor mission. Camera input and vision-model support are planned future improvements, not part of the current implementation.

Code -->
GitHub: https://github.com/Omiiii04/TrailQuest

The repository contains the Android application, native inference integration, model setup script, validation logic, and tests.

How I Built It

TrailQuest is a native Android application built with Kotlin and Jetpack Compose.

Its AI component uses Gemma 3 270M IT, quantized as GGUF, with llama.cpp for local inference through JNI. The goal is to keep the mission-generation path on the device rather than relying on a hosted language-model API.

The app validates the model's structured output before turning it into a mission. If an output is invalid, deterministic fallback missions provide a defined recovery path instead of passing malformed content to the UI.

I also pinned the model revision and added SHA-256 and file-size verification to the model-fetching script. That makes the model artifact reproducible and helps detect a corrupted or unexpected download.

Why Does Open Innovation Matter?

For this project, using an open-weight model is not just a way to generate text. It changes where the application can run and how much infrastructure it needs.

Local inference means there is no requirement for a hosted inference endpoint or a per-request API key. The model can run as part of the Android application, and the manifest does not request Android's INTERNET permission.

That architecture is a better fit for an application whose goal is to help people disconnect. The model, runtime, and validation path are part of the project that can be inspected and improved, rather than hidden behind a remote API.

It also makes failure handling important. A local model can generate imperfect structured output, so TrailQuest validates responses and includes deterministic fallbacks rather than assuming every response is correct.

The project is still an MVP, and its limitations should be measured honestly. Local inference has device-specific performance and memory costs; I am prioritizing reliability and a focused workflow over adding more features.

What Comes Next?

The next improvements are focused on usability and confidence: broader device testing, better mission-quality evaluation, and more evidence about performance across supported Android hardware.

For now, TrailQuest is an experiment in making open-weight AI useful in a different way—not by keeping you engaged with another screen, but by helping you decide what to do once you leave it.

Prize Categories:

Best Use of Gemma - TrailQuest uses Gemma 3 270M IT directly on-device to generate structured outdoor missions from user-selected activity, duration, and difficulty. The integration includes response validation and deterministic fallbacks when model output is invalid.

Top comments (0)