<?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: Rhythm Gupta</title>
    <description>The latest articles on DEV Community by Rhythm Gupta (@rhythm_gupta_8b5b33317d95).</description>
    <link>https://dev.to/rhythm_gupta_8b5b33317d95</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%2F4079459%2Fd5a3eb73-4373-4189-bc95-215e1e082d0f.png</url>
      <title>DEV Community: Rhythm Gupta</title>
      <link>https://dev.to/rhythm_gupta_8b5b33317d95</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rhythm_gupta_8b5b33317d95"/>
    <language>en</language>
    <item>
      <title>Afterlight: Ghost in the Machine 👻</title>
      <dc:creator>Rhythm Gupta</dc:creator>
      <pubDate>Tue, 27 Oct 2026 07:10:54 +0000</pubDate>
      <link>https://dev.to/rhythm_gupta_8b5b33317d95/afterlight-ghost-in-the-machine-52a</link>
      <guid>https://dev.to/rhythm_gupta_8b5b33317d95/afterlight-ghost-in-the-machine-52a</guid>
      <description>&lt;h1&gt;
  
  
  Afterlight: Ghost in the Machine 👻 | Hacktoberfest Week 4
&lt;/h1&gt;

&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;Afterlight is a browser-based supernatural storytelling studio powered by open-weight AI.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The idea came from the thought that some stories never really disappear. They stay with us as memories, old photographs, forgotten places, and stories passed down through generations.&lt;/p&gt;

&lt;p&gt;I wanted to build something that combined that feeling with AI. Afterlight lets users create atmospheric ghost stories by choosing a premise, selecting a mood, and adjusting the story length.&lt;/p&gt;

&lt;p&gt;It also includes a feature called &lt;strong&gt;Keep a Memory Glowing&lt;/strong&gt;, which lets users incorporate a meaningful detail, song, or memory into a fictional remembrance-inspired story.&lt;/p&gt;

&lt;p&gt;I designed the interface around the atmosphere of the project: dark colours, moonlight-inspired accents, subtle textures, and a quiet, cinematic layout.&lt;/p&gt;

&lt;p&gt;The project focuses on three things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Creative storytelling:&lt;/strong&gt; Generate supernatural fiction from a user's own ideas.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Personal remembrance:&lt;/strong&gt; Turn meaningful details into fictional tributes without pretending to contact or speak for deceased people.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local-first AI:&lt;/strong&gt; Explore how a creative AI application can run without relying on a hosted inference API.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Demo
&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/RHYTHMGUPTA8" rel="noopener noreferrer"&gt;
        RHYTHMGUPTA8
      &lt;/a&gt; / &lt;a href="https://github.com/RHYTHMGUPTA8/afterlight-ghost-story" rel="noopener noreferrer"&gt;
        afterlight-ghost-story
      &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;Afterlight — No Ollama version&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;An offline-first supernatural story studio. It runs as a static website and uses Transformers.js to load the open-weight &lt;code&gt;Xenova/flan-t5-small&lt;/code&gt; model directly in the browser. No Python, Flask, Ollama, API key, or backend server is required.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Run it&lt;/h2&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Extract the ZIP.&lt;/li&gt;
&lt;li&gt;Open a terminal in the extracted folder.&lt;/li&gt;
&lt;li&gt;Run a simple local static server (recommended because browser modules may not work from &lt;code&gt;file://&lt;/code&gt;)
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;py -m http.server 8000&lt;/pre&gt;

&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Open &lt;a href="http://localhost:8000" rel="nofollow noopener noreferrer"&gt;http://localhost:8000&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;VS Code users can also use the Live Server extension and click &lt;strong&gt;Go Live&lt;/strong&gt;.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;First run&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;The browser needs internet access on the first run to download Transformers.js and the model files. The first load can take a while. After the files are cached, inference runs in your browser; exact offline behavior depends on whether all assets have been cached and your browser settings.&lt;/p&gt;
&lt;p&gt;If the model fails to load or your device cannot…&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/RHYTHMGUPTA8/afterlight-ghost-story" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;The application is designed to run as a static website. After the required model files have been downloaded, the model can perform inference in the browser.&lt;/p&gt;

&lt;p&gt;The first run requires an internet connection to download the AI library and model. If model loading fails, the application switches to a built-in fallback story generator so users can still explore the interface.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;GitHub repository:&lt;/strong&gt; [Add your public GitHub repository URL here]&lt;/p&gt;

&lt;p&gt;The project uses a simple, accessible structure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;index.html&lt;/code&gt; — the user interface and application layout&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;static/styles.css&lt;/code&gt; — visual design, responsive layout, and animations&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;static/app.js&lt;/code&gt; — story generation, browser model integration, and fallback handling&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;README.md&lt;/code&gt; — installation instructions and project documentation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The code is structured so that the interface and model integration can be modified independently.&lt;/p&gt;

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

&lt;p&gt;I built Afterlight using HTML, CSS, and JavaScript. Instead of creating a Python backend or depending on a hosted AI API, I used &lt;strong&gt;Transformers.js&lt;/strong&gt; to run text generation directly in the browser.&lt;/p&gt;

&lt;p&gt;The application is configured to use the &lt;code&gt;Xenova/flan-t5-small&lt;/code&gt; model package. This allows the browser to load model files and perform inference on the user's device, rather than sending each prompt to a remote inference service.&lt;/p&gt;

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

&lt;ol&gt;
&lt;li&gt;The user enters a story premise.&lt;/li&gt;
&lt;li&gt;The user selects an atmosphere and story length.&lt;/li&gt;
&lt;li&gt;The application prepares a prompt using those choices and, optionally, a remembrance detail.&lt;/li&gt;
&lt;li&gt;The browser attempts to generate a story using the local model.&lt;/li&gt;
&lt;li&gt;If the model cannot load or generate a usable response, the application displays a built-in fallback story.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I also added suggested story premises, a copy-to-clipboard feature, loading feedback, and responsive styling to make the application feel like a finished creative tool rather than a bare text-generation demo.&lt;/p&gt;

&lt;p&gt;The goal was to keep the project easy to understand, run, and extend.&lt;/p&gt;

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

&lt;p&gt;For me, open innovation is about having more control over the tools we build with.&lt;/p&gt;

&lt;p&gt;When an application relies entirely on a closed, hosted AI service, its functionality can depend on API availability, pricing, usage limits, and decisions made by an external provider.&lt;/p&gt;

&lt;p&gt;Afterlight explores a different approach.&lt;/p&gt;

&lt;p&gt;By using a browser-based model, the application can perform inference on the user's device without requiring a paid inference API key. Prompts are processed locally by the application, rather than being sent to a hosted model endpoint.&lt;/p&gt;

&lt;p&gt;This approach offers several advantages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;More control:&lt;/strong&gt; Developers can experiment with compatible models and change the implementation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Privacy:&lt;/strong&gt; Story prompts do not need to be sent to a hosted AI inference service.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Accessibility:&lt;/strong&gt; Anyone can explore the project without setting up an Ollama server or obtaining a cloud AI API key.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resilience:&lt;/strong&gt; The built-in fallback allows the application to remain usable when model loading fails.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are trade-offs, too. Browser inference depends on the device's available memory and processing power. The first model download requires internet access, and the quality of generated stories depends on the selected model.&lt;/p&gt;

&lt;p&gt;Afterlight is a small experiment, but it demonstrates why open models and accessible tooling can make creative AI development more flexible.&lt;/p&gt;

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

&lt;p&gt;Afterlight uses a browser-based text-generation pipeline rather than a separate agent framework.&lt;/p&gt;

&lt;p&gt;The generation workflow takes the user's premise, mood, and length preference and combines them into a prompt. An optional remembrance detail can be included as creative context.&lt;/p&gt;

&lt;p&gt;The application then attempts inference through Transformers.js. If the model cannot be loaded or returns an unusable result, the fallback logic takes over.&lt;/p&gt;

&lt;p&gt;This keeps the application simple and makes the distinction between model-generated output and fallback-generated output visible to the user.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Agent session recording:&lt;/strong&gt; Not applicable to this implementation; no separate agent-session recording is included.&lt;/p&gt;

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

&lt;p&gt;The idea behind Afterlight is that a ghost does not always have to be frightening.&lt;/p&gt;

&lt;p&gt;Sometimes, the things that linger are memories, places we miss, or stories that deserve to be remembered.&lt;/p&gt;

&lt;p&gt;I wanted the application to capture both sides of that idea: the eerie atmosphere of a supernatural story and the warmth of remembering something meaningful.&lt;/p&gt;

&lt;p&gt;The remembrance feature is deliberately framed as fiction. AI can help people express a feeling or build a story around a memory, but it should not pretend to contact the dead or claim to know what a real person would say.&lt;/p&gt;

&lt;p&gt;For me, that balance is what makes this project fit the theme. The machine creates the words, but the meaning comes from the person who brings the story to life.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Partner-specific prize categories:&lt;/strong&gt; None selected yet.&lt;/p&gt;

&lt;p&gt;I will add any applicable categories after checking the official challenge's partner requirements and confirming that the project meets their eligibility criteria.&lt;/p&gt;

&lt;h2&gt;
  
  
  Team Submissions
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Submission type:&lt;/strong&gt; Individual project.&lt;/p&gt;

&lt;p&gt;Afterlight is being prepared as an individual submission. No teammate credits are required.&lt;/p&gt;




&lt;p&gt;Thanks for reading! 👻&lt;/p&gt;

&lt;p&gt;If you try Afterlight, experiment with an unusual premise, change the atmosphere, and see what kind of story emerges.&lt;/p&gt;

&lt;p&gt;Sometimes the most interesting part of AI isn't the answer it gives us. It's the possibility it helps us imagine.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>challenge 1</title>
      <dc:creator>Rhythm Gupta</dc:creator>
      <pubDate>Wed, 21 Oct 2026 17:48:45 +0000</pubDate>
      <link>https://dev.to/rhythm_gupta_8b5b33317d95/challenge-1-22dc</link>
      <guid>https://dev.to/rhythm_gupta_8b5b33317d95/challenge-1-22dc</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-weekend-2026-10-01"&gt;Hacktoberfest Weekend Challenge: Build for a Friend&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

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

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

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

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

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

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

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>challenge 1</title>
      <dc:creator>Rhythm Gupta</dc:creator>
      <pubDate>Wed, 21 Oct 2026 17:18:28 +0000</pubDate>
      <link>https://dev.to/rhythm_gupta_8b5b33317d95/challenge-1-5d9b</link>
      <guid>https://dev.to/rhythm_gupta_8b5b33317d95/challenge-1-5d9b</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-weekend-2026-10-01"&gt;Hacktoberfest Weekend Challenge: Build for a Friend&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

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

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

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

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

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

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

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>SlothSort 🦥 — Let Local AI Organize Your Files</title>
      <dc:creator>Rhythm Gupta</dc:creator>
      <pubDate>Mon, 19 Oct 2026 21:52:09 +0000</pubDate>
      <link>https://dev.to/rhythm_gupta_8b5b33317d95/slothsort-let-local-ai-organize-your-files-4agi</link>
      <guid>https://dev.to/rhythm_gupta_8b5b33317d95/slothsort-let-local-ai-organize-your-files-4agi</guid>
      <description>&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;Meet &lt;strong&gt;SlothSort&lt;/strong&gt; — a local-first AI file organizer that takes the boring work out of managing a cluttered Downloads folder.&lt;/p&gt;

&lt;p&gt;Instead of manually opening files, renaming them, and deciding where they belong, simply upload your documents and let SlothSort suggest meaningful filenames, categories, and summaries.&lt;/p&gt;

&lt;p&gt;It supports documents, invoices, certificates, notes, spreadsheets, code files, and more.&lt;/p&gt;

&lt;p&gt;The best part? &lt;strong&gt;You stay in control.&lt;/strong&gt; Review the AI's suggestions, edit them if needed, and approve files before they move into your organized library. Made a mistake? Undo the move.&lt;/p&gt;

&lt;p&gt;The goal is simple: spend less time organizing files and more time doing what matters.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&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%2Feevqigjfhfqifcbs324c.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%2Feevqigjfhfqifcbs324c.png" alt=" " width="800" height="362"&gt;&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/RHYTHMGUPTA8" rel="noopener noreferrer"&gt;
        RHYTHMGUPTA8
      &lt;/a&gt; / &lt;a href="https://github.com/RHYTHMGUPTA8/SlothSort" rel="noopener noreferrer"&gt;
        SlothSort
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
The project includes the Flask backend, a web dashboard, local AI integration, SQLite storage, and file organization with undo support.

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

&lt;p&gt;I built SlothSort using:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Python + Flask&lt;/strong&gt; — application backend and web interface.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ollama&lt;/strong&gt; — runs the language model locally.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Qwen 2.5 3B&lt;/strong&gt; — the default open-weight model for generating file organization suggestions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SQLite&lt;/strong&gt; — stores file metadata and action history.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HTML, CSS, and JavaScript&lt;/strong&gt; — powers the interactive dashboard.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local file-processing libraries&lt;/strong&gt; — extract text from supported documents before analysis.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When a file is uploaded, SlothSort extracts available text, sends the relevant content to the local model, and receives a suggested filename, category, and summary. The user can review the result before the file is moved.&lt;/p&gt;

&lt;p&gt;If Ollama is unavailable, the application has a basic rule-based fallback so the workflow can still be tested.&lt;/p&gt;

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

&lt;p&gt;Files can contain personal information, financial details, academic certificates, and work documents. Uploading all of them to a third-party AI service is not always desirable.&lt;/p&gt;

&lt;p&gt;That's why I wanted to explore a local-first approach.&lt;/p&gt;

&lt;p&gt;With Ollama and an open-weight model, SlothSort can analyze files on the user's own machine instead of relying on a hosted AI API.&lt;/p&gt;

&lt;p&gt;Open innovation makes three things possible:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Privacy:&lt;/strong&gt; File contents do not need to be sent to an external AI provider.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Control:&lt;/strong&gt; Users can change the model, adjust prompts, and customize the organization rules.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Accessibility:&lt;/strong&gt; After the initial setup and model download, the core workflow can run offline without per-request AI API charges.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There is still a cost in hardware and electricity, and local models can make mistakes. That's why SlothSort includes a review-before-moving workflow instead of blindly trusting every prediction.&lt;/p&gt;

&lt;p&gt;For me, open-source AI is not just about using a different model. It's about giving people more control over where their data goes and how their tools work.&lt;/p&gt;

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

&lt;p&gt;Think about the files that accumulate in your Downloads folder: invoices, certificates, notes, screenshots, and documents with names like &lt;code&gt;final_v2_revised.pdf&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Each file takes only a few seconds to organize, but the repeated effort adds up.&lt;/p&gt;

&lt;p&gt;SlothSort aims to reduce that repetitive work by generating suggestions automatically and letting users approve them in batches of small, manageable actions.&lt;/p&gt;

&lt;p&gt;I haven't measured a reliable time-saving figure yet, so I won't claim a specific number. That's something I'd like to benchmark as the project develops.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>Local AI Expense Assistant: Turn Invoices Into Organized Expense Records Without Cloud AI</title>
      <dc:creator>Rhythm Gupta</dc:creator>
      <pubDate>Sat, 17 Oct 2026 20:15:06 +0000</pubDate>
      <link>https://dev.to/rhythm_gupta_8b5b33317d95/local-ai-expense-assistant-turn-invoices-into-organized-expense-records-without-cloud-ai-3dck</link>
      <guid>https://dev.to/rhythm_gupta_8b5b33317d95/local-ai-expense-assistant-turn-invoices-into-organized-expense-records-without-cloud-ai-3dck</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week2-2026-10-12"&gt;Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&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;Local AI Invoice &amp;amp; Expense Assistant&lt;/p&gt;

&lt;p&gt;Managing invoices and receipts can be tedious for freelancers and small business owners. Manually entering merchant names, dates, taxes, and amounts into spreadsheets takes time, and sending financial documents to third-party AI services may raise privacy concerns.&lt;/p&gt;

&lt;p&gt;I built a &lt;strong&gt;Local AI Invoice &amp;amp; Expense Assistant&lt;/strong&gt; that uses a locally running AI model to extract structured information from invoices and receipts, categorize expenses, and save the results in a dashboard.&lt;/p&gt;

&lt;p&gt;The goal is to help freelancers, tutors, and small business owners spend less time on repetitive bookkeeping while keeping their documents on their own computers.&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/RHYTHMGUPTA8" rel="noopener noreferrer"&gt;
        RHYTHMGUPTA8
      &lt;/a&gt; / &lt;a href="https://github.com/RHYTHMGUPTA8/local-ai-expense-assistant" rel="noopener noreferrer"&gt;
        local-ai-expense-assistant
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;


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

&lt;p&gt;I built the application with a simple architecture:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Python and Flask:&lt;/strong&gt; Handle document uploads, processing, and application routes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ollama:&lt;/strong&gt; Runs the language model locally to extract structured invoice information.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Qwen 2.5 3B:&lt;/strong&gt; The default model for extracting merchant names, dates, amounts, taxes, and expense categories.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SQLite:&lt;/strong&gt; Stores the extracted expense records locally.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HTML and CSS:&lt;/strong&gt; Provide the expense dashboard and upload interface.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PDF text extraction and OCR support:&lt;/strong&gt; Extract text from supported documents and images.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The application requests structured JSON from the model so that extracted fields can be saved consistently in the database.&lt;/p&gt;

&lt;p&gt;An important design goal is to keep AI inference local instead of sending each invoice to a paid cloud AI API.&lt;/p&gt;

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

&lt;p&gt;Open-source and open-weight AI make this project practical for users who want greater control over their financial data and operating costs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Privacy:&lt;/strong&gt; Documents can be processed on the user's own computer instead of being uploaded to an external AI provider.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cost control:&lt;/strong&gt; Local inference avoids per-request charges from proprietary AI APIs, although hardware, electricity, and maintenance still have costs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Flexibility:&lt;/strong&gt; The model can be replaced with another compatible model as performance and requirements change.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Customization:&lt;/strong&gt; The extraction prompts and expense categories can be adapted for freelancers, independent professionals, and small businesses.&lt;/p&gt;

&lt;p&gt;For this use case, open AI makes it possible to explore a private, locally operated bookkeeping assistant without requiring a recurring cloud AI API subscription.&lt;/p&gt;

&lt;p&gt;Thanks for checking out my project!&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>TouchGrass AI — An Open-Source AI Companion That Gets You Outside</title>
      <dc:creator>Rhythm Gupta</dc:creator>
      <pubDate>Sun, 11 Oct 2026 11:26:31 +0000</pubDate>
      <link>https://dev.to/rhythm_gupta_8b5b33317d95/touchgrass-ai-an-open-source-ai-companion-that-gets-you-outside-4p8f</link>
      <guid>https://dev.to/rhythm_gupta_8b5b33317d95/touchgrass-ai-an-open-source-ai-companion-that-gets-you-outside-4p8f</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;We spend so much time looking at screens that sometimes we need a little help getting away from them.&lt;/p&gt;

&lt;p&gt;TouchGrass AI is an open-source, AI-powered outdoor activity companion that helps people turn their free time into small, meaningful real-world adventures.&lt;/p&gt;

&lt;p&gt;Instead of recommending another app to scroll through, it helps you discover something to do outside.&lt;/p&gt;

&lt;p&gt;Whether you have 10 minutes between classes or an entire afternoon to explore, the idea is simple: tell the app how much time you have, choose your energy level and surroundings, and let AI suggest an outdoor mission.&lt;/p&gt;

&lt;p&gt;Some examples:&lt;/p&gt;

&lt;p&gt;🌳 Take a mindful walk and notice five things you usually overlook.&lt;/p&gt;

&lt;p&gt;🐦 Spend a few minutes observing birds in your neighbourhood.&lt;/p&gt;

&lt;p&gt;🌱 Explore a small gardening or nature observation activity.&lt;/p&gt;

&lt;p&gt;🚶 Discover a short outdoor challenge that fits your available time.&lt;/p&gt;

&lt;p&gt;The goal is to make the screen the shortest part of the experience. Generate your mission, head outside, and come back only when you want to record your progress.&lt;/p&gt;

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


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
      &lt;div class="c-embed__body flex items-center justify-between"&gt;
        &lt;a href="https://touchgrass-ai-eta.vercel.app/" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;touchgrass-ai-eta.vercel.app&lt;/span&gt;
          

        &lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&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/RHYTHMGUPTA8" rel="noopener noreferrer"&gt;
        RHYTHMGUPTA8
      &lt;/a&gt; / &lt;a href="https://github.com/RHYTHMGUPTA8/touchgrass-ai" rel="noopener noreferrer"&gt;
        touchgrass-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;TouchGrass AI 🌿&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;A local-first outdoor mission generator powered by an open-weight language model.&lt;/strong&gt; TouchGrass turns a few free minutes into a practical real-world activity, then gets out of the way. No account, cloud AI API, streaks, or social feed.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hacktoberfest theme: Touch Grass — the screen should be the shortest part of the experience.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Why open innovation matters&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Privacy by default:&lt;/strong&gt; the user's preferences are sent to the Ollama process running on their own machine, not to a hosted model API.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Works without internet after setup:&lt;/strong&gt; download the app dependencies and model once; mission generation then runs locally. The PWA caches its static shell, but generating a new mission still requires the local Ollama service.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Model choice:&lt;/strong&gt; &lt;code&gt;OLLAMA_MODEL&lt;/code&gt; can be changed to another compatible model. The prompt and safety constraints are visible and editable.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Accessible experimentation:&lt;/strong&gt; contributors can run, inspect, test, and extend the project without paying per-token API…&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/RHYTHMGUPTA8/touchgrass-ai" 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;p&gt;I built TouchGrass AI with a local-first architecture.&lt;/p&gt;

&lt;p&gt;Technologies used:&lt;/p&gt;

&lt;p&gt;Python and FastAPI for the backend.&lt;/p&gt;

&lt;p&gt;HTML, CSS, and JavaScript for the frontend.&lt;/p&gt;

&lt;p&gt;Ollama to run an AI model locally.&lt;/p&gt;

&lt;p&gt;Qwen2.5 3B as the default open-weight model.&lt;/p&gt;

&lt;p&gt;Progressive Web App features for an installable, app-like experience.&lt;/p&gt;

&lt;p&gt;The application sends activity preferences to the locally running model, which generates suggestions based on the user's available time, energy level, and environment.&lt;/p&gt;

&lt;p&gt;The architecture is intentionally modular so that developers can experiment with different models, improve the prompts, and extend the application without being locked into a single AI provider.&lt;/p&gt;

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

&lt;p&gt;For this project, open innovation is not just a technology choice. It is central to how the application works.&lt;/p&gt;

&lt;p&gt;🔒 Privacy by design: User preferences can be processed locally instead of being sent to a third-party AI provider.&lt;/p&gt;

&lt;p&gt;📴 Offline potential: After downloading the application dependencies and model, the core mission-generation workflow can run without an internet connection, provided the local AI service is running.&lt;/p&gt;

&lt;p&gt;🔄 Freedom to experiment: Developers can change the model, modify prompts, inspect the implementation, and adapt the experience to different communities.&lt;/p&gt;

&lt;p&gt;💸 Lower ongoing API costs: Local inference avoids per-request charges from hosted AI APIs, although it still uses the computer's hardware and electricity.&lt;/p&gt;

&lt;p&gt;A closed AI API could generate outdoor recommendations too. However, a local, open-weight approach makes privacy, model choice, and offline operation much more accessible.&lt;/p&gt;

&lt;p&gt;I wanted to explore how AI could encourage people to spend less time interacting with technology and more time experiencing the world around them.&lt;/p&gt;

&lt;p&gt;The technology should enable the experience, not become the experience.&lt;/p&gt;

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