<?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: Jahnavi S T</title>
    <description>The latest articles on DEV Community by Jahnavi S T (@st_jahnaviiiii).</description>
    <link>https://dev.to/st_jahnaviiiii</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%2F2865341%2F7195febe-0d69-416c-bc37-2b4477cb904f.jpeg</url>
      <title>DEV Community: Jahnavi S T</title>
      <link>https://dev.to/st_jahnaviiiii</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/st_jahnaviiiii"/>
    <language>en</language>
    <item>
      <title>I Summoned the Ghost of Atom and It Blamed "Disable tests."</title>
      <dc:creator>Jahnavi S T</dc:creator>
      <pubDate>Tue, 27 Oct 2026 06:25:43 +0000</pubDate>
      <link>https://dev.to/st_jahnaviiiii/i-summoned-the-ghost-of-atom-and-it-blamed-disable-tests-2891</link>
      <guid>https://dev.to/st_jahnaviiiii/i-summoned-the-ghost-of-atom-and-it-blamed-disable-tests-2891</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges"&gt;Hacktoberfest Open-Source AI Challenge: Week 4&lt;/a&gt; (Ghost in the Machine)&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Séance with a Dead Repo&lt;/strong&gt;: paste any abandoned GitHub repo and it speaks to you from beyond the grave.&lt;/p&gt;

&lt;p&gt;It reads the repo's real commits and unfinished issues, then an open-weight model plays the ghost, with unfinished business and all.&lt;/p&gt;

&lt;p&gt;I summoned Atom, the editor GitHub sunset. Its ghost told me it died from "the slow bleed of 'Disable tests.' and 'Remove dependancies.'" and that its last sigh was "Thank you, Atom!" Every detail came from the repo's real history.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;🔗 Live: &lt;a href="https://jahnavist04.github.io/dead-repo-seance/" rel="noopener noreferrer"&gt;https://jahnavist04.github.io/dead-repo-seance/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;💻 Code: &lt;a href="https://github.com/jahnavist04/dead-repo-seance" rel="noopener noreferrer"&gt;https://github.com/jahnavist04/dead-repo-seance&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;To try it:&lt;/strong&gt; grab a free API key at &lt;a href="https://console.groq.com/keys" rel="noopener noreferrer"&gt;console.groq.com/keys&lt;/a&gt; (1 minute, no card), paste it into the page, and hit Summon. Try &lt;code&gt;atom/atom&lt;/code&gt; or &lt;code&gt;bower/bower&lt;/code&gt;, then ask the ghost "why did you die?" The key stays in your own browser and is only sent to Groq.&lt;/p&gt;

&lt;h2&gt;
  
  
  How It Works
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;GitHub's public API supplies the repo's last rites: birth date, last commits, open issues.&lt;/li&gt;
&lt;li&gt;Those get packed into a prompt, and an open-weight model (Qwen, served on Groq's free tier) speaks as the repo, streaming word by word.&lt;/li&gt;
&lt;li&gt;The whole site is &lt;strong&gt;one static HTML file&lt;/strong&gt; on GitHub Pages. No backend, no database.&lt;/li&gt;
&lt;li&gt;It uses the OpenAI-compatible API format, so there's also an &lt;strong&gt;Ollama (local)&lt;/strong&gt; option in the dropdown for running a model on your own machine.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Haunting Was the Machine
&lt;/h2&gt;

&lt;p&gt;My first plan was to run Gemma entirely in the browser. My laptop's integrated GPU said no. WebAssembly said no. A tiny model ran and gave me a lecture about "personal data" instead of being a ghost. After four dead ends, I moved the model out of the page and kept everything else.&lt;/p&gt;

&lt;p&gt;The lesson: when the model is a swappable open-weight piece behind a standard API, one failed model doesn't kill the project.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Open Innovation Matters Here
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Swappable:&lt;/strong&gt; the dropdown lists whatever open models the endpoint offers. I changed models without touching my code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Portable:&lt;/strong&gt; the same page works against a hosted open model or a local Ollama with one dropdown change.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No lock-in:&lt;/strong&gt; no proprietary SDK and no single vendor. If a provider disappears, the ghost just moves house.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Run it fully offline on a machine with more disk space, add voices for the ghosts, and let people share a ghost's reply as a card.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>I Was Too Lazy to Organize My Files, So I Taught a Sloth (Gemma) to Do It</title>
      <dc:creator>Jahnavi S T</dc:creator>
      <pubDate>Mon, 26 Oct 2026 06:12:22 +0000</pubDate>
      <link>https://dev.to/st_jahnaviiiii/i-was-too-lazy-to-organize-my-files-so-i-taught-a-sloth-gemma-to-do-it-mb4</link>
      <guid>https://dev.to/st_jahnaviiiii/i-was-too-lazy-to-organize-my-files-so-i-taught-a-sloth-gemma-to-do-it-mb4</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-ai-wk3"&gt;Hacktoberfest Open-Source AI Challenge: Week 3&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;My Downloads folder has files named &lt;code&gt;final_FINAL_v3.pdf&lt;/code&gt; and &lt;code&gt;New Document (2).docx&lt;/code&gt;. I know I should clean it up. I also know I never will.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;LazyDesk AI&lt;/strong&gt; 🦥, a file decluttering app where a local open-weight &lt;strong&gt;Gemma&lt;/strong&gt; model reads your messy files and suggests clean names and folders. It also catches exact duplicates. You review everything in an approval table, and only then do you download a tidy ZIP.&lt;/p&gt;

&lt;p&gt;Nothing moves until you say so. Your originals are never touched.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Repo:&lt;/strong&gt; &lt;a href="https://github.com/jahnavist04/lazydesk-ai" rel="noopener noreferrer"&gt;https://github.com/jahnavist04/lazydesk-ai&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;I tested it with 6 deliberately messy files, including two identical copies. Here's what happened:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Step&lt;/th&gt;
&lt;th&gt;Result&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Files uploaded&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Duplicate detective (SHA-256)&lt;/td&gt;
&lt;td&gt;Caught the identical pair: &lt;code&gt;duplicate_copy.txt&lt;/code&gt; and &lt;code&gt;duplicate_original.txt&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gemma 3 1B, local, CPU-only&lt;/td&gt;
&lt;td&gt;All 6 files processed in &lt;strong&gt;32 seconds&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Approval table&lt;/td&gt;
&lt;td&gt;Every row editable, every row untickable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Output&lt;/td&gt;
&lt;td&gt;A ZIP with only the approved files, in the approved folders&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The ZIP came out like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Documents/duplicate_copy.txt
Documents/duplicate_original.txt
Documents/Prototype/meeting_notes_prototype.txt
Documents/project_tasks.csv
Documents/readme_sample.md
Documents/research_summary.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;Upload → click one button → glance at a table → download. That's it. The "Effort saved" stat is a rough estimate (I assume ~30 seconds of manual sorting per file), but even by that math, 6 files = ~3 minutes saved in 32 seconds of waiting. For a 600-file Downloads folder, I'd happily go make tea while the sloth works.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Streamlit&lt;/strong&gt; for the UI&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ollama + Gemma 3 (1B)&lt;/strong&gt; running locally for the naming and folder suggestions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;pandas&lt;/strong&gt; for the approval table (&lt;code&gt;st.data_editor&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;hashlib&lt;/strong&gt; (SHA-256) for duplicate detection&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;graceful fallback&lt;/strong&gt;: if Ollama isn't running, the app still sorts by file extension instead of crashing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For text files, the model also sees the first 500 characters. For other types, it only sees the filename. Model output is sanitized, so a weird suggestion can't write outside the ZIP's folders.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Open Innovation Mattered Here
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Privacy:&lt;/strong&gt; People's files are personal. Nothing is sent to a third-party AI service. Everything runs through Ollama on the machine hosting the app.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost:&lt;/strong&gt; No API keys, no billing, no rate limits. It cost ₹0 to build and run.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Swappable:&lt;/strong&gt; The model name is a box in the sidebar. Want a bigger Gemma or a different open model? Type its name and go. A closed API wouldn't let me do that.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Honest Lessons
&lt;/h2&gt;

&lt;p&gt;The 1B model is &lt;em&gt;cautious&lt;/em&gt;. Most filenames came back unchanged, and it confidently put &lt;code&gt;meeting_notes.txt&lt;/code&gt; into a &lt;code&gt;Prototype&lt;/code&gt; folder that nothing in the file supported. 😅&lt;/p&gt;

&lt;p&gt;That's exactly why I built the approval table. A small local model is great at the boring 80%, and a human gets the final say on the weird 20%. Next, I'd try a larger Gemma on a laptop with more RAM, and add reading PDF contents.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Built for the Hacktoberfest Open-Source AI Challenge (Slow and Steady). Sloths approve.&lt;/em&gt; 🦥&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>gemma</category>
      <category>opensource</category>
    </item>
    <item>
      <title>DisputeDeck Lite: An Open-Weight AI Assistant for Online Seller Disputes</title>
      <dc:creator>Jahnavi S T</dc:creator>
      <pubDate>Wed, 14 Oct 2026 11:46:52 +0000</pubDate>
      <link>https://dev.to/st_jahnaviiiii/disputedeck-lite-an-open-weight-ai-assistant-for-online-seller-disputes-2odj</link>
      <guid>https://dev.to/st_jahnaviiiii/disputedeck-lite-an-open-weight-ai-assistant-for-online-seller-disputes-2odj</guid>
      <description>&lt;p&gt;Small online sellers often handle everything themselves: managing orders, talking to customers, arranging deliveries, and resolving complaints. When something goes wrong with an order, organizing the available information and writing a professional response can become difficult.&lt;/p&gt;

&lt;p&gt;That's why I built DisputeDeck Lite, a simple AI-powered assistant that helps online sellers prepare for customer disputes.&lt;/p&gt;

&lt;p&gt;🚀 Live Demo: &lt;a href="https://disputedeck-lite.streamlit.app/" rel="noopener noreferrer"&gt;https://disputedeck-lite.streamlit.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💻 GitHub Repository: &lt;a href="https://github.com/jahnavist04/DisputeDeck-Lite" rel="noopener noreferrer"&gt;https://github.com/jahnavist04/DisputeDeck-Lite&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💡 The Problem&lt;/p&gt;

&lt;p&gt;Imagine running a small Instagram business. A customer says their order never arrived, but the order status says delivered. What should you check? What information is still missing? How can you respond professionally without making assumptions?&lt;/p&gt;

&lt;p&gt;DisputeDeck Lite is designed to help organize these situations instead of leaving sellers to figure everything out from scratch.&lt;/p&gt;

&lt;p&gt;✨ What Does DisputeDeck Lite Do?&lt;/p&gt;

&lt;p&gt;The application provides four main capabilities:&lt;/p&gt;

&lt;p&gt;Case analysis: Separates the information provided from uncertain points.&lt;/p&gt;

&lt;p&gt;Missing-evidence checklist: Suggests potentially useful evidence to collect.&lt;/p&gt;

&lt;p&gt;Professional reply generator: Creates an editable, polite response for the customer.&lt;/p&gt;

&lt;p&gt;Case summary export: Allows the seller to download the case details and analysis as JSON.&lt;/p&gt;

&lt;p&gt;The workflow is intentionally simple: enter the order details, describe the complaint, select the evidence already available, and generate an analysis.&lt;/p&gt;

&lt;p&gt;🤖 How Open-Weight AI Fits In&lt;/p&gt;

&lt;p&gt;DisputeDeck Lite uses a hosted open-weight instruction model through Hugging Face Inference Providers.&lt;/p&gt;

&lt;p&gt;Instead of training a model from scratch, I integrated an existing model into a focused application. The model helps structure the supplied information, identify unanswered questions, and draft a response.&lt;/p&gt;

&lt;p&gt;For me, this demonstrates how open-weight AI can be used to build practical tools without needing to develop a foundation model independently.&lt;/p&gt;

&lt;p&gt;🛠️ Tech Stack&lt;/p&gt;

&lt;p&gt;Python for application logic&lt;/p&gt;

&lt;p&gt;Streamlit for the web interface&lt;/p&gt;

&lt;p&gt;Hugging Face Inference Providers for hosted model inference&lt;/p&gt;

&lt;p&gt;GitHub for version control and open-source collaboration&lt;/p&gt;

&lt;p&gt;Streamlit Community Cloud for deployment&lt;/p&gt;

&lt;p&gt;🧪 A Simple Example&lt;/p&gt;

&lt;p&gt;Suppose a customer reports that a notebook they ordered has not arrived, even though the order status is marked as delivered.&lt;/p&gt;

&lt;p&gt;DisputeDeck Lite can help the seller identify what is known, recognize that the delivery status alone may not resolve the complaint, consider checking tracking or delivery confirmation, and draft a calm response asking for clarification.&lt;/p&gt;

&lt;p&gt;The goal is not to automatically decide who is right. It is to help the seller approach the situation more systematically.&lt;/p&gt;

&lt;p&gt;🌍 Why Open Innovation Matters&lt;/p&gt;

&lt;p&gt;Open-weight models and open-source tools make it possible for developers to experiment, customize existing technology, and build solutions for specific problems.&lt;/p&gt;

&lt;p&gt;A small business does not necessarily need a complicated enterprise platform to benefit from AI. Focused tools can make useful workflows more accessible.&lt;/p&gt;

&lt;p&gt;DisputeDeck Lite is a small example of applying open-weight AI to a practical problem faced by independent online sellers.&lt;/p&gt;

&lt;p&gt;🔐 Responsible Use&lt;/p&gt;

&lt;p&gt;AI-generated results can be incomplete or incorrect. DisputeDeck Lite does not establish whether a claim is true, provide legal advice, or guarantee dispute outcomes.&lt;/p&gt;

&lt;p&gt;Sellers should verify important details, collect actual evidence, and review generated replies before sending them. Because the application uses hosted inference, submitted case text is sent to the configured provider. Avoid entering sensitive customer or payment information.&lt;/p&gt;

&lt;p&gt;🚧 What's Next?&lt;/p&gt;

&lt;p&gt;There is room to improve the project further, including better error handling, automated tests, multilingual support, and additional ways to export case summaries.&lt;/p&gt;

&lt;p&gt;I would love to keep improving the application and learn from feedback from other developers.&lt;/p&gt;

&lt;p&gt;🙌 Try It Out&lt;/p&gt;

&lt;p&gt;Give the demo a try using fictional order information, explore the workflow, and check out the source code.&lt;/p&gt;

&lt;p&gt;Live Demo: &lt;a href="https://disputedeck-lite.streamlit.app/" rel="noopener noreferrer"&gt;https://disputedeck-lite.streamlit.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Source Code: &lt;a href="https://github.com/jahnavist04/DisputeDeck-Lite" rel="noopener noreferrer"&gt;https://github.com/jahnavist04/DisputeDeck-Lite&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feedback, suggestions, and contributions are welcome!&lt;/p&gt;

&lt;p&gt;Built with Python, Streamlit, and open-weight AI. 🧾🤖&lt;/p&gt;

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

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>python</category>
      <category>opensource</category>
    </item>
    <item>
      <title>SIDEQUEST.exe - REALITY HAS UNFINISHED MISSIONS.</title>
      <dc:creator>Jahnavi S T</dc:creator>
      <pubDate>Mon, 12 Oct 2026 03:36:25 +0000</pubDate>
      <link>https://dev.to/st_jahnaviiiii/sidequestexe-reality-has-unfinished-missions-2nld</link>
      <guid>https://dev.to/st_jahnaviiiii/sidequestexe-reality-has-unfinished-missions-2nld</guid>
      <description>&lt;p&gt;What if your everyday life had side quests?&lt;/p&gt;

&lt;p&gt;Meet &lt;strong&gt;SIDEQUEST.exe&lt;/strong&gt; — a gamified real-world exploration project built for the Hacktoberfest 2026 DEV Challenge Week 1: &lt;strong&gt;Touch Grass&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The idea is simple: step away from the screen, explore your surroundings, complete small real-world missions, and turn ordinary moments into adventures worth remembering.&lt;/p&gt;

&lt;h2&gt;
  
  
  🎮 What can you do with SIDEQUEST.exe?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🧭 &lt;strong&gt;Real-World Missions:&lt;/strong&gt; Discover small challenges that encourage exploration, curiosity, and meaningful offline experiences.&lt;/li&gt;
&lt;li&gt;⚡ &lt;strong&gt;XP &amp;amp; Level Progression:&lt;/strong&gt; Earn experience points and level up as you complete missions.&lt;/li&gt;
&lt;li&gt;📓 &lt;strong&gt;Field Journal:&lt;/strong&gt; Record your observations, discoveries, and memorable moments.&lt;/li&gt;
&lt;li&gt;🕸️ &lt;strong&gt;The Clue Web:&lt;/strong&gt; Collect clues and connect discoveries through a visual network.&lt;/li&gt;
&lt;li&gt;✳️ &lt;strong&gt;Mission Generator:&lt;/strong&gt; Generate missions based on your mood, from creative challenges to calm, low-energy activities.&lt;/li&gt;
&lt;li&gt;💾 &lt;strong&gt;Browser-Based Progress:&lt;/strong&gt; Save your progress locally without creating an account.&lt;/li&gt;
&lt;li&gt;📦 &lt;strong&gt;Data Export:&lt;/strong&gt; Download a JSON backup of your progress and discoveries.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;We spend so much time online that we sometimes forget how much there is to discover outside our screens.&lt;/p&gt;

&lt;p&gt;I wanted to experiment with turning everyday exploration into something playful — a tiny nudge to be curious, notice the world around us, and make ordinary days a little more interesting.&lt;/p&gt;

&lt;h2&gt;
  
  
  🚀 Try it out
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Live Demo:&lt;/strong&gt; &lt;a href="https://jahnavist04.github.io/sidequest-exe/" rel="noopener noreferrer"&gt;https://jahnavist04.github.io/sidequest-exe/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/jahnavist04/sidequest-exe" rel="noopener noreferrer"&gt;https://github.com/jahnavist04/sidequest-exe&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project is built with HTML, CSS, and JavaScript, and is hosted using GitHub Pages. It works directly in your browser, with no installation required.&lt;/p&gt;

&lt;h2&gt;
  
  
  🤖 What's next?
&lt;/h2&gt;

&lt;p&gt;I want to take SIDEQUEST.exe further by integrating an open-weight AI model to generate more personalized missions, while keeping the experience accessible and privacy-conscious.&lt;/p&gt;

&lt;p&gt;The current mission generator is rule-based, so the AI integration is a future improvement rather than an existing feature.&lt;/p&gt;

&lt;h2&gt;
  
  
  💚 The mission
&lt;/h2&gt;

&lt;p&gt;Close this tab. Step outside if you can. Find something interesting. Come back with a story.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reality has unfinished missions. Go complete one.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I'd love to hear your ideas for making real-world exploration more fun!&lt;/p&gt;

&lt;h1&gt;
  
  
  devchallengesvg #hf26challengesvg #opensource #javascript
&lt;/h1&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>Unit 3 Has 3 HP and I Have an Open-Weight Dungeon Master</title>
      <dc:creator>Jahnavi S T</dc:creator>
      <pubDate>Sun, 04 Oct 2026 15:05:23 +0000</pubDate>
      <link>https://dev.to/st_jahnaviiiii/unit-3-has-3-hp-and-i-have-an-open-weight-dungeon-master-125m</link>
      <guid>https://dev.to/st_jahnaviiiii/unit-3-has-3-hp-and-i-have-an-open-weight-dungeon-master-125m</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;p&gt;&lt;strong&gt;Syllabus Dungeon&lt;/strong&gt;: a text RPG where my friend's syllabus is the map and an open-weight AI is the Dungeon Master.&lt;/p&gt;

&lt;p&gt;My friend has a DBMS exam coming up, and Unit 3 (normalization) is her villain. Flashcard apps just give her red crosses and a dead streak, which makes studying feel worse. I can't study for her, so I turned the syllabus into a dungeon:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🚪 Each unit is a room&lt;/li&gt;
&lt;li&gt;👾 Each topic is a monster with 3 HP&lt;/li&gt;
&lt;li&gt;✅ Right answer: the monster loses 1 HP&lt;/li&gt;
&lt;li&gt;❌ Wrong answer: you lose 10 HP and the DM explains the right answer&lt;/li&gt;
&lt;li&gt;🚩 Weak topics get tracked and come back later&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Normalization became the Cursed Swamp, and its first guardian is the Normalization Slime.&lt;/p&gt;

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

&lt;p&gt;&lt;em&gt;The Dungeon Master greets the player and waits for notes.&lt;/em&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%2Faqdf1canrcz7xtgq7000.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%2Faqdf1canrcz7xtgq7000.png" alt="Dungeon Master greeting the player and asking for notes" width="799" height="172"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Correct answer: the Normalization Slime goes down to 0/3, and the DM quotes the exact line from my notes as proof.&lt;/em&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%2Fhq6vj8p9jphctew34c9c.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%2Fhq6vj8p9jphctew34c9c.png" alt="Dungeon Master quoting the notes as proof after a correct answer, with the Normalization Slime at 0/3 HP" width="799" height="255"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Wrong answer: I deliberately swapped 2NF and 3NF. The DM caught it, explained the right answer, took 10 HP off me, and added "2NF vs 3NF" to my weak topics.&lt;/em&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%2F4y860gd628nkzaop20ke.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%2F4y860gd628nkzaop20ke.png" alt="Dungeon Master explaining the correct 2NF and 3NF definitions after a wrong answer and adding it to weak topics" width="800" height="308"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Status screen. This one also shows a bug: I never set a starting HP, so the DM invented 100 on the spot. The final prompt in the repo fixes it.&lt;/em&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%2F6p4zh4kj45trg0uxvnnn.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%2F6p4zh4kj45trg0uxvnnn.png" alt="Player status screen showing 90 of 100 HP, 0 rooms cleared and the weak topic 2NF vs 3NF" width="800" height="238"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Full real test session, bugs included: &lt;a href="https://github.com/jahnavist04/syllabus-dungeon/blob/main/demo_transcript.txt" rel="noopener noreferrer"&gt;demo_transcript.txt&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/jahnavist04" rel="noopener noreferrer"&gt;
        jahnavist04
      &lt;/a&gt; / &lt;a href="https://github.com/jahnavist04/syllabus-dungeon" rel="noopener noreferrer"&gt;
        syllabus-dungeon
      &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;⚔️🏰 Syllabus Dungeon&lt;/h1&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;🐉 Your syllabus is the dungeon. Your exam is the final boss.&lt;/h3&gt;
&lt;/div&gt;
&lt;p&gt;A text RPG where an AI Dungeon Master turns &lt;strong&gt;your own notes&lt;/strong&gt; into monster fights. 🎮
Built for a friend who kept losing to &lt;strong&gt;Unit 3 (Normalization)&lt;/strong&gt;. 🐸&lt;/p&gt;
&lt;p&gt;🎃 Made for the &lt;strong&gt;Hacktoberfest Weekend Challenge: Build for a Friend&lt;/strong&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🎲 How it works&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;🚪 Unit = room&lt;/li&gt;
&lt;li&gt;👾 Topic = monster with 3 HP&lt;/li&gt;
&lt;li&gt;✅ Right answer = monster loses 1 HP&lt;/li&gt;
&lt;li&gt;❌ Wrong answer = you lose 10 HP + the DM explains it&lt;/li&gt;
&lt;li&gt;🚩 Weak topics come back to haunt you&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🚀 Play in 5 minutes (no install)&lt;/h2&gt;

&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;🌐 Open Google AI Studio and pick &lt;strong&gt;Gemma 4 31B IT&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;📜 Paste &lt;code&gt;dm_prompt.txt&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;📖 Paste your notes (or &lt;code&gt;sample_notes.txt&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;⚔️ Fight!&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🐛 Real bugs I hit&lt;/h2&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;🫣 The DM leaked the answer under the question → now it shows the source line…&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/jahnavist04/syllabus-dungeon" 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 whole game is one system prompt running on &lt;strong&gt;Gemma 4 31B IT&lt;/strong&gt;, an open-weight model from Google DeepMind. I used it through Google AI Studio because my laptop doesn't have the storage for a local install. The prompt is the game engine: it sets the rules, the HP, the roast tone, and the "ask only from my notes" constraint.&lt;/p&gt;

&lt;p&gt;I tested it myself, playing as my friend and deliberately mixing right and wrong answers to check both paths. Two real bugs came up:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The DM leaked the answer.&lt;/strong&gt; My first rule said to quote the exact line from the notes with every question. It did, and printed the answer right under the question. I changed the rule so the quote appears only &lt;em&gt;after&lt;/em&gt; you answer, as proof.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The DM invented a starting HP.&lt;/strong&gt; I never set one, so it made up 100 on the spot and admitted it. The final prompt now sets 100 HP and 10 damage per wrong answer.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;There was also a constraint I couldn't fix: AI Studio forces Google Search grounding on for Gemma, which goes against "only use my notes." I handled it in the prompt (no web search or outside knowledge), and the real fix is running Gemma through the API or Ollama.&lt;/p&gt;

&lt;h2&gt;
  
  
  What My Friend Said
&lt;/h2&gt;

&lt;p&gt;She hasn't played it yet. I'm sending it to her tonight, and I'll update this post with her real reaction once she's fought the Slime. Until then, everything above comes from my own test run, where I played as her and deliberately mixed right and wrong answers.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Gemma is open-weight, so the game isn't tied to one company's API. The same prompt works with any capable model, including a local one through Ollama.&lt;/li&gt;
&lt;li&gt;When the DM misbehaved, I rewrote its rules and re-tested in minutes.&lt;/li&gt;
&lt;li&gt;It cost ₹0 to build and costs ₹0 for her to play.&lt;/li&gt;
&lt;li&gt;Next step: run it fully locally so a student's notes never leave their device. Hosted AI Studio was a trade-off I made because of storage limits, and I'd rather be upfront about that than pretend otherwise.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Gemma&lt;/strong&gt;: Gemma 4 31B IT is the Dungeon Master, handling every question, fight, and weak-topic callback.&lt;/li&gt;
&lt;/ul&gt;

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