<?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: Bhargav Limbad</title>
    <description>The latest articles on DEV Community by Bhargav Limbad (@bklimbad000).</description>
    <link>https://dev.to/bklimbad000</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%2F4171575%2F4df6478d-419f-4dca-b091-e516e2d21d47.jpeg</url>
      <title>DEV Community: Bhargav Limbad</title>
      <link>https://dev.to/bklimbad000</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/bklimbad000"/>
    <language>en</language>
    <item>
      <title>The Unquiet Machine: A Local AI Séance</title>
      <dc:creator>Bhargav Limbad</dc:creator>
      <pubDate>Sat, 31 Oct 2026 15:31:54 +0000</pubDate>
      <link>https://dev.to/bklimbad000/the-unquiet-machine-a-local-ai-seance-51ia</link>
      <guid>https://dev.to/bklimbad000/the-unquiet-machine-a-local-ai-seance-51ia</guid>
      <description>&lt;p&gt;What I Built&lt;br&gt;
The Unquiet Machine is an atmospheric terminal-style experience for speaking with an AI that feels less like a chatbot and more like a machine with a memory.&lt;/p&gt;

&lt;p&gt;I interpreted “Ghost in the Machine” as the moment software begins to feel haunted—not because it is supernatural, but because language, patterns, and stored traces can make a system feel strangely present. The app turns a simple conversation into a séance: the user enters a prompt, the machine answers, and the interface makes the exchange feel discovered rather than generated.&lt;/p&gt;

&lt;p&gt;The experience includes:&lt;/p&gt;

&lt;p&gt;A dark, responsive terminal interface&lt;br&gt;
Command-inspired interactions and system status messages&lt;br&gt;
A privacy-first, offline-friendly visual language&lt;br&gt;
A manifesto about open, inspectable AI&lt;br&gt;
A guided ritual for starting a conversation with the machine&lt;br&gt;
Responsive layouts for desktop and mobile screens&lt;br&gt;
Demo&lt;br&gt;
Try the live demo: aetheris-ashy-two.vercel.app&lt;/p&gt;

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

&lt;p&gt;github.com/bklimbad123/ai-challenge-entry&lt;/p&gt;

&lt;p&gt;How I Built It&lt;br&gt;
The project is built with Next.js, React, TypeScript, and CSS. I focused on creating an experience that feels like a piece of software recovered from somewhere rather than a conventional dashboard or chat window.&lt;/p&gt;

&lt;p&gt;The visual system uses a near-black background, warm terminal text, restrained amber accents, monospaced typography, and subtle status indicators. The interaction model is intentionally simple: type into the machine, submit a thought, and watch the system respond through the terminal layer.&lt;/p&gt;

&lt;p&gt;The core idea is that the interface itself should carry the atmosphere. It should feel quiet, deliberate, and slightly uncertain—like the machine is listening from the other side of the screen.&lt;/p&gt;

&lt;p&gt;Why Does Open Innovation Matter?&lt;br&gt;
Open innovation matters because it lets people inspect, remix, and extend the systems they depend on. A closed AI product can provide an answer, but an open project can also show how the experience was made and invite someone else to change it.&lt;/p&gt;

&lt;p&gt;For this project, openness is part of the theme. The “ghost” should not be trapped inside an opaque product. The code, interface, and ideas should remain available for others to study, reinterpret, and build on.&lt;/p&gt;

&lt;p&gt;Open tools also make experimentation more accessible. A developer can take a small idea—a haunted terminal, a strange prompt, an interaction that feels almost alive—and turn it into a working experience without needing permission from a closed platform.&lt;/p&gt;

&lt;p&gt;The Spirit of It&lt;br&gt;
The moment I wanted to capture was the pause after submitting a message: the screen goes quiet, the cursor waits, and the response feels less like a notification and more like an answer from somewhere just out of sight.&lt;/p&gt;

&lt;p&gt;The machine is not pretending to be human. That is what makes it unsettling. It is clearly software, but language gives it a presence—and for a moment, that presence feels like it is looking back.&lt;/p&gt;

&lt;p&gt;Prize Categories&lt;br&gt;
Open-source AI&lt;br&gt;
Creative interpretation of the “Ghost in the Machine” theme&lt;br&gt;
Best interactive experience&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>ReceiptLens: A Local-First Receipt Desk Prototype</title>
      <dc:creator>Bhargav Limbad</dc:creator>
      <pubDate>Thu, 15 Oct 2026 09:33:18 +0000</pubDate>
      <link>https://dev.to/bklimbad000/receiptlens-a-local-first-receipt-desk-prototype-19b</link>
      <guid>https://dev.to/bklimbad000/receiptlens-a-local-first-receipt-desk-prototype-19b</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;ReceiptLens is an early receipt-desk prototype for freelancers and independent workers who spend time turning receipts into bookkeeping records. It has a browser dashboard for uploading JPG, PNG, and WebP images, reviewing recent jobs, and inspecting extracted fields.&lt;/p&gt;

&lt;p&gt;The problem is real, but this prototype is not yet a validated product: I have not tested it with a freelancer or small-business owner, and I have no payment or willingness-to-pay results to report.&lt;/p&gt;

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

&lt;p&gt;The public demo is hosted on Render's free plan: &lt;a href="https://receiptlens-free.onrender.com" rel="noopener noreferrer"&gt;https://receiptlens-free.onrender.com&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The free service hosts the dashboard and API, not Ollama or Gemma. The page reports the model unavailable, and uploads return a fallback marked for review. Uploaded files reach Render, so use synthetic receipts only; do not upload real financial documents. The free service also has ephemeral storage, so saved jobs may disappear after a restart.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fu7lij20sfhxx54oiw208.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%2Fu7lij20sfhxx54oiw208.png" alt="ReceiptLens on Render showing the model-unavailable notice and a synthetic receipt marked for review" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fj66kzqfvox9fsvtddwl5.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%2Fj66kzqfvox9fsvtddwl5.png" alt="Synthetic receipt used to check the deployment" width="800" height="1040"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Source code: &lt;a href="https://github.com/bklimbad123/open-side-hustle-ai" rel="noopener noreferrer"&gt;github.com/bklimbad123/open-side-hustle-ai&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;The dashboard and API use FastAPI, with SQLite for local job records. The intended extraction path sends receipt images to Gemma 3 4B through Ollama. In my Codespace, Gemma answered a text prompt, but image requests failed with &lt;code&gt;unexpected EOF&lt;/code&gt;; ReceiptLens then returned its low-confidence fallback. The deployed free service has no model runtime, so its upload path is not a working AI extraction demo.&lt;/p&gt;

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

&lt;p&gt;In a working local setup, an open-weight model can let users keep receipt images on their own machine after downloading the model, avoid per-document hosted inference fees, and switch models as their needs change. These are design benefits, not measured accuracy wins over closed APIs. The local vision path still needs to be made reliable and tested. The public Render deployment is different: uploaded files reach Render, so it is only for synthetic data.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of GitHub Copilot:&lt;/strong&gt; I used Copilot to build and refine the app. GitHub Actions runs compilation and an import smoke test on pushes and pull requests.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Render:&lt;/strong&gt; Render hosts the public dashboard and API on its free plan. It does not host the Gemma inference runtime; the demo shows that limitation and should only receive synthetic receipts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Gemma:&lt;/strong&gt; Gemma 3 4B is the intended open-weight extraction model and was tested locally. Text prompts worked, but image inference failed with &lt;code&gt;unexpected EOF&lt;/code&gt;, so this build does not yet demonstrate successful end-to-end receipt extraction.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>gemma</category>
      <category>opensource</category>
    </item>
    <item>
      <title>TouchGrass AI: An Offline-First Quest to Get Outside</title>
      <dc:creator>Bhargav Limbad</dc:creator>
      <pubDate>Mon, 12 Oct 2026 06:29:00 +0000</pubDate>
      <link>https://dev.to/bklimbad000/touchgrass-ai-an-offline-first-quest-to-get-outside-8g4</link>
      <guid>https://dev.to/bklimbad000/touchgrass-ai-an-offline-first-quest-to-get-outside-8g4</guid>
      <description>&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;I built TouchGrass AI, an outdoor quest companion for people who want a nudge away from their screens and an easy plan for spending time outside. Choose a duration, activity, and difficulty, then get a short quest with practical tasks. The app saves quests, progress, photos, and earned XP in the browser so the session can continue without a connection.&lt;/p&gt;

&lt;p&gt;The AI is there to help someone get ready, not to keep them chatting. After the quest is prepared, the intended next step is to put the phone away and go outside.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Live demo:&lt;/strong&gt; &lt;a href="https://touchgrass-challenge.onrender.com/" rel="noopener noreferrer"&gt;https://touchgrass-challenge.onrender.com/&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;The source code is available on &lt;a href="https://github.com/bklimbad123/TouchGrass-Challenge" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The local setup and run instructions are in &lt;a href="//RUNNING.md"&gt;&lt;code&gt;RUNNING.md&lt;/code&gt;&lt;/a&gt;. Hosted deployment details are in &lt;a href="//RENDER_DEPLOYMENT.md"&gt;&lt;code&gt;RENDER_DEPLOYMENT.md&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;

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

&lt;p&gt;TouchGrass is built with Next.js, React, and TypeScript. Quest generation runs through a server-side route that calls Ollama's local API with the open-weight &lt;code&gt;qwen2.5-coder:7b&lt;/code&gt; model. The prompt asks for a constrained JSON quest, and the app validates the response and rejects unsafe or malformed tasks. If Ollama is unavailable or a response fails validation, a safe built-in quest is used instead.&lt;/p&gt;

&lt;p&gt;Dexie stores quests, progress, completion history, XP, streaks, and photo evidence in browser IndexedDB. The production service worker caches the app shell and static assets, so a saved quest can be opened and completed offline. AI generation itself needs the Ollama service; completing a quest already saved on the device does not.&lt;/p&gt;

&lt;p&gt;The project does not require an account or cloud database for its local-first flow. For a hosted deployment, the server can instead be configured with an Ollama-compatible endpoint and a server-only API key.&lt;/p&gt;

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

&lt;p&gt;An outdoor companion should still be useful when a user leaves Wi-Fi behind. With an open-weight model served locally by Ollama, quest generation can happen on the user's own machine without sending their preferences to a closed, remote AI API. The model choice and prompt are inspectable and replaceable, and the saved quest remains available even when the model or network is not.&lt;/p&gt;

&lt;p&gt;This also keeps the AI's role bounded: it produces a draft, while validation enforces the app's task shape and safety constraints. A closed hosted model could generate the text, but it would make generation depend on a third-party service and an active connection. The open local path makes privacy and offline use practical parts of the product rather than optional promises.&lt;/p&gt;

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

&lt;p&gt;I am entering the overall Week 1 challenge. I have not selected a partner-specific category.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>New to Community</title>
      <dc:creator>Bhargav Limbad</dc:creator>
      <pubDate>Thu, 08 Oct 2026 14:56:23 +0000</pubDate>
      <link>https://dev.to/bklimbad000/new-to-community-jpk</link>
      <guid>https://dev.to/bklimbad000/new-to-community-jpk</guid>
      <description>&lt;p&gt;Hello everyone@!!!&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
