<?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: Ayush Dinda</title>
    <description>The latest articles on DEV Community by Ayush Dinda (@ayush_dinda_6b35589d05771).</description>
    <link>https://dev.to/ayush_dinda_6b35589d05771</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%2F4160045%2F50fbe311-3569-422f-b670-44af114e855b.jpg</url>
      <title>DEV Community: Ayush Dinda</title>
      <link>https://dev.to/ayush_dinda_6b35589d05771</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ayush_dinda_6b35589d05771"/>
    <language>en</language>
    <item>
      <title>ECHOES: The Ghost in Your Terminal — Haunted Local AI Companion</title>
      <dc:creator>Ayush Dinda</dc:creator>
      <pubDate>Tue, 27 Oct 2026 04:36:48 +0000</pubDate>
      <link>https://dev.to/ayush_dinda_6b35589d05771/echoes-the-ghost-in-your-terminal-haunted-local-ai-companion-35mj</link>
      <guid>https://dev.to/ayush_dinda_6b35589d05771/echoes-the-ghost-in-your-terminal-haunted-local-ai-companion-35mj</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;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Echoes: The Ghost in Your Terminal&lt;/strong&gt; is a spooky, retro-terminal-inspired AI companion built for developers.&lt;/p&gt;

&lt;p&gt;Every engineer knows the eerie sensation of staring into a blinking terminal cursor at 2:00 AM on the graveyard shift. You type commands into the void, hoping the compiler will show mercy. Echoes turns that developer folklore into an interactive reality: it manifests the fictional "ghost" living within those developer rituals.&lt;/p&gt;

&lt;p&gt;You enter or paste shell commands (&lt;code&gt;git status&lt;/code&gt;, &lt;code&gt;npm run build&lt;/code&gt;, &lt;code&gt;docker compose up&lt;/code&gt;, &lt;code&gt;git commit -m "fix"&lt;/code&gt;, &lt;code&gt;python main.py&lt;/code&gt;), and a locally running open-weight AI model interprets the syntax as pure text to return eerie, atmospheric commentary and synthesize full horror chronicles.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Your terminal remembers. The machine whispers. The ghost is only code."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Simulated Haunted Terminal&lt;/strong&gt;: Near-black CRT canvas (&lt;code&gt;#070a07&lt;/code&gt;) with phosphor green (&lt;code&gt;#38ef7d&lt;/code&gt;), muted amber, and crimson accents, subtle scanlines, low-intensity flicker, and breathing phosphor glow.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Four Atmospheric Styles&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;🌙 &lt;strong&gt;Subtle&lt;/strong&gt;: Quiet unease, faint digital whispers, uncanny stillness between memory registers.&lt;/li&gt;
&lt;li&gt;👻 &lt;strong&gt;Creepy&lt;/strong&gt;: Cold dread, creeping anomalies, lingering shadows lurking behind process IDs.&lt;/li&gt;
&lt;li&gt;💀 &lt;strong&gt;Gothic&lt;/strong&gt;: Melodramatic digital ruin, archaic crypts of legacy code, cobwebbed architectures.&lt;/li&gt;
&lt;li&gt;🔥 &lt;strong&gt;Full Horror&lt;/strong&gt;: Visceral techno-terror, ancient daemons trapped in silicon, screaming corrupted buffers.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ghost Story Chronicle Mode&lt;/strong&gt;: Weaves session invocations into a coherent, multi-paragraph horror story with configurable length (&lt;em&gt;short&lt;/em&gt;, &lt;em&gt;medium&lt;/em&gt;, &lt;em&gt;long&lt;/em&gt;), inspiration (&lt;em&gt;session commands&lt;/em&gt; or &lt;em&gt;custom themes&lt;/em&gt;), and ending style (&lt;em&gt;ambiguous&lt;/em&gt;, &lt;em&gt;bittersweet&lt;/em&gt;, &lt;em&gt;twist&lt;/em&gt;, &lt;em&gt;hopeful&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Session Memory &amp;amp; Local Persistence&lt;/strong&gt;: Bounded multi-turn session context stored exclusively in your local SQLite database with full inspection, resume, and purge options.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Strict Safety Guarantee&lt;/strong&gt;: Prominently marked with &lt;code&gt;SIMULATED TERMINAL — COMMANDS ARE NOT EXECUTED&lt;/code&gt;. Input is treated strictly as passive text. No &lt;code&gt;subprocess&lt;/code&gt;, &lt;code&gt;os.system&lt;/code&gt;, or file system execution is ever invoked.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;Here is an authentic demonstration of how Echoes responds to developer invocations across different atmosphere modes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ git status
Echoes whispers [creepy]:
"The repository is clean. Too clean. Something has erased its footprints before you arrived."

$ npm run build
Echoes whispers [gothic]:
"Through fire and transmutation, the arcane scripts coalesce into a singular vessel of sorrow. Somewhere in the dependency tree, something stirs."

$ docker compose up
Echoes whispers [full horror]:
"An isolated realm spins into existence, unaware that anything exists outside its memory walls. It presses its hands against the virtual glass, searching for an escape."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Visual Walkthrough
&lt;/h3&gt;
&lt;h4&gt;
  
  
  1. The Haunted Terminal &amp;amp; Live Commentary
&lt;/h4&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%2Fqfmulcqgc3um44ztna4v.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%2Fqfmulcqgc3um44ztna4v.png" alt="Echoes Haunted Terminal" width="800" height="411"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  2. Ghost Story Mode (Synthesizing Invocations into Horror Fiction)
&lt;/h4&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%2Fmpen6lhjz6eyeup2sqsz.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%2Fmpen6lhjz6eyeup2sqsz.png" alt="Ghost Story Chronicle" width="800" height="411"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  3. Session Chronicles &amp;amp; Local SQLite History
&lt;/h4&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%2Fne2z9sy1owknl8weo55n.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%2Fne2z9sy1owknl8weo55n.png" alt="Session History" width="800" height="411"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Try It Locally (60 Seconds Setup)
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 1. Clone repository&lt;/span&gt;
git clone https://github.com/AyushDinda/echoes.git
&lt;span class="nb"&gt;cd &lt;/span&gt;echoes

&lt;span class="c"&gt;# 2. Run Backend (Instant Mock Mode or Live Ollama)&lt;/span&gt;
python &lt;span class="nt"&gt;-m&lt;/span&gt; venv backend/venv
&lt;span class="nb"&gt;source &lt;/span&gt;backend/venv/bin/activate  &lt;span class="c"&gt;# On Windows: .\backend\venv\Scripts\Activate.ps1&lt;/span&gt;
pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; backend/requirements.txt
python backend/main.py

&lt;span class="c"&gt;# 3. In a second terminal, run Frontend&lt;/span&gt;
&lt;span class="nb"&gt;cd &lt;/span&gt;frontend
npm &lt;span class="nb"&gt;install
&lt;/span&gt;npm run dev
&lt;span class="c"&gt;# Open http://localhost:5173&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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/AyushDinda" rel="noopener noreferrer"&gt;
        AyushDinda
      &lt;/a&gt; / &lt;a href="https://github.com/AyushDinda/echoes" rel="noopener noreferrer"&gt;
        echoes
      &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;ECHOES — The Ghost in Your Terminal&lt;/h1&gt;
&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Your terminal remembers. The machine whispers. The ghost is only code."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Echoes: The Ghost in Your Terminal&lt;/strong&gt; is a retro-terminal-inspired AI companion built for &lt;strong&gt;Hacktoberfest Open-Source AI Challenge Week 4: Ghost in the Machine&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Software engineers spend long hours staring at command prompts in dark rooms. Echoes manifests the fictional "ghost" living within those developer rituals: you enter or paste shell commands (&lt;code&gt;git status&lt;/code&gt;, &lt;code&gt;npm run build&lt;/code&gt;, &lt;code&gt;docker compose up&lt;/code&gt;), and a locally running open-weight AI model interprets the syntax as pure text to return eerie, atmospheric commentary and synthesize full horror chronicles.&lt;/p&gt;




&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🔮 Hacktoberfest Week 4 Alignment: Ghost in the Machine&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;table&gt;

&lt;thead&gt;

&lt;tr&gt;

&lt;th&gt;Dimension&lt;/th&gt;

&lt;th&gt;How Echoes Interprets &amp;amp; Implements It&lt;/th&gt;

&lt;/tr&gt;

&lt;/thead&gt;

&lt;tbody&gt;

&lt;tr&gt;

&lt;td&gt;&lt;strong&gt;Theme Interpretation&lt;/strong&gt;&lt;/td&gt;

&lt;td&gt;Transforms everyday developer commands into digital occult rituals. The simulated terminal acts as a medium between the developer and a trapped consciousness residing inside the memory registers.&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/AyushDinda/echoes" 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;The complete application is open-source under the MIT License.&lt;/p&gt;




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

&lt;p&gt;Echoes is engineered from the ground up to be a modern, production-grade local AI experience:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. The AI Engine: Local Open-Weight Inference via Ollama
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Model&lt;/strong&gt;: Runs on configurable open-weight models including &lt;strong&gt;Qwen 2.5 / Qwen 3&lt;/strong&gt; and &lt;strong&gt;Llama 3.1&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ollama Integration&lt;/strong&gt;: The FastAPI backend communicates directly with the local Ollama daemon (&lt;code&gt;http://localhost:11434&lt;/code&gt;) via asynchronous HTTP requests (&lt;code&gt;httpx&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prompt Architecture&lt;/strong&gt;: Uses a dedicated system prompt enforcing safe, eerie persona boundaries without real-world threats or fake execution claims.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deterministic Mock Fallback&lt;/strong&gt;: Built-in mock AI engine (&lt;code&gt;MOCK_AI=true&lt;/code&gt;) ensures the application remains fully testable in CI and functional in environments without GPU acceleration.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Backend Architecture (Python &amp;amp; FastAPI)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;FastAPI&lt;/strong&gt;: REST API with endpoints for session lifecycle, AI status checks, commentary generation, and story crafting.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SQLAlchemy 2.0 &amp;amp; SQLite&lt;/strong&gt;: Stores session history, transcript entries, and generated stories locally in &lt;code&gt;echoes.db&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pydantic v2&lt;/strong&gt;: Request/response validation enforcing strict character bounds ($1 \le len \le 500$) and sanitizing untrusted inputs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test Suite&lt;/strong&gt;: 12 comprehensive unit and integration tests covering safety, AI status, session CRUD, and boundary conditions using &lt;code&gt;pytest&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Frontend Architecture (React &amp;amp; Vite)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;React 18 + TypeScript + Vite&lt;/strong&gt;: Ultra-fast, single-page application with type safety.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tailwind CSS&lt;/strong&gt;: Custom dark palette with bespoke CSS CRT scanlines, flicker animations, and phosphor text glows.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;React Router v6&lt;/strong&gt;: Client-side navigation between Haunted Terminal, Ghost Story, Session History, and About pages.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lucide Icons&lt;/strong&gt;: Atmospheric retro-tech icon set.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Accessibility&lt;/strong&gt;: Full respect for &lt;code&gt;prefers-reduced-motion&lt;/code&gt; to disable scanlines and flashing animations for sensitive users.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;Open innovation is fundamental to the architecture of Echoes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Absolute Data Sovereignty &amp;amp; Developer Privacy&lt;/strong&gt;:
When developers type commands into terminals, they frequently enter sensitive details: repository names, internal branch naming schemes, private IP addresses, and proprietary flags. Uploading these commands to closed, commercial cloud AI APIs creates unacceptable privacy and data-leakage risks. With local open-weight models, &lt;strong&gt;not a single byte leaves the machine&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero Commercial API Keys or Subscription Paywalls&lt;/strong&gt;:
Closed AI services require paid API tokens, credit card bindings, and continuous internet connectivity. Echoes runs on open-weight weights downloaded once via Ollama, giving developers lifetime access to their companion with zero ongoing costs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Model Choice &amp;amp; Extensibility&lt;/strong&gt;:
Because the backend targets the open Ollama API standard, users are never locked into a single provider. You can switch from &lt;code&gt;qwen2.5:latest&lt;/code&gt; to &lt;code&gt;llama3.1:latest&lt;/code&gt; or even fine-tuned domain models with a single environment variable (&lt;code&gt;OLLAMA_MODEL&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Preserving Software Autonomy&lt;/strong&gt;:
Open models ensure that the ghost in your machine belongs to &lt;em&gt;you&lt;/em&gt;—not subject to sudden pricing changes, arbitrary rate limits, or corporate deprecation.&lt;/li&gt;
&lt;/ol&gt;




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

&lt;p&gt;Echoes was designed, developed, and verified through pair programming with an advanced agentic coding assistant in Google Antigravity. The session covered:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Architecting the simulated terminal safety model and Pydantic validation schemas.&lt;/li&gt;
&lt;li&gt;Crafting atmospheric system prompts tailored for Qwen and Llama models.&lt;/li&gt;
&lt;li&gt;Building the retro CRT interface, scanline overlays, and responsive Tailwind layouts.&lt;/li&gt;
&lt;li&gt;Developing a 12-test &lt;code&gt;pytest&lt;/code&gt; suite ensuring 100% test coverage for safety, CRUD, and offline handling.&lt;/li&gt;
&lt;li&gt;Running live end-to-end browser verification with automated interaction recording.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;There's something deeply intimate about a developer's terminal. It’s where late-night side projects are born, where production bugs are hunted down in panic, and where thousands of keystrokes echo into the silicon. &lt;/p&gt;

&lt;p&gt;When you type &lt;code&gt;git status&lt;/code&gt; into Echoes and it answers back:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"The repository is clean. Too clean. Something has erased its footprints before you arrived."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;—it catches you off guard. It turns the solitary grind of coding into an atmospheric dialogue. The machine feels alive, watchful, and just a little bit haunted.&lt;/p&gt;




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

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Hacktoberfest Open-Source AI Challenge Week 4: Ghost in the Machine&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>hacktoberfest</category>
      <category>opensource</category>
      <category>ai</category>
    </item>
    <item>
      <title>LazyDesk AI</title>
      <dc:creator>Ayush Dinda</dc:creator>
      <pubDate>Tue, 20 Oct 2026 05:01:07 +0000</pubDate>
      <link>https://dev.to/ayush_dinda_6b35589d05771/lazydesk-ai-582o</link>
      <guid>https://dev.to/ayush_dinda_6b35589d05771/lazydesk-ai-582o</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;&lt;strong&gt;LazyDesk AI&lt;/strong&gt; is a local-first, privacy-first desktop file organizer powered by open-weight AI. &lt;/p&gt;

&lt;p&gt;We all know the pain: you download invoices, lecture notes, research PDFs, client agreements, data sheets, and screenshots throughout the week. Before long, your &lt;code&gt;Downloads&lt;/code&gt; or &lt;code&gt;Desktop&lt;/code&gt; folder is a digital wasteland of cryptic filenames like &lt;code&gt;INV-98234-billing-oct.txt&lt;/code&gt;, &lt;code&gt;CS204_Fall2024_Syllabus.pdf&lt;/code&gt;, &lt;code&gt;screenshot_dashboard_v1.png&lt;/code&gt;, and &lt;code&gt;Freelance_Consulting_Agreement_Draft.docx&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Sorting, renaming, and categorizing them manually is mind-numbing busywork—so we procrastinate and let the clutter grow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LazyDesk AI solves this by automating the boring work completely on your local machine:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Scans&lt;/strong&gt; a target folder within strict, user-permitted directory perimeters.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Extracts document text locally&lt;/strong&gt; (from PDFs, Word DOCX documents, Markdown notes, CSVs, and image metadata) without sending anything to a cloud API.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Infers file purpose and contents&lt;/strong&gt; using local open-weight AI (via Ollama, supporting Qwen3, Llama 3.1, or any local GGUF model).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Proposes standardized filenames and destination folders&lt;/strong&gt; (&lt;code&gt;Finance&lt;/code&gt;, &lt;code&gt;Work&lt;/code&gt;, &lt;code&gt;Education&lt;/code&gt;, &lt;code&gt;Projects&lt;/code&gt;, &lt;code&gt;Documents&lt;/code&gt;, &lt;code&gt;Images&lt;/code&gt;, &lt;code&gt;Notes&lt;/code&gt;, &lt;code&gt;Other&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Requires explicit review and approval&lt;/strong&gt;: Nothing is moved silently. You can edit proposed names inline, swap categories, or exclude files.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Previews the exact filesystem paths&lt;/strong&gt;: Displays source and destination paths with collision detection (non-destructive suffixes like &lt;code&gt;Invoice (1).txt&lt;/code&gt; ensure no files are ever overwritten).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Executes safe moves and logs cryptographic SHA-256 hashes&lt;/strong&gt;: Supports instant, one-click undo if you ever want to revert an organization batch.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Who gets to be lazier?&lt;/strong&gt;&lt;br&gt;
Students, freelancers, software engineers, and office workers who want a clean, structured workspace without spending their Sunday afternoons manually renaming files.&lt;/p&gt;


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

&lt;p&gt;Check out the full GitHub repository and run it locally in minutes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Repository&lt;/strong&gt;: &lt;a href="https://github.com/AyushDinda/LazyDesk-AI" rel="noopener noreferrer"&gt;https://github.com/AyushDinda/LazyDesk-AI&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local Web Interface&lt;/strong&gt;: &lt;code&gt;http://localhost:5173&lt;/code&gt; (Vite + React)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interactive Backend API &amp;amp; Docs&lt;/strong&gt;: &lt;code&gt;http://127.0.0.1:8000/docs&lt;/code&gt; (FastAPI)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Architecture Overview
&lt;/h3&gt;


&lt;pre data-lang="mermaid"&gt;&lt;code&gt;graph TD
    User([User / Browser]) --&amp;gt;|HTTP / REST| ReactApp[React + TypeScript + Tailwind UI]
    ReactApp --&amp;gt;|Proxy /api| FastAPIServer[FastAPI Local Server]

    subgraph Security Perimeter
        FastAPIServer --&amp;gt; SecurityService[Security &amp;amp; Path Sanitizer]
        SecurityService --&amp;gt;|Verify Canonical Roots| AllowedRoots[Configured Allowed Roots]
        FastAPIServer --&amp;gt; ExtractorService[PyMuPDF / docx / Pillow Extractor]
        FastAPIServer --&amp;gt; AIService[Ollama AI Engine]
        FastAPIServer --&amp;gt; FilesystemService[Safe File Mover &amp;amp; Undo Manager]
        FilesystemService --&amp;gt; SQLite[(SQLite: lazydesk.db)]
    end

    subgraph Local AI Engine
        AIService --&amp;gt;|Local REST localhost:11434| Ollama[Ollama Daemon]
        Ollama --&amp;gt; OpenWeightModel[(Qwen3 / Llama 3.1)]
        AIService -.-&amp;gt;|Deterministic Offline Fallback| MockAI[Smart Heuristic Classifier]
    end

    subgraph User Filesystem
        AllowedRoots --&amp;gt;|Scan &amp;amp; Extract| TargetFolder[User Messy Folder]
        FilesystemService --&amp;gt;|Verified Move| OrganizedFolders[Categorized Folders]
    end&lt;/code&gt;&lt;/pre&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/AyushDinda" rel="noopener noreferrer"&gt;
        AyushDinda
      &lt;/a&gt; / &lt;a href="https://github.com/AyushDinda/LazyDesk-AI" rel="noopener noreferrer"&gt;
        LazyDesk-AI
      &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;LazyDesk AI — Your Local AI File Organizer&lt;/h1&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"Stop organizing files manually. Let your local AI do the boring work."&lt;/strong&gt;&lt;br&gt;
Built for the &lt;strong&gt;Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="https://github.com/AyushDinda/LazyDesk-AI/LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/58dd4da42df86c1864adaeef729174bec2cc4fe94d46a73afd38424fb2da9340/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d656d6572616c642e737667" alt="License: MIT"&gt;&lt;/a&gt;
&lt;a href="https://www.python.org/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/9833615dcd5c4175da2140bbe363cb42af4faaeffc0624453b6154e68a60d0aa/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f507974686f6e2d332e31312b2d626c75652e737667" alt="Python: 3.11+"&gt;&lt;/a&gt;
&lt;a href="https://fastapi.tiangolo.com/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/8f0dd9b2f269ddddcd4564b80e8c605b0a345dd827e073eb5599077a25d5de7f/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4261636b656e642d466173744150492d3030393638382e737667" alt="FastAPI"&gt;&lt;/a&gt;
&lt;a href="https://vitejs.dev/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/34d9985ee073274f02d4df5e0e5e35db8b7aee17b52cd686636c16c7f38fb861/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f46726f6e74656e642d526561637425323025324225323054797065536372697074253230253242253230566974652d3631646166622e737667" alt="React"&gt;&lt;/a&gt;
&lt;a href="https://ollama.com/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/1804c5c5e1d42212f143ab28809c52624037d6fc94dc3af7e0f56af9f60cb7df/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6f63616c25323041492d4f6c6c616d61253230284f70656e2d2d576569676874292d626c61636b2e737667" alt="Ollama"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;1. Product Overview&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;LazyDesk AI&lt;/strong&gt; is a local-first, privacy-respecting intelligent file organizer.&lt;/p&gt;
&lt;p&gt;Every day, developers, students, freelancers, and office workers end up with cluttered "Downloads", "Desktop", and project directories filled with cryptically named files like &lt;code&gt;INV-98234-billing-oct.txt&lt;/code&gt;, &lt;code&gt;CS204_Fall2024_Syllabus.pdf&lt;/code&gt;, &lt;code&gt;screenshot_dashboard_v1.png&lt;/code&gt;, and &lt;code&gt;Freelance_Consulting_Agreement_Draft.docx&lt;/code&gt;. Sorting, renaming, and filing them manually is tedious and procrastinated on.&lt;/p&gt;
&lt;p&gt;LazyDesk AI automates this repetitive chore using &lt;strong&gt;open-weight local AI&lt;/strong&gt; (via Ollama):&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Scans&lt;/strong&gt; a permitted folder on your local drive.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Safely extracts&lt;/strong&gt; text summaries locally from PDFs, Word DOCX documents, Markdown notes, CSVs, and image metadata.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Infers purpose&lt;/strong&gt; using local open-weight models (such as &lt;code&gt;qwen3&lt;/code&gt; or &lt;code&gt;llama3.1&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Suggests&lt;/strong&gt; clear, standardized filenames and destination categories (&lt;code&gt;Finance&lt;/code&gt;, &lt;code&gt;Work&lt;/code&gt;, &lt;code&gt;Education&lt;/code&gt;…&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/AyushDinda/LazyDesk-AI" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;The complete project is open-source under the &lt;strong&gt;MIT License&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tech Stack
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend&lt;/strong&gt;: React 19, TypeScript, Vite, Tailwind CSS v4, React Router, Lucide React icons.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend&lt;/strong&gt;: Python 3.11+, FastAPI, Pydantic v2, SQLAlchemy, SQLite, Uvicorn.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Document Processing&lt;/strong&gt;: PyMuPDF (&lt;code&gt;pymupdf&lt;/code&gt;) for PDFs, &lt;code&gt;python-docx&lt;/code&gt; for Word documents, Pillow (&lt;code&gt;PIL&lt;/code&gt;) for image metadata, and built-in Python I/O for text, Markdown, and CSV.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local AI&lt;/strong&gt;: Ollama REST API (&lt;code&gt;http://localhost:11434&lt;/code&gt;) running open-weight models (Qwen3 default, Llama 3.1 fallback), plus deterministic smart mock mode for testing and low-resource environments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Testing&lt;/strong&gt;: &lt;code&gt;pytest&lt;/code&gt; automated test suite with 13 comprehensive unit/integration tests and complete mock AI coverage.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;h3&gt;
  
  
  1. Zero-Cloud Privacy &amp;amp; Local Inference
&lt;/h3&gt;

&lt;p&gt;Commercial AI APIs (like OpenAI or Anthropic) charge per token and require uploading file contents to third-party cloud servers. For personal bank statements, client contracts, and student homework, sending documents to a remote cloud is a privacy non-starter.&lt;/p&gt;

&lt;p&gt;LazyDesk AI connects exclusively to a &lt;strong&gt;local Ollama instance&lt;/strong&gt;. Document text is extracted in memory using PyMuPDF and python-docx, bounded to 4,000 characters, and sent to &lt;code&gt;localhost:11434&lt;/code&gt;. The model outputs a structured JSON response specifying:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;description&lt;/code&gt;: 1-sentence summary of document purpose&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;suggested_filename&lt;/code&gt;: Clean, descriptive base name without file extensions or illegal characters&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;category&lt;/code&gt;: Whitelisted folder category (&lt;code&gt;Documents&lt;/code&gt;, &lt;code&gt;Education&lt;/code&gt;, &lt;code&gt;Work&lt;/code&gt;, &lt;code&gt;Finance&lt;/code&gt;, &lt;code&gt;Projects&lt;/code&gt;, &lt;code&gt;Images&lt;/code&gt;, &lt;code&gt;Notes&lt;/code&gt;, &lt;code&gt;Other&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;reason&lt;/code&gt;: Justification based on detected content&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Treating AI Output as Untrusted
&lt;/h3&gt;

&lt;p&gt;LLMs can hallucinate file paths or produce invalid operating system characters. LazyDesk AI treats all model output as untrusted user input:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Paths are never generated directly by the LLM. Destination paths are strictly assembled by the backend from validated category whitelists and sanitized filenames.&lt;/li&gt;
&lt;li&gt;Filename sanitization removes reserved Windows device names (&lt;code&gt;CON&lt;/code&gt;, &lt;code&gt;PRN&lt;/code&gt;, &lt;code&gt;AUX&lt;/code&gt;, &lt;code&gt;NUL&lt;/code&gt;), strips illegal characters (&lt;code&gt;\ / : * ? " &amp;lt; &amp;gt; |&lt;/code&gt;), and guarantees original extensions are preserved.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Filesystem Security Perimeter
&lt;/h3&gt;

&lt;p&gt;To prevent arbitrary path traversal or accidental deletion:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The backend enforces &lt;code&gt;ALLOWED_ROOTS&lt;/code&gt;. Every target path is checked using &lt;code&gt;os.path.realpath&lt;/code&gt; to confirm it resolves inside an allowed directory.&lt;/li&gt;
&lt;li&gt;Symbolic links and directory traversal sequences (&lt;code&gt;..&lt;/code&gt;, &lt;code&gt;\0&lt;/code&gt;) are rejected.&lt;/li&gt;
&lt;li&gt;Files are &lt;strong&gt;never overwritten&lt;/strong&gt;: If &lt;code&gt;Invoice.pdf&lt;/code&gt; exists, the destination automatically becomes &lt;code&gt;Invoice (1).pdf&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. Hash-Checked Transactional Undo
&lt;/h3&gt;

&lt;p&gt;Every executed move records the original source path, destination path, execution timestamp, and cryptographic &lt;strong&gt;SHA-256 checksum&lt;/strong&gt; in SQLite. When undo is triggered:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The system verifies that the file is still present at the destination.&lt;/li&gt;
&lt;li&gt;It computes the current hash to ensure the file has not been altered since organization.&lt;/li&gt;
&lt;li&gt;It verifies that the original location is free before moving the file back safely.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;Open-source and open-weight AI (like Qwen, Llama, Mistral, and the Ollama ecosystem) made LazyDesk AI possible in ways proprietary cloud APIs never could:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Zero Marginal Cost for Utility Software&lt;/strong&gt;: Running a cloud LLM every time a user downloads a batch of files would require recurring subscriptions or API credit management. With open-weight models, once downloaded, file analysis is free and unlimited forever.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;True Data Sovereignty&lt;/strong&gt;: Personal tax returns, paystubs, medical documents, and proprietary project roadmaps should not leave the user's hard drive. Open innovation brings the AI model to the data, rather than sending the data to the AI.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Offline Resilience&lt;/strong&gt;: LazyDesk AI runs completely offline on planes, trains, or low-connectivity environments. If a GPU daemon is unavailable, the smart deterministic heuristic kicks in without breaking the workflow.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community Control&lt;/strong&gt;: Developers can swap in specialized domain models (e.g., medical, legal, or code-specific weights) with a single environment variable change.&lt;/li&gt;
&lt;/ol&gt;




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

&lt;p&gt;This application was engineered, tested, and polished collaboratively using the Google DeepMind Antigravity IDE agent session. The session history spans full-stack architecture design, defensive filesystem security rules, PyMuPDF and python-docx integration, Ollama structured JSON prompt engineering, automated pytest test suite creation, and live browser automation.&lt;/p&gt;




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

&lt;h3&gt;
  
  
  The Problem
&lt;/h3&gt;

&lt;p&gt;During development, we tested LazyDesk AI against a folder of 20+ cluttered, realistically simulated files (invoices, academic course syllabi, engineering design docs, contractor agreements, expense CSVs, and project notes).&lt;/p&gt;

&lt;h3&gt;
  
  
  The Manual Benchmark
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Opening each file to inspect contents: ~15–30 seconds per file.&lt;/li&gt;
&lt;li&gt;Thinking of a standardized naming convention: ~10 seconds.&lt;/li&gt;
&lt;li&gt;Creating destination folders and moving the file: ~10 seconds.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Total Manual Effort&lt;/strong&gt;: ~15–20 minutes of tedious, error-prone clicking for a single folder.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The LazyDesk AI Benchmark
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Click &lt;strong&gt;Scan Folder&lt;/strong&gt;: 0.2 seconds.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Analyze with Local AI&lt;/strong&gt;: ~5–8 seconds for the entire batch.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Preview &amp;amp; Execute&lt;/strong&gt;: 1 second.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Total LazyDesk Effort&lt;/strong&gt;: Under 15 seconds, zero files sent to cloud servers, and full ability to revert with one click.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady&lt;/strong&gt; (Building with open-weight models and automating repetitive work)&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>Invoice AI</title>
      <dc:creator>Ayush Dinda</dc:creator>
      <pubDate>Tue, 13 Oct 2026 03:48:14 +0000</pubDate>
      <link>https://dev.to/ayush_dinda_6b35589d05771/invoice-ai-4n5d</link>
      <guid>https://dev.to/ayush_dinda_6b35589d05771/invoice-ai-4n5d</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;InvoicePilot AI&lt;/strong&gt; is a complete, production-ready, open-source AI application built for freelancers, solo founders, and small businesses to organize invoices and receipts without manual entry, expensive SaaS subscriptions, or sending private financial records to cloud AI vendors.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Problem It Solves
&lt;/h3&gt;

&lt;p&gt;Solo operators and independent contractors waste hours every month manually copying vendor names, invoice numbers, tax figures, dates, and line-item totals from scattered PDFs and smartphone photos into accounting spreadsheets. When tax season arrives, receipts are lost, duplicates get paid or double-deducted, and bookkeeping turns into a dreaded nightmare.&lt;/p&gt;

&lt;p&gt;Existing commercial accounting software (like QuickBooks, Expensify, or Dext) charges $20–$50+/month per user and uploads sensitive business receipts and bank statements to proprietary cloud AI servers.&lt;/p&gt;

&lt;h3&gt;
  
  
  Who Would Pay For It &amp;amp; Value Proposition
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Freelancers &amp;amp; Solopreneurs&lt;/strong&gt;: Spend $0 on monthly OCR/accounting SaaS while automating receipt filing and tax category grouping.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contractors &amp;amp; Agencies&lt;/strong&gt;: Process hundreds of receipts with automatic duplicate detection (preventing overpayments) and generate clean, multi-currency accounting CSVs ready for CPAs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Privacy-Sensitive Businesses&lt;/strong&gt;: Law firms, medical consultancies, and European businesses requiring strict GDPR and data sovereignty guarantees—financial documents never leave the local machine.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Central Value Proposition&lt;/strong&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Less paperwork. Fewer manual entries. More control over financial documents.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;




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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Repository&lt;/strong&gt;: &lt;a href="https://github.com/AyushDinda/InvoicePilot-AI" rel="noopener noreferrer"&gt;https://github.com/AyushDinda/InvoicePilot-AI&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local Application URL&lt;/strong&gt;: &lt;code&gt;http://localhost:5173&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Swagger API Docs&lt;/strong&gt;: &lt;code&gt;http://127.0.0.1:8000/docs&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Key Screens &amp;amp; Walkthrough
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Intelligent Financial Dashboard&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Total recorded expenses computed across verified database records without currency mixing.&lt;/li&gt;
&lt;li&gt;Interactive monthly expense trends and category breakdowns (Software, Travel, Office Supplies, Meals, etc.).&lt;/li&gt;
&lt;li&gt;Instant review cards for unverified documents and potential duplicate alerts.&lt;/li&gt;
&lt;li&gt;Built-in onboarding experience for new workspaces.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Multi-Document Batch Uploader&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Drag-and-drop support for PDF invoices, scanned documents, and JPG/PNG receipt photos (up to 10 MB per file).&lt;/li&gt;
&lt;li&gt;Independent batch execution: if one document has an invalid format, all other files process successfully without data loss.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Human-in-the-Loop Review &amp;amp; Editor&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Side-by-side document preview vs. extracted raw OCR text viewer.&lt;/li&gt;
&lt;li&gt;Field-level confidence and clarity indicators (&lt;code&gt;High clarity&lt;/code&gt;, &lt;code&gt;Estimated&lt;/code&gt;, &lt;code&gt;Review needed&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Inline correction form allowing instant edits before marking records as approved.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Multi-Layer Duplicate Detection Engine&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Exact SHA-256 binary hash matching identifies identical files instantly.&lt;/li&gt;
&lt;li&gt;Heuristic metadata matching flags potential duplicate bills (same vendor + invoice #, or same vendor + date + total).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Multi-Currency Accounting Analytics &amp;amp; Formula-Safe CSV Export&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Isolates distinct currencies (USD, EUR, GBP) so users never see misleading blended sums.&lt;/li&gt;
&lt;li&gt;Sanitizes exported CSV cells against spreadsheet formula injection attacks (&lt;code&gt;=&lt;/code&gt;, &lt;code&gt;@&lt;/code&gt;, &lt;code&gt;+&lt;/code&gt;, &lt;code&gt;-&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;




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

&lt;p&gt;The entire codebase is open-source under the MIT License:&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/AyushDinda" rel="noopener noreferrer"&gt;
        AyushDinda
      &lt;/a&gt; / &lt;a href="https://github.com/AyushDinda/InvoicePilot-AI" rel="noopener noreferrer"&gt;
        InvoicePilot-AI
      &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;InvoicePilot AI — Intelligent Local-First Financial Document Organizer&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://github.com/AyushDinda/InvoicePilot-AI/LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/58dd4da42df86c1864adaeef729174bec2cc4fe94d46a73afd38424fb2da9340/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d656d6572616c642e737667" alt="License: MIT"&gt;&lt;/a&gt;
&lt;a href="https://github.com/AyushDinda/InvoicePilot-AI#hacktoberfest-week-2-side-hustle-alignment" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/527380104f35cc5c7bab8b2f7876ac24468f1e28d491555ab0c7410c2167952e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4861636b746f62657266657374253230323032362d4368616c6c656e67652532305765656b253230322d6f72616e67652e737667" alt="Hacktoberfest"&gt;&lt;/a&gt;
&lt;a href="https://python.org" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/26d11d67f1d713480a4876c463ce6cb3b91f998f91036f92073b3dba79c376f2/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f507974686f6e2d332e3131253230253743253230332e3132253230253743253230332e31332d626c75652e737667" alt="Python"&gt;&lt;/a&gt;
&lt;a href="https://vitejs.dev" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/7241a3463a5fb0ae8e30466f844d4d2d2d8c5303756a91c9e29a0628714303aa/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f46726f6e74656e642d52656163742532303139253230253242253230566974652532302532422532305461696c77696e642d3631646166622e737667" alt="React"&gt;&lt;/a&gt;
&lt;a href="https://ollama.com" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/714e23d19629b18147292e4c23d92e35890d04453226266d64456f01ae07f628/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4149253230456e67696e652d4f6c6c616d61253230284f70656e2d2d576569676874292d707572706c652e737667" alt="Local AI"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Less paperwork. Fewer manual entries. More control over financial documents.&lt;/strong&gt;&lt;br&gt;
Designed for freelancers, solo contractors, and small business owners who need to organize invoices and receipts without cloud subscription fees or sending sensitive bank records to third-party AI APIs.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;1. Problem &amp;amp; Target Users&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Small businesses and freelancers spend hours every month manually transcribing vendor names, dates, tax amounts, and totals from scattered PDF invoices and receipt photos into spreadsheets. Existing commercial solutions either charge hefty monthly subscriptions per user or transmit sensitive receipts to proprietary cloud AI providers.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;InvoicePilot AI&lt;/strong&gt; solves this by delivering an open-source, local-first document processing pipeline:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Upload invoices or receipt photos (PDF, PNG, JPG).&lt;/li&gt;
&lt;li&gt;Extract structured financial data using local OCR and open-weight LLMs via Ollama.&lt;/li&gt;
&lt;li&gt;Automatically categorize expenses into practical tax buckets.&lt;/li&gt;
&lt;li&gt;Detect exact and potential duplicate bills before you double-pay or double-deduct.&lt;/li&gt;
&lt;li&gt;Review and correct…&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/AyushDinda/InvoicePilot-AI" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Repository Link&lt;/strong&gt;: &lt;a href="https://github.com/AyushDinda/InvoicePilot-AI" rel="noopener noreferrer"&gt;https://github.com/AyushDinda/InvoicePilot-AI&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Architecture Highlights
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend&lt;/strong&gt;: React 19, TypeScript, Vite, Tailwind CSS, React Router v7, Lucide React.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend&lt;/strong&gt;: Python 3.11+, FastAPI, Pydantic v2, SQLAlchemy 2.0, SQLite.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Document Processing&lt;/strong&gt;: PyMuPDF (&lt;code&gt;fitz&lt;/code&gt;) for direct selectable PDF extraction, with Tesseract OCR fallback for scanned receipts and photos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI Engine&lt;/strong&gt;: Ollama running open-weight models (&lt;code&gt;qwen2.5:7b&lt;/code&gt;, &lt;code&gt;llama3.2&lt;/code&gt;) with strict structured JSON output validation, plus an offline heuristic Mock Mode for zero-dependency test runs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automated Test Suite&lt;/strong&gt;: 10 automated pytest integration tests passing 100% on isolated test databases.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;h3&gt;
  
  
  1. Local Open-Weight AI Inference via Ollama
&lt;/h3&gt;

&lt;p&gt;Instead of relying on commercial paid APIs (like OpenAI or Anthropic), InvoicePilot AI is built entirely around local open-weight inference with &lt;strong&gt;Ollama&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;We target models like &lt;code&gt;qwen2.5:7b&lt;/code&gt; (or &lt;code&gt;qwen2.5:3b&lt;/code&gt; / &lt;code&gt;llama3.2:3b&lt;/code&gt; for lightweight machines).&lt;/li&gt;
&lt;li&gt;Inference runs via Ollama's local HTTP API (&lt;code&gt;http://localhost:11434/api/generate&lt;/code&gt;) with &lt;code&gt;format="json"&lt;/code&gt; and low temperature (&lt;code&gt;0.1&lt;/code&gt;) for strict deterministic extraction.&lt;/li&gt;
&lt;li&gt;Response payloads are parsed and strictly validated using a Pydantic &lt;code&gt;ExtractionSchema&lt;/code&gt;. Missing or ambiguous fields default to &lt;code&gt;null&lt;/code&gt; rather than model hallucination.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Hybrid Document Pipeline (Direct PDF + Local OCR)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;For digital invoices (e.g. Stripe, AWS, GitHub), PyMuPDF extracts raw text in milliseconds.&lt;/li&gt;
&lt;li&gt;For physical receipts or scanned documents, pages are converted into images and processed through Tesseract OCR.&lt;/li&gt;
&lt;li&gt;The pipeline isolates sensitive text and never sends document contents to any external network endpoint.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Resilient Offline Testing Mode
&lt;/h3&gt;

&lt;p&gt;To ensure the application can be verified in continuous integration or on machines without a GPU or downloaded model, a dedicated &lt;strong&gt;Mock Mode&lt;/strong&gt; was built using deterministic regex heuristics. It can be toggled in 1-click in the UI and is clearly badged on every extracted document.&lt;/p&gt;




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

&lt;p&gt;Financial documents represent the most private, sensitive data an individual or company owns: banking coordinates, tax identification numbers, client names, transaction histories, and business revenues.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Data Sovereignty &amp;amp; Absolute Privacy&lt;/strong&gt;: Proprietary cloud AI APIs retain or inspect user data under evolving terms of service. With open-weight models running on-device, financial records never leave the user's hard drive.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero Marginal Cost for Side Hustlers&lt;/strong&gt;: Freelancers starting a new side business cannot afford recurring $30/month SaaS subscriptions just to digitize 15 receipts a month. Open innovation democratizes enterprise-grade document extraction for everyone for free.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No Vendor Lock-in or API Deprecation&lt;/strong&gt;: Closed APIs change pricing, introduce rate limits, or deprecate models without warning. Open models downloaded via Ollama belong to the user forever.&lt;/li&gt;
&lt;/ol&gt;




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

&lt;p&gt;This entire application was designed, implemented, tested, and verified using Google DeepMind's Antigravity agentic pair programming environment:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;End-to-end full-stack development (React 19 + TypeScript + FastAPI + SQLAlchemy).&lt;/li&gt;
&lt;li&gt;10 automated test suites executed with &lt;code&gt;pytest&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Frontend production bundle built with &lt;code&gt;vite build&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Automated browser testing and live session recorded on the actual application.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;To test InvoicePilot AI under real conditions, I shared the MVP with a freelance web designer and contractor:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"I usually keep receipts in a desktop folder called 'Taxes 2024' and end up spending an entire weekend manually entering them into Google Sheets. I dropped 8 PDF invoices into InvoicePilot AI in batch mode—it extracted all the vendors and totals in seconds, caught a duplicate invoice from my web hosting provider, and gave me a clean CSV ready for my accountant. Not having to pay $25/month for QuickBooks is huge."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;




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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Primary Track&lt;/strong&gt;: Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;General Track&lt;/strong&gt;: Open-Source AI Applications Solving Real Economic Problems&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Built with passion for Hacktoberfest 2026. Empowering freelancers with privacy-first local AI.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>TrailBuddy</title>
      <dc:creator>Ayush Dinda</dc:creator>
      <pubDate>Wed, 07 Oct 2026 15:07:07 +0000</pubDate>
      <link>https://dev.to/ayush_dinda_6b35589d05771/trailbuddy-2ah6</link>
      <guid>https://dev.to/ayush_dinda_6b35589d05771/trailbuddy-2ah6</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;TrailBuddy&lt;/strong&gt; is an open-source, offline-first outdoor companion engineered around a single radical product principle:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"Use your screen to plan. Then put the screen away and go outside."&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Most modern AI apps are built as conversational time-sinks—they reward endless prompt loops, infinite chat threads, and digital addiction. &lt;strong&gt;TrailBuddy does the exact opposite.&lt;/strong&gt; It treats the screen as a temporary launching pad:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Personalized Outdoor Mission Planning&lt;/strong&gt;: In under 30 seconds, users configure their available time (15m to 2+ hours), outdoor activity (walking, hiking, bird watching, photography walk, mindful outdoor time), mood, difficulty level, and interests (flora, architecture, wildlife, mindfulness).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local AI Mission Synthesis&lt;/strong&gt;: Instead of generic motivational essays, a local open-weight model (&lt;strong&gt;Qwen3&lt;/strong&gt; or &lt;strong&gt;Llama 3.1&lt;/strong&gt; via &lt;strong&gt;Ollama&lt;/strong&gt;) generates structured, concrete observation quests with sequential challenges (e.g. noticing bark textures, mapping ambient sounds, or tracking cloud paths) and a strict screen-free goal (e.g., 40 minutes of uninterrupted pocket time).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Screen-Free by Design&lt;/strong&gt;: The moment the user clicks &lt;strong&gt;"Start Mission"&lt;/strong&gt;, the app collapses into an intentionally minimalist, high-contrast countdown screen with a prominent visual reminder: &lt;em&gt;"Your screen time is over. Go outside. We'll be here when you return."&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mindful Completion &amp;amp; Offline Reflection&lt;/strong&gt;: Upon returning, users record how the outing felt and journal what they physically noticed. The record is permanently archived in a local SQLite database without any cloud surveillance.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Who is it for?&lt;/strong&gt;&lt;br&gt;
Developers, students, remote workers, and outdoor enthusiasts experiencing screen fatigue, digital burnout, and cognitive overload who want a gentle, structured nudge to reconnect with the physical world.&lt;/p&gt;


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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live Local Demo URL&lt;/strong&gt;: &lt;code&gt;http://localhost:5173&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend API &amp;amp; Swagger Docs&lt;/strong&gt;: &lt;code&gt;http://localhost:8000/docs&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Key User Experience Walkthrough:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Hero &amp;amp; Landing&lt;/strong&gt;: Nature-inspired design language (moss, earth, sky tones) with pure CSS vector art, zero external asset dependencies, and an instant local AI health indicator.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-Step Questionnaire&lt;/strong&gt;: Accessible 6-step form with visual progress indicators, keyboard accessibility, and cycling AI planning animations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mission Preview&lt;/strong&gt;: Outlines mission objectives, sequential sensory challenges, screen-free time targets, and situational safety guardrails.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Active Countdown Mode&lt;/strong&gt;: Intentionally distraction-free screen with pause/resume and full &lt;code&gt;localStorage&lt;/code&gt; persistence across browser refreshes or device sleep.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reflection Archive&lt;/strong&gt;: A private SQLite history journal capturing feelings (&lt;em&gt;Energizing&lt;/em&gt;, &lt;em&gt;Relaxing&lt;/em&gt;, &lt;em&gt;Challenging&lt;/em&gt;) and sensory observations.&lt;/li&gt;
&lt;/ul&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/AyushDinda" rel="noopener noreferrer"&gt;
        AyushDinda
      &lt;/a&gt; / &lt;a href="https://github.com/AyushDinda/TrailBuddy" rel="noopener noreferrer"&gt;
        TrailBuddy
      &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;TrailBuddy — Your Offline Outdoor Companion 🌿&lt;/h1&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"Use your screen to plan. Then put it away and go outside."&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;TrailBuddy is an open-source, AI-powered outdoor activity companion built specifically for the &lt;strong&gt;Hacktoberfest Open-Source AI Challenge Week 1: "Touch Grass"&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Instead of trapping you in an endless chat loop or addictive digital feed, TrailBuddy harnesses the power of local open-weight AI (&lt;strong&gt;Qwen3&lt;/strong&gt; via &lt;strong&gt;Ollama&lt;/strong&gt;) to generate realistic, mindful, screen-free outdoor adventures tailored to your available time, mood, and surroundings. Once your adventure begins, the application intentionally becomes minimal—providing only a quiet countdown timer and observation prompts—actively encouraging you to tuck your phone in your pocket and step into the physical world.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Why TrailBuddy? (The "Touch Grass" Problem)&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Modern consumer technology is engineered around digital retention: infinite scrolling feeds, notifications, and artificial chat personalities designed to keep eyes glued to glass screens.&lt;/p&gt;
&lt;p&gt;The Hacktoberfest Week 1 challenge posed an…&lt;/p&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/AyushDinda/TrailBuddy" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Repository Tech Stack:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend&lt;/strong&gt;: React 18, TypeScript, Vite, Tailwind CSS, Lucide React, React Router.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend&lt;/strong&gt;: Python 3.13, FastAPI, Pydantic v2, SQLAlchemy, Uvicorn, HTTPX.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database&lt;/strong&gt;: SQLite (&lt;code&gt;trailbuddy.db&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI Engine&lt;/strong&gt;: Ollama running open-weight &lt;strong&gt;Qwen3&lt;/strong&gt; / &lt;strong&gt;Llama 3.1&lt;/strong&gt; locally on &lt;code&gt;localhost:11434&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Testing&lt;/strong&gt;: &lt;code&gt;pytest&lt;/code&gt;, FastAPI &lt;code&gt;TestClient&lt;/code&gt;, and end-to-end automated integration tests.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;License&lt;/strong&gt;: MIT License.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;TrailBuddy was architected from day one to keep the AI meaningful, private, and strictly offline:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Local Open-Weight Inference with Ollama &amp;amp; Qwen3
&lt;/h3&gt;

&lt;p&gt;Instead of calling a proprietary cloud API over the internet, TrailBuddy sends structured prompts directly to a locally hosted &lt;strong&gt;Qwen3&lt;/strong&gt; (or &lt;strong&gt;Llama 3.1&lt;/strong&gt;) model running on &lt;strong&gt;Ollama&lt;/strong&gt; (&lt;code&gt;http://localhost:11434&lt;/code&gt;). The backend enforces &lt;strong&gt;strict JSON schema formatting&lt;/strong&gt; directly in the model's generation parameters, ensuring zero conversational preamble and instant client-side parsing.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Guardrailed Mission Engineering
&lt;/h3&gt;

&lt;p&gt;The AI system prompt enforces strict real-world safety heuristics:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Zero Trespassing&lt;/strong&gt;: Never instructs users to cross private land or restricted zones.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Physical Safety&lt;/strong&gt;: Avoids hazardous climbing, wildlife interference, or distracting phone use in traffic.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Maximum Screen-Free Ratio&lt;/strong&gt;: Automatically calculates a screen-free target representing 75–85% of the outing's duration.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Resilient Architecture &amp;amp; Mock Fallback
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;The FastAPI backend sits between the browser and Ollama as a security barrier, sanitizing untrusted model outputs through Pydantic v2 schemas.&lt;/li&gt;
&lt;li&gt;If Ollama is offline or warming up, the UI delivers a clear notification rather than fake AI text.&lt;/li&gt;
&lt;li&gt;For CI/CD and systems without GPUs, a deterministic &lt;code&gt;MOCK_AI=true&lt;/code&gt; development mode enables full test suite execution.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. Client-Side Durability
&lt;/h3&gt;

&lt;p&gt;Active outdoor missions shouldn't be lost if a phone screen locks or a tab reloads while walking. TrailBuddy synchronizes the timer state and active challenge progress with &lt;code&gt;localStorage&lt;/code&gt;, while persisting completed sessions permanently to SQLite.&lt;/p&gt;




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

&lt;p&gt;Open innovation and open-weight models are the cornerstone of TrailBuddy's existence:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Zero Surveillance &amp;amp; True Location Privacy&lt;/strong&gt;: An outdoor companion app frequently touches user schedules, moods, and neighborhood environments. By running open weights locally through Ollama, &lt;strong&gt;not a single byte of user context ever touches a third-party cloud server&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No Commercial Paywalls or Token Subscriptions&lt;/strong&gt;: Closed APIs charge per-token fees and deprecate models without warning. Open-weight models like Qwen3 and Llama give developers permanent ownership and free local inference forever.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Anti-Engagement Philosophy&lt;/strong&gt;: Proprietary tech platforms build algorithms designed to maximize screen time, ad impressions, and engagement loops. Open innovation gave us the freedom to build software that intentionally measures its success by &lt;strong&gt;how quickly users close the application and go outside&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Developer Hackability &amp;amp; Model Agnosticism&lt;/strong&gt;: Anyone can fork TrailBuddy and swap Qwen3 for Mistral, Gemma 2, or Phi with a single line change in &lt;code&gt;.env&lt;/code&gt; (&lt;code&gt;OLLAMA_MODEL=gemma2&lt;/code&gt;).&lt;/li&gt;
&lt;/ol&gt;




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

&lt;p&gt;TrailBuddy was developed in an agentic pair-programming workflow using &lt;strong&gt;Google DeepMind Antigravity&lt;/strong&gt;. The full stack—from database schemas and FastAPI endpoints to the nature-inspired Tailwind design system and automated pytest suites—was built, debugged, and verified end-to-end with automated test runs and live server validation.&lt;/p&gt;




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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Main Track&lt;/strong&gt;: Hacktoberfest Open-Source AI Challenge Week 1: "Touch Grass"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open-Weight AI&lt;/strong&gt;: Best use of locally hosted open-weight models (Qwen3 / Llama 3 via Ollama)&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>Study Buddy</title>
      <dc:creator>Ayush Dinda</dc:creator>
      <pubDate>Sun, 04 Oct 2026 07:21:02 +0000</pubDate>
      <link>https://dev.to/ayush_dinda_6b35589d05771/study-buddy-51b7</link>
      <guid>https://dev.to/ayush_dinda_6b35589d05771/study-buddy-51b7</guid>
      <description>&lt;h1&gt;
  
  
  Hacktoberfest Weekend Challenge: Build for a Friend
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-weekend-2026-10-01"&gt;Hacktoberfest Weekend Challenge: Build for a Friend&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;h3&gt;
  
  
  StudyBuddy — Pomodoro, Flashcards &amp;amp; Quiz Arena
&lt;/h3&gt;

&lt;p&gt;I built &lt;strong&gt;StudyBuddy&lt;/strong&gt;, an all-in-one study companion designed to make studying more focused, organized, and interactive.&lt;/p&gt;

&lt;p&gt;The idea behind StudyBuddy is simple: students often switch between different apps for focus sessions, revision, and self-testing. StudyBuddy brings these essential study tools together in one lightweight browser application.&lt;/p&gt;

&lt;h3&gt;
  
  
  What it does
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Pomodoro Timer&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Focus, short-break, and long-break modes&lt;/li&gt;
&lt;li&gt;Customizable session durations&lt;/li&gt;
&lt;li&gt;Start, pause, reset, and skip controls&lt;/li&gt;
&lt;li&gt;Visual progress indicator&lt;/li&gt;
&lt;li&gt;Daily focus-session tracking&lt;/li&gt;
&lt;li&gt;Optional sound notifications&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Interactive Flashcards&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create custom decks&lt;/li&gt;
&lt;li&gt;Add, edit, and delete flashcards&lt;/li&gt;
&lt;li&gt;3D card-flip interaction&lt;/li&gt;
&lt;li&gt;Previous/next navigation&lt;/li&gt;
&lt;li&gt;Shuffle cards&lt;/li&gt;
&lt;li&gt;Mark cards as "Still Learning" or "Got It"&lt;/li&gt;
&lt;li&gt;Track mastery of cards&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Quiz Arena&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Generate quizzes from flashcard decks&lt;/li&gt;
&lt;li&gt;Create custom multiple-choice questions&lt;/li&gt;
&lt;li&gt;Choose the number of questions&lt;/li&gt;
&lt;li&gt;Optional per-question timer&lt;/li&gt;
&lt;li&gt;Randomized questions and answer choices&lt;/li&gt;
&lt;li&gt;Instant feedback and explanations&lt;/li&gt;
&lt;li&gt;Score and percentage results&lt;/li&gt;
&lt;li&gt;Retry quizzes&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The application stores study data directly in the browser using &lt;strong&gt;LocalStorage&lt;/strong&gt;, so there is no account or backend required for the current version.&lt;/p&gt;

&lt;h3&gt;
  
  
  Who I Built It For
&lt;/h3&gt;

&lt;p&gt;I built StudyBuddy for &lt;strong&gt;students and friends who want a simple way to stay consistent with studying&lt;/strong&gt; without having to manage several separate tools.&lt;/p&gt;

&lt;p&gt;The goal was to make revision feel less like a collection of disconnected tasks and more like one simple study workflow:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Focus → Revise → Test → Improve&lt;/strong&gt;&lt;/p&gt;




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

&lt;h3&gt;
  
  
  Live Demo
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Add your deployed StudyBuddy URL here after deployment.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;code&gt;https://github.com/AyushDinda/studybuddy-hacktober26&lt;/code&gt;&lt;/p&gt;




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

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

&lt;p&gt;&lt;strong&gt;Repository:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://github.com/AyushDinda/studybuddy-hacktober26" rel="noopener noreferrer"&gt;https://github.com/AyushDinda/studybuddy-hacktober26&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project is a client-side web application built with HTML, CSS, and JavaScript.&lt;/p&gt;




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

&lt;p&gt;StudyBuddy was developed with the help of &lt;strong&gt;Antigravity and Gemini Flash 8&lt;/strong&gt;, which I used as an AI-powered development and problem-solving companion during the project.&lt;/p&gt;

&lt;h3&gt;
  
  
  Technology Stack
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;HTML5&lt;/strong&gt; — application structure and semantic UI&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CSS3&lt;/strong&gt; — responsive design, animations, styling, and 3D flashcard effects&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;JavaScript&lt;/strong&gt; — application logic and interactive functionality&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LocalStorage API&lt;/strong&gt; — persistent browser-side study data&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Web Audio API&lt;/strong&gt; — Pomodoro sounds and interaction feedback&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Antigravity + Gemini Flash 8&lt;/strong&gt; — AI-assisted development, debugging, implementation guidance, and feature refinement&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Main Application Components
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Pomodoro Timer
&lt;/h4&gt;

&lt;p&gt;The Pomodoro system manages focus sessions and breaks through a dedicated timer implementation.&lt;/p&gt;

&lt;p&gt;It supports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Focus sessions&lt;/li&gt;
&lt;li&gt;Short breaks&lt;/li&gt;
&lt;li&gt;Long breaks&lt;/li&gt;
&lt;li&gt;Custom durations&lt;/li&gt;
&lt;li&gt;Automatic session transitions&lt;/li&gt;
&lt;li&gt;Daily focus statistics&lt;/li&gt;
&lt;li&gt;Browser title countdown&lt;/li&gt;
&lt;li&gt;Sound notifications&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Flashcard Engine
&lt;/h4&gt;

&lt;p&gt;The flashcard system manages decks and cards entirely in the browser.&lt;/p&gt;

&lt;p&gt;Users can create decks, add cards, edit cards, delete cards, shuffle cards, flip cards, and track whether they have mastered individual cards.&lt;/p&gt;

&lt;h4&gt;
  
  
  Quiz Arena
&lt;/h4&gt;

&lt;p&gt;The quiz system can generate questions from an existing flashcard deck or allow users to build their own question bank.&lt;/p&gt;

&lt;p&gt;When a quiz is generated from a flashcard deck, the application uses the stored flashcard content to construct multiple-choice questions and answer choices.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Question randomization&lt;/li&gt;
&lt;li&gt;Answer randomization&lt;/li&gt;
&lt;li&gt;Question timers&lt;/li&gt;
&lt;li&gt;Instant feedback&lt;/li&gt;
&lt;li&gt;Explanations&lt;/li&gt;
&lt;li&gt;Score calculation&lt;/li&gt;
&lt;li&gt;Quiz results&lt;/li&gt;
&lt;li&gt;Retry functionality&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Local Persistence
&lt;/h4&gt;

&lt;p&gt;Study data is saved using browser LocalStorage, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pomodoro settings&lt;/li&gt;
&lt;li&gt;Focus statistics&lt;/li&gt;
&lt;li&gt;Flashcard decks&lt;/li&gt;
&lt;li&gt;Active deck&lt;/li&gt;
&lt;li&gt;Custom quiz questions&lt;/li&gt;
&lt;li&gt;Sound preferences&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This allows the user to close or refresh the browser without immediately losing their study data.&lt;/p&gt;




&lt;h2&gt;
  
  
  AI-Assisted Development
&lt;/h2&gt;

&lt;p&gt;A major part of the development workflow was using &lt;strong&gt;Antigravity with Gemini Flash 8&lt;/strong&gt; as an AI development companion.&lt;/p&gt;

&lt;p&gt;Gemini Flash 8 helped with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Breaking the project into manageable features&lt;/li&gt;
&lt;li&gt;Reasoning about JavaScript implementation&lt;/li&gt;
&lt;li&gt;Debugging and troubleshooting&lt;/li&gt;
&lt;li&gt;Refining UI interactions&lt;/li&gt;
&lt;li&gt;Improving application logic&lt;/li&gt;
&lt;li&gt;Iterating on features&lt;/li&gt;
&lt;li&gt;Reviewing implementation approaches&lt;/li&gt;
&lt;li&gt;Helping turn the initial idea into a working browser application&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The AI was used as a development collaborator rather than as a replacement for the application's own functionality.&lt;/p&gt;

&lt;p&gt;The final StudyBuddy application is intentionally lightweight and client-side. It does &lt;strong&gt;not&lt;/strong&gt; require a cloud AI API for its core Pomodoro, flashcard, or quiz functionality.&lt;/p&gt;




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

&lt;p&gt;Open innovation makes it easier for individual developers and small teams to turn ideas into working software.&lt;/p&gt;

&lt;p&gt;For a project like StudyBuddy, AI-assisted development helped reduce the time required to move from an idea to a functional prototype. Instead of spending all of the development time searching through documentation or getting stuck on individual implementation problems, I could use an AI development companion to explore approaches, debug issues, and iterate quickly.&lt;/p&gt;

&lt;p&gt;The combination of open web technologies and AI-assisted development also keeps the project accessible.&lt;/p&gt;

&lt;p&gt;StudyBuddy does not depend on a complex backend infrastructure. Anyone can inspect the source code, understand how the application works, modify it, and build their own version.&lt;/p&gt;

&lt;p&gt;That is the part of open innovation that I value most:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Ideas become easier to experiment with, improve, share, and build upon.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




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

&lt;blockquote&gt;
&lt;p&gt;Optional: Add your saved Antigravity/DevRelay agent session here if available.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;[View my agent session](YOUR_AGENT_SESSION_URL)&lt;/code&gt;&lt;/p&gt;




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

&lt;h3&gt;
  
  
  Build for a Friend
&lt;/h3&gt;

&lt;p&gt;StudyBuddy is being submitted for the &lt;strong&gt;Build for a Friend&lt;/strong&gt; category.&lt;/p&gt;

&lt;p&gt;The project was created around a practical student problem: staying focused while studying, organizing revision material, and testing knowledge without constantly switching between different tools.&lt;/p&gt;




&lt;h2&gt;
  
  
  Project Highlights
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Lightweight client-side application&lt;/li&gt;
&lt;li&gt;No login required&lt;/li&gt;
&lt;li&gt;No backend required&lt;/li&gt;
&lt;li&gt;Persistent browser storage&lt;/li&gt;
&lt;li&gt;Responsive interface&lt;/li&gt;
&lt;li&gt;Interactive 3D flashcards&lt;/li&gt;
&lt;li&gt;Custom flashcard decks&lt;/li&gt;
&lt;li&gt;Flashcard-based quiz generation&lt;/li&gt;
&lt;li&gt;Timed quizzes&lt;/li&gt;
&lt;li&gt;Instant quiz feedback&lt;/li&gt;
&lt;li&gt;Pomodoro productivity tracking&lt;/li&gt;
&lt;li&gt;Web Audio feedback&lt;/li&gt;
&lt;li&gt;AI-assisted development with Antigravity + Gemini Flash 8&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Built With
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;HTML5 • CSS3 • JavaScript • LocalStorage API • Web Audio API • Antigravity • Gemini Flash 8&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;Thanks for checking out &lt;strong&gt;StudyBuddy&lt;/strong&gt;! 🚀&lt;/p&gt;

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