<?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 (@jahnavi_b60d7891a5f6c).</description>
    <link>https://dev.to/jahnavi_b60d7891a5f6c</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/jahnavi_b60d7891a5f6c</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jahnavi_b60d7891a5f6c"/>
    <language>en</language>
    <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/jahnavi_b60d7891a5f6c/unit-3-has-3-hp-and-i-have-an-open-weight-dungeon-master-125m</link>
      <guid>https://dev.to/jahnavi_b60d7891a5f6c/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>
