<?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: Priyansh Jikadra</title>
    <description>The latest articles on DEV Community by Priyansh Jikadra (@priyansh_9331_k).</description>
    <link>https://dev.to/priyansh_9331_k</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%2F4184036%2F3666a4b3-de61-4df5-85b3-3fb2f8ffd6e4.png</url>
      <title>DEV Community: Priyansh Jikadra</title>
      <link>https://dev.to/priyansh_9331_k</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/priyansh_9331_k"/>
    <language>en</language>
    <item>
      <title>Group-Chat-Summarizer</title>
      <dc:creator>Priyansh Jikadra</dc:creator>
      <pubDate>Sun, 25 Oct 2026 16:14:22 +0000</pubDate>
      <link>https://dev.to/priyansh_9331_k/group-chat-summarizer-48o8</link>
      <guid>https://dev.to/priyansh_9331_k/group-chat-summarizer-48o8</guid>
      <description>&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;I built &lt;strong&gt;Group Chat Summarizer&lt;/strong&gt;, a lazy sloth agent that reads your group chats overnight so you don't have to scroll through hundreds of messages in the morning.&lt;/p&gt;

&lt;p&gt;You drop exported chats (WhatsApp &lt;code&gt;.txt&lt;/code&gt; or Telegram &lt;code&gt;result.json&lt;/code&gt;) into a folder. Every night it summarizes only the new messages in each chat into a strict &lt;strong&gt;two-line summary&lt;/strong&gt;, plus a short list of action items and dates mentioned. In the morning you open one daily digest (&lt;code&gt;digests/YYYY-MM-DD.md&lt;/code&gt;) instead of 15 noisy chats.&lt;/p&gt;

&lt;p&gt;It's for anyone who sits in college, project, family, or society groups and misses the one important message ("class moved to 9 AM", "submit by Friday") buried under 400 memes.&lt;/p&gt;

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

&lt;p&gt;🎥 Video demo: &lt;em&gt;[add your link here]&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Example of the morning digest in the terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;🦥 Group Chat Summarizer: digest for 2026-10-26

📱 CSE Batch 2027
  Most chatter was about the DSA assignment; the deadline was moved to Friday.
  Lab is shifted to Lab 3 on Monday.
  Action items: Submit DSA assignment (Fri) · Bring ID card for lab

📱 Project Team
  The team agreed to freeze features and focus on testing this week.
  Priyansh will push the final build before the demo.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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/priyansh07-svnit" rel="noopener noreferrer"&gt;
        priyansh07-svnit
      &lt;/a&gt; / &lt;a href="https://github.com/priyansh07-svnit/group-chat-summrizer" rel="noopener noreferrer"&gt;
        group-chat-summrizer
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Hacktoberfest 2026 DEV challenge week 3 solution
    &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;group-chat-summarizer&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Let a lazy sloth read your group chats overnight so you don't have to.&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Slow and steady wins the morning."&lt;/em&gt; 🦥&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A fully local, privacy-first CLI tool that reads exported WhatsApp and Telegram group chats and produces a two-line summary of each conversation — powered by open-weight models through &lt;a href="https://ollama.com" rel="nofollow noopener noreferrer"&gt;Ollama&lt;/a&gt;. No API keys, no cloud, no data leaves your machine.&lt;/p&gt;

&lt;p&gt;Built for the &lt;a href="https://dev.to/challenges/open-weight" rel="nofollow"&gt;DEV.to "Slow and Steady" challenge&lt;/a&gt; — build something with open-weight models that rewards laziness.&lt;/p&gt;




&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Demo&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;$ summarize run
Summarizing work_project_chat.txt (15 new messages)...
Summarizing hiking_group_chat.json (11 new messages)...

╭──────────────────────────────╮
│   Group Chat Digest          │
│       slow and steady        │
╰──────────────────────────────╯

&amp;gt;&amp;gt; Hiking Group Chat

Summary:
The group planned a Ridge Loop hike for Sunday with a 7:30 AM carpool from Main St.
Mood is enthusiastic; logistics are locked in with snacks, water, and sunscreen covered.

Action items:
- Meet 7:30 AM at Main St coffee&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/priyansh07-svnit/group-chat-summrizer" 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;Open-weight model:&lt;/strong&gt; a small model (&lt;code&gt;qwen2.5:3b&lt;/code&gt; by default) that fits comfortably on a laptop GPU with 6 GB VRAM. It's one line in &lt;code&gt;config.yaml&lt;/code&gt;, so you can swap it for any other model.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local inference:&lt;/strong&gt; &lt;a href="https://ollama.com" rel="noopener noreferrer"&gt;Ollama&lt;/a&gt; serves the model at &lt;code&gt;localhost:11434&lt;/code&gt;. The app talks only to that local endpoint.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Python CLI:&lt;/strong&gt; built with Typer and Rich. Commands: &lt;code&gt;summarize run&lt;/code&gt;, &lt;code&gt;summarize watch&lt;/code&gt;, &lt;code&gt;summarize check&lt;/code&gt;, and &lt;code&gt;summarize install-schedule&lt;/code&gt; (Windows Task Scheduler or cron).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Parsers:&lt;/strong&gt; WhatsApp and Telegram exports are normalized into a common &lt;code&gt;Message&lt;/code&gt; dataclass. Media placeholders and system messages are dropped.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Incremental state:&lt;/strong&gt; a small state file remembers the last processed timestamp per chat, so each night only new messages are summarized.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Map-reduce chunking:&lt;/strong&gt; long chats are split into chunks, each chunk is summarized, and the partial summaries are merged into the final two lines.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Editable prompt:&lt;/strong&gt; the summary style lives in &lt;code&gt;prompts/summary.txt&lt;/code&gt;, so you can change the tone or format without touching code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Privacy test:&lt;/strong&gt; a test fails if the code ever calls a non-localhost URL.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Built with Google Antigravity:&lt;/strong&gt; I gave its agent one detailed spec and it planned, built, tested, and pushed the project to GitHub.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Group chats are some of the most private text we have: family plans, friends venting, personal details. Sending them to a closed API means handing them to someone else's server. With an open-weight model, &lt;strong&gt;the data never leaves your laptop.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Privacy:&lt;/strong&gt; no chat text touches a third-party server, and a test enforces it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Works offline:&lt;/strong&gt; after the one-time model download, the whole pipeline runs with no internet.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero cost:&lt;/strong&gt; no API keys, no per-token bills, so running it every night costs nothing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Swappable and tunable:&lt;/strong&gt; if a model summarizes your Hinglish chats badly, change one line in the config, or fine-tune a model on your own style. A closed API wouldn't let me do either.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Editable behavior:&lt;/strong&gt; the prompt and the code are fully mine to change.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;&lt;em&gt;[Add your DevRelay session embed or link here]&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;Before: catching up on my groups meant scrolling through roughly &lt;em&gt;[X]&lt;/em&gt; messages a day, about &lt;em&gt;[Y]&lt;/em&gt; minutes.&lt;br&gt;
After: I read one digest in about 30 seconds, and the nightly run needs zero effort from me.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;[Replace X and Y with your real numbers from this week, or delete this section if you didn't use it.]&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;em&gt;[List the partner categories you're entering from the challenge page, or remove this section.]&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>Invoice Sorter</title>
      <dc:creator>Priyansh Jikadra</dc:creator>
      <pubDate>Sun, 18 Oct 2026 16:45:25 +0000</pubDate>
      <link>https://dev.to/priyansh_9331_k/invoice-sorter-2kh2</link>
      <guid>https://dev.to/priyansh_9331_k/invoice-sorter-2kh2</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;Invoice Sorter is a local, privacy-first command-line tool that turns a messy folder of invoices and receipts (PDFs and images) into organized, accounting-ready data. It reads each document with OCR, uses a local open-weight LLM to pull out the vendor, amount, date, invoice number and expense category, then sorts the files into folders and exports JSON, CSV and Excel.&lt;/p&gt;

&lt;p&gt;It's built for freelancers, solo consultants and small bookkeeping practices. They handle dozens of documents a month, and the usual options are cloud tools that upload client financial data or monthly subscriptions that eat into thin margins. Invoice Sorter runs on their own laptop, works offline, and costs nothing per document. Anything the model can't read confidently is flagged &lt;code&gt;needs_review&lt;/code&gt; instead of being silently guessed.&lt;/p&gt;

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

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

&lt;p&gt;The full source is open under the MIT license, and the repository is embedded below. It has a &lt;code&gt;src/&lt;/code&gt; layout and a 49-test pytest suite.&lt;br&gt;
&lt;/p&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/priyansh07-svnit" rel="noopener noreferrer"&gt;
        priyansh07-svnit
      &lt;/a&gt; / &lt;a href="https://github.com/priyansh07-svnit/invoice-sorter" rel="noopener noreferrer"&gt;
        invoice-sorter
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      project for hacktober week 2
    &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;Invoice Sorter 🧾&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;A local, privacy-first invoice and receipt organizer for freelancers — powered by open-source AI.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.python.org/downloads/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/93a33cfc2339ec3fa9be792576576fbaafc42b0c7031285662b02f3aca1e1c59/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f707974686f6e2d332e31302b2d626c75652e737667" alt="Python"&gt;&lt;/a&gt;
&lt;a href="https://github.com/priyansh07-svnit/invoice-sorter/LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/8bb50fd2278f18fc326bf71f6e88ca8f884f72f179d3e555e20ed30157190d0d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d677265656e2e737667" alt="License"&gt;&lt;/a&gt;
&lt;a href="https://hacktoberfest.com/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/359a78a6c36b079b424e81e8d4f42c736fee8b4bef8a291fd8048c5d55af7688/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4861636b746f626572666573742d323032362d6f72616e67652e737667" alt="Hacktoberfest"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🎯 Why This Exists&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Freelancers deal with dozens of invoices and receipts every month. Existing solutions either:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Send your client data to the cloud&lt;/strong&gt; (privacy nightmare)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost monthly subscriptions&lt;/strong&gt; (eats into thin margins)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Don't work offline&lt;/strong&gt; (useless on flights or secure environments)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Invoice Sorter runs 100% locally on your laptop&lt;/strong&gt; using &lt;a href="https://ollama.com/" rel="nofollow noopener noreferrer"&gt;Ollama&lt;/a&gt; and open-weight models like Llama 3.2. Your financial documents never leave your machine.&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;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;🔒 &lt;strong&gt;100% Local&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;No cloud APIs, no data leaves your machine&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🤖 &lt;strong&gt;Open-Source AI&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Uses Ollama with Llama 3.2 (or any model you choose)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;📄 &lt;strong&gt;Multi-Format&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Processes PDFs, PNG, JPG, TIFF, BMP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🏷️ &lt;strong&gt;Smart Extraction&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Vendor, amount, date, invoice number, category&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;📁 &lt;strong&gt;Auto-Organization&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Sort by category, date, vendor, or document type&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;📊 &lt;strong&gt;Export&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;JSON, CSV, Excel for accounting software&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;💰 &lt;strong&gt;Free Forever&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;No subscriptions,&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/priyansh07-svnit/invoice-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;p&gt;&lt;strong&gt;Building it:&lt;/strong&gt; I used the open-source agent harness &lt;strong&gt;opencode&lt;/strong&gt; with NVIDIA's open-weight &lt;strong&gt;Nemotron 3 Ultra&lt;/strong&gt; and &lt;strong&gt;Nemotron 3.5 Super VL&lt;/strong&gt; models as my coding agents. Beyond writing the code, I used them to review it, find bugs and write tests.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Running it:&lt;/strong&gt; The tool is a Python CLI built with Click and Rich. Pydantic models validate everything the LLM returns.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Text extraction:&lt;/strong&gt; pdfplumber reads PDFs, and Tesseract OCR (via pytesseract and Pillow) reads images. Scanned PDFs without a text layer fall back to pypdfium2 rendering plus OCR.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Extraction:&lt;/strong&gt; The text goes to a model served locally by &lt;strong&gt;Ollama&lt;/strong&gt;, &lt;code&gt;llama3.2:3b&lt;/code&gt; by default, and the model returns structured JSON. You can swap in any Ollama model with &lt;code&gt;--model&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Guardrails:&lt;/strong&gt; Model output is often messy, so parsing is lenient. It handles markdown fences, string amounts, European decimals like &lt;code&gt;1.234,56 EUR&lt;/code&gt;, currency symbols and null fields. Dates are validated, and anything that can't be read is flagged for review.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Output:&lt;/strong&gt; The sorter copies files into folders by category, date, vendor or type without overwriting duplicates, and the exporter writes JSON, CSV and Excel.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Invoices and receipts are some of the most sensitive documents a freelancer holds, because they contain client names, amounts and bank details. With a closed API, every document would have to be sent to a vendor's servers, and each one would cost money per call. Open-weight models make the opposite design possible. Everything runs on the user's own machine, so no data leaves it, the tool works offline, and there are no per-document costs or rate limits.&lt;/p&gt;

&lt;p&gt;It also means users choose the model. They can run a small, fast model on a modest laptop or a larger one for better accuracy, and a model update never changes their pricing. The same openness applied to how I built the project: an open agent harness with open-weight Nemotron models meant I could build and iterate on it without being tied to a single vendor.&lt;/p&gt;

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

&lt;p&gt;I built this with opencode and NVIDIA's Nemotron models. [Embed your DevRelay agent_session here, or link to it.]&lt;/p&gt;

&lt;h2&gt;
  
  
  My First User
&lt;/h2&gt;

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

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