<?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: Shruti Hiraman Kotgire</title>
    <description>The latest articles on DEV Community by Shruti Hiraman Kotgire (@shrutikotgire129).</description>
    <link>https://dev.to/shrutikotgire129</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%2F3218310%2Fdd25b8e8-b029-45c3-8283-ff1e909a800a.png</url>
      <title>DEV Community: Shruti Hiraman Kotgire</title>
      <link>https://dev.to/shrutikotgire129</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shrutikotgire129"/>
    <language>en</language>
    <item>
      <title>The 404 Wasn't the End. I Built an AI Investigator for the Internet's Ghosts.</title>
      <dc:creator>Shruti Hiraman Kotgire</dc:creator>
      <pubDate>Fri, 30 Oct 2026 23:53:07 +0000</pubDate>
      <link>https://dev.to/shrutikotgire129/the-404-wasnt-the-end-i-built-an-ai-investigator-for-the-internets-ghosts-2nfi</link>
      <guid>https://dev.to/shrutikotgire129/the-404-wasnt-the-end-i-built-an-ai-investigator-for-the-internets-ghosts-2nfi</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week4-2026-10-26"&gt;Hacktoberfest Open-Source AI Challenge Week 4: Ghost in the Machine&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;A documentation link breaks.&lt;/p&gt;

&lt;p&gt;You try it again. Still broken.&lt;/p&gt;

&lt;p&gt;Maybe the page moved. Maybe the project was abandoned. Maybe someone deleted years of useful explanations without leaving a forwarding address.&lt;/p&gt;

&lt;p&gt;But what if the page isn't completely gone?&lt;/p&gt;

&lt;p&gt;What if a copy is still hiding somewhere in the history of the internet?&lt;/p&gt;

&lt;p&gt;That's the question behind &lt;strong&gt;Afterlink&lt;/strong&gt;.&lt;/p&gt;

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

&lt;p&gt;Afterlink is an AI-powered documentation investigation tool. It searches for historical versions of broken or changed documentation links, retrieves archived content, and uses AI to help investigate what those pages contained.&lt;/p&gt;

&lt;p&gt;I interpreted &lt;em&gt;Ghost in the Machine&lt;/em&gt; as the forgotten parts of the internet: documentation that disappears, tutorials that become inaccessible, and technical knowledge that survives only in old snapshots.&lt;/p&gt;

&lt;p&gt;I wanted to build something that could investigate those digital traces rather than simply announce that a link was broken.&lt;/p&gt;

&lt;p&gt;Here's the investigation process:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Upload a Markdown or text document.&lt;/li&gt;
&lt;li&gt;Afterlink extracts the documentation links.&lt;/li&gt;
&lt;li&gt;It checks which links are accessible, redirected, or unavailable.&lt;/li&gt;
&lt;li&gt;It searches the Internet Archive for historical captures.&lt;/li&gt;
&lt;li&gt;It retrieves archived pages and extracts readable content.&lt;/li&gt;
&lt;li&gt;AI examines the supplied historical evidence and generates investigation recommendations.&lt;/li&gt;
&lt;li&gt;It shows the evidence behind its recommendation. &lt;/li&gt;
&lt;li&gt;The application compares original and archived content and lets you save or export the investigation.&lt;/li&gt;
&lt;li&gt;It lets you save the investigation and export the results.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The important part is what Afterlink doesn't do.&lt;/p&gt;

&lt;p&gt;It doesn't silently replace your broken link.&lt;/p&gt;

&lt;p&gt;It doesn't pretend that an AI-generated answer is historical truth.&lt;/p&gt;

&lt;p&gt;It doesn't commit changes to your repository.&lt;/p&gt;

&lt;p&gt;Instead, it gives you evidence and lets you decide what should be recovered.&lt;/p&gt;

&lt;p&gt;Afterlink doesn't resurrect documentation by guessing. It investigates what the archive remembers.&lt;/p&gt;

&lt;p&gt;That is my interpretation of the Ghost in the Machine theme: the "ghost" is forgotten documentation still haunting the links inside today's codebase.&lt;/p&gt;

&lt;p&gt;The key design decision: &lt;strong&gt;AI must investigate evidence, not invent history.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A model can produce a convincing explanation of a missing page without actually knowing what it contained. Afterlink validates recommendation URLs and evidence excerpts against the supplied archive information before displaying them.&lt;/p&gt;

&lt;p&gt;It also preserves the distinction between an unavailable page, an archived page, and a conclusion supported by historical evidence.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Try Afterlink:&lt;/strong&gt; &lt;a href="https://afterlink-sigma.vercel.app/" rel="noopener noreferrer"&gt;https://afterlink-sigma.vercel.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Source code:&lt;/strong&gt; &lt;a href="https://github.com/shrutikotgire0129/afterlink" rel="noopener noreferrer"&gt;https://github.com/shrutikotgire0129/afterlink&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The application is deployed on Vercel. You can load the sample project and run an investigation without installing Ollama.&lt;/p&gt;

&lt;h3&gt;
  
  
  Screenshots
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;The investigation workspace&lt;/strong&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%2Fmsp9c17rlit4bl34od8b.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%2Fmsp9c17rlit4bl34od8b.png" alt="Afterlink main interface" width="799" height="422"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Investigation results&lt;/strong&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%2F13f1a1jj0xyey4dzlce1.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%2F13f1a1jj0xyey4dzlce1.png" alt="Afterlink investigation results" width="402" height="741"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Original versus archived content&lt;/strong&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%2Fd9ht2qqhw0w8xpkb1c4e.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%2Fd9ht2qqhw0w8xpkb1c4e.png" alt="Afterlink content comparison" width="376" height="781"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Investigation history&lt;/strong&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%2Fki397sq9t4yyb9pc21oz.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%2Fki397sq9t4yyb9pc21oz.png" alt="Afterlink investigation history" width="800" height="300"&gt;&lt;/a&gt;&lt;/p&gt;

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

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

&lt;p&gt;&lt;strong&gt;Tech stack:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Next.js 16&lt;/li&gt;
&lt;li&gt;React&lt;/li&gt;
&lt;li&gt;TypeScript&lt;/li&gt;
&lt;li&gt;Tailwind CSS&lt;/li&gt;
&lt;li&gt;Ollama&lt;/li&gt;
&lt;li&gt;Gemma 3 1B&lt;/li&gt;
&lt;li&gt;Groq API&lt;/li&gt;
&lt;li&gt;GPT-OSS 20B&lt;/li&gt;
&lt;li&gt;Internet Archive&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The main investigation pipeline:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Document
   |
   v
Link Extraction
   |
   v
Link Availability Checks
   |
   v
Internet Archive CDX Search
   |
   v
Archived Page Retrieval
   |
   v
Content Extraction
   |
   v
AI Investigation
   |
   v
Evidence Validation
   |
   v
Original / Archive Comparison
   |
   v
Investigation Report
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each stage has its own API route. That separation makes it easier to validate inputs, handle failures, and prevent an error in one stage from silently becoming an incorrect investigation result.&lt;/p&gt;

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

&lt;h3&gt;
  
  
  1. The open-weight model is part of the actual workflow
&lt;/h3&gt;

&lt;p&gt;I wanted Afterlink to support local AI inference rather than depend entirely on a hosted model.&lt;/p&gt;

&lt;p&gt;For local development, I integrated:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ollama as the local inference runtime.&lt;/li&gt;
&lt;li&gt;Gemma 3 1B as the local model.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The application communicates with Ollama through its local API:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;http://localhost:11434/api/chat
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This made it possible to develop and run the AI investigation workflow on my own machine without requiring a paid hosted AI API for local inference.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. A different inference provider for the public demo
&lt;/h3&gt;

&lt;p&gt;I also wanted anyone to be able to try Afterlink without installing a model locally.&lt;/p&gt;

&lt;p&gt;The deployed Vercel application therefore uses Groq with the open-weight &lt;code&gt;openai/gpt-oss-20b&lt;/code&gt; model.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Environment&lt;/th&gt;
&lt;th&gt;AI runtime&lt;/th&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Local development&lt;/td&gt;
&lt;td&gt;Ollama&lt;/td&gt;
&lt;td&gt;Gemma 3 1B&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Production deployment&lt;/td&gt;
&lt;td&gt;Groq&lt;/td&gt;
&lt;td&gt;GPT-OSS 20B&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The provider is selected server-side based on the execution environment. The Groq API key is stored as a server-side environment variable.&lt;/p&gt;

&lt;p&gt;I tested an important deployment scenario: I stopped Ollama on my computer and ran the complete AI investigation workflow on the deployed Vercel application. It continued working.&lt;/p&gt;

&lt;p&gt;The production application does not depend on my computer being switched on.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. The difficult part: preventing convincing but unsupported answers
&lt;/h3&gt;

&lt;p&gt;An AI model can return a plausible archive recommendation that doesn't actually match the historical capture supplied to it.&lt;/p&gt;

&lt;p&gt;During development, I encountered an issue where matching candidates using only the original page URL was insufficient when multiple archive snapshots existed.&lt;/p&gt;

&lt;p&gt;I tightened the matching logic so that both the original candidate URL and the exact archive URL must match.&lt;/p&gt;

&lt;p&gt;I also added validation for evidence excerpts. An excerpt must be present in the supplied archived content; the model cannot simply invent a quotation and present it as evidence.&lt;/p&gt;

&lt;p&gt;Other reliability measures include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Request and URL validation.&lt;/li&gt;
&lt;li&gt;Response-size limits.&lt;/li&gt;
&lt;li&gt;Timeouts for external requests and model inference.&lt;/li&gt;
&lt;li&gt;Validation of incomplete or malformed AI responses.&lt;/li&gt;
&lt;li&gt;Error handling when Ollama or the hosted AI provider is unavailable.&lt;/li&gt;
&lt;li&gt;Clear distinction between unavailable archive content and evidence that a page never existed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I deliberately prefer an uncertain result over an unsupported conclusion.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. The investigation doesn't end with the AI response
&lt;/h3&gt;

&lt;p&gt;Afterlink also supports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Original-versus-archive content comparison.&lt;/li&gt;
&lt;li&gt;Markdown investigation reports.&lt;/li&gt;
&lt;li&gt;JSON export.&lt;/li&gt;
&lt;li&gt;Investigation history with restore and delete functionality.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The result is intended to be useful beyond a single AI response.&lt;/p&gt;

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

&lt;p&gt;The open part of Afterlink changes how the investigation system can be run and adapted.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Local inference:&lt;/strong&gt; Gemma 3 1B can run through Ollama on a developer's own machine. Local analysis doesn't require sending the AI prompt to a hosted model provider.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Model flexibility:&lt;/strong&gt; The investigation workflow is separated from the model provider. I can use Gemma locally and a different open-weight model in production without redesigning the entire application.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Control and experimentation:&lt;/strong&gt; Running an open-weight model locally makes it possible to inspect its behavior, change prompts, test limitations, and improve evidence validation around its actual outputs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Accessibility:&lt;/strong&gt; A small model makes local experimentation possible on modest hardware, although inference speed and available memory still depend on the machine.&lt;/p&gt;

&lt;p&gt;There is an important limitation: retrieving historical pages still requires internet access, and the public Vercel demo uses hosted inference. Afterlink is not an entirely offline archive crawler.&lt;/p&gt;

&lt;p&gt;For me, open innovation made the project more flexible: I could develop locally, experiment with an open-weight model, and make the application accessible through a hosted deployment.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Spirit of It
&lt;/h2&gt;

&lt;p&gt;A 404 page is a strange kind of disappearance.&lt;/p&gt;

&lt;p&gt;The address is still there. The link is still in someone's notes, tutorial, or README. But the information behind it has vanished.&lt;/p&gt;

&lt;p&gt;Sometimes an old snapshot survives.&lt;/p&gt;

&lt;p&gt;Maybe it contains the explanation someone needs. Maybe it only contains part of the page. Maybe it provides no useful evidence at all.&lt;/p&gt;

&lt;p&gt;Afterlink cannot bring every missing page back. It can, however, investigate what remains and make that evidence easier to understand.&lt;/p&gt;

&lt;p&gt;I built it around one idea:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The internet forgets. The archive remembers. Afterlink investigates.&lt;/strong&gt;&lt;/p&gt;

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

&lt;p&gt;The biggest lesson from building Afterlink was that AI is often most useful when it is not allowed &lt;strong&gt;to do everything&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The strongest parts of the application are the boundaries around the model:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;deterministic link extraction&lt;/li&gt;
&lt;li&gt;explicit archive retrieval&lt;/li&gt;
&lt;li&gt;bounded content extraction&lt;/li&gt;
&lt;li&gt;evidence validation&lt;/li&gt;
&lt;li&gt;original-versus-archive comparison&lt;/li&gt;
&lt;li&gt;human review&lt;/li&gt;
&lt;li&gt;visible uncertainty&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The model handles the ambiguous part.&lt;/p&gt;

&lt;p&gt;Code handles the parts that should be predictable.&lt;/p&gt;

&lt;p&gt;That separation made the project much more reliable.&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; The local inference workflow uses Google's Gemma 3 1B model through Ollama. The deployed application uses GPT-OSS 20B through Groq, which is a separate production inference path.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Final Thought
&lt;/h2&gt;

&lt;p&gt;Documentation disappears quietly.&lt;/p&gt;

&lt;p&gt;Usually there is no warning.&lt;/p&gt;

&lt;p&gt;No final message.&lt;/p&gt;

&lt;p&gt;No tombstone.&lt;/p&gt;

&lt;p&gt;Just a link that suddenly returns 404.&lt;/p&gt;

&lt;p&gt;But the code that depended on that documentation can survive for years.&lt;/p&gt;

&lt;p&gt;So I built Afterlink around one question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;When the documentation is gone, what evidence is still alive?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;The docs disappeared.&lt;br&gt;
The code remembered.&lt;br&gt;
Afterlink goes looking for what remains.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Built for Ghost in the Machine
&lt;/h3&gt;

&lt;p&gt;Thank you for taking a look at Afterlink — and happy Hacktoberfest. 👻&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>hacktoberfest</category>
      <category>ai</category>
    </item>
    <item>
      <title>What Happens When AI Reads Your Receipt but Doesn’t Know Your Return Policy?</title>
      <dc:creator>Shruti Hiraman Kotgire</dc:creator>
      <pubDate>Sat, 24 Oct 2026 04:20:43 +0000</pubDate>
      <link>https://dev.to/shrutikotgire129/what-happens-when-ai-reads-your-receipt-but-doesnt-know-your-return-policy-1jbk</link>
      <guid>https://dev.to/shrutikotgire129/what-happens-when-ai-reads-your-receipt-but-doesnt-know-your-return-policy-1jbk</guid>
      <description>&lt;p&gt;You buy something, put the receipt somewhere safe, and tell yourself you’ll remember the return window.&lt;/p&gt;

&lt;p&gt;A few weeks later, you find the receipt. The deadline? Already gone. Or maybe you can’t even remember when it was supposed to be.&lt;/p&gt;

&lt;p&gt;That everyday problem inspired &lt;strong&gt;ReturnRadar&lt;/strong&gt;, a receipt-powered purchase tracker I built for the DEV Challenge.&lt;/p&gt;

&lt;p&gt;The initial idea was straightforward: upload a receipt, extract the important details, and track return deadlines. But while building it, I realized that reading a receipt wasn't the hardest part.&lt;/p&gt;

&lt;p&gt;The real challenge was deciding what the application should do when the receipt was blurry, the purchase date was missing, or the return policy wasn't clear.&lt;/p&gt;

&lt;p&gt;I didn't want an AI-generated date to look trustworthy just because it appeared in a polished interface.&lt;/p&gt;

&lt;p&gt;So I built ReturnRadar around one principle: &lt;strong&gt;when the evidence isn't clear, the application should say so instead of guessing.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is ReturnRadar?
&lt;/h2&gt;

&lt;p&gt;ReturnRadar helps people organize purchases and keep track of return deadlines without relying on memory.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Try the live app:&lt;/strong&gt; &lt;a href="https://return-radar-ruby.vercel.app/" rel="noopener noreferrer"&gt;https://return-radar-ruby.vercel.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Explore the code:&lt;/strong&gt; &lt;a href="https://github.com/shrutikotgire0129/ReturnRadar" rel="noopener noreferrer"&gt;https://github.com/shrutikotgire0129/ReturnRadar&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Alternative deployment:&lt;/strong&gt; &lt;a href="https://returnradar-0ftg.onrender.com/" rel="noopener noreferrer"&gt;https://returnradar-0ftg.onrender.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Users can upload receipt images or PDFs, extract purchase information with AI, review and edit the extracted details, manage purchase records, and track upcoming or expired return windows.&lt;/p&gt;

&lt;p&gt;The application also supports Google Calendar export for return deadlines—but only after the user has reviewed and explicitly verified the deadline.&lt;/p&gt;

&lt;p&gt;Here's what the dashboard looks like:&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%2Fa1oicpaaphs2pz0noqwf.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%2Fa1oicpaaphs2pz0noqwf.png" alt="ReturnRadar dashboard showing purchase records and return deadlines" width="800" height="424"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The dashboard brings purchase records and return statuses together so users can keep track of their deadlines.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem I wanted to solve: AI can be confidently wrong
&lt;/h2&gt;

&lt;p&gt;Imagine uploading a receipt that clearly shows the merchant and total price but contains no return policy.&lt;/p&gt;

&lt;p&gt;Or imagine a receipt with a blurry purchase date. Perhaps the policy mentions a return period, but the available information doesn't establish exactly when the deadline falls.&lt;/p&gt;

&lt;p&gt;An AI model might still return a plausible date. The result could look complete, even when the underlying evidence doesn't support it.&lt;/p&gt;

&lt;p&gt;For a return-deadline tracker, that isn't a harmless mistake. Someone could rely on an invented date, miss the actual return window, and lose the opportunity to get a refund.&lt;/p&gt;

&lt;p&gt;I wanted the application to distinguish between information it could extract and information that still needed human review.&lt;/p&gt;

&lt;p&gt;That led to a simple rule:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Extract what the evidence supports. Flag what it doesn't. Never treat a guess as a verified deadline.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How I used an open-weight vision model
&lt;/h2&gt;

&lt;p&gt;For receipt extraction, ReturnRadar uses &lt;strong&gt;Qwen3.8-27B through the Groq API&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The model processes the uploaded receipt and returns structured information, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Merchant and item name&lt;/li&gt;
&lt;li&gt;Purchase date and total price&lt;/li&gt;
&lt;li&gt;Return window and return-by date, when supported by the available information&lt;/li&gt;
&lt;li&gt;Warranty information, when available&lt;/li&gt;
&lt;li&gt;Receipt or policy evidence&lt;/li&gt;
&lt;li&gt;Confidence information, warnings, and review requirements&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The flow is straightforward: the user uploads a receipt, a Next.js API route sends it for processing through Groq, and the application handles the model's response before presenting the extracted information in the interface.&lt;/p&gt;

&lt;p&gt;I chose a vision-capable model because receipts aren't neatly structured database records. They're documents with different layouts, small text, inconsistent formatting, and sometimes poor image quality.&lt;/p&gt;

&lt;p&gt;Using an open-weight model also gives the project flexibility to explore different model and deployment options as it evolves.&lt;/p&gt;

&lt;p&gt;There is an important distinction, though: &lt;strong&gt;ReturnRadar currently uses hosted inference through Groq. Qwen does not run locally in this version of the application.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The model's open weights make different deployment arrangements possible to explore, but using an open-weight model doesn't automatically mean the application runs privately on the user's device.&lt;/p&gt;

&lt;p&gt;Here's the receipt upload interface:&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%2F7s1m441xlegcjocgbtpy.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%2F7s1m441xlegcjocgbtpy.png" alt="ReturnRadar receipt upload interface" width="799" height="425"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Users upload a receipt to extract purchase details that they can review before relying on them.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Turning AI output into a safer user experience
&lt;/h2&gt;

&lt;p&gt;Getting structured output from a model is only one part of the problem. The application also needs rules for deciding what users can do with that output.&lt;/p&gt;

&lt;p&gt;I focused on four areas.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Keep evidence visible
&lt;/h3&gt;

&lt;p&gt;ReturnRadar keeps receipt evidence, return-policy evidence, and extraction warnings alongside purchase details.&lt;/p&gt;

&lt;p&gt;This gives users context for reviewing the result instead of asking them to trust a date without knowing where it came from.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Flag incomplete or uncertain records
&lt;/h3&gt;

&lt;p&gt;When important information is missing, a return policy cannot be established, or an extraction needs further review, the purchase can be marked &lt;strong&gt;Needs review&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The interface doesn't have to pretend every receipt was processed successfully. Sometimes the most useful result is an honest warning that the available information isn't enough.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Separate extraction from verification
&lt;/h3&gt;

&lt;p&gt;An extracted date is not automatically treated as a verified deadline.&lt;/p&gt;

&lt;p&gt;The user must confirm that they checked the retailer's actual return policy. This confirmation records the user's action; it does not mean the application independently contacted the retailer or verified the policy itself.&lt;/p&gt;

&lt;p&gt;That distinction matters because extracting a date and establishing that the date is correct are two different tasks.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Prevent calendar export for unsupported deadlines
&lt;/h3&gt;

&lt;p&gt;ReturnRadar requires the relevant receipt evidence and a deadline marked as verified before allowing Google Calendar export.&lt;/p&gt;

&lt;p&gt;If those requirements aren't met, the application blocks the action and explains why.&lt;/p&gt;

&lt;p&gt;A reminder based on an unsupported date could be worse than no reminder at all. It might give someone false confidence that they still have time to return a product.&lt;/p&gt;

&lt;p&gt;Here's the purchase details view:&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%2Fppg2hiajh3ho0x0hofy6.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%2Fppg2hiajh3ho0x0hofy6.png" alt="ReturnRadar purchase details interface" width="467" height="690"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The purchase details view gives users a place to inspect extracted information and its review status.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What else I built
&lt;/h2&gt;

&lt;p&gt;ReturnRadar is built with Next.js, React, and TypeScript. Purchase records are persisted in the browser using local storage.&lt;/p&gt;

&lt;p&gt;The current version includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A dashboard for purchase records and return statuses&lt;/li&gt;
&lt;li&gt;Receipt uploads for supported image and PDF formats&lt;/li&gt;
&lt;li&gt;AI-assisted extraction with editable fields&lt;/li&gt;
&lt;li&gt;Search and filtering for purchases&lt;/li&gt;
&lt;li&gt;Persistent purchase records across page refreshes&lt;/li&gt;
&lt;li&gt;Purchase status management&lt;/li&gt;
&lt;li&gt;Evidence, warnings, and review states&lt;/li&gt;
&lt;li&gt;Google Calendar export for eligible, verified deadlines&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I also tested scenarios beyond a clean, readable receipt: blurry images, missing purchase dates, unclear amounts, and ambiguous return policies.&lt;/p&gt;

&lt;p&gt;I checked that uncertain information could be flagged for review, that corrections persisted after refreshing, and that calendar export remained blocked when the deadline wasn't sufficiently supported or verified.&lt;/p&gt;

&lt;p&gt;The goal wasn't to make every receipt appear successful. It was to make the application behave responsibly when the available information was incomplete.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I learned about building with open AI
&lt;/h2&gt;

&lt;p&gt;This project reinforced a lesson I'll carry into future AI applications:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A model's answer should not automatically become the application's truth.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A model can extract information, but the surrounding software still needs to decide what actions are appropriate based on that information.&lt;/p&gt;

&lt;p&gt;For ReturnRadar, that meant separating extraction from verification, keeping evidence attached to results, and preventing calendar export when a deadline hadn't been confirmed.&lt;/p&gt;

&lt;p&gt;Open-weight models make it possible to experiment with model selection and explore different deployment strategies. But openness alone doesn't guarantee privacy, accuracy, or safety. Those properties also depend on the inference provider, data handling, validation, and the decisions made in the application itself.&lt;/p&gt;

&lt;p&gt;There is also a privacy consideration in the current implementation: because ReturnRadar uses Groq-hosted inference, uploaded receipt content is sent to that external service for processing. Purchase records are stored in the browser, but receipt processing does not happen entirely on the user's device.&lt;/p&gt;

&lt;p&gt;A future version with local inference would be worth exploring for users who want receipt processing to remain on their own hardware.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it and share feedback
&lt;/h2&gt;

&lt;p&gt;If you have a few minutes, try the live application or explore the repository.&lt;/p&gt;

&lt;p&gt;I'd especially appreciate feedback on the receipt-review experience, the way uncertainty is communicated, and what would make you comfortable relying on an AI-assisted tool for something as practical as a return deadline.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>hacktoberfest</category>
      <category>ai</category>
    </item>
    <item>
      <title>ScopeGuard AI: An Open-Weight AI Assistant That Helps Freelancers Protect Their Scope of Work</title>
      <dc:creator>Shruti Hiraman Kotgire</dc:creator>
      <pubDate>Fri, 16 Oct 2026 23:57:59 +0000</pubDate>
      <link>https://dev.to/shrutikotgire129/scopeguard-ai-an-open-weight-ai-assistant-that-helps-freelancers-protect-their-scope-of-work-1d4h</link>
      <guid>https://dev.to/shrutikotgire129/scopeguard-ai-an-open-weight-ai-assistant-that-helps-freelancers-protect-their-scope-of-work-1d4h</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week2-2026-10-12"&gt;Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;A project begins with a clear agreement, a defined price, and a shared understanding of what needs to be delivered.&lt;/p&gt;

&lt;p&gt;Then the messages start arriving.&lt;/p&gt;

&lt;p&gt;“Could you add one more dashboard?”&lt;/p&gt;

&lt;p&gt;“Can we include subscription billing, too?”&lt;/p&gt;

&lt;p&gt;“It should be a small change, right?”&lt;/p&gt;

&lt;p&gt;For freelancers, these requests can create an uncomfortable choice: absorb the extra work to keep the client happy, or explain why the request may fall outside the original agreement.&lt;/p&gt;

&lt;p&gt;The difficult part is not always saying no. It is figuring out what was actually agreed upon, whether the new request fits within that agreement, and how to communicate the answer professionally.&lt;/p&gt;

&lt;p&gt;That is the problem I built &lt;strong&gt;ScopeGuard AI&lt;/strong&gt; to help solve.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;ScopeGuard AI is an AI-powered scope analysis assistant designed for freelancers and independent developers who want to manage client expectations and protect their time.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It compares a client's new request against the original project agreement and helps the freelancer understand whether the requested work appears to be included, potentially out of scope, or in need of clarification.&lt;/p&gt;

&lt;p&gt;Instead of returning only a classification, it provides supporting agreement evidence, an explanation, and a recommended next action.&lt;/p&gt;

&lt;h3&gt;
  
  
  How does it work?
&lt;/h3&gt;

&lt;p&gt;The workflow is straightforward:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Provide the original agreement.&lt;/strong&gt; Enter the agreed project requirements and deliverables.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Add the new client request.&lt;/strong&gt; Describe the additional feature, revision, or change being requested.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Analyze the scope.&lt;/strong&gt; The AI compares the request with the agreement and returns one of three outcomes:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Included:&lt;/strong&gt; The agreement supports treating the request as part of the existing scope.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Potentially out of scope:&lt;/strong&gt; The request appears to go beyond the agreed deliverables.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Needs clarification:&lt;/strong&gt; The available information is insufficient for a confident determination.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Review the evidence.&lt;/strong&gt; Examine the relevant agreement excerpts and the AI's interpretation of them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Take action.&lt;/strong&gt; Generate a professional client reply or prepare a change-order proposal for additional work.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The change-order generator calculates a proposed fee using the estimated additional hours and the freelancer's hourly rate. The freelancer can then review the proposal before using it with the client.&lt;/p&gt;

&lt;p&gt;The goal is not to label every new request as scope creep. Sometimes the work is already included. Sometimes the agreement is ambiguous. Sometimes the client is asking for a legitimate addition that deserves a separate estimate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The goal is to help freelancers make that distinction before committing to more work.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Who would pay for it?
&lt;/h3&gt;

&lt;p&gt;My initial target customers are freelancers and independent developers who manage projects directly with clients, especially those building websites and software.&lt;/p&gt;

&lt;p&gt;For these professionals, unexpected work can affect profitability, delivery schedules, and client relationships. ScopeGuard AI is designed to make scope discussions easier by turning an unclear situation into an evidence-backed analysis and a practical next step.&lt;/p&gt;

&lt;p&gt;A potential business model is a freemium product: occasional analyses could be available on a free tier, while paid plans could offer higher usage limits and additional project-management capabilities.&lt;/p&gt;

&lt;p&gt;This is a proposed monetization strategy, not a claim that the product already has paying customers. My next goal is to validate whether freelancers find the workflow valuable enough to pay for it.&lt;/p&gt;

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

&lt;p&gt;Try ScopeGuard AI yourself or watch the video demonstration.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live demo — Vercel:&lt;/strong&gt; &lt;a href="https://scope-guard-ai-wine.vercel.app/" rel="noopener noreferrer"&gt;https://scope-guard-ai-wine.vercel.app/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Alternative deployment — Render:&lt;/strong&gt; &lt;a href="https://scopeguard-ai.onrender.com/" rel="noopener noreferrer"&gt;https://scopeguard-ai.onrender.com/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Video demo:&lt;/strong&gt; &lt;a href="https://youtu.be/QE8Jhd25Q34" rel="noopener noreferrer"&gt;https://youtu.be/QE8Jhd25Q34&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The application includes a demo scenario involving a business website, additional revisions, an admin dashboard, and subscription billing.&lt;/p&gt;

&lt;p&gt;The live application lets you explore the workflow, while the video provides another way to see the project in action.&lt;/p&gt;

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

&lt;p&gt;The source code is available on GitHub:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/shrutikotgire0129/ScopeGuard_AI" rel="noopener noreferrer"&gt;Explore the ScopeGuard AI repository&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The repository contains the application code and setup instructions for developers who want to explore the implementation.&lt;/p&gt;

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

&lt;p&gt;I wanted to build more than a chatbot that answers whether a request sounds like scope creep. The important part was connecting the AI's analysis to the actual agreement and making the output useful for a freelancer's next decision.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Open-weight AI at the core
&lt;/h3&gt;

&lt;p&gt;ScopeGuard AI uses &lt;strong&gt;OpenAI's &lt;code&gt;gpt-oss-20b&lt;/code&gt; open-weight model through Groq's hosted inference API&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The application sends the original agreement and the client's new request to the model. The model produces a structured analysis containing the scope status, reasoning, agreement evidence, and recommended action.&lt;/p&gt;

&lt;p&gt;The application then presents that result through a task-specific interface rather than exposing the user to a raw model response.&lt;/p&gt;

&lt;p&gt;The model runs through hosted inference in the current version; it is not running locally on the user's machine.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Evidence instead of a bare AI verdict
&lt;/h3&gt;

&lt;p&gt;A freelancer needs to explain a scope decision, not merely receive a label.&lt;/p&gt;

&lt;p&gt;That is why ScopeGuard AI includes relevant agreement excerpts and an interpretation of how they relate to the new request.&lt;/p&gt;

&lt;p&gt;This makes the result more useful for reviewing the decision and preparing a client conversation. It also gives the freelancer an opportunity to check whether the model's reasoning makes sense.&lt;/p&gt;

&lt;p&gt;The three possible outcomes are intentional. An unclear agreement should not automatically be treated as proof that a request is out of scope.&lt;/p&gt;

&lt;p&gt;AI can assist with interpretation, but it cannot guarantee that an assessment is correct or replace professional legal advice. The freelancer remains responsible for reviewing the agreement, evidence, and suggested response.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. From analysis to action
&lt;/h3&gt;

&lt;p&gt;The application supports a practical workflow beyond the initial classification:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Scope analysis:&lt;/strong&gt; Compare the client request against the original agreement.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Evidence review:&lt;/strong&gt; Inspect relevant agreement text and the model's interpretation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Client communication:&lt;/strong&gt; Generate a professional reply based on the analysis.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Change-order preparation:&lt;/strong&gt; Draft a proposal for additional work.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fee calculation:&lt;/strong&gt; Calculate a proposed fee from estimated hours and the hourly rate.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;History:&lt;/strong&gt; Revisit saved analyses through browser storage and authenticated cloud history.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These features connect the AI analysis to the decisions freelancers need to make in real client projects.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. The technology stack
&lt;/h3&gt;

&lt;p&gt;The project combines the following technologies:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Next.js and TypeScript&lt;/strong&gt; — application framework, UI, and server-side API routes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tailwind CSS&lt;/strong&gt; — responsive interface styling.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Groq and &lt;code&gt;gpt-oss-20b&lt;/code&gt;&lt;/strong&gt; — hosted inference for AI-powered scope analysis.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clerk&lt;/strong&gt; — user authentication.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MongoDB Atlas&lt;/strong&gt; — persistent history storage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Browser local storage&lt;/strong&gt; — local history.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vercel and Render&lt;/strong&gt; — application deployments.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I also built a demo scenario to make the project easier to evaluate without requiring every visitor to prepare their own agreement and client request.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Building for a real workflow
&lt;/h3&gt;

&lt;p&gt;One of the key design decisions was to keep the analysis connected to what the user can do next.&lt;/p&gt;

&lt;p&gt;A scope classification on its own is not enough. Freelancers also need to explain the decision, respond to the client, and estimate the cost of additional work.&lt;/p&gt;

&lt;p&gt;ScopeGuard AI brings those steps together in one interface.&lt;/p&gt;

&lt;p&gt;The current implementation is a working prototype. Its next stage should involve testing with real freelancers, collecting feedback, and evaluating the model against a representative set of agreements and change requests.&lt;/p&gt;

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

&lt;p&gt;For ScopeGuard AI, open innovation is about flexibility, experimentation, and the ability to build around a model that is not limited to a single closed-model ecosystem.&lt;/p&gt;

&lt;p&gt;Using an open-weight model gives the project a model choice that can be evaluated, replaced, or potentially self-hosted in a future version, subject to the model's license and deployment requirements.&lt;/p&gt;

&lt;p&gt;That flexibility matters for a product that may handle sensitive business information, such as client agreements, project requirements, and pricing discussions.&lt;/p&gt;

&lt;p&gt;There is an important distinction in the current implementation: &lt;strong&gt;ScopeGuard AI uses hosted inference through Groq. It does not currently run the model locally or guarantee that agreement text stays entirely on the user's device.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A future self-hosted deployment could provide a different level of infrastructure control, but that is a possibility for future development, not a feature I am claiming today.&lt;/p&gt;

&lt;p&gt;Open-weight models also make it possible to experiment with alternatives and evaluate how well they handle the specific challenges of scope analysis:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Can the model identify the agreement language relevant to a new request?&lt;/li&gt;
&lt;li&gt;Can it distinguish a clearly additional feature from an ambiguous requirement?&lt;/li&gt;
&lt;li&gt;Can it explain its reasoning in a way a freelancer can review?&lt;/li&gt;
&lt;li&gt;Can it recommend a useful next step without treating every change as an extra charge?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those are the questions that matter for this product. The ability to evaluate and potentially change the underlying model gives the project room to improve as those questions are tested.&lt;/p&gt;

&lt;p&gt;For a small product with a potential paid use case, that flexibility is valuable. It lets development focus on the user's actual problem instead of assuming that one model or provider will always be the right fit.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Agent Session
&lt;/h2&gt;

&lt;p&gt;I have not included an agent-session recording in this submission. If I create a session using DevRelay, I can add the resulting link here to show the development process.&lt;/p&gt;

&lt;h2&gt;
  
  
  My First User
&lt;/h2&gt;

&lt;p&gt;I am currently looking to validate ScopeGuard AI with freelancers who regularly handle client projects.&lt;/p&gt;

&lt;p&gt;I do not yet have a verified paying-customer story to share, so I would rather be transparent than present hypothetical feedback as a real testimonial.&lt;/p&gt;

&lt;p&gt;The next milestone is to put the tool in front of potential users, understand how they currently handle scope changes, and learn whether evidence-backed analysis and change-order preparation solve a problem they would pay to address.&lt;/p&gt;

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

&lt;p&gt;I am entering the following partner categories:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Render:&lt;/strong&gt; ScopeGuard AI is deployed as a hosted web application on Render.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of MongoDB Atlas:&lt;/strong&gt; MongoDB Atlas provides persistent storage for users' saved analysis history alongside the open-weight AI workflow.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thank you for checking out ScopeGuard AI.&lt;/p&gt;

&lt;p&gt;If you work as a freelancer or independent developer, I would be interested in your perspective: &lt;strong&gt;When a client asks for something that was never clearly agreed upon, how do you decide whether it belongs in the original scope?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That question is at the heart of ScopeGuard AI, and feedback from people who experience this problem is the most useful next step in making the project better.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>hacktoberfest</category>
      <category>ai</category>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>Shruti Hiraman Kotgire</dc:creator>
      <pubDate>Fri, 09 Oct 2026 22:59:50 +0000</pubDate>
      <link>https://dev.to/shrutikotgire129/-51fc</link>
      <guid>https://dev.to/shrutikotgire129/-51fc</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/shrutikotgire129/trailmate-ai-28o1" class="crayons-story__hidden-navigation-link"&gt;TrailMate AI&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
      &lt;a href="https://dev.to/shrutikotgire129/trailmate-ai-28o1" class="crayons-article__context-note crayons-article__context-note__feed"&gt;&lt;p&gt;Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass Submission 🌿&lt;/p&gt;

&lt;/a&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/shrutikotgire129" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F3218310%2Fdd25b8e8-b029-45c3-8283-ff1e909a800a.png" alt="shrutikotgire129 profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/shrutikotgire129" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Shruti Hiraman Kotgire
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Shruti Hiraman Kotgire
                
                
              
              &lt;div id="story-author-preview-content-4822892" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/shrutikotgire129" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F3218310%2Fdd25b8e8-b029-45c3-8283-ff1e909a800a.png" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Shruti Hiraman Kotgire&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/shrutikotgire129/trailmate-ai-28o1" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Oct 9&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/shrutikotgire129/trailmate-ai-28o1" id="article-link-4822892"&gt;
          TrailMate AI
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/devchallenge"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;devchallenge&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/hf26challenge"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;hf26challenge&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/shrutikotgire129/trailmate-ai-28o1" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/raised-hands-74b2099fd66a39f2d7eed9305ee0f4553df0eb7b4f11b01b6b1b499973048fe5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;4&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/shrutikotgire129/trailmate-ai-28o1#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              &lt;span class="hidden s:inline"&gt;Add&amp;nbsp;Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            5 min read
          &lt;/small&gt;
          
          &lt;div class="only-sidebar-menu-item trusted-visible-block print-hidden align-center"&gt;
                
                    
                
          &lt;/div&gt;

        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
    </item>
    <item>
      <title>TrailMate AI</title>
      <dc:creator>Shruti Hiraman Kotgire</dc:creator>
      <pubDate>Fri, 09 Oct 2026 22:48:31 +0000</pubDate>
      <link>https://dev.to/shrutikotgire129/trailmate-ai-28o1</link>
      <guid>https://dev.to/shrutikotgire129/trailmate-ai-28o1</guid>
      <description>&lt;h2&gt;
  
  
  TrailMate AI: I Built an AI That Turns Screen Time Into Outdoor Adventures
&lt;/h2&gt;

&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;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;TrailMate AI is an AI-powered outdoor companion that turns your interests, available time, and preferred activities into personalized outdoor missions.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We spend a lot of time looking at screens—even when we want to take a break. Sometimes, the hardest part of going outside is deciding what to do.&lt;/p&gt;

&lt;p&gt;Go for a walk? Explore somewhere new? Take nature photographs? Spend an hour noticing things you usually overlook?&lt;/p&gt;

&lt;p&gt;I built TrailMate AI to make that decision easier.&lt;/p&gt;

&lt;p&gt;Instead of recommending another app to spend time in, TrailMate AI uses Google's open-weight &lt;strong&gt;Gemma&lt;/strong&gt; model to help people discover things to do away from their screens.&lt;/p&gt;

&lt;h3&gt;
  
  
  How it works
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Tell TrailMate what you want.&lt;/strong&gt; Enter your interests, choose an activity, and select how much time you have.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Get a personalized mission.&lt;/strong&gt; Gemma generates creative mission content tailored to your request, including a title, a reason the mission fits your preferences, and three activity steps.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Head outside.&lt;/strong&gt; Follow the mission, complete its steps, and try the nature challenge.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Put your phone away.&lt;/strong&gt; Start Phone-Free Mode to encourage a more intentional outdoor experience.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reflect on your progress.&lt;/strong&gt; Complete your mission, earn a mission score, and revisit your saved mission history.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Activities include walking, hiking, cycling, nature exploration, photography, and a surprise-me option. Missions can be tailored to different time commitments, from one hour to longer adventures.&lt;/p&gt;

&lt;h3&gt;
  
  
  Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Personalized AI missions:&lt;/strong&gt; Turn an idea or interest into an actionable outdoor adventure.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Why this mission?:&lt;/strong&gt; Understand how the generated mission matches your request, activity, and available time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Phone-Free Mode:&lt;/strong&gt; Encourage yourself to stop checking your phone and focus on the experience.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mission completion score:&lt;/strong&gt; Track progress through completed steps and mission milestones.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mission history:&lt;/strong&gt; Review previous missions and see your accumulated outdoor and phone-free time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Responsive interface:&lt;/strong&gt; Plan a mission before leaving and keep the experience simple while outdoors.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal isn't to maximize engagement with TrailMate AI. It's to help people use it, make a plan, and then leave their screens behind.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Try TrailMate AI:&lt;/strong&gt; &lt;a href="https://trailmate-98rtn7ttl-shruti-s-angels.vercel.app/" rel="noopener noreferrer"&gt;https://trailmate-98rtn7ttl-shruti-s-angels.vercel.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here are some screenshots of the application.&lt;/p&gt;

&lt;h3&gt;
  
  
  Home
&lt;/h3&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%2Fj1mw9qwgfsj2ik3h6ljc.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%2Fj1mw9qwgfsj2ik3h6ljc.png" alt="TrailMate AI home page" width="800" height="521"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Generated outdoor mission
&lt;/h3&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%2Fh5hu2c53uynzdoh1qyxl.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%2Fh5hu2c53uynzdoh1qyxl.png" alt="TrailMate AI generated mission" width="800" height="408"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Powered by Gemma
&lt;/h3&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%2Fy2kpqfhnw0jv1k4lzqq1.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%2Fy2kpqfhnw0jv1k4lzqq1.png" alt="TrailMate AI Gemma integration" width="800" height="511"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Mission history
&lt;/h3&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%2Ftrzq57s94locd3y4tx76.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%2Ftrzq57s94locd3y4tx76.png" alt="TrailMate AI mission history" width="800" height="505"&gt;&lt;/a&gt;&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/shrutikotgire0129/Trailmate_AI" rel="noopener noreferrer"&gt;https://github.com/shrutikotgire0129/Trailmate_AI&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Live application:&lt;/strong&gt; &lt;a href="https://trailmate-ai.vercel.app/" rel="noopener noreferrer"&gt;https://trailmate-ai.vercel.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The repository includes the application source code, AI mission-generation endpoint, mission types, interface, and mission-history implementation.&lt;/p&gt;

&lt;p&gt;I'd welcome feedback, suggestions, and contributions that make TrailMate AI more useful, reliable, and effective at encouraging people to spend time outdoors.&lt;/p&gt;

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

&lt;p&gt;I built TrailMate AI with &lt;strong&gt;Next.js, React, TypeScript, Tailwind CSS, and Google's open-weight Gemma model&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The project uses the &lt;code&gt;gemma-4-26b-a4b-it&lt;/code&gt; model through Google's Gen AI SDK.&lt;/p&gt;

&lt;h3&gt;
  
  
  Technology stack
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Next.js App Router:&lt;/strong&gt; Application structure and server-side API endpoint.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;React and TypeScript:&lt;/strong&gt; Interactive UI, state management, and typed mission data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tailwind CSS:&lt;/strong&gt; Responsive styling and visual design.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gemma:&lt;/strong&gt; Creative generation of personalized mission content.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Browser local storage:&lt;/strong&gt; Persistence of mission history and user progress without requiring a separate database.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vercel:&lt;/strong&gt; Deployment of the application.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Why I didn't let the model generate everything
&lt;/h3&gt;

&lt;p&gt;One of the biggest engineering lessons from this project was that asking an LLM to generate an entire deeply nested object can introduce unnecessary reliability problems.&lt;/p&gt;

&lt;p&gt;My initial approach asked the model to produce the complete mission structure, including nested steps, durations, preparation, and safety information. That made the output harder to validate and more susceptible to malformed or inconsistent responses.&lt;/p&gt;

&lt;p&gt;I changed the architecture.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gemma generates the creative content; application code controls the structure.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The model generates a constrained set of short text fields, such as the mission title, explanation, summary, step descriptions, nature challenge, and phone-free tip. The application validates the generated content and constructs the final typed mission object.&lt;/p&gt;

&lt;p&gt;The application determines structured fields such as step durations, difficulty, preparation guidance, and safety tips instead of relying on the model to generate every field correctly.&lt;/p&gt;

&lt;p&gt;This separation makes the output more predictable and easier to maintain.&lt;/p&gt;

&lt;p&gt;The generation flow is:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;User preferences → Gemma generation → Output validation → Application-controlled mission construction → Outdoor mission&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I also added validation and a limited retry mechanism to handle unsuitable or malformed model output.&lt;/p&gt;

&lt;h3&gt;
  
  
  Building for the actual goal
&lt;/h3&gt;

&lt;p&gt;The AI generation is only one part of the product. I wanted the interface to encourage an action in the physical world rather than keep users interacting with the application.&lt;/p&gt;

&lt;p&gt;That influenced several decisions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Missions have concrete steps instead of vague motivational suggestions.&lt;/li&gt;
&lt;li&gt;Phone-Free Mode encourages users to put their devices away.&lt;/li&gt;
&lt;li&gt;Completion tracking provides a clear endpoint to the experience.&lt;/li&gt;
&lt;li&gt;Mission history records progress locally.&lt;/li&gt;
&lt;li&gt;The mission score rewards completing the activity rather than spending more time in the app.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The application is designed around a simple principle: &lt;strong&gt;the best outcome is not more time on TrailMate AI; it is more meaningful time outdoors.&lt;/strong&gt;&lt;/p&gt;

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

&lt;p&gt;Open innovation matters because AI should be useful beyond products designed to maximize screen time.&lt;/p&gt;

&lt;p&gt;Using an open-weight model like Gemma gave this project a model choice that I could build around, experiment with, and integrate into a specific use case. Instead of treating AI as a generic chatbot, I could focus it on generating practical, personalized outdoor experiences.&lt;/p&gt;

&lt;p&gt;It also encouraged me to think more carefully about the boundary between model-generated content and application-controlled logic.&lt;/p&gt;

&lt;p&gt;The model handles creative personalization. The application handles validation, structure, and predictable behavior.&lt;/p&gt;

&lt;p&gt;That separation is important when building AI products that people may use to make real-world plans. Generated suggestions should be helpful, but the application still needs to enforce sensible constraints and provide safety guidance.&lt;/p&gt;

&lt;p&gt;Open-weight models also make experimentation more accessible to developers who want to explore AI-powered products and contribute to the ecosystem. They provide another path for building specialized applications without making every product decision depend on a single closed model API.&lt;/p&gt;

&lt;p&gt;For TrailMate AI, Gemma makes the experience personal. The rest of the application turns that generated content into a structured mission that someone can actually follow.&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; — TrailMate AI uses Gemma as its core creative engine to personalize outdoor missions and support the project's screen-time-reduction goal.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thanks for checking out TrailMate AI! I built this project for the Hacktoberfest Open-Source AI Challenge, and I hope it inspires more applications that use AI to help people do meaningful things beyond their screens.&lt;/p&gt;

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