<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Akshaj Shetty</title>
    <description>The latest articles on DEV Community by Akshaj Shetty (@akshaj_shetty).</description>
    <link>https://dev.to/akshaj_shetty</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4152499%2F3158b28e-9160-48bf-9807-a2a840393dc5.png</url>
      <title>DEV Community: Akshaj Shetty</title>
      <link>https://dev.to/akshaj_shetty</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/akshaj_shetty"/>
    <language>en</language>
    <item>
      <title>TrailRelay: Offline-First Trail Hazard Reporting with Gemma and Temporal</title>
      <dc:creator>Akshaj Shetty</dc:creator>
      <pubDate>Sun, 11 Oct 2026 12:31:04 +0000</pubDate>
      <link>https://dev.to/akshaj_shetty/trailrelay-offline-first-trail-hazard-reporting-with-gemma-and-temporal-3h59</link>
      <guid>https://dev.to/akshaj_shetty/trailrelay-offline-first-trail-hazard-reporting-with-gemma-and-temporal-3h59</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week1-2026-10-05"&gt;Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  TrailRelay: Offline-First Trail Hazard Reporting with Local AI
&lt;/h1&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;Imagine hiking in a remote area and finding a fallen tree blocking the trail, but you have no internet connection to report it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TrailRelay is an offline-first trail hazard reporting system that combines local AI, durable workflow orchestration, and GitHub integration.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;The idea behind TrailRelay is simple: technology should help people explore the outdoors more safely, without requiring them to stay connected all the time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;Watch the TrailRelay demo to see the reporting interface, hazard processing, Temporal workflow, and resulting GitHub issue.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://youtu.be/IWJ67iwcZJ0" rel="noopener noreferrer"&gt;Watch the TrailRelay Demo&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The demonstration uses on-screen captions to explain the steps.&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/AkshajShetty012/TrailRelay" rel="noopener noreferrer"&gt;AkshajShetty012/TrailRelay&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The repository includes the frontend, FastAPI backend, Temporal workflow and worker, and the local AI classification integration.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;I built TrailRelay by combining open-source tools, with Gemma and Temporal playing central roles in the system.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Gemma 3 1B:&lt;/strong&gt; Runs locally through Ollama and classifies hazard descriptions without requiring a hosted AI API for classification.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Temporal:&lt;/strong&gt; Orchestrates the report-processing workflow, manages activity execution, and retries failed operations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;FastAPI:&lt;/strong&gt; Provides the backend API that receives reports and starts Temporal workflows.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IndexedDB:&lt;/strong&gt; Stores reports in the browser so they remain available offline.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Issues:&lt;/strong&gt; Creates trackable issues for successfully processed hazard reports.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HTML, CSS, and JavaScript:&lt;/strong&gt; Power the reporting interface.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;p&gt;Open innovation made it possible to build and understand the complete system using tools that can be inspected, run locally, and adapted.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Together, these open technologies helped me explore a more resilient approach to a practical outdoor problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Best Use of Gemma
&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Best Use of Temporal
&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Both technologies serve distinct purposes in the project: Gemma classifies the hazard, while Temporal coordinates the workflow that processes it.&lt;/p&gt;




&lt;p&gt;Built for the Hacktoberfest Open-Source AI Challenge Week 1: &lt;strong&gt;Touch Grass&lt;/strong&gt;.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>ExplainIt: Turning Complex Documents into Simple Answers</title>
      <dc:creator>Akshaj Shetty</dc:creator>
      <pubDate>Sun, 04 Oct 2026 11:04:40 +0000</pubDate>
      <link>https://dev.to/akshaj_shetty/explainit-turning-complex-documents-into-simple-answers-15pd</link>
      <guid>https://dev.to/akshaj_shetty/explainit-turning-complex-documents-into-simple-answers-15pd</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-weekend-2026-10-01"&gt;Hacktoberfest Weekend Challenge: Build for a Friend&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;I built &lt;strong&gt;ExplainIt&lt;/strong&gt;, a web app that helps people understand difficult or confusing documents.&lt;/p&gt;

&lt;p&gt;The idea came from a simple situation: someone in your family receives a document — such as a medical report, lab result, or other technical document — and asks:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"What does this actually mean?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;ExplainIt lets them upload the document, extracts the text using OCR directly in the browser, and uses &lt;strong&gt;Gemma&lt;/strong&gt; to turn that text into a simple explanation.&lt;/p&gt;

&lt;p&gt;It supports &lt;strong&gt;English, Kannada, and Hindi&lt;/strong&gt;, with optional voice playback.&lt;/p&gt;

&lt;p&gt;I also wanted to be careful about uncertainty. OCR can misread text, especially numbers and tables, so ExplainIt is designed to avoid silently guessing or correcting uncertain values.&lt;/p&gt;

&lt;p&gt;For medical documents, ExplainIt is an explanation tool, not a diagnostic or medical-advice system.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://explain-it-mu.vercel.app/" rel="noopener noreferrer"&gt;Live Demo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcxu1184osf77jxkqqes0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcxu1184osf77jxkqqes0.png" alt="ExplainIt" width="800" height="410"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fclg1m3szu7bewi9who9s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fclg1m3szu7bewi9who9s.png" alt="ExplainIt" width="800" height="412"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqazb8ah7dttdh13ws3l0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqazb8ah7dttdh13ws3l0.png" alt="ExplainIt" width="800" height="846"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/AkshajShetty012/explainIt" rel="noopener noreferrer"&gt;GitHub Repository&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;ExplainIt is built with &lt;strong&gt;Next.js, React, Tailwind CSS, Tesseract.js, Gemma, and Gemini TTS&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The core flow is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Document
   ↓
Tesseract.js OCR
   ↓
Extracted Text
   ↓
Gemma
   ↓
Simple Explanation
   ↓
English / Kannada / Hindi
   ↓
Optional Voice Playback
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I use &lt;strong&gt;Tesseract.js&lt;/strong&gt; to perform OCR directly in the browser. The original document is not sent to the AI model. Only the extracted text is sent to the server-side API for explanation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gemma is the core AI model behind ExplainIt's main feature.&lt;/strong&gt; It takes the extracted document text and turns it into an easier-to-understand explanation.&lt;/p&gt;

&lt;p&gt;The application also supports English, Kannada, and Hindi, and uses Gemini's text-to-speech capability for optional voice playback.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;p&gt;For ExplainIt, the AI model isn't just an additional feature. It is what makes the main workflow possible.&lt;/p&gt;

&lt;p&gt;Using &lt;strong&gt;Gemma, Google's open-weight model&lt;/strong&gt;, gave me the ability to build the application around an openly available model rather than treating AI as a completely closed component.&lt;/p&gt;

&lt;p&gt;That matters especially for independent developers and students. Open-weight models make it possible to experiment, build focused applications, and decide how the model fits into the product.&lt;/p&gt;

&lt;p&gt;For ExplainIt, that meant I could take a specific problem — helping someone understand a difficult document — and build the application around that problem.&lt;/p&gt;

&lt;p&gt;The project also combines open-source tools such as Tesseract.js with Gemma, showing how different pieces of open innovation can come together to solve a practical problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Gemma&lt;/strong&gt; — Gemma is the core model used to transform extracted document text into simple explanations.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>weekendchallenge</category>
      <category>hf26challenge</category>
      <category>devchallenge</category>
    </item>
  </channel>
</rss>
