<?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: Sumeet Choudhary </title>
    <description>The latest articles on DEV Community by Sumeet Choudhary  (@sumeet156).</description>
    <link>https://dev.to/sumeet156</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%2F3461822%2F2a5b3e82-ef59-4848-9022-853e82ba1bf0.jpeg</url>
      <title>DEV Community: Sumeet Choudhary </title>
      <link>https://dev.to/sumeet156</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sumeet156"/>
    <language>en</language>
    <item>
      <title>LocalLedger - Your private AI expense copilot.</title>
      <dc:creator>Sumeet Choudhary </dc:creator>
      <pubDate>Mon, 19 Oct 2026 04:39:08 +0000</pubDate>
      <link>https://dev.to/sumeet156/localledger-your-private-ai-expense-copilot-3daj</link>
      <guid>https://dev.to/sumeet156/localledger-your-private-ai-expense-copilot-3daj</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;
  
  
  LocalLedger — Your Private AI Expense Copilot for Indian Freelancers
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Your private AI expense copilot.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;LocalLedger is a local-first AI expense intelligence tool built for Indian freelancers, solo developers, creators, consultants, and small businesses.&lt;/p&gt;

&lt;p&gt;It turns receipts and invoices into a structured, searchable, validated expense ledger using &lt;strong&gt;local OCR, deterministic financial validation, SQLite, and an open-weight Gemma model running locally through Ollama&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The core idea is simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;AI understands the document. Code protects the numbers.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




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

&lt;p&gt;Managing invoices and business expenses can quickly become messy, especially for freelancers and small businesses.&lt;/p&gt;

&lt;p&gt;LocalLedger provides a privacy-focused workflow for turning financial documents into useful structured information:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;IMPORT → EXTRACT → UNDERSTAND → VALIDATE → CLASSIFY → REVIEW → ANALYZE → EXPORT&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Users can upload:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;PDF invoices&lt;/li&gt;
&lt;li&gt;Scanned PDFs&lt;/li&gt;
&lt;li&gt;JPG/JPEG images&lt;/li&gt;
&lt;li&gt;PNG images&lt;/li&gt;
&lt;li&gt;WEBP images&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;LocalLedger then processes the document locally and extracts information such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Vendor name&lt;/li&gt;
&lt;li&gt;Invoice number&lt;/li&gt;
&lt;li&gt;Invoice date&lt;/li&gt;
&lt;li&gt;Subtotal&lt;/li&gt;
&lt;li&gt;Discount&lt;/li&gt;
&lt;li&gt;Taxable amount&lt;/li&gt;
&lt;li&gt;CGST&lt;/li&gt;
&lt;li&gt;SGST&lt;/li&gt;
&lt;li&gt;IGST&lt;/li&gt;
&lt;li&gt;GST total&lt;/li&gt;
&lt;li&gt;Total amount&lt;/li&gt;
&lt;li&gt;GSTIN&lt;/li&gt;
&lt;li&gt;Expense category&lt;/li&gt;
&lt;li&gt;Description&lt;/li&gt;
&lt;li&gt;Business-expense classification&lt;/li&gt;
&lt;li&gt;Extraction confidence&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The extracted information is then validated using deterministic rules before being stored in the expense ledger.&lt;/p&gt;




&lt;h2&gt;
  
  
  💡 Why LocalLedger?
&lt;/h2&gt;

&lt;p&gt;Financial documents contain sensitive information.&lt;/p&gt;

&lt;p&gt;Instead of sending invoices and receipts to a cloud AI service, LocalLedger is designed around a &lt;strong&gt;local-first architecture&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The goal is to keep financial documents and AI processing under the user's control.&lt;/p&gt;

&lt;h3&gt;
  
  
  Local-first by design
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;🤖 &lt;strong&gt;Gemma 3 4B&lt;/strong&gt; runs locally through Ollama&lt;/li&gt;
&lt;li&gt;🔍 Local OCR&lt;/li&gt;
&lt;li&gt;🗄️ SQLite local database&lt;/li&gt;
&lt;li&gt;🔒 No cloud AI required&lt;/li&gt;
&lt;li&gt;📄 Documents remain local&lt;/li&gt;
&lt;li&gt;🧮 Financial calculations are handled by deterministic code&lt;/li&gt;
&lt;li&gt;🧠 AI is used for interpretation rather than blindly calculating financial values&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This makes LocalLedger particularly useful for people who don't want their financial documents uploaded to third-party AI services.&lt;/p&gt;




&lt;h1&gt;
  
  
  🏗️ How It Works
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                    ┌──────────────────────┐
                    │      User Upload     │
                    │ PDF / JPG / PNG etc. │
                    └──────────┬───────────┘
                               │
                               ▼
                    ┌──────────────────────┐
                    │   Document Ingestion │
                    └──────────┬───────────┘
                               │
                    ┌──────────┴───────────┐
                    │                      │
                    ▼                      ▼
          ┌─────────────────┐    ┌─────────────────┐
          │ Native PDF Text │    │   Local OCR     │
          │   Extraction    │    │   for Scans     │
          └────────┬────────┘    └────────┬────────┘
                   │                      │
                   └──────────┬───────────┘
                              ▼
                    ┌──────────────────────┐
                    │ Structured Extraction│
                    │       Pipeline       │
                    └──────────┬───────────┘
                               ▼
                    ┌──────────────────────┐
                    │    Gemma 3 4B        │
                    │  Local AI Reasoning  │
                    └──────────┬───────────┘
                               ▼
                    ┌──────────────────────┐
                    │ Pydantic Validation  │
                    └──────────┬───────────┘
                               ▼
                    ┌──────────────────────┐
                    │ Financial Validation │
                    │    &amp;amp; Duplicate Check │
                    └──────────┬───────────┘
                               ▼
                    ┌──────────────────────┐
                    │     Expense Ledger   │
                    └──────────┬───────────┘
                               │
                 ┌─────────────┼─────────────┐
                 ▼             ▼             ▼
            Dashboard       Review        Export
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;&lt;em&gt;GitHub Repository&lt;/em&gt;: &lt;a href="https://github.com/sumeet156/LocalLedger" rel="noopener noreferrer"&gt;https://github.com/sumeet156/LocalLedger&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Video Demo:&lt;/strong&gt; &lt;a href="https://dev.toYOUR_VIDEO_URL"&gt;Watch the LocalLedger demo&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;LocalLedger would not have been possible in the same way without open-source and open-weight technologies.&lt;/p&gt;

&lt;p&gt;The project combines open technologies across multiple layers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open-weight Gemma model&lt;/li&gt;
&lt;li&gt;Ollama for local model execution&lt;/li&gt;
&lt;li&gt;FastAPI&lt;/li&gt;
&lt;li&gt;React&lt;/li&gt;
&lt;li&gt;Python&lt;/li&gt;
&lt;li&gt;SQLite&lt;/li&gt;
&lt;li&gt;Pydantic&lt;/li&gt;
&lt;li&gt;Local OCR tooling
The open ecosystem makes it possible to build a useful AI application without depending entirely on proprietary cloud AI APIs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;More importantly, it allows developers to experiment with privacy-preserving AI applications.&lt;/p&gt;

&lt;p&gt;For financial documents, this is especially important.&lt;/p&gt;

&lt;p&gt;Instead of asking:&lt;br&gt;
"How can I send this document to an AI?"&lt;/p&gt;

&lt;p&gt;LocalLedger asks:&lt;br&gt;
"How much intelligence can we bring to the user's machine?"&lt;/p&gt;

&lt;h2&gt;
  
  
  🏅 Prize Categories &amp;amp; Tools
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🏆 &lt;strong&gt;Hacktoberfest — Side Hustle&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;🤖 &lt;strong&gt;Google / Gemma&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;🌍 &lt;strong&gt;Open-Weight AI&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;🛠️ &lt;strong&gt;AI-powered Productivity / Developer Tools&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;🎙️ *&lt;em&gt;ElevenLabs for creating demo video&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>Sidewalk Safari: Local AI That Gives You a Reason to Leave the Screen</title>
      <dc:creator>Sumeet Choudhary </dc:creator>
      <pubDate>Sun, 11 Oct 2026 05:38:46 +0000</pubDate>
      <link>https://dev.to/sumeet156/sidewalk-safari-local-ai-that-gives-you-a-reason-to-leave-the-screen-510b</link>
      <guid>https://dev.to/sumeet156/sidewalk-safari-local-ai-that-gives-you-a-reason-to-leave-the-screen-510b</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;p&gt;What if AI's job wasn't to keep us looking at the screen — but to give us something worth looking at outside?&lt;/p&gt;

&lt;p&gt;For the &lt;strong&gt;Touch Grass&lt;/strong&gt; challenge, I built &lt;strong&gt;Sidewalk Safari&lt;/strong&gt;, a screen-light outdoor quest generator powered by &lt;strong&gt;local Gemma AI&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The idea is simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;AI creates the adventure. You go live it. 🌿&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;p&gt;&lt;strong&gt;Sidewalk Safari&lt;/strong&gt; generates short, age-appropriate outdoor observation missions that encourage people — especially kids and families — to explore their surroundings instead of spending more time inside an app.&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%2Fanvgr1amv46utl2rnixs.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%2Fanvgr1amv46utl2rnixs.png" alt=" " width="767" height="902"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You choose:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🌳 Outdoor setting&lt;/li&gt;
&lt;li&gt;⏱️ Available time&lt;/li&gt;
&lt;li&gt;👦 Age group&lt;/li&gt;
&lt;li&gt;🍂 Season&lt;/li&gt;
&lt;li&gt;☁️ Optional weather note&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then &lt;strong&gt;Gemma 3 4B&lt;/strong&gt;, running locally through &lt;strong&gt;Ollama&lt;/strong&gt;, creates a small outdoor adventure.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;h3&gt;
  
  
  FIND SHAPES
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Locate five different leaf shapes scattered across the ground and draw them in your mind's eye.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  COUNT THINGS
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Estimate the number of different shades of brown you can observe in fallen leaves.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The missions encourage simple actions:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FIND → COMPARE → COUNT → NOTICE&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And once the safari is ready, the app tells you to put the phone away.&lt;/p&gt;

&lt;h2&gt;
  
  
  🌱 Why Sidewalk Safari?
&lt;/h2&gt;

&lt;p&gt;A lot of AI products are designed to keep you interacting with the screen.&lt;/p&gt;

&lt;p&gt;I wanted to reverse that.&lt;/p&gt;

&lt;p&gt;Instead of:&lt;/p&gt;

&lt;p&gt;AI → Screen → More Screen Time&lt;/p&gt;

&lt;p&gt;PLAN&lt;br&gt;
  ↓&lt;br&gt;
GENERATE&lt;br&gt;
  ↓&lt;br&gt;
PUT PHONE AWAY&lt;br&gt;
  ↓&lt;br&gt;
GO OUTSIDE&lt;br&gt;
  ↓&lt;br&gt;
OBSERVE&lt;br&gt;
  ↓&lt;br&gt;
EXPLORE&lt;/p&gt;

&lt;p&gt;The screen is only the starting point.&lt;br&gt;
The goal is what happens after you stop looking at it.&lt;/p&gt;
&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://youtube.com/shorts/a1pTQsTbmh0" rel="noopener noreferrer"&gt;SideWalk Safari Demo Video&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;The entire project is open source:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://github.com/sumeet156/Sidewalk-Safari" rel="noopener noreferrer"&gt;Sidewalk Safari&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project is designed to run locally using Ollama and Gemma.&lt;br&gt;
Tech Stack&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;React&lt;/li&gt;
&lt;li&gt;TypeScript&lt;/li&gt;
&lt;li&gt;Vite&lt;/li&gt;
&lt;li&gt;Python&lt;/li&gt;
&lt;li&gt;FastAPI&lt;/li&gt;
&lt;li&gt;Ollama&lt;/li&gt;
&lt;li&gt;Gemma 3 4B&lt;/li&gt;
&lt;li&gt;Browser Storage&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;React + Vite&lt;br&gt;
      ↓&lt;br&gt;
    FastAPI&lt;br&gt;
      ↓&lt;br&gt;
    Ollama&lt;br&gt;
      ↓&lt;br&gt;
   Gemma 3 4B&lt;br&gt;
      ↓&lt;br&gt;
JSON Mission Output&lt;br&gt;
      ↓&lt;br&gt;
Validation + Safety Rules&lt;br&gt;
      ↓&lt;br&gt;
Safe Mission Pack&lt;/p&gt;

&lt;p&gt;Gemma doesn't directly control the application.&lt;br&gt;
It proposes missions.&lt;br&gt;
The application then decides whether those missions are acceptable.&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%2Fsvhdn2om1d31qmku26xr.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%2Fsvhdn2om1d31qmku26xr.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  🤖 Gemma Proposes. Code Validates.
&lt;/h3&gt;

&lt;p&gt;This was one of the most important design decisions in Sidewalk Safari.&lt;br&gt;
A language model can generate something that sounds reasonable but isn't necessarily appropriate for the selected age, time limit, or environment.&lt;br&gt;
So generated missions go through validation for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Age appropriateness&lt;/li&gt;
&lt;li&gt;Time budget&lt;/li&gt;
&lt;li&gt;Allowed outdoor activities&lt;/li&gt;
&lt;li&gt;Safety rules&lt;/li&gt;
&lt;li&gt;Mission structure&lt;/li&gt;
&lt;li&gt;Required safety guidance&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The system uses constrained JSON output so the backend receives structured mission data rather than arbitrary text.&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%2Fzg0q8wdyfvvkshcw4bmi.jpg" 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%2Fzg0q8wdyfvvkshcw4bmi.jpg" alt=" " width="799" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The principle is:&lt;br&gt;
&lt;strong&gt;Don't blindly trust the model.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If a generated pack doesn't pass validation, generation is retried.&lt;br&gt;
And if bounded generation attempts still fail, Sidewalk Safari falls back to a handwritten backup mission pack rather than leaving the user with a broken experience.&lt;br&gt;
This means the AI is responsible for creativity, while the application remains responsible for safety and control.&lt;/p&gt;
&lt;h3&gt;
  
  
  🔒 &lt;strong&gt;Local AI by Design&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;One of the biggest reasons I chose Gemma + Ollama was that Sidewalk Safari doesn't need a cloud AI endpoint to generate its missions.&lt;/p&gt;

&lt;p&gt;That gives the project some important properties:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No cloud AI endpoint&lt;/strong&gt; :The mission-generation model can run on the user's own computer.&lt;br&gt;
&lt;strong&gt;No accounts&lt;/strong&gt; :The application doesn't require users to create an account just to go outside.&lt;br&gt;
&lt;strong&gt;No exact-location tracking&lt;/strong&gt; :I deliberately avoided requiring precise location data. Even the weather field is user-entered rather than automatically sending coordinates to a weather service.&lt;br&gt;
&lt;strong&gt;Saved packs can work offline&lt;/strong&gt; :Once a safari pack has been saved, it can be played without a network connection.&lt;/p&gt;
&lt;h3&gt;
  
  
  🛡️ &lt;strong&gt;Safety Wasn't an Afterthought&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Because this project is designed for children and families, safety couldn't simply be left to an LLM prompt.&lt;br&gt;
For younger age groups, Sidewalk Safari includes adult-supervision guidance.&lt;br&gt;
The application itself generates the safety guidance and performs validation rather than relying on Gemma to make the final safety decision.&lt;/p&gt;

&lt;p&gt;This separation was intentional:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Gemma generates.
Code validates.
The user explores.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;This is the part of the project I think matters most.&lt;/p&gt;

&lt;p&gt;I could have built Sidewalk Safari around a closed cloud AI API.&lt;/p&gt;

&lt;p&gt;But that would have worked against the problem I was trying to solve.&lt;br&gt;
A product whose purpose is to help someone disconnect from the internet shouldn't necessarily depend on an internet connection just to generate the experience.&lt;/p&gt;

&lt;p&gt;Using an open-weight model with local inference makes a different design possible.&lt;/p&gt;

&lt;p&gt;Local AI changes the relationship between the model and the user.&lt;br&gt;
Instead of:&lt;/p&gt;

&lt;p&gt;User&lt;br&gt;
 ↓&lt;br&gt;
Internet&lt;br&gt;
 ↓&lt;br&gt;
Cloud AI&lt;br&gt;
 ↓&lt;br&gt;
Response&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Sidewalk Safari can work as&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;User&lt;br&gt;
 ↓&lt;br&gt;
Local application&lt;br&gt;
 ↓&lt;br&gt;
Local Gemma&lt;br&gt;
 ↓&lt;br&gt;
Outdoor mission&lt;br&gt;
 ↓&lt;br&gt;
Phone away&lt;/p&gt;

&lt;p&gt;That means developers can experiment with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Different open-weight models&lt;/li&gt;
&lt;li&gt;Different prompts&lt;/li&gt;
&lt;li&gt;Different validation rules&lt;/li&gt;
&lt;li&gt;Different age groups&lt;/li&gt;
&lt;li&gt;Different outdoor activities&lt;/li&gt;
&lt;li&gt;Fully local inference&lt;/li&gt;
&lt;li&gt;Privacy-preserving experiences
There's also no need to treat the AI provider as a permanent dependency.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's what open innovation made possible for this project:&lt;br&gt;
&lt;code&gt;AI that can help someone disconnect from the internet instead of giving them another reason to stay connected to it.&lt;/code&gt;&lt;/p&gt;

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

&lt;p&gt;One thing this project taught me is that adding AI is often the easy part.&lt;br&gt;
Designing boundaries around AI is harder.&lt;br&gt;
During development, I encountered cases where generated output:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Didn't contain the required safety language&lt;/li&gt;
&lt;li&gt;Exceeded the intended mission text limits&lt;/li&gt;
&lt;li&gt;Failed time-budget validation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of simply changing the prompt and hoping for better results, I moved important guarantees into application code.&lt;/p&gt;

&lt;p&gt;That led to a more robust architecture:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LLM for generation → deterministic code for constraints.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I also intentionally kept features out of the first version.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Social feed&lt;/li&gt;
&lt;li&gt;Leaderboards&lt;/li&gt;
&lt;li&gt;Accounts&lt;/li&gt;
&lt;li&gt;Maps&lt;/li&gt;
&lt;li&gt;Location tracking&lt;/li&gt;
&lt;li&gt;Photo verification&lt;/li&gt;
&lt;li&gt;Cloud database&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal wasn't to build another giant platform.&lt;br&gt;
The goal was to build a small tool that gets out of its own way.&lt;/p&gt;

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

&lt;p&gt;This project is submitted for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Best Use of Gemma&lt;/li&gt;
&lt;li&gt;Best Use of ElevenLabs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;ElevenLabs was used to create the narration for the project demonstration video.&lt;/p&gt;

&lt;p&gt;Gemma is at the core of Sidewalk Safari's mission-generation system, running locally through Ollama.&lt;/p&gt;

&lt;h2&gt;
  
  
  🌱 Final Thought
&lt;/h2&gt;

&lt;p&gt;The best AI experience isn't always the one that keeps you on the screen.&lt;br&gt;
Sometimes...&lt;br&gt;
it's the one that gives you a reason to leave it.&lt;br&gt;
Sidewalk Safari&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;The AI creates the adventure. You go live it. 🌿&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>StudyForge - A Local AI Study Partner Built for a Friend</title>
      <dc:creator>Sumeet Choudhary </dc:creator>
      <pubDate>Sun, 04 Oct 2026 19:23:53 +0000</pubDate>
      <link>https://dev.to/sumeet156/studyforge-a-local-ai-study-partner-built-for-a-friend-16lg</link>
      <guid>https://dev.to/sumeet156/studyforge-a-local-ai-study-partner-built-for-a-friend-16lg</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 StudyForge, a local-first AI study partner for my friend Piyush, a Class 10 student preparing for his board exams.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The problem was simple:&lt;/strong&gt; having notes does not always mean understanding them.&lt;/p&gt;

&lt;p&gt;While studying, Piyush can have the textbook or class notes right in front of him and still get stuck on one particular concept. At that point, a general-purpose AI chatbot can give him an answer, but I wanted to build something more focused:&lt;/p&gt;

&lt;p&gt;Start with his own notes, find the part that matters, and help him understand that specific concept.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;That became StudyForge.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A student pastes their class notes and asks a focused question, such as:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;“How do the light-dependent reactions help the Calvin cycle make sugar?”&lt;/em&gt;&lt;/p&gt;

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

&lt;ol&gt;
&lt;li&gt;Breaks the notes into passages.&lt;/li&gt;
&lt;li&gt;Ranks the passages against the student's question using local keyword-based retrieval.&lt;/li&gt;
&lt;li&gt;Selects up to five relevant passages.&lt;/li&gt;
&lt;li&gt;Sends only those selected excerpts to a locally running AI model.&lt;/li&gt;
&lt;li&gt;Generates a short explanation, an example, a quick-check question, and a sample answer.&lt;/li&gt;
&lt;li&gt;Shows the source passages used to create the response.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If the question has no matching terms in the notes, StudyForge does not simply invent a study guide. It asks the student to rephrase the question using words that actually appear in their material.&lt;/p&gt;

&lt;p&gt;The goal is not to replace studying.&lt;/p&gt;

&lt;p&gt;It is to make the confusing part easier to understand.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://youtu.be/lGkjBS4V6fE" rel="noopener noreferrer"&gt;StudyForgeDemo&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/sumeet156" rel="noopener noreferrer"&gt;
        sumeet156
      &lt;/a&gt; / &lt;a href="https://github.com/sumeet156/StudyForge-Local-AI-Study-Partner" rel="noopener noreferrer"&gt;
        StudyForge-Local-AI-Study-Partner
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A private, local-first study partner that uses Gemma 3 and your class notes to explain confusing topics and generate practice questions.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;StudyForge&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;StudyForge is a local-first AI study partner. Paste in class notes, name a topic that feels confusing, and get a short study guide with a plain-language explanation, an example, a quick-check question, a sample answer, and the note passages used to make the guide.&lt;/p&gt;
&lt;p&gt;The project was built for the Hacktoberfest 2026 “Build for a Friend” theme: make a practical study aid that can help someone learn from their own class notes.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;What it does&lt;/h2&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Accepts up to 30,000 characters of notes and a topic or question of up to 200 characters.&lt;/li&gt;
&lt;li&gt;Splits the notes into passages and ranks them against the topic using local keyword scoring.&lt;/li&gt;
&lt;li&gt;Selects up to five matching passages and sends those excerpts to a locally running Ollama model.&lt;/li&gt;
&lt;li&gt;Asks the model to return a focused guide grounded in those excerpts.&lt;/li&gt;
&lt;li&gt;Shows the explanation, example, quick check, sample answer, and source passages in the browser.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;…&lt;/p&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/sumeet156/StudyForge-Local-AI-Study-Partner" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;The repository is open source and includes the React frontend, FastAPI backend, retrieval logic, Ollama integration, and backend tests.&lt;/p&gt;

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

&lt;p&gt;The core of StudyForge is built around open-weight AI running locally.&lt;/p&gt;

&lt;p&gt;The default model is Google's Gemma 3 4B, served locally through Ollama.&lt;/p&gt;

&lt;p&gt;The architecture is intentionally small:&lt;/p&gt;

&lt;p&gt;React + TypeScript + Vite&lt;br&gt;
→ FastAPI backend&lt;br&gt;
→ local passage retrieval&lt;br&gt;
→ Ollama&lt;br&gt;
→ Gemma 3 4B&lt;/p&gt;

&lt;p&gt;The browser sends the student's notes and question to the local StudyForge API. Before the model sees anything, the backend splits the notes into passages and ranks them using keyword overlap with a TF-IDF-style scoring approach.&lt;/p&gt;

&lt;p&gt;Only the highest-ranked passages are included in the model request.&lt;/p&gt;

&lt;p&gt;The model is also instructed to use only those supplied excerpts and to say when the excerpts do not contain enough information rather than confidently filling the gap with outside knowledge.&lt;/p&gt;

&lt;p&gt;The application then returns structured JSON containing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a simple explanation&lt;/li&gt;
&lt;li&gt;an example&lt;/li&gt;
&lt;li&gt;a quick-check question&lt;/li&gt;
&lt;li&gt;a sample answer&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;StudyForge also returns the actual source passages selected by the retrieval layer, rather than asking the model to invent citations.&lt;/p&gt;

&lt;p&gt;There is no hosted AI endpoint in the application, no account system, and no database storing the student's notes. The notes remain in the page while the application is open, and the selected excerpts are sent to the locally running Ollama service.&lt;/p&gt;

&lt;p&gt;After the required model and dependencies have been downloaded, generation can run without an internet connection.&lt;/p&gt;

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

&lt;p&gt;This project is probably the clearest example I've had of why open AI matters at the application level.&lt;/p&gt;

&lt;p&gt;I could have connected StudyForge to a hosted closed AI API and had a working prototype quickly.&lt;/p&gt;

&lt;p&gt;But for this particular problem, local inference changes what is possible.&lt;/p&gt;

&lt;p&gt;A student is putting their own study material into the application. I did not want the core experience to depend on sending that material to a third-party AI service by default.&lt;/p&gt;

&lt;p&gt;With an open-weight model running through Ollama, I can build the application around:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Privacy:&lt;/strong&gt;&lt;br&gt;
The AI inference can happen on the student's own computer instead of requiring a hosted AI endpoint.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Control:&lt;/strong&gt;&lt;br&gt;
I can change the model and experiment with different local models without redesigning the application.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Transparency:&lt;/strong&gt;&lt;br&gt;
The application can show the passages retrieved from the student's notes alongside the generated explanation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Offline potential:&lt;/strong&gt;&lt;br&gt;
Once the model is downloaded, the core generation workflow does not require a continuous internet connection.&lt;/p&gt;

&lt;p&gt;Most importantly, open innovation let me design the AI around the actual problem instead of designing the problem around an API.&lt;/p&gt;

&lt;p&gt;StudyForge is intentionally small. But that is exactly why I wanted to build it this way: the open model is not just an interchangeable backend. Local inference is part of the product's purpose.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Best Use of Gemma —&lt;/strong&gt; StudyForge uses Google's open-weight Gemma 3 4B as its default local AI model through Ollama.&lt;/p&gt;

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

&lt;p&gt;The best part of this project was not getting an AI model to generate text.&lt;/p&gt;

&lt;p&gt;It was starting with one person.&lt;/p&gt;

&lt;p&gt;I built StudyForge because my friend had a real problem: sometimes the notes are already there, but the concept still does not click.&lt;/p&gt;

&lt;p&gt;That made the design decisions much easier.&lt;/p&gt;

&lt;p&gt;I did not need a giant AI system.&lt;/p&gt;

&lt;p&gt;I needed a focused study partner that could take his notes, find the relevant part, explain it simply, and show him where that explanation came from.&lt;/p&gt;

&lt;p&gt;That is &lt;strong&gt;StudyForge.&lt;/strong&gt;&lt;/p&gt;

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