<?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>👻 Memory Ghost: Bringing Forgotten Files Back to Life with Local AI | Gemma 3 + Ollama</title>
      <dc:creator>Shikha Shukla</dc:creator>
      <pubDate>Tue, 27 Oct 2026 13:49:14 +0000</pubDate>
      <link>https://dev.to/shikha_shukla_2469c41a94e/memory-ghost-bringing-forgotten-files-back-to-life-with-local-ai-gemma-3-ollama-46ci</link>
      <guid>https://dev.to/shikha_shukla_2469c41a94e/memory-ghost-bringing-forgotten-files-back-to-life-with-local-ai-gemma-3-ollama-46ci</guid>
      <description>&lt;p&gt;&lt;em&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;/em&gt;&lt;/p&gt;

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

&lt;p&gt;👻 &lt;strong&gt;Memory Ghost — Bringing Forgotten Files Back to Life with Local AI&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Our computers are full of digital ghosts: old notes, assignments, research documents, and forgotten files whose contents we can barely remember.&lt;/p&gt;

&lt;p&gt;Memory Ghost is a local-first AI assistant that helps users rediscover what's inside their files. Select a folder, choose a supported text file, and let AI generate a summary, identify topics, extract key points, and suggest a memory category.&lt;/p&gt;

&lt;p&gt;I interpreted the &lt;em&gt;Ghost in the Machine&lt;/em&gt; theme as the forgotten information hiding in our digital lives. Instead of letting useful knowledge disappear into cluttered folders, Memory Ghost helps bring it back to the surface.&lt;/p&gt;

&lt;p&gt;The current version supports &lt;code&gt;.txt&lt;/code&gt;, &lt;code&gt;.md&lt;/code&gt;, &lt;code&gt;.json&lt;/code&gt;, and &lt;code&gt;.csv&lt;/code&gt; files.&lt;/p&gt;

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

&lt;p&gt;🎬 &lt;strong&gt;Watch Memory Ghost in action:&lt;/strong&gt; &lt;a href="https://youtu.be/bHOIOZsZLBE" rel="noopener noreferrer"&gt;Watch the demo on YouTube&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The video demonstrates the application running locally and shows the AI-powered file-analysis workflow.&lt;/p&gt;

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

&lt;p&gt;👩‍💻 &lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/Shikha18Shukla/Memory-Ghost" rel="noopener noreferrer"&gt;Shikha18Shukla/Memory-Ghost&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project uses a React + TypeScript frontend and a Python + FastAPI backend, with local AI inference through Ollama.&lt;/p&gt;

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

&lt;p&gt;The core of Memory Ghost is &lt;strong&gt;Gemma 3 (&lt;code&gt;gemma3:4b&lt;/code&gt;) running locally through Ollama&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Here's how the pieces work together:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;React + TypeScript:&lt;/strong&gt; Provides the user interface for selecting folders and exploring analysis results.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;FastAPI:&lt;/strong&gt; Handles folder selection, file validation, reading supported files, and AI-analysis requests.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ollama:&lt;/strong&gt; Runs the model locally on the user's machine.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gemma 3:&lt;/strong&gt; Analyzes file content and generates summaries, topics, key points, and a suggested memory category.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SQLite:&lt;/strong&gt; An initial database schema has been added as the foundation for future persistent memory storage.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The workflow is simple: choose a folder, select a supported file, send its text to the local model, and review the generated results.&lt;/p&gt;

&lt;p&gt;The current version is a working prototype. Saving and searching previously analyzed memories are planned improvements, rather than completed features.&lt;/p&gt;

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

&lt;p&gt;I chose an open-weight model because I wanted to explore AI beyond the usual hosted-API workflow.&lt;/p&gt;

&lt;p&gt;Using Gemma 3 with Ollama made it possible to build an application around local inference, giving users more control over where their files are processed and allowing developers to experiment with the model on their own machines.&lt;/p&gt;

&lt;p&gt;Open innovation makes experimentation more accessible. Developers can learn from available tools, adapt them to specific problems, and build practical applications without depending exclusively on a proprietary hosted AI service.&lt;/p&gt;

&lt;p&gt;For Memory Ghost, this matters because the application works with personal notes and documents. Local inference can reduce the need to send their contents to an external AI provider, although local execution alone does not guarantee complete security.&lt;/p&gt;

&lt;p&gt;This project is my exploration of how open-weight AI can make everyday information easier to rediscover.&lt;/p&gt;

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

&lt;p&gt;DevRelay session: Not included. This section is optional, so the submission can proceed without it.&lt;/p&gt;

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

&lt;p&gt;Somewhere on our computers, there are notes we wrote months ago, ideas we thought we'd lost, and documents we know contain something important.&lt;/p&gt;

&lt;p&gt;We don't always lose information by deleting it. Sometimes, we lose it simply by forgetting where it is.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Memory Ghost is about bringing those forgotten digital memories back to life.&lt;/strong&gt; 👻&lt;/p&gt;

&lt;p&gt;The goal isn't to make the AI remember everything for us. It's to make the knowledge we've already saved easier to find, understand, and use again.&lt;/p&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; Memory Ghost uses Gemma 3 (&lt;code&gt;gemma3:4b&lt;/code&gt;) through Ollama as its core text-analysis model.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Memory Ghost was developed by adapting the existing LazyDesk-AI codebase. The project acknowledges this origin, and I am checking the applicable licensing and challenge eligibility requirements before claiming contest eligibility.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>ai</category>
      <category>programming</category>
    </item>
    <item>
      <title>LazyDesk AI: Let Your Local AI Handle the Digital Mess 🦥💜</title>
      <dc:creator>Shikha Shukla</dc:creator>
      <pubDate>Sat, 24 Oct 2026 15:58:36 +0000</pubDate>
      <link>https://dev.to/shikha_shukla_2469c41a94e/lazydesk-ai-let-your-local-ai-handle-the-digital-mess-333m</link>
      <guid>https://dev.to/shikha_shukla_2469c41a94e/lazydesk-ai-let-your-local-ai-handle-the-digital-mess-333m</guid>
      <description>&lt;h1&gt;
  
  
  LazyDesk AI: Let Your Local AI Handle the Digital Mess 🦥💜
&lt;/h1&gt;

&lt;p&gt;&lt;em&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;/em&gt;&lt;/p&gt;

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

&lt;p&gt;Have you ever downloaded a PDF, saved a screenshot, renamed a document three times, and then completely forgotten where you put it?&lt;/p&gt;

&lt;p&gt;Same problem, too many files, and somehow the job of organizing them always gets postponed.&lt;/p&gt;

&lt;p&gt;That's why I built &lt;strong&gt;LazyDesk AI&lt;/strong&gt; — a local-first, AI-powered file organizer designed to make digital clutter less overwhelming.&lt;/p&gt;

&lt;p&gt;Instead of relying entirely on manually organizing files, LazyDesk AI explores how a local language model can help suggest clearer filenames and useful categories based on file metadata.&lt;/p&gt;

&lt;p&gt;The goal is simple: spend less time deciding where files belong and more time doing the work that actually matters.&lt;/p&gt;

&lt;p&gt;✨ &lt;strong&gt;What LazyDesk AI brings to the table:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🗂️ &lt;strong&gt;A focused workspace:&lt;/strong&gt; A dashboard with Overview, File Organizer, Activity, and Settings pages.&lt;/li&gt;
&lt;li&gt;🧠 &lt;strong&gt;AI-powered suggestions:&lt;/strong&gt; Gemma 3 running through Ollama can analyze file metadata and generate structured suggestions.&lt;/li&gt;
&lt;li&gt;🔌 &lt;strong&gt;Local AI status:&lt;/strong&gt; Check whether the backend can connect to Ollama and whether the model is available.&lt;/li&gt;
&lt;li&gt;🎨 &lt;strong&gt;A clean interface:&lt;/strong&gt; A dark, violet-accented UI designed to make organizing feel less like another chore.&lt;/li&gt;
&lt;li&gt;🔐 &lt;strong&gt;A local-first approach:&lt;/strong&gt; AI inference runs through Ollama on your own machine rather than requiring a hosted AI API.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The project is still evolving. The dashboard currently includes sample workspace data, and I am working toward a complete folder-selection and organization workflow. I want to be transparent about that: this is a working prototype, not yet a fully automated file manager.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;GitHub repository:&lt;/strong&gt; &lt;a href="https://github.com/Shikha18Shukla/LazyDesk-AI" rel="noopener noreferrer"&gt;Shikha18Shukla/LazyDesk-AI&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The repository contains the source code and setup instructions to run the project locally.&lt;/p&gt;

&lt;p&gt;The application currently runs locally, so I don't have a public hosted demo to share yet. The next milestone is to connect the folder-selection flow end to end and demonstrate the complete experience with real files.&lt;/p&gt;

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

&lt;p&gt;Explore the project here:&lt;/p&gt;

&lt;p&gt;🔗 &lt;strong&gt;&lt;a href="https://github.com/Shikha18Shukla/LazyDesk-AI" rel="noopener noreferrer"&gt;View LazyDesk AI on GitHub&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The project is organized into two main parts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; React, TypeScript, and Vite.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; Python and FastAPI, with an endpoint for analyzing file metadata.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The backend communicates with Ollama locally and uses &lt;code&gt;gemma3:4b&lt;/code&gt; to request structured AI suggestions.&lt;/p&gt;

&lt;p&gt;The repository also includes a README with installation instructions, the API overview, troubleshooting guidance, and the project's roadmap.&lt;/p&gt;

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

&lt;p&gt;The central idea was to build around an open-weight model rather than making a hosted AI service a mandatory dependency.&lt;/p&gt;

&lt;p&gt;Here's the architecture:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;       User
        |
        v
+----------------------+
| React + TypeScript   |
| LazyDesk AI UI       |
+----------------------+
        |
        v
+----------------------+
| Python + FastAPI     |
| Local API            |
+----------------------+
        |
        v
+----------------------+
| Ollama               |
| Local inference      |
+----------------------+
        |
        v
+----------------------+
| Gemma 3 (4B)         |
| File metadata        |
| analysis and ideas   |
+----------------------+
        |
        v
+----------------------+
| Structured AI        |
| suggestions          |
+----------------------+
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  1. The interface
&lt;/h3&gt;

&lt;p&gt;I built the frontend using React and TypeScript, with Vite for development. The interface is organized into separate pages so that the project can grow beyond a single file-upload screen.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. The backend
&lt;/h3&gt;

&lt;p&gt;FastAPI provides the API layer. The health endpoint checks whether Ollama is reachable and whether the configured model is available. The analysis endpoint accepts a filename, extension, and file size, then sends a prompt to the local model.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. The open-weight model
&lt;/h3&gt;

&lt;p&gt;I chose &lt;strong&gt;Gemma 3 (4B)&lt;/strong&gt; and run it through &lt;strong&gt;Ollama&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The model receives file metadata rather than needing the entire file's contents for the current analysis workflow. It is asked to return a structured suggestion that the application can use.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Working within real hardware limits
&lt;/h3&gt;

&lt;p&gt;I developed this on a laptop without a dedicated GPU. That made local inference speed an important practical consideration.&lt;/p&gt;

&lt;p&gt;It also made the project more interesting: I wanted to explore how useful local AI could be on everyday hardware, rather than assuming everyone has access to an expensive GPU or a paid cloud API.&lt;/p&gt;

&lt;p&gt;The current version is a foundation. Connecting real folder selection, adding safe rename and move operations, and measuring performance are still part of the work ahead.&lt;/p&gt;

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

&lt;p&gt;For this project, open innovation isn't just a way to avoid a paid API. It changes the way the application can be built.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. More control over personal data&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;File names can reveal a surprising amount about someone's life: academic work, job applications, personal documents, and projects.&lt;/p&gt;

&lt;p&gt;With local inference, the model can process the metadata on the user's own machine. The intended workflow does not require sending that metadata to a third-party AI API. Of course, the actual privacy guarantees still depend on how the application is configured and implemented.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. No mandatory per-request AI bill&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Once the model is downloaded, local inference doesn't require paying a hosted AI provider for every request. Electricity, hardware resources, storage, and setup still have costs, but experimentation becomes much more accessible.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Freedom to experiment&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Using an open-weight model makes it possible to explore different prompts, change the model, and test different approaches without rebuilding the application around a single closed provider.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. AI that's closer to the user&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A local-first design can reduce dependence on internet connectivity for inference after the model has been downloaded and the local services are running.&lt;/p&gt;

&lt;p&gt;For a utility that deals with personal files, that is a meaningful design choice.&lt;/p&gt;

&lt;p&gt;Open innovation made it possible for me to experiment with a practical AI-powered desktop utility while learning how the UI, API, and local model work together.&lt;/p&gt;

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

&lt;p&gt;I used AI-assisted development while building the interface and project structure.&lt;/p&gt;

&lt;p&gt;I haven't included a DevRelay session link because I don't have a verified public session URL to share yet. I'd rather leave that out than publish a link that doesn't work.&lt;/p&gt;

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

&lt;p&gt;The payoff I'm aiming for is fewer repetitive decisions.&lt;/p&gt;

&lt;p&gt;Imagine a folder containing files like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;notes_final.pdf
notes_final_v2.pdf
IMG_20261021_104533.png
download (7).pdf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A future end-to-end version of LazyDesk AI could inspect the metadata, suggest clearer names, and group related files for the user to review.&lt;/p&gt;

&lt;p&gt;For example, it might suggest a more descriptive filename for a lecture PDF or recommend grouping screenshots separately from documents.&lt;/p&gt;

&lt;p&gt;Those are &lt;strong&gt;illustrative examples of the intended workflow&lt;/strong&gt;, not claims of measured results from the current prototype.&lt;/p&gt;

&lt;p&gt;I haven't measured time saved yet. My next step is to test the workflow with a real folder, compare the manual process with AI-assisted suggestions, and record how long each takes.&lt;/p&gt;

&lt;p&gt;Because saving time should be demonstrated, not just promised.&lt;/p&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; — using Google's Gemma 3 open-weight model through Ollama for local AI-powered file metadata analysis.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'm entering only the category that directly matches the technology used in this project.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thoughts 💜
&lt;/h2&gt;

&lt;p&gt;LazyDesk AI started with a small idea: what if organizing digital clutter didn't always require another round of manual effort?&lt;/p&gt;

&lt;p&gt;Building it has given me an opportunity to explore local inference, open-weight models, API integration, and the practical challenges of making AI useful on everyday hardware.&lt;/p&gt;

&lt;p&gt;It isn't finished yet, and that's part of the journey. The next challenge is turning the prototype into a reliable workflow that works with real folders and gives users control over every change.&lt;/p&gt;

&lt;p&gt;Because sometimes productivity doesn't mean doing more.&lt;/p&gt;

&lt;p&gt;Sometimes it means letting the computer handle a little more of the boring stuff.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Build thoughtfully. Automate carefully. Stay a little lazy.&lt;/strong&gt; 🦥&lt;/p&gt;

&lt;h1&gt;
  
  
  Hacktoberfest #HF26Challenge #OpenSourceAI #Gemma #Ollama #Python #React #LocalAI #Productivity
&lt;/h1&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>ai</category>
      <category>programming</category>
    </item>
    <item>
      <title>I Built DukaanDraft: A Local AI Content Studio for Small Businesses</title>
      <dc:creator>Shikha Shukla</dc:creator>
      <pubDate>Tue, 13 Oct 2026 19:25:56 +0000</pubDate>
      <link>https://dev.to/shikha_shukla_2469c41a94e/i-built-dukaandraft-a-local-ai-content-studio-for-small-businesses-5b63</link>
      <guid>https://dev.to/shikha_shukla_2469c41a94e/i-built-dukaandraft-a-local-ai-content-studio-for-small-businesses-5b63</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week2-2026-10-12"&gt;Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;Small businesses selling through Instagram, WhatsApp, and online marketplaces often spend a surprising amount of time writing product descriptions, social media captions, and sales messages.&lt;/p&gt;

&lt;p&gt;For a small clothing reseller or independent shop owner, every new product means another round of writing content that sounds attractive, describes the product accurately, and encourages customers to take action.&lt;/p&gt;

&lt;p&gt;I built &lt;strong&gt;DukaanDraft&lt;/strong&gt;, a local-first AI-powered product content studio that turns product details into ready-to-use marketing content.&lt;/p&gt;

&lt;p&gt;A seller enters the product name, category, price, features, and target audience, then selects English, Hindi, or Hinglish. DukaanDraft generates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Three distinct Instagram caption options.&lt;/li&gt;
&lt;li&gt;A descriptive product title.&lt;/li&gt;
&lt;li&gt;A WhatsApp sales message.&lt;/li&gt;
&lt;li&gt;A detailed product description.&lt;/li&gt;
&lt;li&gt;Product selling points.&lt;/li&gt;
&lt;li&gt;Relevant hashtags.&lt;/li&gt;
&lt;li&gt;A call-to-action suggestion.&lt;/li&gt;
&lt;li&gt;A marketplace listing title.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal is to help independent sellers spend less time drafting repetitive content and more time running their businesses.&lt;/p&gt;

&lt;p&gt;The potential customers are clothing resellers, Instagram shop owners, independent retailers, and other small businesses that need product content regularly. Whether they would pay for it is something I want to validate through real user feedback.&lt;/p&gt;

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

&lt;p&gt;DukaanDraft currently runs locally on my machine.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Screenshots and demo:&lt;/strong&gt; I'll include a screenshot of the redesigned interface and a short recording showing the product-content generation workflow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Youtube demo&lt;/strong&gt;: &lt;a href="https://youtu.be/7uVQsl0cFpA" rel="noopener noreferrer"&gt;https://youtu.be/7uVQsl0cFpA&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The application uses local inference, so generation time depends on the computer running the model. On my CPU-based setup, a complete generation takes approximately 111 seconds.&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%2Fy0ll96baxfha4pzwnomp.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%2Fy0ll96baxfha4pzwnomp.png" alt="dukandraft" width="800" height="382"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;GitHub repository:&lt;/strong&gt; &lt;a href="https://github.com/Shikha18Shukla/DukaanDraft" rel="noopener noreferrer"&gt;https://github.com/Shikha18Shukla/DukaanDraft&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The repository contains the Flask backend, prompt templates, Ollama integration, responsive frontend, and automated tests.&lt;/p&gt;

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

&lt;p&gt;I built DukaanDraft using:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Python and Flask&lt;/strong&gt; for the backend and API endpoints.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ollama&lt;/strong&gt; as the local inference runtime.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gemma 3 4B&lt;/strong&gt; as the open-weight language model.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HTML, CSS, and vanilla JavaScript&lt;/strong&gt; for the frontend.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Python &lt;code&gt;unittest&lt;/code&gt;&lt;/strong&gt; for automated testing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The application follows a simple workflow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Validate the seller's product details.&lt;/li&gt;
&lt;li&gt;Construct a category-aware prompt.&lt;/li&gt;
&lt;li&gt;Send the prompt to Gemma 3 4B through the local Ollama HTTP API.&lt;/li&gt;
&lt;li&gt;Parse and validate the model's structured JSON output.&lt;/li&gt;
&lt;li&gt;Normalize hashtags and handle malformed responses with a bounded retry.&lt;/li&gt;
&lt;li&gt;Display the generated content in separate cards with copy buttons.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;One of the biggest challenges was improving the quality of the generated content. A generic product description isn't particularly useful to a seller, so I redesigned the prompts to produce three different caption strategies: product-led, lifestyle-oriented, and short-and-punchy.&lt;/p&gt;

&lt;p&gt;I also added rules against inventing discounts, stock availability, delivery promises, product specifications, certifications, or customer testimonials.&lt;/p&gt;

&lt;p&gt;The frontend received a complete visual refresh with a warm ivory background, burgundy accents, editorial typography, responsive layouts, and a more polished content-generation workspace.&lt;/p&gt;

&lt;p&gt;The reported automated test run completed with &lt;strong&gt;73 passing tests&lt;/strong&gt;. I also tested real inference through the local Ollama API and checked Python and JavaScript syntax.&lt;/p&gt;

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

&lt;p&gt;Open-weight AI is central to how DukaanDraft works. It isn't simply a conventional website with an AI feature added on top.&lt;/p&gt;

&lt;p&gt;By running Gemma 3 4B locally through Ollama, I can experiment with prompts, change model configurations, validate outputs, and build a useful workflow without depending on a paid, hosted LLM API.&lt;/p&gt;

&lt;p&gt;This approach offers several advantages for the intended audience:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cost control:&lt;/strong&gt; There is no per-request charge from a third-party inference API.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local processing:&lt;/strong&gt; Product information is sent to the configured local Ollama endpoint rather than a hosted LLM provider.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flexibility:&lt;/strong&gt; The application can evolve as models and prompting strategies improve.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transparency:&lt;/strong&gt; The backend, prompt construction, output validation, and error handling can be inspected and modified.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Local AI also comes with trade-offs. Inference can be slow on CPU-only hardware, and a smaller model can produce imperfect output. My measured generation time was approximately 111 seconds, so I designed the interface to communicate the wait honestly rather than promise instant results.&lt;/p&gt;

&lt;p&gt;For this project, open innovation made it possible to build and test a complete local AI content-generation workflow without paying for hosted model inference.&lt;/p&gt;

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

&lt;p&gt;Building DukaanDraft taught me that connecting a language model to a form is only the beginning.&lt;/p&gt;

&lt;p&gt;Useful AI products also need structured output validation, carefully designed prompts, error handling, a clear user experience, and honest communication about limitations.&lt;/p&gt;

&lt;p&gt;The next challenge is to put DukaanDraft in front of actual small-business sellers, find out how much editing the generated content requires, and determine whether it saves enough time to become a product someone would pay for.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you run a small business, what repetitive content-writing task would you want a local AI assistant to handle?&lt;/strong&gt; I'd love to hear your ideas.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>ai</category>
      <category>python</category>
    </item>
    <item>
      <title>Nature Saathi: An AI Companion That Sends You Outside</title>
      <dc:creator>Shikha Shukla</dc:creator>
      <pubDate>Wed, 07 Oct 2026 16:37:49 +0000</pubDate>
      <link>https://dev.to/shikha_shukla_2469c41a94e/nature-saathi-an-ai-companion-that-sends-you-outside-3e80</link>
      <guid>https://dev.to/shikha_shukla_2469c41a94e/nature-saathi-an-ai-companion-that-sends-you-outside-3e80</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week1-2026-10-05"&gt;Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;We keep using our phones to learn about the world instead of looking at the world around us. We'll open an app to identify a bird while the bird is sitting ten feet away, ignored.&lt;/p&gt;

&lt;p&gt;So I asked myself: &lt;strong&gt;what if AI didn't give us another reason to stare at a screen?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Nature Saathi&lt;/strong&gt; is an AI-powered outdoor learning companion that turns an ordinary walk into a real-world nature expedition. &lt;em&gt;Saathi&lt;/em&gt; (साथी) means "companion" in Hindi. Most apps want your eyes on the screen. Nature Saathi wants them on the sky, the soil, and the sparrow on the wall.&lt;/p&gt;

&lt;p&gt;You tell it three things: how much time you have, how adventurous you feel, and what you're curious about (leaves, birds, and so on). A local AI model writes a custom expedition just for you. You read one mission, &lt;strong&gt;put the phone away&lt;/strong&gt;, go explore, come back, and tap complete.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;📱 &lt;strong&gt;The screen should be the shortest part of the experience.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Who is it for?&lt;/strong&gt; Curious kids, families, students, and anyone who wants a nudge to notice the world. It also suits anyone who has caught themselves "going for a walk" while scrolling.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Expedition Loop
&lt;/h3&gt;

&lt;p&gt;The whole product is built around one idea: AI creates the mission, you leave the screen, and you come back with a discovery.&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%2Fqo4sx5ena71n3pkqgn8j.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%2Fqo4sx5ena71n3pkqgn8j.png" alt="The Expedition Loop" width="799" height="333"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Key features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;🎯 &lt;strong&gt;Tailored expeditions:&lt;/strong&gt; choose duration, difficulty, and interest, and get a fresh mission list&lt;/li&gt;
&lt;li&gt;🧠 &lt;strong&gt;Local AI via Ollama:&lt;/strong&gt; missions are generated on your own machine, with no cloud AI account needed&lt;/li&gt;
&lt;li&gt;🚶 &lt;strong&gt;One mission at a time:&lt;/strong&gt; a focused, phone-light flow with a progress indicator&lt;/li&gt;
&lt;li&gt;🔄 &lt;strong&gt;Refresh-proof runs:&lt;/strong&gt; your active expedition survives an accidental refresh (it lives in the tab's &lt;code&gt;sessionStorage&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;🔍 &lt;strong&gt;Review What I Discovered:&lt;/strong&gt; revisit your completed missions once you're back&lt;/li&gt;
&lt;li&gt;🛡️ &lt;strong&gt;Safety-aware output:&lt;/strong&gt; every expedition includes a safety note, and unsafe model output is rejected&lt;/li&gt;
&lt;li&gt;🔒 &lt;strong&gt;Private by design:&lt;/strong&gt; no accounts, no database, no uploads, and closing the tab clears everything&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;&lt;strong&gt;Youtube demo video&lt;/strong&gt; : &lt;a href="https://youtu.be/5P2vqBBz-FI" rel="noopener noreferrer"&gt;https://youtu.be/5P2vqBBz-FI&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Homepage&lt;/strong&gt;&lt;br&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%2Fy0crxkz8c7bsujm7kv2b.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%2Fy0crxkz8c7bsujm7kv2b.png" alt="Homepage" width="799" height="379"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Expedition setup&lt;/strong&gt;: choosing time, difficulty, and an interest like 🌿 Leaves&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%2F2ggj6f5icnq575ntdtx9.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%2F2ggj6f5icnq575ntdtx9.png" alt="Expedition setup" width="799" height="380"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mission generation&lt;/strong&gt;: Gemma writes the outdoor challenge&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%2F648ke9gw8o6lf2ir8f6j.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%2F648ke9gw8o6lf2ir8f6j.png" alt="mission generation" width="800" height="507"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Active expedition&lt;/strong&gt;: the key moment. The app literally tells you to put your phone away.&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%2Fb2k57bycwdtdla7h48b5.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%2Fb2k57bycwdtdla7h48b5.png" alt="Active expedition" width="800" height="468"&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/nature-saathi" rel="noopener noreferrer"&gt;
        nature-saathi
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      An open-source AI companion that turns outdoor walks into fun nature exploration missions.
    &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;🌿 Nature Saathi&lt;/h1&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;&lt;em&gt;Your phone is the map. The world is the classroom.&lt;/em&gt;&lt;/h3&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;An AI-powered outdoor learning companion that turns an ordinary walk into a real-world nature expedition.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/3a61a930eef06f284696a8aa88c67ff9045493a0a5e9fb4bb8109cf46b59bbd5/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f507974686f6e2d332e392532422d3337373641423f6c6f676f3d707974686f6e266c6f676f436f6c6f723d7768697465"&gt;&lt;img src="https://camo.githubusercontent.com/3a61a930eef06f284696a8aa88c67ff9045493a0a5e9fb4bb8109cf46b59bbd5/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f507974686f6e2d332e392532422d3337373641423f6c6f676f3d707974686f6e266c6f676f436f6c6f723d7768697465" alt="Python"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/bce0dfd5859e84b3e01056f29a0d2210173a9c43ee8d0efd06efebee84e7147d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4261636b656e642d466c61736b2d3030303030303f6c6f676f3d666c61736b266c6f676f436f6c6f723d7768697465"&gt;&lt;img src="https://camo.githubusercontent.com/bce0dfd5859e84b3e01056f29a0d2210173a9c43ee8d0efd06efebee84e7147d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4261636b656e642d466c61736b2d3030303030303f6c6f676f3d666c61736b266c6f676f436f6c6f723d7768697465" alt="Flask"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/116b38a1e93ffd107e7c4771a38986f9142f38b79391c133deb4bedd50c33091/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f41492d4f6c6c616d61253230286c6f63616c292d316632393337"&gt;&lt;img src="https://camo.githubusercontent.com/116b38a1e93ffd107e7c4771a38986f9142f38b79391c133deb4bedd50c33091/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f41492d4f6c6c616d61253230286c6f63616c292d316632393337" alt="Ollama"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/5815c594a3cb78981e419a4e05be9ea380f6628d46ccd038395c52416cb580c0/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f446174612d4e6f25323064617461626173652532432532306e6f25323075706c6f6164732d326537643332"&gt;&lt;img src="https://camo.githubusercontent.com/5815c594a3cb78981e419a4e05be9ea380f6628d46ccd038395c52416cb580c0/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f446174612d4e6f25323064617461626173652532432532306e6f25323075706c6f6164732d326537643332" alt="Privacy"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/4f16fa506c9a9b4d5ed02073cfecaf1b4dbbecbe1a02f5582fb56bb71c6d8714/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f53637265656e25323074696d652d617325323073686f72742532306173253230706f737369626c652d663539653062"&gt;&lt;img src="https://camo.githubusercontent.com/4f16fa506c9a9b4d5ed02073cfecaf1b4dbbecbe1a02f5582fb56bb71c6d8714/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f53637265656e25323074696d652d617325323073686f72742532306173253230706f737369626c652d663539653062" alt="Screen Time"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/Shikha18Shukla/nature-saathi#-quick-start" rel="noopener noreferrer"&gt;Quick Start&lt;/a&gt; · &lt;a href="https://github.com/Shikha18Shukla/nature-saathi#-how-it-works" rel="noopener noreferrer"&gt;How It Works&lt;/a&gt; · &lt;a href="https://github.com/Shikha18Shukla/nature-saathi#-mission-generation-api" rel="noopener noreferrer"&gt;API&lt;/a&gt; · &lt;a href="https://github.com/Shikha18Shukla/nature-saathi#-tests" rel="noopener noreferrer"&gt;Tests&lt;/a&gt; · &lt;a href="https://github.com/Shikha18Shukla/nature-saathi#-roadmap" rel="noopener noreferrer"&gt;Roadmap&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🧭 What is Nature Saathi?&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;&lt;em&gt;Saathi&lt;/em&gt; (साथी) means &lt;strong&gt;companion&lt;/strong&gt;. Most apps want your eyes on the screen. Nature Saathi wants them on the &lt;strong&gt;sky, the soil, and the sparrow on the wall&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Pick how long you have, how adventurous you feel, and what you're curious about. A &lt;strong&gt;local AI model&lt;/strong&gt; writes a custom expedition for you. You read one mission, &lt;strong&gt;put the phone away, go explore, come back&lt;/strong&gt;, and tap complete.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;📱 &lt;strong&gt;The screen should be the shortest part of the experience.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🎮 The Expedition Loop&lt;/h2&gt;

&lt;/div&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;
&lt;pre class="notranslate"&gt;&lt;code&gt;   ┌───────────┐     ┌───────────┐     ┌───────────┐     ┌───────────┐
   │  1. PICK  │ ──▶ │  2. READ  │ ──▶ │ 3. EXPLORE│ ──▶ │ 4. RETURN&lt;/code&gt;&lt;/pre&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/nature-saathi" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;The README covers setup, Ollama configuration, the API, tests, and a roadmap.&lt;/p&gt;

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

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

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Tech&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Frontend&lt;/td&gt;
&lt;td&gt;HTML, CSS, vanilla JavaScript&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Backend&lt;/td&gt;
&lt;td&gt;Python, Flask&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Ollama&lt;/strong&gt; running &lt;strong&gt;Gemma 3 4B&lt;/strong&gt; locally&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tests&lt;/td&gt;
&lt;td&gt;Python &lt;code&gt;unittest&lt;/code&gt; + a Node test for frontend logic&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&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;        Nature Saathi
             │
      Browser / UI
             │
          Flask
             │
     Mission Service
             │
          Ollama
             │
        Gemma 3 4B
             │
     Generated Mission
             │
          Browser
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;The browser sends your choices to a single endpoint:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="err"&gt;POST&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;/api/missions/generate&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"duration_minutes"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;45&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"difficulty"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Explorer"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"interest"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Birds"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Flask hands the request to a &lt;strong&gt;mission service&lt;/strong&gt;, which fills a prompt template and asks Gemma (through Ollama) for an expedition. The response contains a title, theme, intro, a safety note, and a list of missions. Each mission has a &lt;code&gt;task&lt;/code&gt;, an &lt;code&gt;observation_cue&lt;/code&gt; (what to look, listen, or feel for), a &lt;code&gt;learning_note&lt;/code&gt; (the "aha" fact), and an &lt;code&gt;evidence_type&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Never trust the model
&lt;/h3&gt;

&lt;p&gt;The part I'm proudest of is the validation layer. &lt;strong&gt;The mission service checks everything the model returns.&lt;/strong&gt; Malformed, incomplete, or unsafe output never reaches the page. Errors always share one shape, so the frontend can respond predictably:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"error"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"code"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"..."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"message"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"..."&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Status&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;400&lt;/td&gt;
&lt;td&gt;Invalid request&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;503&lt;/td&gt;
&lt;td&gt;Ollama is unavailable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;502&lt;/td&gt;
&lt;td&gt;Model output was malformed, incomplete, or unsafe&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;When your product tells people to walk outside, "the AI said so" isn't good enough. Every expedition has to carry a safety note.&lt;/p&gt;

&lt;h3&gt;
  
  
  The challenge: local AI isn't always fast
&lt;/h3&gt;

&lt;p&gt;I'll be honest: running a model locally is slower than calling a hosted API. My first Gemma generations took significantly longer than a typical API call, and the default timeouts failed before the model finished.&lt;/p&gt;

&lt;p&gt;So I:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Increased the Ollama timeout&lt;/strong&gt; to match real local inference times&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Handled generation failures gracefully&lt;/strong&gt;, with clear 503/502 errors and friendly messages instead of a broken page&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Kept the loading moment short and calm&lt;/strong&gt;, since the whole point is that the screen time is brief&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That trade-off shaped the design. Because generation takes a moment, Nature Saathi generates the whole expedition &lt;em&gt;once&lt;/em&gt;, up front. Then you put the phone away and never wait on the AI mid-walk.&lt;/p&gt;

&lt;h3&gt;
  
  
  Testing
&lt;/h3&gt;

&lt;p&gt;The test suite is deliberately dependency-light:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python &lt;span class="nt"&gt;-m&lt;/span&gt; unittest discover &lt;span class="nt"&gt;-s&lt;/span&gt; tests &lt;span class="nt"&gt;-v&lt;/span&gt;   &lt;span class="c"&gt;# mission service checks&lt;/span&gt;
node tests/test_frontend_render.js        &lt;span class="c"&gt;# navigation, progress, refresh recovery, bad data&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  I Took Nature Saathi Outside 🌿
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The mission I got:&lt;/strong&gt;  Find different types of flowers around you&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where I went:&lt;/strong&gt; A park near my hostel.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What happened:&lt;/strong&gt; I chose &lt;strong&gt;45 minutes&lt;/strong&gt; and &lt;strong&gt;flowers&lt;/strong&gt;, and Nature Saathi gave me five field notes: &lt;em&gt;Color Spectrum&lt;/em&gt;, &lt;em&gt;Shape Seekers&lt;/em&gt;, &lt;em&gt;Silent Observation&lt;/em&gt;, &lt;em&gt;Flower Count&lt;/em&gt;, and &lt;em&gt;Floral Sounds&lt;/em&gt;.I took it to a park near my hostel, and my friend came along. We did the flower activity together.&lt;/p&gt;

&lt;p&gt;There were so many flowers: yellow, pink, purple, and white, plus some wild flowers growing on their own. I expected to find a few flowers. I didn't expect how much beauty I had been walking past.&lt;/p&gt;

&lt;p&gt;The best part wasn't only the flowers. Once we stopped and really looked, we saw butterflies, honeybees, and other tiny insects moving from flower to flower. We also noticed how strong and different the fragrance was from each one.&lt;/p&gt;

&lt;p&gt;While completing the missions, I felt calm. Doing it with a friend made it even better, because we kept pointing things out to each other.&lt;/p&gt;

&lt;p&gt;I loved this experience, and we both enjoyed it a lot.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I discovered:&lt;/strong&gt; &lt;br&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%2Fpocuaudq4tclhxqmou4u.jpeg" 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%2Fpocuaudq4tclhxqmou4u.jpeg" alt="flowers" width="800" height="1423"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Nature Saathi uses &lt;strong&gt;Ollama to run Gemma 3 locally&lt;/strong&gt; instead of sending every interaction to a hosted AI API. For this particular project, that open approach was better than a closed one in several ways:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;🔒 Privacy is real, not a promise.&lt;/strong&gt; A nature app for kids and families shouldn't ship their interests to a third party. Because inference happens on the user's machine, nothing leaves it. Combined with no accounts, no database, and a server bound to &lt;code&gt;127.0.0.1&lt;/code&gt;, the privacy story is simple to verify.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🔑 No API key, no signup.&lt;/strong&gt; The core experience works with just &lt;code&gt;ollama pull gemma3:4b&lt;/code&gt;. That matters for classrooms, community groups, and anyone who can't or won't hand over a credit card.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;💸 No per-request cost.&lt;/strong&gt; A mission generator is the sort of thing people want to run again and again. With local inference, a hundred expeditions cost the same as one: nothing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🔁 Swappable models.&lt;/strong&gt; The model is one environment variable (&lt;code&gt;OLLAMA_MODEL&lt;/code&gt;). If a better open-weight model arrives next month, Nature Saathi can adopt it without rewriting the app.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🌱 No lock-in.&lt;/strong&gt; The project can keep evolving without depending on one provider's pricing, policies, or availability.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There's also a philosophical fit. An app about &lt;em&gt;noticing the world around you&lt;/em&gt; is stronger when the technology behind it is something you can inspect, run, and change yourself.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;📸 &lt;strong&gt;Photo discovery:&lt;/strong&gt; bring your finding back, identify it with a &lt;em&gt;local&lt;/em&gt; vision model, and get interesting facts&lt;/li&gt;
&lt;li&gt;🖨️ &lt;strong&gt;Printable expedition cards&lt;/strong&gt;, so you can leave the phone at home entirely&lt;/li&gt;
&lt;li&gt;🌳 More themes: trees, insects, clouds, night sky&lt;/li&gt;
&lt;li&gt;👨‍👩‍👧 Group and family expedition mode&lt;/li&gt;
&lt;li&gt;🌐 Multilingual missions (English, हिन्दी, and more)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Contributions and ideas are welcome. Open an issue and say hello!&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>productivity</category>
      <category>opensource</category>
    </item>
    <item>
      <title># Are we building AI tools for learning, or just better ways to avoid learning?</title>
      <dc:creator>Shikha Shukla</dc:creator>
      <pubDate>Tue, 06 Oct 2026 18:22:05 +0000</pubDate>
      <link>https://dev.to/shikha_shukla_2469c41a94e/-are-we-building-ai-tools-for-learning-or-just-better-ways-to-avoid-learning-4h0b</link>
      <guid>https://dev.to/shikha_shukla_2469c41a94e/-are-we-building-ai-tools-for-learning-or-just-better-ways-to-avoid-learning-4h0b</guid>
      <description>&lt;p&gt;I've been thinking about this while building AI-based learning tools.&lt;/p&gt;

&lt;p&gt;AI can explain a difficult concept in seconds, translate something, generate examples, write code, create quizzes, and even act like a personal tutor.&lt;/p&gt;

&lt;p&gt;But there's a question I keep coming back to:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;At what point does an AI learning assistant stop helping us learn and start doing the learning for us?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For example, if I'm learning programming and AI gives me the solution immediately, I may finish the problem faster—but did I actually understand it?&lt;/p&gt;

&lt;p&gt;On the other hand, an AI that gives hints, asks questions, explains mistakes, and adapts to my level could potentially make learning much more effective.&lt;/p&gt;

&lt;p&gt;So I'm curious:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do you personally use AI while learning?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Do you prefer AI to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Give you the answer?&lt;/li&gt;
&lt;li&gt;Give you hints first?&lt;/li&gt;
&lt;li&gt;Explain the concept and make you solve it?&lt;/li&gt;
&lt;li&gt;Act like a tutor and ask you questions?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And where do you think the line is between &lt;strong&gt;AI-assisted learning&lt;/strong&gt; and &lt;strong&gt;AI doing the learning for us&lt;/strong&gt;?&lt;/p&gt;

&lt;p&gt;Would love to hear how other developers approach this. 👇&lt;/p&gt;

</description>
      <category>ai</category>
      <category>learning</category>
      <category>discuss</category>
      <category>programming</category>
    </item>
    <item>
      <title>What If an AI Could Answer a Legal Question Based on the Law That Existed At That Time?</title>
      <dc:creator>Shikha Shukla</dc:creator>
      <pubDate>Mon, 05 Oct 2026 09:54:10 +0000</pubDate>
      <link>https://dev.to/shikha_shukla_2469c41a94e/what-if-an-ai-could-answer-a-legal-question-based-on-the-law-that-existed-at-that-time-2m9c</link>
      <guid>https://dev.to/shikha_shukla_2469c41a94e/what-if-an-ai-could-answer-a-legal-question-based-on-the-law-that-existed-at-that-time-2m9c</guid>
      <description>&lt;h1&gt;
  
  
  What If an AI Could Answer a Legal Question Based on the Law That Existed &lt;em&gt;At That Time&lt;/em&gt;?
&lt;/h1&gt;

&lt;p&gt;I've been working on a research project called &lt;strong&gt;Indian Constitution Temporal QA&lt;/strong&gt;, and it started with a question that sounds simple:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can an AI answer a question about the Indian Constitution while taking the date of the question into account?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Most question-answering systems treat a document as if it is static.&lt;/p&gt;

&lt;p&gt;Legal documents aren't.&lt;/p&gt;

&lt;p&gt;The Indian Constitution has been amended repeatedly. Articles can change, provisions can be inserted, modified, or removed, and the version of the law that applies can depend on &lt;em&gt;when&lt;/em&gt; you're asking the question.&lt;/p&gt;

&lt;p&gt;That creates a problem for AI systems.&lt;/p&gt;

&lt;p&gt;An answer can look completely correct today while being wrong for a question about what the Constitution said 20, 30, or 50 years ago.&lt;/p&gt;

&lt;p&gt;So instead of building another general-purpose legal chatbot, I'm trying to build a system that understands &lt;strong&gt;time as part of the question.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I'm building
&lt;/h2&gt;

&lt;p&gt;The project is a dataset and retrieval pipeline for &lt;strong&gt;temporal question answering over the Indian Constitution&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The goal is to track constitutional provisions across amendments and eventually answer questions such as:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"What did Article X provide before the relevant amendment?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;or&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Which constitutional provision was applicable in a particular year?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The system needs to do more than retrieve a paragraph containing the right keywords.&lt;/p&gt;

&lt;p&gt;It needs to determine:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What was the relevant provision?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Which amendment changed it?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;When did that change take effect?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Which version should be used for the question being asked?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That's where the temporal part comes in.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I think this is interesting
&lt;/h2&gt;

&lt;p&gt;A normal RAG system might retrieve the latest version of a constitutional article and confidently generate an answer.&lt;/p&gt;

&lt;p&gt;But for historical legal questions, &lt;strong&gt;the latest version may be exactly the wrong evidence.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That's the failure mode I'm interested in.&lt;/p&gt;

&lt;p&gt;I want to explore whether adding amendment history and temporal metadata can make retrieval more reliable for questions where the answer depends on a specific point in time.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I've built so far
&lt;/h2&gt;

&lt;p&gt;I'm currently working on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Extracting the Indian Constitution from source documents&lt;/li&gt;
&lt;li&gt;Parsing it into individual Articles and structured records&lt;/li&gt;
&lt;li&gt;Identifying constitutional amendments&lt;/li&gt;
&lt;li&gt;Tracking article-level changes across amendments&lt;/li&gt;
&lt;li&gt;Building structured amendment metadata&lt;/li&gt;
&lt;li&gt;Preparing the data for temporal retrieval and question answering&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The current dataset tracks changes across &lt;strong&gt;106 constitutional amendments from 1951–2023&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The project is still under development, so I'm treating this as a research/engineering experiment rather than claiming that the problem is solved.&lt;/p&gt;

&lt;h2&gt;
  
  
  The difficult part isn't the chatbot
&lt;/h2&gt;

&lt;p&gt;One thing I've realized while building this is that the hardest part isn't putting an LLM behind an API.&lt;/p&gt;

&lt;p&gt;The difficult part is creating trustworthy context.&lt;/p&gt;

&lt;p&gt;If the underlying dataset doesn't preserve:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;article → amendment → change → date&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;then even a very capable model can produce a convincing answer from the wrong version of the law.&lt;/p&gt;

&lt;p&gt;That's why I'm spending much more time on data extraction, normalization, and temporal relationships than I initially expected.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I want to test next
&lt;/h2&gt;

&lt;p&gt;The next stage is to build a question-answering benchmark around these historical constitutional questions.&lt;/p&gt;

&lt;p&gt;I'll eventually want to compare things like:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Standard retrieval vs. temporal-aware retrieval&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;and measure whether explicitly incorporating amendment history actually improves:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;retrieval accuracy&lt;/li&gt;
&lt;li&gt;temporal correctness&lt;/li&gt;
&lt;li&gt;evidence selection&lt;/li&gt;
&lt;li&gt;answer reliability&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I also want to test cases where the current version of an article is deliberately misleading for a historical question.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I'm building this
&lt;/h2&gt;

&lt;p&gt;I'm interested in the intersection of &lt;strong&gt;AI, information retrieval, and law&lt;/strong&gt;, but I'm also interested in a broader question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Can an AI system know that the most relevant information isn't necessarily the most recent information?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For legal, historical, regulatory, and policy documents, that distinction matters.&lt;/p&gt;

&lt;p&gt;This project is my attempt to explore it through the Indian Constitution.&lt;/p&gt;

&lt;p&gt;The project is still evolving, but I'll be documenting the dataset, pipeline, experiments, and results as I go.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; Coming soon — I'm currently developing the dataset and retrieval pipeline.&lt;/p&gt;

&lt;p&gt;If you've worked on temporal retrieval, legal NLP, RAG, or historical document QA, I'd genuinely love to hear how you approached it.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>machinelearning</category>
      <category>legaltech</category>
    </item>
    <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>
