<?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: Niraj Nillawar</title>
    <description>The latest articles on DEV Community by Niraj Nillawar (@nirajdn).</description>
    <link>https://dev.to/nirajdn</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%2F4154150%2F88845fac-da2e-4639-82ef-40f90343ac77.jpeg</url>
      <title>DEV Community: Niraj Nillawar</title>
      <link>https://dev.to/nirajdn</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nirajdn"/>
    <language>en</language>
    <item>
      <title># 🌿 TouchGrass Quest: Using Gemma AI to Help People Get Outdoors</title>
      <dc:creator>Niraj Nillawar</dc:creator>
      <pubDate>Fri, 09 Oct 2026 19:17:48 +0000</pubDate>
      <link>https://dev.to/nirajdn/-touchgrass-quest-using-gemma-ai-to-help-people-get-outdoors-30ec</link>
      <guid>https://dev.to/nirajdn/-touchgrass-quest-using-gemma-ai-to-help-people-get-outdoors-30ec</guid>
      <description>&lt;p&gt;For the Hacktoberfest 2026 Open-Source AI Challenge — Week 1, “Touch Grass,” I built &lt;strong&gt;TouchGrass Quest&lt;/strong&gt;, an AI-powered outdoor activity companion designed to help people take a break from screens and spend more intentional time outdoors.&lt;/p&gt;

&lt;h2&gt;
  
  
  💡 The idea
&lt;/h2&gt;

&lt;p&gt;It's easy to spend hours looking at screens without making time to explore the world around us. TouchGrass Quest turns a simple outdoor break into a small, structured adventure.&lt;/p&gt;

&lt;p&gt;Users can choose their available time and preferred activity style, then generate an outdoor quest with practical steps and sensory challenges.&lt;/p&gt;

&lt;h2&gt;
  
  
  🌱 Features
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Outdoor quest generation:&lt;/strong&gt; Create missions for parks, gardens, or neighborhood walks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Screen-Light Mode:&lt;/strong&gt; Follow your mission while spending less time looking at your phone.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Focus timer:&lt;/strong&gt; Stay engaged with your outdoor activity.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reflection journal:&lt;/strong&gt; Record observations and reflect on the experience.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Progress tracking:&lt;/strong&gt; Save completed quests, reflections, and in-app achievements.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gemma integration:&lt;/strong&gt; The backend supports hosted inference with Gemma models through configured providers, with a fallback generator when live AI inference is unavailable.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🛠️ Technology stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;React and Vite&lt;/li&gt;
&lt;li&gt;Node.js and Express&lt;/li&gt;
&lt;li&gt;Google Gemma model integration&lt;/li&gt;
&lt;li&gt;JavaScript, HTML, and CSS&lt;/li&gt;
&lt;li&gt;LocalStorage for browser-side progress persistence&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🧪 Testing
&lt;/h2&gt;

&lt;p&gt;The reported local verification results include a successful frontend production build, three passing backend tests, a successful backend health check, and browser testing of the main quest and reflection workflow.&lt;/p&gt;

&lt;p&gt;Live Gemma inference has not yet been verified; the fallback mode has been tested.&lt;/p&gt;

&lt;h2&gt;
  
  
  📸 Screenshots
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Dashboard and quest preferences&lt;/strong&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%2Ftb06t6kxtfauen4c30x1.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%2Ftb06t6kxtfauen4c30x1.png" alt="TouchGrass Quest dashboard" width="800" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Generated outdoor quest&lt;/strong&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%2F0sv3exx4ffe2y6adtjam.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%2F0sv3exx4ffe2y6adtjam.png" alt="TouchGrass Quest active mission" width="800" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Reflection and progress&lt;/strong&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%2Frde62bsns8eau519rmzy.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%2Frde62bsns8eau519rmzy.png" alt="TouchGrass Quest reflection and progress" width="800" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🔗 Project repository
&lt;/h2&gt;

&lt;p&gt;Explore the code and setup instructions:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/NirajDN/TouchGrass-Quest" rel="noopener noreferrer"&gt;https://github.com/NirajDN/TouchGrass-Quest&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🌍 Why I built it
&lt;/h2&gt;

&lt;p&gt;My goal was to make spending time outdoors feel approachable. Rather than asking people to make a huge lifestyle change, TouchGrass Quest encourages them to begin with one small mission: observe nature, explore their surroundings, and take a break from the screen.&lt;/p&gt;

&lt;p&gt;Building this project also gave me an opportunity to explore integrating open-weight AI into a practical application while keeping the core experience usable when an AI provider is unavailable.&lt;/p&gt;

&lt;p&gt;I'd love to hear your feedback and ideas for making outdoor exploration more engaging!&lt;/p&gt;

&lt;h1&gt;
  
  
  devchallenge #hf26challenge #gemma
&lt;/h1&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>PlacementPal: An AI Interview Partner Built for My Friend</title>
      <dc:creator>Niraj Nillawar</dc:creator>
      <pubDate>Fri, 02 Oct 2026 21:18:10 +0000</pubDate>
      <link>https://dev.to/nirajdn/placementpal-an-ai-interview-partner-built-for-my-friend-1naf</link>
      <guid>https://dev.to/nirajdn/placementpal-an-ai-interview-partner-built-for-my-friend-1naf</guid>
      <description>&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%2Fjjt6emq2jhrcho4na67a.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%2Fjjt6emq2jhrcho4na67a.png" alt=" " width="799" height="562"&gt;&lt;/a&gt;&lt;/p&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;p&gt;I built &lt;strong&gt;PlacementPal&lt;/strong&gt;, an AI-powered interview practice partner for my friend &lt;strong&gt;Divya&lt;/strong&gt;, who is preparing for technical placement interviews.&lt;/p&gt;

&lt;p&gt;While preparing for placements, studying concepts and solving problems is only part of the process. Getting realistic interview practice is harder when you don't always have someone available to conduct a mock interview, ask follow-up questions, and point out gaps in your answers.&lt;/p&gt;

&lt;p&gt;I built PlacementPal to solve that problem.&lt;/p&gt;

&lt;p&gt;The user can choose an interview track:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;DSA&lt;/li&gt;
&lt;li&gt;JavaScript&lt;/li&gt;
&lt;li&gt;HR / Behavioral&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;They can also choose a difficulty level and start a mock interview.&lt;/p&gt;

&lt;p&gt;PlacementPal then:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Asks an interview question.&lt;/li&gt;
&lt;li&gt;Accepts the candidate's answer.&lt;/li&gt;
&lt;li&gt;Evaluates the answer.&lt;/li&gt;
&lt;li&gt;Identifies strengths and missing points.&lt;/li&gt;
&lt;li&gt;Suggests how the answer can be improved.&lt;/li&gt;
&lt;li&gt;Generates a relevant follow-up question.&lt;/li&gt;
&lt;li&gt;Produces a final performance summary.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The goal was not to build another generic AI chatbot. I wanted to build something focused on a real problem that someone I know was facing.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Divya Thought
&lt;/h2&gt;

&lt;p&gt;After building the first version, I shared PlacementPal with Divya.&lt;/p&gt;

&lt;p&gt;She liked the idea of having an interview practice partner available whenever she wanted to practice. She particularly liked the combination of answering interview questions, receiving feedback, and getting follow-up questions.&lt;/p&gt;

&lt;p&gt;That feedback helped me validate the idea and the direction of the project.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;GitHub Repository:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://github.com/NirajDN/PlacementPal" rel="noopener noreferrer"&gt;https://github.com/NirajDN/PlacementPal&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Screenshots
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Add screenshots of:&lt;/em&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;PlacementPal home page&lt;/li&gt;
&lt;li&gt;Interview setup&lt;/li&gt;
&lt;li&gt;Interview question&lt;/li&gt;
&lt;li&gt;AI evaluation/feedback&lt;/li&gt;
&lt;li&gt;Follow-up question&lt;/li&gt;
&lt;li&gt;Final performance summary&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The complete source code and setup instructions are available in the GitHub repository.&lt;/p&gt;
&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://github.com/NirajDN/PlacementPal" rel="noopener noreferrer"&gt;https://github.com/NirajDN/PlacementPal&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project is organized into a React frontend and Node.js/Express backend.&lt;/p&gt;

&lt;p&gt;The frontend contains the interview setup, question interface, answer input, feedback, follow-up, and final results.&lt;/p&gt;

&lt;p&gt;The backend contains the interview API, AI service, Gemma provider, prompts, and question bank.&lt;/p&gt;
&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;The core AI model for PlacementPal is &lt;strong&gt;Google Gemma 2 9B&lt;/strong&gt;, an open-weight model.&lt;/p&gt;

&lt;p&gt;The local architecture is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;React Frontend
      |
      v
Express Backend
      |
      v
PlacementPal AI Service
      |
      v
Ollama
      |
      v
Gemma 2 9B
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I use Ollama to make local Gemma inference possible.&lt;/p&gt;

&lt;p&gt;The default configuration is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AI_PROVIDER=ollama
GEMMA_MODEL_NAME=gemma2:9b
OLLAMA_BASE_URL=http://localhost:11434
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;PlacementPal has separate AI prompts for different interview tasks, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Interview question generation&lt;/li&gt;
&lt;li&gt;Answer evaluation&lt;/li&gt;
&lt;li&gt;Follow-up question generation&lt;/li&gt;
&lt;li&gt;Interview performance summarization&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The answer evaluator is designed to return structured feedback including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Score&lt;/li&gt;
&lt;li&gt;Correctness&lt;/li&gt;
&lt;li&gt;Strengths&lt;/li&gt;
&lt;li&gt;Missing concepts&lt;/li&gt;
&lt;li&gt;Improvement suggestions&lt;/li&gt;
&lt;li&gt;Ideal answer&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The frontend was built using &lt;strong&gt;React + Vite&lt;/strong&gt;, while the backend uses &lt;strong&gt;Node.js + Express&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I also implemented a fallback engine so the application can continue functioning when the configured AI provider is unavailable.&lt;/p&gt;

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

&lt;p&gt;I wanted the AI component of PlacementPal to be more than a call to a closed API.&lt;/p&gt;

&lt;p&gt;Using an open-weight model such as Gemma makes it possible to run the model locally through Ollama and gives the application more control over how the AI is used.&lt;/p&gt;

&lt;p&gt;For an interview preparation tool, users may enter personal preparation information, project details, answers, and areas they need to improve.&lt;/p&gt;

&lt;p&gt;With local inference, the application can be configured so that this information stays on the user's own machine instead of being sent to an external AI service.&lt;/p&gt;

&lt;p&gt;The open-weight approach also gives the project flexibility:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The model can be run locally.&lt;/li&gt;
&lt;li&gt;The model can be swapped for another compatible model.&lt;/li&gt;
&lt;li&gt;The prompts and behavior can be customized.&lt;/li&gt;
&lt;li&gt;The AI layer is not permanently tied to one closed API.&lt;/li&gt;
&lt;li&gt;The application can continue evolving with different open models.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For me, that flexibility is the most interesting part of using open AI for this project.&lt;/p&gt;

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

&lt;p&gt;I used an AI coding assistant while developing PlacementPal, but I am not including a DevRelay agent session in this submission.&lt;/p&gt;

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

&lt;h3&gt;
  
  
  Best Use of Gemma
&lt;/h3&gt;

&lt;p&gt;PlacementPal uses &lt;strong&gt;Google Gemma 2 9B&lt;/strong&gt;, an open-weight model, as its primary AI model.&lt;/p&gt;

&lt;p&gt;Gemma is integrated into the core interview workflow rather than being used only for a small feature. The application is designed to use Gemma through Ollama for interview question generation, answer evaluation, follow-up questions, and interview summaries.&lt;/p&gt;

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

&lt;p&gt;Building PlacementPal made me think about AI differently from simply integrating an API.&lt;/p&gt;

&lt;p&gt;The interesting part was designing the application around a specific AI role: an interviewer.&lt;/p&gt;

&lt;p&gt;The AI needs to understand the interview context, evaluate answers consistently, ask useful follow-ups, and provide feedback that is actually useful to someone preparing for placements.&lt;/p&gt;

&lt;p&gt;I also learned that having a fallback mechanism is valuable for AI applications because model availability and inference requirements can affect the user experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;p&gt;Some improvements I would like to add in the future are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Voice-based interviews&lt;/li&gt;
&lt;li&gt;More interview categories&lt;/li&gt;
&lt;li&gt;Persistent interview history&lt;/li&gt;
&lt;li&gt;More detailed performance analytics&lt;/li&gt;
&lt;li&gt;Adaptive difficulty based on previous performance&lt;/li&gt;
&lt;li&gt;Support for additional open-weight models&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;PlacementPal started with a simple problem: &lt;strong&gt;how can I make interview practice easier for someone I know?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Instead of building another general-purpose chatbot, I built a focused interview partner around that specific problem and used an open-weight model as the core of the experience.&lt;/p&gt;

&lt;p&gt;That's what made this project interesting for me: building something small, useful, and personal while exploring what open AI makes possible.&lt;/p&gt;

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