<?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: Shikha Shukla</title>
    <description>The latest articles on DEV Community by Shikha Shukla (@shikha_shukla_2469c41a94e).</description>
    <link>https://dev.to/shikha_shukla_2469c41a94e</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%2F4152481%2F28309bf7-031b-40af-bc19-6d2e974e707a.jpeg</url>
      <title>DEV Community: Shikha Shukla</title>
      <link>https://dev.to/shikha_shukla_2469c41a94e</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shikha_shukla_2469c41a94e"/>
    <language>en</language>
    <item>
      <title># 🪷 Sanskrit Saathi: I Built a Local AI Study Companion for My BAMS Friend</title>
      <dc:creator>Shikha Shukla</dc:creator>
      <pubDate>Sun, 04 Oct 2026 08:49:45 +0000</pubDate>
      <link>https://dev.to/shikha_shukla_2469c41a94e/-sanskrit-saathi-i-built-a-local-ai-study-companion-for-my-bams-friend-2oha</link>
      <guid>https://dev.to/shikha_shukla_2469c41a94e/-sanskrit-saathi-i-built-a-local-ai-study-companion-for-my-bams-friend-2oha</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;I built &lt;strong&gt;Sanskrit Saathi&lt;/strong&gt;, a local AI study companion for my friend who is studying &lt;strong&gt;BAMS&lt;/strong&gt; (Bachelor of Ayurvedic Medicine and Surgery).&lt;/p&gt;

&lt;p&gt;Sanskrit is a core part of BAMS, but it's hard when you don't come from a Sanskrit background. My friend was struggling with exactly that.&lt;/p&gt;

&lt;p&gt;The problem wasn't that she couldn't study. It was that a single Sanskrit word or shloka could turn into five separate tasks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What does this mean?&lt;/li&gt;
&lt;li&gt;How do I pronounce it?&lt;/li&gt;
&lt;li&gt;What does each word mean on its own?&lt;/li&gt;
&lt;li&gt;What's the simple Hindi meaning?&lt;/li&gt;
&lt;li&gt;And when it shows up in an Ayurveda context, what am I supposed to take from it?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So I built a small tool around that exact problem. You paste a Sanskrit word, sentence, or shloka, and Sanskrit Saathi turns it into a structured lesson:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;What you get&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;📜&lt;/td&gt;
&lt;td&gt;Original Sanskrit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🔤&lt;/td&gt;
&lt;td&gt;IAST transliteration&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🇬🇧&lt;/td&gt;
&lt;td&gt;Simple English meaning&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🇮🇳&lt;/td&gt;
&lt;td&gt;Simple Hindi meaning&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🧩&lt;/td&gt;
&lt;td&gt;Word-by-word breakdown&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;📚&lt;/td&gt;
&lt;td&gt;Context and usage&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;⚠️&lt;/td&gt;
&lt;td&gt;A note about uncertainty&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🧠&lt;/td&gt;
&lt;td&gt;A quiz to practice what you just read&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Two study modes
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;🌿 General Sanskrit&lt;/strong&gt; focuses on learning the Sanskrit itself.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🪷 BAMS Sanskrit&lt;/strong&gt; adds Ayurveda/BAMS context when it's relevant.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Both the explanation and the quiz follow whichever mode is selected.&lt;/p&gt;

&lt;p&gt;I didn't want to build another general-purpose chatbot. I wanted something my friend could open, paste a line from her textbook into, and actually use while studying.&lt;/p&gt;

&lt;p&gt;I tested it with a BAMS student, and she found the word-by-word breakdown and Hindi explanations particularly useful when working through unfamiliar Sanskrit terms.&lt;/p&gt;




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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; 🎥 **Watch the demo:** https://youtu.be/DCMK8N5VwmQ
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Sanskrit Saathi runs locally with Ollama, so there's no hosted link. The video shows the full flow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The demo covers:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Pasting a Sanskrit word or shloka (or tapping a Quick practice chip)&lt;/li&gt;
&lt;li&gt;Switching between General and BAMS mode&lt;/li&gt;
&lt;li&gt;Getting an explanation from local Gemma&lt;/li&gt;
&lt;li&gt;Reading the IAST transliteration and word-by-word meanings&lt;/li&gt;
&lt;li&gt;Generating a quiz and checking answers&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;
  
  
  Screenshots
&lt;/h3&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%2F18hvydo32civ05dnyjlz.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%2F18hvydo32civ05dnyjlz.png" alt="Home Screen" width="800" height="377"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;BAMS Sanskrit mode&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%2Fem0ezki6ofw41457ouub.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%2Fem0ezki6ofw41457ouub.png" alt="BAMS mode " width="800" height="374"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;General Sanskrit explanation&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%2Fd7t0jpnfu9ohn5hansrg.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%2Fd7t0jpnfu9ohn5hansrg.png" alt="General mode" width="800" height="376"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Quiz mode&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%2Fn0nse83t5q42biop26y5.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%2Fn0nse83t5q42biop26y5.png" alt="General mode quiz" width="799" height="372"&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%2F6ppq4pm20axhbc9krfih.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%2F6ppq4pm20axhbc9krfih.png" alt="BAMS mode quiz" width="800" height="389"&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/Shikha18Shukla" rel="noopener noreferrer"&gt;
        Shikha18Shukla
      &lt;/a&gt; / &lt;a href="https://github.com/Shikha18Shukla/sanskrit-saathi" rel="noopener noreferrer"&gt;
        sanskrit-saathi
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      An AI-powered Sanskrit study companion for BAMS students using local Gemma 3.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;🪷 Sanskrit Saathi&lt;/h1&gt;
&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Your AI study companion for Sanskrit &amp;amp; Ayurveda&lt;/h3&gt;
&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Understand Sanskrit. Learn Ayurveda. Study smarter.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/efb751cf2cc7ae1e49d8a5f7fa7651b3da8f32b91c663ea1f1b0c476e1eb4b7c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f507974686f6e2d332e31302532422d3146344233413f7374796c653d666c61742d737175617265266c6f676f3d707974686f6e266c6f676f436f6c6f723d7768697465"&gt;&lt;img src="https://camo.githubusercontent.com/efb751cf2cc7ae1e49d8a5f7fa7651b3da8f32b91c663ea1f1b0c476e1eb4b7c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f507974686f6e2d332e31302532422d3146344233413f7374796c653d666c61742d737175617265266c6f676f3d707974686f6e266c6f676f436f6c6f723d7768697465" alt="Python"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/4eb93ccc46cd19e5cd2ff213fdbd472283ad2d9b5ebabbf1664351f734e41bf0/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f466c61736b2d4261636b656e642d4138373331413f7374796c653d666c61742d737175617265266c6f676f3d666c61736b266c6f676f436f6c6f723d7768697465"&gt;&lt;img src="https://camo.githubusercontent.com/4eb93ccc46cd19e5cd2ff213fdbd472283ad2d9b5ebabbf1664351f734e41bf0/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f466c61736b2d4261636b656e642d4138373331413f7374796c653d666c61742d737175617265266c6f676f3d666c61736b266c6f676f436f6c6f723d7768697465" alt="Flask"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/9d5a4b31664a534793784051e1f364444298136d687d5aec036edc124e0ce78f/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4f6c6c616d612d4c6f63616c25323041492d3146344233413f7374796c653d666c61742d737175617265"&gt;&lt;img src="https://camo.githubusercontent.com/9d5a4b31664a534793784051e1f364444298136d687d5aec036edc124e0ce78f/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4f6c6c616d612d4c6f63616c25323041492d3146344233413f7374796c653d666c61742d737175617265" alt="Ollama"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/ad064504aa18bc6f51a21ea2a819783fc0334bdadb6bc53e19d53fa0f9773794/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f47656d6d61253230332d34422d4138373331413f7374796c653d666c61742d737175617265"&gt;&lt;img src="https://camo.githubusercontent.com/ad064504aa18bc6f51a21ea2a819783fc0334bdadb6bc53e19d53fa0f9773794/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f47656d6d61253230332d34422d4138373331413f7374796c653d666c61742d737175617265" alt="Gemma"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/4a62ac7059e968d590808046a157cccb1c4bc63b117e99c8d9a4d85345ea6309/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4861636b746f626572666573742d323032362d3146344233413f7374796c653d666c61742d737175617265"&gt;&lt;img src="https://camo.githubusercontent.com/4a62ac7059e968d590808046a157cccb1c4bc63b117e99c8d9a4d85345ea6309/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4861636b746f626572666573742d323032362d3146344233413f7374796c653d666c61742d737175617265" alt="Hacktoberfest"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;An AI-powered Sanskrit study companion built for BAMS students.&lt;/strong&gt;
Runs fully on your own computer. No paid API. No cloud AI.&lt;/p&gt;
&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🌿 What is Sanskrit Saathi?&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;Sanskrit can be hard for BAMS students who don't have a strong Sanskrit background. &lt;strong&gt;Sanskrit Saathi&lt;/strong&gt; helps by turning any Sanskrit word, sentence or shloka into a clear, beginner-friendly lesson, then testing you on it.&lt;/p&gt;
&lt;p&gt;Paste Sanskrit → get an explanation → take a quiz → repeat. 🔁&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;✨ Features&lt;/h2&gt;

&lt;/div&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;

&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;What you get&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;📜&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Sanskrit explanation&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;A structured breakdown of any word, sentence or shloka&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🔤&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;IAST transliteration&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Accurate Roman script, generated with &lt;code&gt;indic-transliteration&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🇬🇧&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;English meaning&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Simple, easy-to-read English&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🇮🇳&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Hindi meaning&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Simple Hindi explanation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🧩&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Word-by-word breakdown&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;See how each word builds the meaning&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;📚&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Context &amp;amp; usage&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Where and how the text is&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;…&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Shikha18Shukla/sanskrit-saathi" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;em&gt;(If the embed doesn't render, use the link: &lt;a href="https://github.com/Shikha18Shukla/sanskrit-saathi" rel="noopener noreferrer"&gt;https://github.com/Shikha18Shukla/sanskrit-saathi&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Run it yourself
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/Shikha18Shukla/sanskrit-saathi
&lt;span class="nb"&gt;cd &lt;/span&gt;sanskrit-saathi
python &lt;span class="nt"&gt;-m&lt;/span&gt; venv venv
.&lt;span class="se"&gt;\v&lt;/span&gt;&lt;span class="nb"&gt;env&lt;/span&gt;&lt;span class="se"&gt;\S&lt;/span&gt;cripts&lt;span class="se"&gt;\a&lt;/span&gt;ctivate        &lt;span class="c"&gt;# macOS/Linux: source venv/bin/activate&lt;/span&gt;
pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; requirements.txt
ollama pull gemma3:4b
python app.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then open &lt;code&gt;http://127.0.0.1:5000&lt;/code&gt; in your browser.&lt;/p&gt;




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

&lt;h3&gt;
  
  
  The stack
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Python + Flask&lt;/strong&gt; for the backend and two API endpoints&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ollama + Gemma 3 4B&lt;/strong&gt; for the AI, running locally on my own machine&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;indic-transliteration&lt;/strong&gt; for IAST&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Plain HTML, CSS, and vanilla JavaScript&lt;/strong&gt; for the frontend, with no framework and no build step&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Architecture
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Sanskrit Text + Study Mode
          ↓
  Sanskrit Saathi Web UI
          ↓
     Flask Backend
       (/api/explain, /api/quiz)
          ↓
        Ollama
          ↓
      Gemma 3 4B
          ↓
  Explanation / Quiz
          ↓
        Web UI
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The frontend sends &lt;code&gt;{ text, study_mode }&lt;/code&gt; to &lt;code&gt;/api/explain&lt;/code&gt; or &lt;code&gt;/api/quiz&lt;/code&gt;, where &lt;code&gt;study_mode&lt;/code&gt; is &lt;code&gt;"general"&lt;/code&gt; or &lt;code&gt;"bams"&lt;/code&gt;. The backend adjusts the prompt for the selected mode and returns plain text, either &lt;code&gt;{ "answer": ... }&lt;/code&gt; or &lt;code&gt;{ "quiz": ... }&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Transliteration comes from a library
&lt;/h3&gt;

&lt;p&gt;IAST transliteration is generated by the &lt;strong&gt;indic-transliteration&lt;/strong&gt; library on the backend, not written by the model. Transliteration is a mechanical conversion, so I wanted a deterministic tool for it and left the explaining to the model.&lt;/p&gt;

&lt;h3&gt;
  
  
  A frontend that expects messy output
&lt;/h3&gt;

&lt;p&gt;The backend returns plain text, and a small local model doesn't always format things the same way twice. So I designed the UI defensively:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It looks for section headings (Original Sanskrit, IAST, English, Hindi, word-by-word, context, note) and turns them into separate cards.&lt;/li&gt;
&lt;li&gt;If the response doesn't parse cleanly, it falls back to a readable formatted card instead of breaking.&lt;/li&gt;
&lt;li&gt;The quiz works the same way. It tries to detect questions and A/B/C/D options and builds question cards, and if it can't, it shows the original quiz text.&lt;/li&gt;
&lt;li&gt;Everything the model returns is rendered as text, never as HTML.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Small details for real study sessions
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Copy buttons&lt;/strong&gt; on the Original Sanskrit, the IAST, and the full explanation, so notes can go straight into a notebook app.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quick practice chips&lt;/strong&gt; that fill the input without sending anything to the AI.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ctrl + Enter&lt;/strong&gt; to explain.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Friendly loading and error states.&lt;/strong&gt; Gemma runs on a local machine, so answers take a moment. The app says "Understanding your Sanskrit..." instead of sitting silent, and if Ollama isn't running it tells you to start it rather than showing a raw error.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Accessibility:&lt;/strong&gt; keyboard-friendly controls, visible focus states, &lt;code&gt;aria-live&lt;/code&gt; updates, and reduced-motion support.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;For this project, an open-weight model is what makes the whole idea practical.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;It costs nothing per question.&lt;/strong&gt; A student shouldn't have to pay for every shloka she looks up.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Her study material stays on her computer.&lt;/strong&gt; Gemma runs locally through Ollama, so the text she pastes is not sent to a hosted AI provider.&lt;/li&gt;
&lt;li&gt;**I could choose a model that fits. Gemma 3 4B runs locally on my CPU-only machine. The tradeoff is that responses take longer than they would with a hosted or GPU-backed model.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;I could shape it for one person's problem.&lt;/strong&gt; The two study modes, the structured output, and the quiz exist because I could control the prompts and the whole pipeline.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With a closed API, every explanation would be a paid request, and the app would need an account, a key, and a connection. For a study tool built for a friend, that's the wrong fit.&lt;/p&gt;

&lt;p&gt;The tradeoff is setup: you need Ollama and the model installed, and local inference is slower than a hosted API. I think that's worth it for a tool someone will use every day.&lt;/p&gt;




&lt;h2&gt;
  
  
  Honest limitations
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Sanskrit Saathi is a &lt;strong&gt;language-learning tool&lt;/strong&gt;. It is not a substitute for a Sanskrit teacher, a textbook, or a qualified medical professional.&lt;/li&gt;
&lt;li&gt;A 4B model can make mistakes, especially with rare words and complex grammar. Ayurvedic context in BAMS mode should be checked against textbooks and teachers.&lt;/li&gt;
&lt;li&gt;It needs Ollama running locally, and responses are slower on CPU-only machines.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;This version intentionally stays small. If I continue developing Sanskrit Saathi, I'd like to add study history, more structured shloka practice, and test other open-weight models to see how well they handle Sanskrit.&lt;br&gt;
But for this weekend, the goal was simple: build something my friend could actually use.&lt;/p&gt;




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

&lt;p&gt;Best Use of Gemma: Gemma 3 4B runs locally through Ollama and powers the explanations and quizzes in Sanskrit Saathi, adapting them to both General and BAMS study modes.&lt;/p&gt;

&lt;p&gt;Thanks for reading! 🪷 If you're learning Sanskrit, studying BAMS, or building tools for a friend, I'd love to hear your thoughts in the comments.&lt;/p&gt;

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