This is a submission for the Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass
TrailRelay: Offline-First Trail Hazard Reporting with Local AI
What I Built
Imagine hiking in a remote area and finding a fallen tree blocking the trail, but you have no internet connection to report it.
TrailRelay is an offline-first trail hazard reporting system that combines local AI, durable workflow orchestration, and GitHub integration.
Users can report hazards such as fallen trees, flooding, and damaged trails through a simple web interface. Reports are stored locally in the browser using IndexedDB, so they remain available when connectivity is unavailable.
When the backend becomes reachable, pending reports can be synchronized for processing. A locally running Gemma model classifies the hazard, Temporal orchestrates the processing workflow and retries failed activities, and GitHub Issues provides a way to track processed reports.
The idea behind TrailRelay is simple: technology should help people explore the outdoors more safely, without requiring them to stay connected all the time.
Demo
Watch the TrailRelay demo to see the reporting interface, hazard processing, Temporal workflow, and resulting GitHub issue.
The demonstration uses on-screen captions to explain the steps.
Code
GitHub Repository: AkshajShetty012/TrailRelay
The repository includes the frontend, FastAPI backend, Temporal workflow and worker, and the local AI classification integration.
How I Built It
I built TrailRelay by combining open-source tools, with Gemma and Temporal playing central roles in the system.
- Gemma 3 1B: Runs locally through Ollama and classifies hazard descriptions without requiring a hosted AI API for classification.
- Temporal: Orchestrates the report-processing workflow, manages activity execution, and retries failed operations.
- FastAPI: Provides the backend API that receives reports and starts Temporal workflows.
- IndexedDB: Stores reports in the browser so they remain available offline.
- GitHub Issues: Creates trackable issues for successfully processed hazard reports.
- HTML, CSS, and JavaScript: Power the reporting interface.
One of the main things I wanted to explore was how local AI and durable workflows could work together. Gemma handles hazard classification, while Temporal manages the execution of the surrounding workflow.
This separation makes the application easier to reason about: the model classifies the report, the workflow coordinates processing, and GitHub provides a place to track the result.
Why Does Open Innovation Matter?
Open innovation made it possible to build and understand the complete system using tools that can be inspected, run locally, and adapted.
Running Gemma locally gives me more control over AI inference and avoids sending every hazard description to a hosted AI API. It also makes local experimentation possible without depending on a paid inference service.
Temporal addresses a different challenge: what happens when a workflow activity fails? Instead of treating report processing as one fragile sequence of operations, I can use workflow orchestration and retries to make it more resilient.
Browser-based storage adds another layer of resilience by preserving reports when connectivity is unavailable. Once the required services and internet connection are available, reports can be processed and tracked through GitHub.
Together, these open technologies helped me explore a more resilient approach to a practical outdoor problem.
Prize Categories
Best Use of Gemma
TrailRelay uses Google's open-weight Gemma 3 1B model through Ollama for local trail hazard classification. The model is an integral part of the report-processing pipeline, rather than an unrelated AI feature.
Best Use of Temporal
TrailRelay uses Temporal to orchestrate the hazard-reporting workflow, execute processing activities, and retry failed operations. This allows the application to handle failures more reliably than a simple sequence of backend calls.
Both technologies serve distinct purposes in the project: Gemma classifies the hazard, while Temporal coordinates the workflow that processes it.
Built for the Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass.
Top comments (0)