<?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: Samarth Murade</title>
    <description>The latest articles on DEV Community by Samarth Murade (@samarthmurade3105).</description>
    <link>https://dev.to/samarthmurade3105</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%2F4155004%2F2a7c5b0b-8cd7-4a2b-96b2-6b5caf75ea24.png</url>
      <title>DEV Community: Samarth Murade</title>
      <link>https://dev.to/samarthmurade3105</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/samarthmurade3105"/>
    <language>en</language>
    <item>
      <title>Local Receipt Sorter: Gemma 4 turns freelancers' receipts into spreadsheets, offline</title>
      <dc:creator>Samarth Murade</dc:creator>
      <pubDate>Sun, 18 Oct 2026 12:10:20 +0000</pubDate>
      <link>https://dev.to/samarthmurade3105/local-receipt-sorter-gemma-4-turns-freelancers-receipts-into-spreadsheets-offline-4n36</link>
      <guid>https://dev.to/samarthmurade3105/local-receipt-sorter-gemma-4-turns-freelancers-receipts-into-spreadsheets-offline-4n36</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;Local Receipt Sorter turns a pile of receipt photos and PDFs into a clean, categorized CSV. An open-weight vision model (Gemma 4) runs on the user's own laptop through Ollama, reads each receipt, and returns the vendor, date, total, currency and category. There's an editable review table, totals per category, and a one-click CSV export that opens straight in Excel or Google Sheets.&lt;/p&gt;

&lt;p&gt;It's built for freelancers and tiny agencies. They handle financial documents that belong to their clients, and at tax time someone has to type every receipt into a spreadsheet by hand. Cloud tools can do this job, but they mean uploading those documents to someone else's server. I haven't tested whether people would pay for this yet, but the pain it targets is real and recurring.&lt;/p&gt;

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

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/2wvkba9rszI" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;In the video I switch off Wi-Fi before extracting, to show that everything runs locally.&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/samarth-murade" rel="noopener noreferrer"&gt;
        samarth-murade
      &lt;/a&gt; / &lt;a href="https://github.com/samarth-murade/receipt-sorter" rel="noopener noreferrer"&gt;
        receipt-sorter
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Local Receipt Sorter&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Turn a pile of receipt photos and PDFs into a clean, categorized CSV, using an
open-weight vision model (Gemma 4) that runs entirely on your own computer.&lt;/p&gt;
&lt;p&gt;Built for the DEV Hacktoberfest Open-Source AI Challenge, Week 2 (Side Hustle).&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Why local?&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Freelancers handle financial documents that belong to their clients. Sending them to a
cloud API means that data leaves their control. Here the model runs on the laptop through
Ollama, so no receipt is uploaded, there is no per-receipt cost, and it works offline.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;How it works&lt;/h2&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Upload receipt images (PNG, JPG, WEBP) or PDFs.&lt;/li&gt;
&lt;li&gt;Each file is resized and sent to a local vision model through Ollama.&lt;/li&gt;
&lt;li&gt;The model must answer in a fixed JSON schema: vendor, date, total, currency, category, notes.&lt;/li&gt;
&lt;li&gt;You review and fix any cell in an editable table, then download the CSV.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Run it&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;ollama pull gemma4:e4b
python3 -m venv .venv&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/samarth-murade/receipt-sorter" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Model:&lt;/strong&gt; Gemma 4 (&lt;code&gt;gemma4:e4b&lt;/code&gt;), an open-weight vision model, served locally by Ollama.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Structured output:&lt;/strong&gt; every call passes a JSON schema (defined with Pydantic), so the model has to return vendor, date, total, currency, category and notes in a fixed shape. Temperature is 0, and thinking is switched off because receipt reading doesn't need it and it made responses slower.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Preprocessing:&lt;/strong&gt; photos are resized to 1280 px on the longest side so a laptop can process them quickly, and PDFs are rendered to images with PyMuPDF.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interface:&lt;/strong&gt; a small Streamlit app with drag-and-drop upload, an editable results table, category totals and CSV download.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;How I tested it:&lt;/strong&gt; I generated synthetic receipts with known correct answers and compared the model's output against them. In my first test run I fed it 3 receipts, and the model read all 3 completely correctly: vendor, date, total and category. Each receipt took about 5 to 6 seconds on a MacBook Air. That's a very small sample of clean, synthetic receipts, so it shows the pipeline works but says little about how it handles messy real-world receipts. I haven't yet measured accuracy on blurry, crumpled or handwritten ones.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Privacy:&lt;/strong&gt; a freelancer's receipts include client names and amounts. Because the model runs locally, none of it leaves the laptop. I turned off Wi-Fi in the demo to prove it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost:&lt;/strong&gt; there's no per-receipt API fee, so processing 10 receipts or 10,000 costs the same: nothing beyond electricity.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No lock-in:&lt;/strong&gt; the model name is a setting in the sidebar. Any vision-capable model in Ollama works, so I can swap a bigger or smaller one in without changing the code.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Where a closed model would probably do better:&lt;/strong&gt; large cloud models are likely more accurate on crumpled or handwritten receipts, and they'd be faster than a laptop. For a paid product I'd keep the local model as the default and offer an optional high-accuracy mode, but the privacy-first default is what makes this tool different.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Limitations:&lt;/strong&gt; only the first page of a PDF is read, categories are the model's best guess, and PyMuPDF is AGPL-licensed, so I'd swap it for a permissively licensed alternative before selling this commercially.&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; Gemma 4 runs locally through Ollama and does all the receipt reading.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>Shabdasakhi (शब्दसखी): A Gemma-Powered Marathi Expression Coach</title>
      <dc:creator>Samarth Murade</dc:creator>
      <pubDate>Fri, 09 Oct 2026 10:51:19 +0000</pubDate>
      <link>https://dev.to/samarthmurade3105/shabdasakhi-shbdskhii-a-gemma-powered-marathi-expression-coach-1iel</link>
      <guid>https://dev.to/samarthmurade3105/shabdasakhi-shbdskhii-a-gemma-powered-marathi-expression-coach-1iel</guid>
      <description>&lt;h1&gt;
  
  
  Shabdasakhi (शब्दसखी)
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Tagline:&lt;/strong&gt; Say it in richer Marathi. / तुमची मराठी, आणखी सुंदर&lt;/p&gt;

&lt;h3&gt;
  
  
  Short Description
&lt;/h3&gt;

&lt;p&gt;Shabdasakhi is an open-source Marathi expression coach. Speak or type a sentence, even one mixed with Hindi or English, and get two improved Marathi versions: Natural &amp;amp; Polite and Formal &amp;amp; Scholarly. Learn from word upgrades you can save. Powered by Gemma running locally.&lt;/p&gt;

&lt;h3&gt;
  
  
  Full Description
&lt;/h3&gt;

&lt;p&gt;Many Marathi speakers naturally mix Hindi and English words into everyday conversations. Shabdasakhi helps people who already speak Marathi discover richer, more natural Marathi expressions without judging how they speak.&lt;/p&gt;

&lt;p&gt;Users can speak or type a sentence and receive two rewritten versions: &lt;strong&gt;Natural &amp;amp; Polite&lt;/strong&gt; for everyday communication and &lt;strong&gt;Formal &amp;amp; Scholarly&lt;/strong&gt; for more formal expression.&lt;/p&gt;

&lt;p&gt;Whisper, powered by faster-whisper, converts speech into editable text locally. Gemma 4 (E4B), running locally through Ollama, rewrites the sentence in both styles and explains individual word upgrades. Users can save useful words to their personal vocabulary list.&lt;/p&gt;

&lt;p&gt;A community-maintained glossary guides Gemma toward preferred Marathi vocabulary. Anyone can contribute new words and improvements through GitHub pull requests.&lt;/p&gt;

&lt;p&gt;Shabdasakhi is designed around local processing: models are downloaded once, and inference runs on the user's machine without relying on a cloud AI service.&lt;/p&gt;

&lt;p&gt;The project is open source, and community contributions can help improve Marathi language quality, vocabulary coverage, and reliability.&lt;/p&gt;

&lt;h3&gt;
  
  
  How Gemma Is Used
&lt;/h3&gt;

&lt;p&gt;Gemma 4 (E4B) powers the core language transformation. It interprets code-mixed Marathi, Hindi, and English sentences, rewrites them in two Marathi styles, and explains the word choices and upgrades. A local glossary provides additional vocabulary guidance.&lt;/p&gt;

&lt;h3&gt;
  
  
  Built With
&lt;/h3&gt;

&lt;p&gt;Gemma 4 (E4B), Ollama, faster-whisper, Streamlit, Python, PyYAML.&lt;/p&gt;

&lt;h3&gt;
  
  
  Known Limitations
&lt;/h3&gt;

&lt;p&gt;Marathi quality depends on the capabilities of the local model, and generated expressions may be inaccurate or unnatural. Users should review outputs before relying on them. Marathi speech recognition is experimental and may produce transcription errors.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Marathi voice output.&lt;/li&gt;
&lt;li&gt;A daily Marathi word and expression.&lt;/li&gt;
&lt;li&gt;Support for additional regional languages.&lt;/li&gt;
&lt;li&gt;Improved Marathi quality through community feedback and contributions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Track:&lt;/strong&gt; Best Projects with Gemma&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Repository:&lt;/strong&gt; &lt;a href="https://github.com/samarth-murade/shabdasakhi" rel="noopener noreferrer"&gt;https://github.com/samarth-murade/shabdasakhi&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Demo Video:&lt;/strong&gt; &lt;a href="https://youtu.be/LQicxFUJOhw" rel="noopener noreferrer"&gt;https://youtu.be/LQicxFUJOhw&lt;/a&gt;&lt;/p&gt;

</description>
      <category>hacktoberfest</category>
      <category>aitd</category>
      <category>devchallenge</category>
    </item>
    <item>
      <title>Lecture Lens: clearer audio, transcripts and summaries for quiet lectures</title>
      <dc:creator>Samarth Murade</dc:creator>
      <pubDate>Mon, 05 Oct 2026 02:22:06 +0000</pubDate>
      <link>https://dev.to/samarthmurade3105/lecture-lens-clearer-audio-transcripts-and-summaries-for-quiet-lectures-1bm</link>
      <guid>https://dev.to/samarthmurade3105/lecture-lens-clearer-audio-transcripts-and-summaries-for-quiet-lectures-1bm</guid>
      <description>&lt;h2&gt;
  
  
  What I built
&lt;/h2&gt;

&lt;p&gt;Lecture Lens makes a quiet, noisy class recording louder and clearer, and turns it into a Hinglish transcript, a summary, key points and revision questions. It runs entirely on my laptop.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who I built it for and the problem
&lt;/h2&gt;

&lt;p&gt;My sister. She sits close to the teacher and records every lecture with a voice recorder, because she cannot follow everything in class the first time. She then listens to the recording again at home. She had two problems:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The audio was too quiet.&lt;/strong&gt; The recorder picked up the teacher's voice very faintly, so even at home it was hard to hear.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A recording is slow to revise from.&lt;/strong&gt; To get back to one explanation, she had to listen to the whole lecture again. She needed the lecture as text: a transcript to read, and a short summary with the key points.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So Lecture Lens does both. It makes the audio clearer and louder, and it turns the lecture into a transcript, a summary, key points and revision questions.&lt;/p&gt;

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

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/1PhxMjQOOC0" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://github.com/samarth-murade/lecture-lens" rel="noopener noreferrer"&gt;https://github.com/samarth-murade/lecture-lens&lt;/a&gt; (MIT license)&lt;/p&gt;

&lt;h2&gt;
  
  
  How I used open-source AI
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Speech to text:&lt;/strong&gt; faster-whisper with a Hinglish fine-tuned Whisper model (a community CTranslate2 conversion), so Hindi and English speech come out in English letters.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Notes:&lt;/strong&gt; Gemma 4 (through Ollama) writes the summary, key points and 5 revision questions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audio:&lt;/strong&gt; ffmpeg filters (noise reduction, loudness normalization). This part is not AI.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interface:&lt;/strong&gt; Streamlit.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why open innovation mattered here
&lt;/h2&gt;

&lt;p&gt;Classroom recordings are private, and a laptop at home may have no reliable internet. Because the models are open, everything runs on my own laptop: nothing is uploaded, there is no subscription, and the models can be swapped for better ones later.&lt;/p&gt;

&lt;h2&gt;
  
  
  Limits (honest notes)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;It runs on an ordinary laptop CPU with no GPU, so long lectures are slow.&lt;/li&gt;
&lt;li&gt;Transcript quality depends on the recording: good on clear audio, weaker on noisy parts.&lt;/li&gt;
&lt;li&gt;Notes are written by AI and can contain mistakes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Built with
&lt;/h2&gt;

&lt;p&gt;Python, Streamlit, ffmpeg, faster-whisper, Gemma 4 and Ollama. I built it over a weekend with the help of an AI coding assistant (Claude) and tested it on a real classroom recording.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>INTRODUCTION</title>
      <dc:creator>Samarth Murade</dc:creator>
      <pubDate>Thu, 01 Oct 2026 14:02:38 +0000</pubDate>
      <link>https://dev.to/samarthmurade3105/introduction-3fmh</link>
      <guid>https://dev.to/samarthmurade3105/introduction-3fmh</guid>
      <description>&lt;p&gt;Hello, I am new to open source,glad to be part of Hactoberfest 2026!&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
