<?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: Srinjoyee Goswami</title>
    <description>The latest articles on DEV Community by Srinjoyee Goswami (@srinjoyee_goswami).</description>
    <link>https://dev.to/srinjoyee_goswami</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%2F4176001%2F6a0b2593-f2c4-4d29-af92-3469c33a6807.jpg</url>
      <title>DEV Community: Srinjoyee Goswami</title>
      <link>https://dev.to/srinjoyee_goswami</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/srinjoyee_goswami"/>
    <language>en</language>
    <item>
      <title>Séan-Shell: Summoning a Digital Spirit into an Abandoned Terminal (Atmospheric &amp; intrigue-focused)</title>
      <dc:creator>Srinjoyee Goswami</dc:creator>
      <pubDate>Sat, 31 Oct 2026 23:30:48 +0000</pubDate>
      <link>https://dev.to/srinjoyee_goswami/sean-shell-summoning-a-digital-spirit-into-an-abandoned-terminal-atmospheric-intrigue-focused-omk</link>
      <guid>https://dev.to/srinjoyee_goswami/sean-shell-summoning-a-digital-spirit-into-an-abandoned-terminal-atmospheric-intrigue-focused-omk</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;What I Built&lt;br&gt;
I built Séan-Shell (NecroTerm), an atmospheric, haunted terminal interface that acts as a digital séance board.&lt;/p&gt;

&lt;p&gt;For the "Ghost in the Machine" prompt, I wanted to step away from the polished, sterile aesthetic of modern chat interfaces and explore the eerie folklore of lost signals, digital decay, and lingering electronic spirits. Séan-Shell frames local intelligence not as an all-knowing assistant, but as a spectral presence tethered inside an abandoned shell session.&lt;/p&gt;

&lt;p&gt;Users interact through a retro command-line environment where standard utilities behave unexpectedly: prompts glitch, commands echo back forgotten machine memory, and cryptic responses manifest with unsettling delays, vintage CRT jitter, and ambient digital static.&lt;/p&gt;

&lt;p&gt;Demo&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live Deployment:&lt;/strong&gt; &lt;a href="https://srinjoyeegoswami.github.io/spooky_project/" rel="noopener noreferrer"&gt;Séan-Shell (NecroTerm) on GitHub Pages&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Code&lt;br&gt;
The source repository is completely open-source:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/srinjoyeegoswami" rel="noopener noreferrer"&gt;
        srinjoyeegoswami
      &lt;/a&gt; / &lt;a href="https://github.com/srinjoyeegoswami/spooky_project" rel="noopener noreferrer"&gt;
        spooky_project
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;spooky_project — Séan-Shell (NecroTerm) 👻🕯️&lt;/h1&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;A Cute &amp;amp; Spooky Retro Spectral Terminal for developers, haunted by vintage programming spirits and antique computing relics.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🔮 Overview&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Séan-Shell (NecroTerm)&lt;/strong&gt; is a playful, antique-themed retro terminal built with React and Vite. It blends the nostalgia of cathode-ray tube terminals, 80-column Hollerith punch cards, and vintage magnetic tapes with an interactive 8-bit ghost companion.&lt;/p&gt;
&lt;p&gt;Whether observing passive shell events or summoning the ghosts of historical programming languages, Séan-Shell keeps you company with eerie whispers, retro soundscapes, and offline-first local intelligence.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;✨ Features&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;👻 &lt;strong&gt;8-Bit Ghost Mascot &amp;amp; Altar&lt;/strong&gt;: Animated spectral mascot responding dynamically to successes, command errors, and ongoing séances with flickering candlelight.&lt;/li&gt;
&lt;li&gt;📜 &lt;strong&gt;Parchment &amp;amp; CRT Aesthetic&lt;/strong&gt;: Retro monospace typography (&lt;code&gt;Courier Prime&lt;/code&gt;, &lt;code&gt;VT323&lt;/code&gt;, &lt;code&gt;Cinzel Decorative&lt;/code&gt;), CRT scanline vignette, and warm amber-green spectral palette.&lt;/li&gt;
&lt;li&gt;🕯️ &lt;strong&gt;Séance Mode (Summon Vintage Spirits)&lt;/strong&gt;: Channel the ghosts of historic languages and…&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/srinjoyeegoswami/spooky_project" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;How I Built It&lt;br&gt;
Séan-Shell is built as a lightweight, performant web client that pairs immersive frontend terminal emulation with open-source AI inference:&lt;/p&gt;

&lt;p&gt;Frontend Core: Built with React and bundled using Vite for rapid hot module replacement and minimal runtime overhead.&lt;/p&gt;

&lt;p&gt;Terminal &amp;amp; Aesthetics: Styled using modular CSS with custom CRT scanline shaders, phosphor glow effects, chromatic aberration, and simulated command latency.&lt;/p&gt;

&lt;p&gt;Code Quality &amp;amp; Tooling: Configured with Oxlint (.oxlintrc.json) for sub-millisecond static linting and modern JavaScript optimization.&lt;/p&gt;

&lt;p&gt;Local &amp;amp; Open Inference: Designed to run with open-weight language models via local inference runtimes (such as Ollama / Llama.cpp endpoints) or open-source inference servers. The terminal feeds custom system manifests and temperature-steered prompts to force the model to stay strictly in character as an elusive digital entity rather than a corporate assistant.&lt;/p&gt;

&lt;p&gt;Why Does Open Innovation Matter?&lt;br&gt;
Open innovation is what made this project possible:&lt;/p&gt;

&lt;p&gt;Uncensored Creative Expression: Commercial closed APIs enforce rigid safety guardrails and sterile tones that actively resist roleplaying as eerie, mysterious, or decaying entities. Open-weight models allow full control over system instructions, sampling temperatures, and decoding parameters to craft a genuinely believable aesthetic.&lt;/p&gt;

&lt;p&gt;Local Sovereignty &amp;amp; Offline Functionality: A digital ghost shouldn't need a persistent billing tier or a remote corporate server to speak. With open-source runtimes, the entire experience can live directly on user hardware without telemetry, tokens, or network reliance.&lt;/p&gt;

&lt;p&gt;Hackability: From customizing the tokenizer output stream down to each character render to swapping models depending on GPU constraints, open-source AI turns machine intelligence into a malleable creative medium rather than a locked black box.&lt;/p&gt;

&lt;p&gt;The Spirit of It&lt;br&gt;
There is an eerie parallel between the early internet—green phosphors, mysterious dial tones, empty chatrooms—and modern generative systems trying to reconstruct human thought from raw parameters. Séan-Shell captures that uncanny valley: typing a query into a silent prompt, waiting for the cursor to blink back, and wondering if the response is just math or something lingering inside the machine.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>SlothSort: The Private, Offline AI That Cleans Your Downloads Folder While You Nap</title>
      <dc:creator>Srinjoyee Goswami</dc:creator>
      <pubDate>Wed, 21 Oct 2026 12:01:23 +0000</pubDate>
      <link>https://dev.to/srinjoyee_goswami/slothsort-the-private-offline-ai-that-cleans-your-downloads-folder-while-you-nap-3ig8</link>
      <guid>https://dev.to/srinjoyee_goswami/slothsort-the-private-offline-ai-that-cleans-your-downloads-folder-while-you-nap-3ig8</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week3-2026-10-19"&gt;Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;Let’s be honest: everyone’s &lt;code&gt;Downloads&lt;/code&gt; and &lt;code&gt;Desktop&lt;/code&gt; folders are digital graveyards filled with &lt;code&gt;Screenshot 2026-10-19 at 14.22.10.png&lt;/code&gt;, &lt;code&gt;final_v2_REAL(1).pdf&lt;/code&gt;, and &lt;code&gt;notes_untitled_44.txt&lt;/code&gt;. We all swear we’ll organize them "this weekend," and we never do—because opening hundreds of mystery files just to rename and file them away takes way too much energy.&lt;/p&gt;

&lt;p&gt;Enter &lt;strong&gt;SlothSort&lt;/strong&gt; 🦥—an open-source, 100% local, CPU-aware file and screenshot tidier built for maximum human laziness.&lt;/p&gt;

&lt;p&gt;Instead of hogging your machine’s resources or blasting fan noise while you work, &lt;strong&gt;SlothSort&lt;/strong&gt; behaves like an actual sloth:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;It Naps When You Work ("Sloth Pacing"):&lt;/strong&gt; It constantly monitors your system CPU load. If you're actively coding, gaming, or browsing and CPU usage crosses a calm threshold (default &lt;code&gt;35%&lt;/code&gt;), SlothSort goes straight to sleep.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Slow &amp;amp; Steady Local Inference:&lt;/strong&gt; Only when your machine is idle does SlothSort wake up, pick up &lt;strong&gt;one single file at a time&lt;/strong&gt;, inspect its contents using local open-weight models via &lt;strong&gt;Ollama&lt;/strong&gt;, rename it cleanly in &lt;code&gt;snake_case&lt;/code&gt;, and tuck it into a neat category folder (&lt;code&gt;Finance_And_Bills&lt;/code&gt;, &lt;code&gt;Study_And_Papers&lt;/code&gt;, &lt;code&gt;Code_And_Tech&lt;/code&gt;, &lt;code&gt;Screenshots_And_Media&lt;/code&gt;, &lt;code&gt;Personal_And_Docs&lt;/code&gt;, or &lt;code&gt;Misc_Archive&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The "Lazy Undo" Ledger:&lt;/strong&gt; Even too lazy to double-check what the AI moved? Every single file operation is recorded in a local JSON ledger (&lt;code&gt;sloth_history.json&lt;/code&gt;) with a 1-sentence summary of what was inside the file and a &lt;strong&gt;1-click Undo&lt;/strong&gt; button that teleports the file right back to its messy original name and location.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Anyone who hoards lecture PDFs, receipts, code snippets, and random screenshots gets to be effortlessly lazy—your folders organize themselves while you grab coffee.&lt;/p&gt;




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

&lt;p&gt;🌐 &lt;strong&gt;Live Interactive Web Demo ("The Lazy Control Panel"):&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
👉 &lt;strong&gt;&lt;a href="https://srinjoyeegoswami.github.io/SlothSort/" rel="noopener noreferrer"&gt;https://srinjoyeegoswami.github.io/SlothSort/&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In the live dashboard, you can test the &lt;strong&gt;Sloth Meter&lt;/strong&gt; (CPU load threshold &amp;amp; nap state), generate a sandbox of realistic messy files with one click (&lt;code&gt;Generate Messy Demo Folder&lt;/code&gt;), watch the local agent inspect and sort files one by one, and test the &lt;strong&gt;1-Click Undo&lt;/strong&gt; ledger in real time.&lt;/p&gt;


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


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/srinjoyeegoswami" rel="noopener noreferrer"&gt;
        srinjoyeegoswami
      &lt;/a&gt; / &lt;a href="https://github.com/srinjoyeegoswami/SlothSort" rel="noopener noreferrer"&gt;
        SlothSort
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;p&gt;
  &lt;span&gt;🦥&lt;/span&gt;
&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;SlothSort&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Slow &amp;amp; Steady file organizer — 100% local, AI-powered, resource-aware&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/03113bacf9cb363a7cb811caa2770807ee4f1f679d595f2a0aa6d988cf09091a/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f41492d3130302532352532304c6f63616c2d3232633535653f7374796c653d666c61742d737175617265"&gt;&lt;img src="https://camo.githubusercontent.com/03113bacf9cb363a7cb811caa2770807ee4f1f679d595f2a0aa6d988cf09091a/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f41492d3130302532352532304c6f63616c2d3232633535653f7374796c653d666c61742d737175617265"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/018727f8403355fe7699790ddb6a16af167237942f9ad50fa5132430a810edde/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f436c6f7564253230446174612d5a65726f25323042797465732d6635396530623f7374796c653d666c61742d737175617265"&gt;&lt;img src="https://camo.githubusercontent.com/018727f8403355fe7699790ddb6a16af167237942f9ad50fa5132430a810edde/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f436c6f7564253230446174612d5a65726f25323042797465732d6635396530623f7374796c653d666c61742d737175617265"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/b0c9a759b12df9c2fa2c79e7b9d08e3f2bd7af9a1adfa84469034e7853083d4c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4861636b6174686f6e2d536c6f772532302532362532305374656164792d707572706c653f7374796c653d666c61742d737175617265"&gt;&lt;img src="https://camo.githubusercontent.com/b0c9a759b12df9c2fa2c79e7b9d08e3f2bd7af9a1adfa84469034e7853083d4c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4861636b6174686f6e2d536c6f772532302532362532305374656164792d707572706c653f7374796c653d666c61742d737175617265"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/7d217ebb91a61cb4d98e70dee31eb08e0a5f71bc518ebd4151a73c6fb1191d00/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d626c75653f7374796c653d666c61742d737175617265"&gt;&lt;img src="https://camo.githubusercontent.com/7d217ebb91a61cb4d98e70dee31eb08e0a5f71bc518ebd4151a73c6fb1191d00/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d626c75653f7374796c653d666c61742d737175617265"&gt;&lt;/a&gt;
&lt;/p&gt;




&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🦥 What is SlothSort?&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;SlothSort&lt;/strong&gt; is an open-source, 100% local, resource-aware file organizer that uses AI to tame your messy &lt;code&gt;Downloads&lt;/code&gt; folder — without ever sending a single byte to the cloud.&lt;/p&gt;

&lt;p&gt;It runs quietly in the background like a literal sloth:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Checks CPU load&lt;/strong&gt; before doing any AI work (never lags your laptop)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Processes one file at a time&lt;/strong&gt; with naps in between ("Slow and Steady")&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Uses local open-weight models&lt;/strong&gt; via Ollama for understanding files&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Renames files cleanly&lt;/strong&gt; and sorts them into categorized folders&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Maintains a 1-click "Lazy Undo"&lt;/strong&gt; ledger to reverse any action&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;✨ Key Features&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;&lt;div class="table-wrapper-paragraph"&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;table&gt;

&lt;thead&gt;

&lt;tr&gt;

&lt;th&gt;Feature&lt;/th&gt;

&lt;th&gt;Description&lt;/th&gt;

&lt;/tr&gt;

&lt;/thead&gt;

&lt;tbody&gt;

&lt;tr&gt;

&lt;td&gt;🧠 &lt;strong&gt;Dual-Model AI&lt;/strong&gt;&lt;br&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;br&gt;
&lt;code&gt;llama3.2:3b&lt;/code&gt; for text/documents, &lt;code&gt;moondream&lt;/code&gt; for screenshots&lt;/td&gt;

&lt;/tr&gt;

&lt;tr&gt;

&lt;td&gt;🏠 &lt;strong&gt;100% Local&lt;/strong&gt;&lt;br&gt;
&lt;/td&gt;

&lt;td&gt;All inference runs on &lt;code&gt;localhost:11434&lt;/code&gt; via Ollama&lt;/td&gt;

&lt;/tr&gt;

&lt;tr&gt;

&lt;td&gt;📊 &lt;strong&gt;Sloth Pacer&lt;/strong&gt;&lt;br&gt;
&lt;/td&gt;

&lt;td&gt;CPU/RAM monitoring — only works when your machine is idle&lt;/td&gt;

&lt;/tr&gt;

&lt;tr&gt;

&lt;td&gt;📂 &lt;strong&gt;Smart Categories&lt;/strong&gt;&lt;br&gt;
&lt;/td&gt;

&lt;td&gt;Finance, Study, Code,&lt;/td&gt;

&lt;/tr&gt;

&lt;/tbody&gt;

&lt;/table&gt;&lt;/div&gt;…&lt;p&gt;&lt;/p&gt;&lt;/div&gt;
&lt;br&gt;
  &lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/srinjoyeegoswami/SlothSort" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


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




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

&lt;p&gt;SlothSort is built around a dual-model local open-source AI pipeline connected to a lightweight Python daemon and a cozy React control panel:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Local Open-Weight Models (via Ollama):&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Text &amp;amp; Document Brain (&lt;code&gt;llama3.2:3b&lt;/code&gt;):&lt;/strong&gt; Reads the first 1,000 characters of text files, code scripts, or Page 1 of PDFs to infer the document's true subject without blowing up the context window.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vision &amp;amp; Screenshot Brain (&lt;code&gt;moondream&lt;/code&gt;):&lt;/strong&gt; Inspects unlabelled &lt;code&gt;.png&lt;/code&gt; and &lt;code&gt;.jpg&lt;/code&gt; screenshots to figure out what is actually on screen (&lt;code&gt;ui_bug_console_error.png&lt;/code&gt; instead of &lt;code&gt;Screenshot (482).png&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Structured JSON Enforcement:&lt;/strong&gt; By passing a strict Pydantic/JSON schema to Ollama's &lt;code&gt;/api/generate&lt;/code&gt; &lt;code&gt;format&lt;/code&gt; parameter, the local models are forced to return deterministic JSON (&lt;code&gt;clean_name&lt;/code&gt;, &lt;code&gt;category&lt;/code&gt;, &lt;code&gt;summary&lt;/code&gt;, and &lt;code&gt;confidence&lt;/code&gt;) rather than conversational prose—preventing broken filenames.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Sloth Pacer (&lt;code&gt;psutil&lt;/code&gt; + FastAPI):&lt;/strong&gt; A Python background loop checks &lt;code&gt;psutil.cpu_percent()&lt;/code&gt;. If the laptop is busy, it enters &lt;strong&gt;Nap Mode&lt;/strong&gt;. When idle, &lt;code&gt;pypdf&lt;/code&gt; and &lt;code&gt;Pillow&lt;/code&gt; (which resizes screenshots in-memory to max &lt;code&gt;640px&lt;/code&gt; for 4x faster local vision inference) extract minimal context and pass it to &lt;code&gt;localhost:11434&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Safe File Mover &amp;amp; Ledger:&lt;/strong&gt; Built with Python's &lt;code&gt;pathlib&lt;/code&gt; and &lt;code&gt;shutil&lt;/code&gt;, preserving original file extensions, automatically preventing filename collisions (&lt;code&gt;_1&lt;/code&gt;, &lt;code&gt;_2&lt;/code&gt;), and writing every transaction to &lt;code&gt;sloth_history.json&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Frontend ("The Lazy Control Panel"):&lt;/strong&gt; Built with &lt;strong&gt;React&lt;/strong&gt;, &lt;strong&gt;Vite&lt;/strong&gt;, &lt;strong&gt;Tailwind CSS&lt;/strong&gt;, and &lt;strong&gt;Lucide-React&lt;/strong&gt;, featuring a live CPU Sloth Meter, an offline sandbox generator for instant testing, and an interactive activity feed with instant undo controls.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;A background file organizer is the ultimate proof case for &lt;strong&gt;why open-weight, local AI beats closed cloud APIs&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Uncompromising Privacy for Sensitive Files:&lt;/strong&gt; Think about what actually sits in a real &lt;code&gt;Downloads&lt;/code&gt; or &lt;code&gt;Desktop&lt;/code&gt; folder—bank statements, tax PDFs, academic transcripts, ID scans, medical bills, and private screenshots. Piping your personal filesystem automatically into a closed, third-party cloud API is a massive privacy nightmare. Because SlothSort runs open-weight models strictly on &lt;code&gt;localhost:11434&lt;/code&gt;, &lt;strong&gt;zero bytes of your personal files ever leave your laptop&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set It Once, Pay $0 Forever:&lt;/strong&gt; An automation tool that watches your folders 24/7/365 shouldn't come with token anxiety, rate-limit errors, or a monthly API bill. Running local open weights makes infinite laziness 100% free.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;True Offline Autonomy &amp;amp; Hardware Control:&lt;/strong&gt; Whether you're on a plane, on flaky campus Wi-Fi, or working completely offline, SlothSort keeps tidying in the background. And because the stack is open, you can hot-swap &lt;code&gt;llama3.2:1b&lt;/code&gt; on an older laptop or upgrade to &lt;code&gt;qwen2.5:7b&lt;/code&gt; on a workstation with a single config tweak.&lt;/li&gt;
&lt;/ol&gt;




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

&lt;p&gt;I used an AI coding workflow in VS Code / Antigravity to scaffold the monorepo architecture, wire up the FastAPI + Ollama structured output schemas, and build the interactive React sandbox mode so anyone can test the Sloth Pacer right in their browser.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Lazy Payoff
&lt;/h2&gt;

&lt;p&gt;Before running SlothSort this week, my &lt;code&gt;Downloads&lt;/code&gt; folder had accumulated dozens of cryptic PDFs (&lt;code&gt;1704.05862v2.pdf&lt;/code&gt;, &lt;code&gt;syllabus_final_updated(2).pdf&lt;/code&gt;) and unnamed screenshots from hackathon debugging sessions. &lt;/p&gt;

&lt;p&gt;Instead of spending 45 minutes manually opening each PDF and screenshot to figure out what was worth keeping, I let SlothSort nap in the background while I worked on coursework. Every time I stepped away or my CPU dropped below 35%, it quietly woke up and filed a few items away. By the end of the evening, my research papers were neatly named inside &lt;code&gt;Study_And_Papers/&lt;/code&gt;, my debugging screenshots had readable names inside &lt;code&gt;Screenshots_And_Media/&lt;/code&gt;, and I didn't have to lift a finger.&lt;/p&gt;




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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Slow and Steady (Week 3 Challenge Prompt)&lt;/strong&gt; — Built around open-weight local models (&lt;code&gt;llama3.2:3b&lt;/code&gt; &amp;amp; &lt;code&gt;moondream&lt;/code&gt; via Ollama) to automate a dreaded chore at a literal sloth's pace.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>GhostDocs: an invoice sorter for freelancers that never leaves their laptop</title>
      <dc:creator>Srinjoyee Goswami</dc:creator>
      <pubDate>Sun, 18 Oct 2026 09:57:07 +0000</pubDate>
      <link>https://dev.to/srinjoyee_goswami/ghostdocs-an-invoice-sorter-for-freelancers-that-never-leaves-their-laptop-4b7o</link>
      <guid>https://dev.to/srinjoyee_goswami/ghostdocs-an-invoice-sorter-for-freelancers-that-never-leaves-their-laptop-4b7o</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;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;GhostDocs&lt;/strong&gt; turns PDF invoices and receipts into a structured, searchable ledger, using an open-weight model that runs on the freelancer's own laptop. Drop in a document and get the invoice number, vendor or client, dates, currency, subtotal, tax, total, payment terms, and every line item. Everything is saved to a local SQLite ledger and exports to CSV or multi-tab Excel.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Who would pay for it:&lt;/strong&gt; freelancers, consultants, and small agencies. At tax time they spend hours retyping invoices into spreadsheets, and those invoices contain hourly rates, client names, and NDA-covered project details. Most AI expense tools solve the typing problem by asking them to upload all of that to a cloud service. GhostDocs solves it without the upload. A second group is bookkeepers who handle many freelancers' paperwork and can't send client data to third-party APIs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The business model I'm aiming for:&lt;/strong&gt; the core stays free and MIT-licensed. The paid part would be what freelancers actually ask for: scanned-receipt OCR, multi-currency totals, and QuickBooks/Xero export, plus a one-time setup service for non-technical users. I haven't charged anyone yet, so this is my plan rather than a result.&lt;/p&gt;

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

&lt;p&gt;Live app: &lt;a href="https://ghostdocs.streamlit.app/" rel="noopener noreferrer"&gt;https://ghostdocs.streamlit.app/&lt;/a&gt;&lt;/p&gt;

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


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/srinjoyeegoswami" rel="noopener noreferrer"&gt;
        srinjoyeegoswami
      &lt;/a&gt; / &lt;a href="https://github.com/srinjoyeegoswami/ghostdocs" rel="noopener noreferrer"&gt;
        ghostdocs
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;GhostDocs 👻&lt;/h1&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;100% Offline, On-Device AI Invoice &amp;amp; Receipt Sorter for Freelancers&lt;/h3&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"Keep client contracts, financial rates, and NDA-covered billing 100% on your laptop."&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="https://www.python.org/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/93a33cfc2339ec3fa9be792576576fbaafc42b0c7031285662b02f3aca1e1c59/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f707974686f6e2d332e31302b2d626c75652e737667" alt="Python 3.10+"&gt;&lt;/a&gt;
&lt;a href="https://opensource.org/licenses/MIT" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/fdf2982b9f5d7489dcf44570e714e3a15fce6253e0cc6b5aa61a075aac2ff71b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d79656c6c6f772e737667" alt="License: MIT"&gt;&lt;/a&gt;
&lt;a href="https://github.com" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/923dd0da2d5fb809c89c1adfad008be518fc1c406a6898ceb7402c3efb9cb4a0/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f507269766163792d3130302532352532304f66666c696e652d737563636573732e737667" alt="Privacy: 100% Offline"&gt;&lt;/a&gt;
&lt;a href="https://github.com/ollama/ollama-python" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/617cb743ba152478d036e4ba257666438c9a3eeec43067709330f081bfa86226/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f456e67696e652d4f6c6c616d6125323053444b2d707572706c652e737667" alt="Engine: Ollama Python SDK"&gt;&lt;/a&gt;
&lt;a href="https://hacktoberfest.com" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/359a78a6c36b079b424e81e8d4f42c736fee8b4bef8a291fd8048c5d55af7688/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4861636b746f626572666573742d323032362d6f72616e67652e737667" alt="Hacktoberfest"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🎯 The Mission&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Freelancers, consultants, and independent agencies handle confidential client data daily: hourly billing rates, project roadmaps, vendor contracts, and NDA-protected deliverables. Traditional AI expense tools upload this sensitive financial paper trail to third-party cloud APIs.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;GhostDocs&lt;/strong&gt; solves this permanently. It is a lightweight, zero-telemetry document extraction utility that runs &lt;strong&gt;entirely on your local machine&lt;/strong&gt; using the official &lt;a href="https://github.com/ollama/ollama-python" rel="noopener noreferrer"&gt;Ollama Python SDK&lt;/a&gt; (&lt;code&gt;ollama.Client&lt;/code&gt;) to query open-weight LLMs (&lt;code&gt;llama3.2:3b&lt;/code&gt;, &lt;code&gt;qwen2.5:3b&lt;/code&gt;, &lt;code&gt;mistral:7b&lt;/code&gt;). It turns messy PDF invoices and receipt text files into structured, deterministic accounting records and a persistent SQLite ledger—even with your Wi-Fi completely turned off.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://ghostdocs.streamlit.app/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/fba847691f0bf8f27f3339d28a293ea778635f16c68d2d39649fd5aba5527c74/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c69766525323044656d6f2d4f70656e2532304170702d6666346234623f6c6f676f3d73747265616d6c6974266c6f676f436f6c6f723d7768697465" alt="Live Demo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🏗️ Architecture &amp;amp; Data Flow&lt;/h2&gt;

&lt;/div&gt;

  &lt;div class="js-render-enrichment-target"&gt;
    &lt;div class="render-plaintext-hidden"&gt;
      &lt;pre&gt;graph TD
    A["Uploaded Invoice (PDF / TXT)"] --&amp;gt; B["Local Ingestion (pypdf / pdfplumber)"]
    B --&amp;gt; C["Token Normalizer &amp;amp; Sanitizer"]
    C&lt;/pre&gt;…&lt;/div&gt;
&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/srinjoyeegoswami/ghostdocs" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Open-weight models via Ollama:&lt;/strong&gt; the app talks to a local Ollama server through the official Python SDK. &lt;code&gt;llama3.2:3b&lt;/code&gt; is the default, and &lt;code&gt;qwen2.5:3b&lt;/code&gt; or &lt;code&gt;mistral:7b&lt;/code&gt; can be swapped in from the sidebar.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Grammar-constrained decoding:&lt;/strong&gt; I pass a Pydantic model's JSON schema to Ollama's &lt;code&gt;format&lt;/code&gt; parameter, so the model can only produce output that fits the invoice schema. Temperature is 0 for repeatable results.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pydantic validation:&lt;/strong&gt; every response is validated into typed fields before saving, so totals are numbers and currency symbols become codes like USD or INR.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local ingestion:&lt;/strong&gt; &lt;code&gt;pypdf&lt;/code&gt; reads PDFs, with &lt;code&gt;pdfplumber&lt;/code&gt; as a fallback, and a normaliser trims the text to keep prompts small enough for 3B-parameter models.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Storage and UI:&lt;/strong&gt; SQLite for the ledger, Streamlit for the interface, pandas and openpyxl for exports.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fallback mode:&lt;/strong&gt; if Ollama isn't running, a regex-based extractor lets people try the whole pipeline before downloading any model.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Where the open approach beat a closed API for this product:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Privacy is the product.&lt;/strong&gt; A freelancer under an NDA can't send a client's invoice to someone else's server. With a local open-weight model the document never leaves the machine, which a cloud API can't offer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost.&lt;/strong&gt; There are no per-token fees and no API keys. Processing the hundredth invoice costs the same as the first, which matters when the customer is a solo freelancer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No lock-in.&lt;/strong&gt; Models are swappable, so if a better small model appears, it's a one-line change instead of a migration.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Works offline.&lt;/strong&gt; The whole pipeline runs with Wi-Fi off, which anyone can check using the steps in the README.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The trade-off is that a 3B model on a laptop is slower and less accurate than a frontier model on messy documents, which is why the output is schema-validated and why OCR for scans is the first paid feature on my list.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>ai</category>
      <category>webdev</category>
    </item>
    <item>
      <title>TrailQuest: Screen-Free, Audio-Guided Outdoor Exploration with Gemma &amp; Hermes</title>
      <dc:creator>Srinjoyee Goswami</dc:creator>
      <pubDate>Sun, 11 Oct 2026 21:08:21 +0000</pubDate>
      <link>https://dev.to/srinjoyee_goswami/trailquest-screen-free-audio-guided-outdoor-exploration-with-gemma-hermes-83k</link>
      <guid>https://dev.to/srinjoyee_goswami/trailquest-screen-free-audio-guided-outdoor-exploration-with-gemma-hermes-83k</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;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;TrailQuest&lt;/strong&gt; is a screen-free, audio-guided outdoor exploration app designed for runners and walkers. Once you select your desired distance and preferences (parks, green spaces, landmarks), the backend generates a closed-loop route originating from your current location. It translates OSRM turn-by-turn navigation into spoken audio cues, keeping your attention off your phone and focused on your surroundings.&lt;/p&gt;

&lt;p&gt;During each route, participants encounter interactive activities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Visual Quests:&lt;/strong&gt; Capture a photo of designated landmarks; an open-weight vision model validates presence and alignment.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Social Quests:&lt;/strong&gt; Greet individuals encountered along the trail to earn completion points.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Navigation Accuracy:&lt;/strong&gt; Maintain alignment with the generated route for consistency bonuses.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Audio feedback is available in two distinct styles: &lt;code&gt;friendly&lt;/code&gt; encouragement or a humorous &lt;code&gt;full_savage&lt;/code&gt; coach persona that highlights pace changes and schedules mid-route pauses. The landmark harvester is tailored for India, beginning with Kolkata.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Web Application:&lt;/strong&gt; &lt;a href="https://srinjoyeegoswami.github.io/TrailQuest/" rel="noopener noreferrer"&gt;TrailQuest Web App&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Note: The hosted build operates in offline-fallback mode due to hosting constraints on static pages. The full architecture (routing engine, synchronisation, Hermes evaluation, and Gemma verification) operates locally via Docker Compose as outlined in the repository documentation.&lt;/em&gt;&lt;/p&gt;

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


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/srinjoyeegoswami" rel="noopener noreferrer"&gt;
        srinjoyeegoswami
      &lt;/a&gt; / &lt;a href="https://github.com/srinjoyeegoswami/TrailQuest" rel="noopener noreferrer"&gt;
        TrailQuest
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;p&gt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; HEAD&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;TrailQuest Backend &amp;amp; Agent Service&lt;/h1&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;Screen-free, audio-guided outdoor exploration running platform powered by open-weight AI (Gemma), Hermes Agent, PostGIS, and OSRM. Built for the Hacktoberfest "Touch Grass" challenge.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Architecture Overview&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Screen-Free Audio Guidance&lt;/strong&gt;: Routes are compiled into natural-language speech prompts on the backend and voiced using device-native TTS with music ducking, keeping runners off their screens.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dual Voice Profiles&lt;/strong&gt;: Switchable between &lt;code&gt;friendly&lt;/code&gt; and &lt;code&gt;full_savage&lt;/code&gt; personas, including automatic pace-drop alerts and a halfway 2-minute fatigue break trigger (&lt;code&gt;config/voice_profiles.json&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Offline-First Synchronization&lt;/strong&gt;: Telemetry coordinates and quest photos are buffered on the device during runs with zero cellular dependency, then synced within 24 hours of reconnecting.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open-Weight AI Pipeline&lt;/strong&gt;: Gemma serves as the multimodal vision evaluator on DigitalOcean Serverless Inference / Ollama, orchestrated by Hermes Agent.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Two-Tiered Landmark Storage&lt;/strong&gt;: Separates verified baseline locations (&lt;code&gt;data/landmarks/curated_landmarks.json&lt;/code&gt;) from dynamically mined regional discoveries (&lt;code&gt;data/landmarks/mined_landmarks.json&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Quickstart&lt;/h2&gt;…&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/srinjoyeegoswami/TrailQuest" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


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

&lt;h3&gt;
  
  
  Open-Source AI Architecture
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Gemma 3:&lt;/strong&gt; Utilized via DigitalOcean Serverless Inference or local Ollama execution as a multimodal vision validation engine. It evaluates user-submitted photos against landmark attributes to yield structured JSON output (&lt;code&gt;is_match&lt;/code&gt;, &lt;code&gt;confidence&lt;/code&gt;, &lt;code&gt;identified_objects&lt;/code&gt;, and coach feedback). Validations require a confidence score of $\ge 0.70$.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hermes Agent:&lt;/strong&gt; Handles evaluation orchestration through a custom skill module (&lt;code&gt;route_and_quest_director&lt;/code&gt;) integrating three primary tools:

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;evaluate_run_navigation_accuracy&lt;/code&gt;: Computes PostGIS Hausdorff distance between planned and tracked paths (adherence target $\le 75\text{ m}$).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;run_gemma_vision_verifier&lt;/code&gt;: Assesses visual submissions.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;tally_quest_score&lt;/code&gt;: Aggregates distance points, route fidelity bonuses, visual confirmations, and social interactions.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Technical Stack
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; FastAPI, asyncpg, Shapely, Pydantic&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Spatial Engine:&lt;/strong&gt; PostgreSQL 16 with PostGIS, coupled with OSRM (foot profile)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data Sourcing:&lt;/strong&gt; Baseline registries augmented with OpenStreetMap (Overpass) queries and local recommendations, deduplicated within a 50-meter radius&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Frontends:&lt;/strong&gt; React, Vite, and Three.js interface alongside a React Native tracking application featuring GPS pathing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Infrastructure:&lt;/strong&gt; Docker Compose orchestration for PostGIS and OSRM&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Offline-First Architecture
&lt;/h3&gt;

&lt;p&gt;GPS points and quest captures buffer locally during activity without requiring active cellular coverage. Once connectivity is restored, telemetry packages submit to &lt;code&gt;/api/v1/sync/run-payload&lt;/code&gt;. The backend logs the raw payload, flags the session for review, triggers Hermes evaluation pipelines in the background, and updates the status to complete.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Sustainable Economics:&lt;/strong&gt; Vision verification per image remains cost-effective by executing Gemma across cost-efficient cloud compute or local Ollama instances rather than accumulating proprietary per-call API fees.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inference Portability:&lt;/strong&gt; The backend connects to either hosted endpoints or local Ollama deployments simply through configuration toggles, preventing lock-in to single-vendor API specifications.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community Data &amp;amp; Tooling:&lt;/strong&gt; OpenStreetMap and OSRM allow localized routing and point-of-interest discovery to expand into new areas without recurring geospatial map licensing fees.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Extensible Agent Design:&lt;/strong&gt; Hermes skill declarations and tooling remain transparent, allowing straightforward auditing, extension of quest varieties, and addition of new audio personas.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;Gemma&lt;/li&gt;
&lt;li&gt;Hermes Agent&lt;/li&gt;
&lt;li&gt;DigitalOcean&lt;/li&gt;
&lt;/ul&gt;

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