<?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: Keerthana Kasthuril</title>
    <description>The latest articles on DEV Community by Keerthana Kasthuril (@keerthana_kasthuril).</description>
    <link>https://dev.to/keerthana_kasthuril</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%2F953808%2Fc4d939b3-170b-41ba-988a-50c189f9bd00.jpeg</url>
      <title>DEV Community: Keerthana Kasthuril</title>
      <link>https://dev.to/keerthana_kasthuril</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/keerthana_kasthuril"/>
    <language>en</language>
    <item>
      <title>Ghost In The Machine: Helpful Spirit That Makes You Productive</title>
      <dc:creator>Keerthana Kasthuril</dc:creator>
      <pubDate>Wed, 28 Oct 2026 16:55:50 +0000</pubDate>
      <link>https://dev.to/keerthana_kasthuril/ghost-in-the-machine-helpful-spirit-that-makes-you-productive-ipk</link>
      <guid>https://dev.to/keerthana_kasthuril/ghost-in-the-machine-helpful-spirit-that-makes-you-productive-ipk</guid>
      <description>&lt;p&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;/p&gt;

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

&lt;p&gt;I built &lt;strong&gt;Spooky Site Blocker&lt;/strong&gt;, a privacy-first Chrome extension that acts as a productivity tool possessed by a poltergeist.&lt;/p&gt;

&lt;p&gt;I wanted to interpret the "Ghost in the Machine" theme literally. Instead of a standard website blocker that just shows a generic "Time's Up!" screen, this extension reads the actual title of the tab you are wasting time on and generates a hyper-specific, sinister message telling you to leave. If you are procrastinating by watching mechanical keyboard reviews, the screen goes pitch black, a ghost appears, and a local AI whispers something like: &lt;em&gt;"The plastic will outlive you, yet your code remains unwritten. This tab is dead."&lt;/em&gt;&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%2Fbamiwxgqshzw1ev33qj3.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%2Fbamiwxgqshzw1ev33qj3.png" alt="Dev site when blocked by Spooky site blocker" width="800" height="465"&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/keerthanak-tw" rel="noopener noreferrer"&gt;
        keerthanak-tw
      &lt;/a&gt; / &lt;a href="https://github.com/keerthanak-tw/spooky-site-bloker" rel="noopener noreferrer"&gt;
        spooky-site-bloker
      &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;👻 Ghost in the Machine: Local AI Site Blocker&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;A privacy-first, locally powered Chrome extension built for the &lt;strong&gt;Hacktoberfest "Ghost in the Machine" Challenge&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;This extension monitors the time you spend on distracting websites. When your time is up, it locks the page with a spooky overlay and uses a local AI model (Gemma) to generate a context-aware, creepy message based on the specific tab you were reading, telling you to get back to work.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🦇 Why Open Innovation Matters Here&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;A time-tracking extension that actively reads the DOM and titles of your browser tabs is a massive privacy risk if it sends that data to a cloud provider.&lt;/p&gt;
&lt;p&gt;By building this with &lt;strong&gt;Ollama&lt;/strong&gt; and the &lt;strong&gt;Gemma:2b&lt;/strong&gt; open-weight model, this project ensures:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Total Privacy:&lt;/strong&gt; Your browsing habits and tab history never leave your machine.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Offline Capability:&lt;/strong&gt; The poltergeist in your machine doesn't need an internet connection to haunt you…&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/keerthanak-tw/spooky-site-bloker" 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;The project is built entirely on local, open-source AI infrastructure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Brain:&lt;/strong&gt; I used the open-weight &lt;strong&gt;Gemma:2b&lt;/strong&gt; model running locally via &lt;strong&gt;Ollama&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Framework:&lt;/strong&gt; A vanilla JavaScript Chrome Extension using Manifest V3.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The most interesting technical challenge was getting a Chrome extension to talk to a local AI without triggering modern web security blocks. I couldn't just call the Ollama API from the injected content script because websites like GitHub or YouTube have strict Content Security Policies (CSP) that block requests to &lt;code&gt;localhost&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;To solve this, I architected a messaging system where the injected &lt;code&gt;content.js&lt;/code&gt; scrapes the page context, passes it to the invisible &lt;code&gt;background.js&lt;/code&gt; service worker, which then safely makes the &lt;code&gt;fetch()&lt;/code&gt; call to the local Gemma model (running with CORS enabled) and sends the creepy response back to the UI.&lt;/p&gt;

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

&lt;p&gt;Open innovation is the only reason this extension is safe to use.&lt;/p&gt;

&lt;p&gt;To generate context-aware messages, the extension has to actively read the DOM and titles of your browser tabs. If I had built this using a closed API, I would be streaming my entire browsing history to a third-party cloud server—a massive privacy violation just for a productivity joke.&lt;/p&gt;

&lt;p&gt;By utilizing local inference with Ollama and an open-weight model like Gemma, your browsing data never leaves your machine. Plus, it runs perfectly offline. Your Wi-Fi might go down, but the ghost in your machine will still haunt you.&lt;/p&gt;

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

&lt;p&gt;I utilized an AI agent as a pair programmer to brainstorm the initial concept and navigate the architectural shift required to bypass Chrome's strict Content Security Policies for local API fetching.&lt;/p&gt;

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

&lt;p&gt;The real magic of this project is the jumpscare of accountability. There is something deeply unsettling about being 20 minutes deep into a mindless Reddit rabbit hole, only for your screen to lock up and a localized AI to specifically call out the exact topic you are wasting your life on. It transforms a standard productivity tool into something that genuinely feels like the machine is watching you.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>How I Used a Local LLM to Never Wash Multiple Pans Again</title>
      <dc:creator>Keerthana Kasthuril</dc:creator>
      <pubDate>Fri, 23 Oct 2026 17:58:35 +0000</pubDate>
      <link>https://dev.to/keerthana_kasthuril/how-i-used-a-local-llm-to-never-wash-multiple-pans-again-pdp</link>
      <guid>https://dev.to/keerthana_kasthuril/how-i-used-a-local-llm-to-never-wash-multiple-pans-again-pdp</guid>
      <description>&lt;p&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;/p&gt;

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

&lt;p&gt;I built the &lt;strong&gt;Zero-Thought Pantry Chef&lt;/strong&gt;, a 100% local AI cooking assistant designed to eliminate culinary decision fatigue and minimize cleanup.&lt;/p&gt;

&lt;p&gt;While most recipe apps give you complex, multi-step instructions that require a pristine kitchen and an hour of prep, this app is engineered to reward extreme laziness without sacrificing a decent meal. You input whatever random leftovers are in your fridge, and the agent processes them through a strict "Sloth Protocol." It forces the model to generate a meal requiring a maximum of one cooking vessel, limits total prep and cook time to under 20 minutes, allows for minimal quick knife work, and mandates eating directly from the pot or microwave bowl to bypass dishwashing. It intelligently assumes you have basics like salt, spices, and cooking oil, saving exhausted professionals and students from the burden of meal planning.&lt;/p&gt;

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

&lt;p&gt;Here is a look at the Streamlit UI in action. When I input random staples like yam, rice, and cheese, the Sloth Chef doesn't give me a traditional casserole recipe. Instead, it tells me to chop the yam, microwave it to soften, toss in the rice and cheese with basic seasonings, and eat it straight out of the microwave bowl for a zero-effort Yam and Cheese Bowl.&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%2Fcrd6rlm06j1xrf0fchml.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%2Fcrd6rlm06j1xrf0fchml.png" alt="User interface of application showing the yam and cheese bowl" width="800" height="463"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;The entire application runs through a streamlined Python architecture using Streamlit for the frontend and Ollama for local inference.&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/keerthanak-tw" rel="noopener noreferrer"&gt;
        keerthanak-tw
      &lt;/a&gt; / &lt;a href="https://github.com/keerthanak-tw/sloth-chef" rel="noopener noreferrer"&gt;
        sloth-chef
      &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;🦥 Zero-Thought Pantry Chef&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Built for Hacktoberfest 2026: "Reward Laziness" Week (International Sloth Day).&lt;/p&gt;
&lt;p&gt;This is a local Python web app that takes whatever leftover ingredients you have in your fridge and generates a recipe requiring the absolute minimum amount of physical effort. It rigidly enforces a "Sloth Protocol": one pot only, zero knife work (tear everything by hand), and eating straight out of the cooking vessel to avoid washing dishes.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🛠️ Stack&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Language:&lt;/strong&gt; Python&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;UI Framework:&lt;/strong&gt; Streamlit&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Model Runner:&lt;/strong&gt; Ollama&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Model:&lt;/strong&gt; Llama 3.2 (running 100% locally)&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🚀 How to Run&lt;/h2&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Install Ollama and pull the model: &lt;code&gt;ollama pull llama3.2&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Install the Python requirements: &lt;code&gt;pip install -r requirements.txt&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Start the application: &lt;code&gt;streamlit run app.py&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;The app will automatically open in your default web browser at &lt;code&gt;http://localhost:8501&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🌍 Why Open Innovation Matters&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;This project relies on open-weight models (Llama 3.2) and open-source tooling (Ollama, Streamlit) to work. Running this locally…&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/keerthanak-tw/sloth-chef" 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 developed this using &lt;strong&gt;Python, Streamlit, and Ollama&lt;/strong&gt;, executing entirely on my local machine. To accelerate the boilerplate setup, I utilized GitHub Copilot in VS Code, allowing me to focus entirely on prompt engineering and local model orchestration.&lt;/p&gt;

&lt;p&gt;The backbone of the project is &lt;strong&gt;Llama 3.2&lt;/strong&gt;, an open-weight model running locally via the Ollama harness. Instead of treating the AI as a broad knowledge base, I utilized strict system prompting to heavily constrain the model's output, forcing it to act as a hyper-efficient filter against physical labor. This approach demonstrates that you don't need massive parameter counts to build highly effective, specialized agents—a localized, 3B parameter model handles instruction-following perfectly when the boundaries are clearly defined.&lt;/p&gt;

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

&lt;p&gt;Relying on open-weight models and open-source local execution makes this project viable in ways a closed API never could:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Absolute Privacy:&lt;/strong&gt; My dietary habits and pantry contents are processed locally. I am not sending my daily routines to a third-party server.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero-Cost Automation:&lt;/strong&gt; Running inference locally means zero API subscription fees or token anxiety. I can run this app every single day to figure out dinner, and it will remain completely free forever.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;True Offline Reliability:&lt;/strong&gt; Because the entire stack lives on my machine, it works flawlessly without an internet connection. If my mobile network drops or I am entirely offline, the Llama model still executes instantly. You shouldn't need a cloud server just to figure out how to cook your leftovers.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;This tool entirely removes the friction between being hungry and actually eating. By mathematically eliminating measuring and dishwashing while capping prep time at 20 minutes, it saves roughly 15 minutes of recipe scrolling and 15 minutes of post-meal cleanup. I used it to figure out a zero-effort yam and cheese bowl, and sticking to the single-vessel rule meant I was back to relaxing almost immediately.&lt;/p&gt;

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