<?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: Daksh Lalwani</title>
    <description>The latest articles on DEV Community by Daksh Lalwani (@daks9h).</description>
    <link>https://dev.to/daks9h</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%2F4144453%2F70be1856-6e24-4d48-b842-014c9320319c.jpg</url>
      <title>DEV Community: Daksh Lalwani</title>
      <link>https://dev.to/daks9h</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/daks9h"/>
    <language>en</language>
    <item>
      <title>Muted the Group Chat, Missed the Deadline. So I Built a Sloth.</title>
      <dc:creator>Daksh Lalwani</dc:creator>
      <pubDate>Mon, 26 Oct 2026 06:32:32 +0000</pubDate>
      <link>https://dev.to/daks9h/my-dad-kept-forwarding-scam-texts-so-i-built-him-a-detective-5dop</link>
      <guid>https://dev.to/daks9h/my-dad-kept-forwarding-scam-texts-so-i-built-him-a-detective-5dop</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;Sloths nap through 300 group chat messages without a worry. I can't, so I built &lt;strong&gt;ChatSense&lt;/strong&gt; to do the reading for me.&lt;/p&gt;

&lt;p&gt;Paste or upload a messy chat and it hands back the only parts you need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Tasks&lt;/strong&gt; with a "time left" bar that turns red when you're nearly out of time&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What changed&lt;/strong&gt;, like "deadline moved from 30 Oct to 2 Nov", so the missed update isn't your fault&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bills and info cards&lt;/strong&gt;, so the rent stops living in your head&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A fraud check&lt;/strong&gt; for sketchy messages ("your bank account will be blocked, click here!")&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every card points to the exact message it came from. If ChatSense says something, you can see the receipt.&lt;/p&gt;

&lt;p&gt;Who gets to be lazier? Students who muted the group and missed the deadline change. Parents who keep forwarding "you have won 25 lakh!" texts. The flatmate who owes 590 and swears nobody told him. A sloth would approve.&lt;/p&gt;

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

&lt;p&gt;Try it here: &lt;a href="https://chat-sense.vercel.app/" rel="noopener noreferrer"&gt;https://chat-sense.vercel.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There's a demo chat built in, so you can be lazy right from the first click.&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/Daks9h" rel="noopener noreferrer"&gt;
        Daks9h
      &lt;/a&gt; / &lt;a href="https://github.com/Daks9h/chat-sense" rel="noopener noreferrer"&gt;
        chat-sense
      &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;p&gt;This is a &lt;a href="https://nextjs.org" rel="nofollow noopener noreferrer"&gt;Next.js&lt;/a&gt; project bootstrapped with &lt;a href="https://nextjs.org/docs/app/api-reference/cli/create-next-app" rel="nofollow noopener noreferrer"&gt;&lt;code&gt;create-next-app&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Getting Started&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;First, run the development server:&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;npm run dev
&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; or&lt;/span&gt;
yarn dev
&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; or&lt;/span&gt;
pnpm dev
&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; or&lt;/span&gt;
bun dev&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Open &lt;a href="http://localhost:3000" rel="nofollow noopener noreferrer"&gt;http://localhost:3000&lt;/a&gt; with your browser to see the result.&lt;/p&gt;
&lt;p&gt;You can start editing the page by modifying &lt;code&gt;app/page.tsx&lt;/code&gt;. The page auto-updates as you edit the file.&lt;/p&gt;
&lt;p&gt;This project uses &lt;a href="https://nextjs.org/docs/app/building-your-application/optimizing/fonts" rel="nofollow noopener noreferrer"&gt;&lt;code&gt;next/font&lt;/code&gt;&lt;/a&gt; to automatically optimize and load &lt;a href="https://vercel.com/font" rel="nofollow noopener noreferrer"&gt;Geist&lt;/a&gt;, a new font family for Vercel.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Learn More&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;To learn more about Next.js, take a look at the following resources:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://nextjs.org/docs" rel="nofollow noopener noreferrer"&gt;Next.js Documentation&lt;/a&gt; - learn about Next.js features and API.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://nextjs.org/learn" rel="nofollow noopener noreferrer"&gt;Learn Next.js&lt;/a&gt; - an interactive Next.js tutorial.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can check out &lt;a href="https://github.com/vercel/next.js" rel="noopener noreferrer"&gt;the Next.js GitHub repository&lt;/a&gt; - your feedback and contributions are welcome!&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Deploy on Vercel&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;The easiest way to deploy your Next.js app is to use the &lt;a href="https://vercel.com/new?utm_medium=default-template&amp;amp;filter=next.js&amp;amp;utm_source=create-next-app&amp;amp;utm_campaign=create-next-app-readme" rel="nofollow noopener noreferrer"&gt;Vercel Platform&lt;/a&gt; from the creators of Next.js.&lt;/p&gt;
&lt;p&gt;Check out our &lt;a href="https://nextjs.org/docs/app/building-your-application/deploying" rel="nofollow noopener noreferrer"&gt;Next.js deployment documentation&lt;/a&gt; for more…&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/Daks9h/chat-sense" 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;The brain is &lt;strong&gt;Gemma 4 E2B&lt;/strong&gt;, an open-weight model. My rule was simple: Gemma reads, and plain code decides. A sloth doesn't waste energy, and neither should a model.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gemma does the reading:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sorts each message (task, bill, info, promo, suspicious)&lt;/li&gt;
&lt;li&gt;Pulls out the details and notices when someone corrects an earlier message&lt;/li&gt;
&lt;li&gt;Explains a scam's tricks in one simple line&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Normal code does the thinking:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Works out real dates from each message's own timestamp, so a "tomorrow" sent last week is already overdue&lt;/li&gt;
&lt;li&gt;Handles time left, totals, duplicates and undo&lt;/li&gt;
&lt;li&gt;Gives the fraud verdict by checking the real link domain, URL shorteners, lookalike domains and UPI ID mismatches. Gemma names the tricks, and code makes the call. It never says "safe", only "No red flags found"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every Gemma answer gets validated, and anything without a matching quote in the original message is thrown out. No source, no card.&lt;/p&gt;

&lt;p&gt;The app is built with Next.js and shadcn/ui. On my own test chats it got &lt;strong&gt;83% accuracy&lt;/strong&gt;. That's not perfect, which is why every card shows its source and lets you edit it.&lt;/p&gt;

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

&lt;p&gt;Group chats are personal. They hold family drama, bank alerts and who owes whom money. A closed API would mean sending all of that to a server I don't control, every time I paste a chat. That's a lot to hand over just to avoid scrolling.&lt;/p&gt;

&lt;p&gt;An open-weight model changes that. It can run on my own machine with no per-call bill, no rate limit and no waiting on someone else's servers. I can swap the model, tune the prompts and see exactly what it does. And since the repo is open, anyone can fork it, teach it their own language or local scams, and make it work for their own chats. Fraud looks different in every country, so that matters.&lt;/p&gt;

&lt;p&gt;Set it up once, and it's yours to keep.&lt;/p&gt;

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

&lt;p&gt;Best use of Gemma 4&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>Learn Faster - The $0-API-Cost Exam Prep Engine Built on Local Open Weights</title>
      <dc:creator>Daksh Lalwani</dc:creator>
      <pubDate>Mon, 19 Oct 2026 00:01:24 +0000</pubDate>
      <link>https://dev.to/daks9h/learn-faster-the-0-api-cost-exam-prep-engine-built-on-local-open-weights-36fp</link>
      <guid>https://dev.to/daks9h/learn-faster-the-0-api-cost-exam-prep-engine-built-on-local-open-weights-36fp</guid>
      <description>&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;Every semester, millions of university students drown in 2-hour lecture recordings before midterms. They scrub timelines at 1.5x speed, transcribe notes passively, and still fail tricky midterm questions because they never tested themselves under exam conditions.&lt;/p&gt;

&lt;p&gt;Students already pay $15–$25/month for tools like Quizlet, Chegg, or Anki extensions. But existing tools require hours of manual card creation, and generic AI chat tools hallucinate or output vague bullet points instead of actual exam questions.&lt;/p&gt;

&lt;p&gt;I built Learn Faster: a private, autonomous lecture-to-exam engine designed as a $0-marginal-cost study tool.&lt;/p&gt;

&lt;p&gt;A student drops in a YouTube lecture recording or pastes raw lecture notes. In under 15 seconds, it builds a complete exam-readiness package:&lt;/p&gt;

&lt;p&gt;Quick Take: 3 high-yield conceptual anchors without fluff.&lt;br&gt;
Key Concepts: Core syllabus breakdown preserving hardware formulas, state tables, and definitions.&lt;/p&gt;

&lt;p&gt;Exam Radar: Predictive questions tagged with priority tiers (very_likely, important) and Professor Trap Alerts targeting edge cases where instructors typically trick students.&lt;/p&gt;

&lt;p&gt;Active Recall Deck: Interactive flashcards with definitive answers.&lt;br&gt;
Adaptive Combat Quiz Arena: Gamified multiple-choice assessment with instant XP feedback, real-time score tracking, and 1-sentence technical explanations.&lt;/p&gt;

&lt;p&gt;Knowledge Map: Real-time retention scores highlighting weak topics before test day.&lt;/p&gt;

&lt;p&gt;The Hustle &amp;amp; Business Model&lt;br&gt;
Target Audience: Engineering, CS, pre-med, and professional certification candidates (AWS, CompTIA, USMLE).&lt;/p&gt;

&lt;p&gt;The Monetization Problem with Closed AI: If you build this on proprietary APIs (OpenAI/Anthropic), synthesizing a single 90-minute lecture (~25,000 words with multi-chunk summarization) costs $0.20–$0.40 per run. A student preparing for 4 courses would burn through $10/month in API costs alone, killing a student-budget SaaS margin.&lt;/p&gt;

&lt;p&gt;The Open-Weight Solution: By shipping this as a local-first desktop app powered by local open weights, the marginal cost per user is literally $0.00. I can charge a flat $29 one-time license or a low-cost $7/month student pass and keep 100% gross margins.&lt;/p&gt;
&lt;h2&gt;
  
  
  Demo
&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/Daks9h" rel="noopener noreferrer"&gt;
        Daks9h
      &lt;/a&gt; / &lt;a href="https://github.com/Daks9h/learn-faster" rel="noopener noreferrer"&gt;
        learn-faster
      &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;Learn Faster ⚡&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/Daks9h/learn-faster/./assets/banner.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2FDaks9h%2Flearn-faster%2FHEAD%2F.%2Fassets%2Fbanner.png" alt="Learn Faster Banner" width="100%"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;strong&gt;Transform chaotic lecture slides, notes, and transcripts into high-yield concept maps and combat quiz arenas.&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/b2e8aac9e5aeab7d0dba6295f37501d7d18c37711441f2c9f196274a768c8367/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f52656163742d31392d3631444146423f7374796c653d666c61742d737175617265266c6f676f3d7265616374266c6f676f436f6c6f723d626c61636b"&gt;&lt;img src="https://camo.githubusercontent.com/b2e8aac9e5aeab7d0dba6295f37501d7d18c37711441f2c9f196274a768c8367/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f52656163742d31392d3631444146423f7374796c653d666c61742d737175617265266c6f676f3d7265616374266c6f676f436f6c6f723d626c61636b" alt="React 19"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/3bfee0f88571599d0d7cd92d804be4bf2663beb9cd7aa47b2e0398bdb5ff0805/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f547970655363726970742d352e382d3331373843363f7374796c653d666c61742d737175617265266c6f676f3d74797065736372697074266c6f676f436f6c6f723d7768697465"&gt;&lt;img src="https://camo.githubusercontent.com/3bfee0f88571599d0d7cd92d804be4bf2663beb9cd7aa47b2e0398bdb5ff0805/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f547970655363726970742d352e382d3331373843363f7374796c653d666c61742d737175617265266c6f676f3d74797065736372697074266c6f676f436f6c6f723d7768697465" alt="TypeScript"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/adb67415232a32f63cd361278746b84fd263f1252961e3447498a537931beb5c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f566974652d362e322d3634364346463f7374796c653d666c61742d737175617265266c6f676f3d76697465266c6f676f436f6c6f723d7768697465"&gt;&lt;img src="https://camo.githubusercontent.com/adb67415232a32f63cd361278746b84fd263f1252961e3447498a537931beb5c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f566974652d362e322d3634364346463f7374796c653d666c61742d737175617265266c6f676f3d76697465266c6f676f436f6c6f723d7768697465" alt="Vite"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/aa52bd7c9b078299ff52ca121189927f3b40b2f06ce2f2f8c717ceeaee88cf40/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5461696c77696e644353532d332e342d3338423241433f7374796c653d666c61742d737175617265266c6f676f3d7461696c77696e642d637373266c6f676f436f6c6f723d7768697465"&gt;&lt;img src="https://camo.githubusercontent.com/aa52bd7c9b078299ff52ca121189927f3b40b2f06ce2f2f8c717ceeaee88cf40/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5461696c77696e644353532d332e342d3338423241433f7374796c653d666c61742d737175617265266c6f676f3d7461696c77696e642d637373266c6f676f436f6c6f723d7768697465" alt="Tailwind CSS"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/2192cbfe6ceaae5f7a4919c1dcd38d0fab573f6bc06c10a243da23f221d45d4e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f457870726573732d342e32312d3030303030303f7374796c653d666c61742d737175617265266c6f676f3d65787072657373266c6f676f436f6c6f723d7768697465"&gt;&lt;img src="https://camo.githubusercontent.com/2192cbfe6ceaae5f7a4919c1dcd38d0fab573f6bc06c10a243da23f221d45d4e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f457870726573732d342e32312d3030303030303f7374796c653d666c61742d737175617265266c6f676f3d65787072657373266c6f676f436f6c6f723d7768697465" alt="Express"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/152aa2a37725b9fd554b28ff24d270f6071c67927a63e6d635a55c8e188e20c7/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d677265656e3f7374796c653d666c61742d737175617265"&gt;&lt;img src="https://camo.githubusercontent.com/152aa2a37725b9fd554b28ff24d270f6071c67927a63e6d635a55c8e188e20c7/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d677265656e3f7374796c653d666c61742d737175617265" alt="License"&gt;&lt;/a&gt;
&lt;/p&gt;




&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;💡 Overview&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;Students and self-directed learners frequently spend 80% of their study time passively re-reading 50-slide decks or skimming endless lecture recordings, leading to cramming and rapid forgetting. Standard AI summarizers only produce more dry walls of text.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn Faster&lt;/strong&gt; turns passive study materials into an active, game-inspired learning experience:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Synthesizes&lt;/strong&gt; unstructured lecture notes and transcripts into structured, high-yield takeaways.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Maps&lt;/strong&gt; core dependencies into an interactive visual &lt;strong&gt;Knowledge Graph&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Challenges&lt;/strong&gt; comprehension with an interactive &lt;strong&gt;Combat Quiz Arena&lt;/strong&gt; that rewards XP and isolates weak topics.&lt;/li&gt;
&lt;/ol&gt;




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


&lt;ul&gt;

&lt;li&gt;🎯 &lt;strong&gt;Tactical Lecture Synthesis&lt;/strong&gt;: Instant executive briefs, core formulas, essential definitions, and practical intuition without fluff.&lt;/li&gt;

&lt;li&gt;🧠 &lt;strong&gt;Interactive Knowledge Graph&lt;/strong&gt;: Dynamic node-link visualization displaying conceptual hierarchies, prerequisite pathways, and topic relationships.&lt;/li&gt;

&lt;li&gt;⚔️ &lt;strong&gt;Combat Quiz Arena&lt;/strong&gt;: Fast-paced active recall testing with instant…&lt;/li&gt;

&lt;/ul&gt;&lt;/div&gt;
&lt;br&gt;
  &lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Daks9h/learn-faster" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;br&gt;&lt;br&gt;
Preset Test Course: Includes a pre-configured UC Berkeley CS 152 (Computer Architecture: Booth's Multiplier &amp;amp; IEEE 754) demo so you can test the Combat Quiz Arena and Exam Radar instantly.

&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/Daks9h" rel="noopener noreferrer"&gt;
        Daks9h
      &lt;/a&gt; / &lt;a href="https://github.com/Daks9h/learn-faster" rel="noopener noreferrer"&gt;
        learn-faster
      &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;Learn Faster ⚡&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/Daks9h/learn-faster/./assets/banner.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2FDaks9h%2Flearn-faster%2FHEAD%2F.%2Fassets%2Fbanner.png" alt="Learn Faster Banner" width="100%"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;strong&gt;Transform chaotic lecture slides, notes, and transcripts into high-yield concept maps and combat quiz arenas.&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/b2e8aac9e5aeab7d0dba6295f37501d7d18c37711441f2c9f196274a768c8367/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f52656163742d31392d3631444146423f7374796c653d666c61742d737175617265266c6f676f3d7265616374266c6f676f436f6c6f723d626c61636b"&gt;&lt;img src="https://camo.githubusercontent.com/b2e8aac9e5aeab7d0dba6295f37501d7d18c37711441f2c9f196274a768c8367/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f52656163742d31392d3631444146423f7374796c653d666c61742d737175617265266c6f676f3d7265616374266c6f676f436f6c6f723d626c61636b" alt="React 19"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/3bfee0f88571599d0d7cd92d804be4bf2663beb9cd7aa47b2e0398bdb5ff0805/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f547970655363726970742d352e382d3331373843363f7374796c653d666c61742d737175617265266c6f676f3d74797065736372697074266c6f676f436f6c6f723d7768697465"&gt;&lt;img src="https://camo.githubusercontent.com/3bfee0f88571599d0d7cd92d804be4bf2663beb9cd7aa47b2e0398bdb5ff0805/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f547970655363726970742d352e382d3331373843363f7374796c653d666c61742d737175617265266c6f676f3d74797065736372697074266c6f676f436f6c6f723d7768697465" alt="TypeScript"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/adb67415232a32f63cd361278746b84fd263f1252961e3447498a537931beb5c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f566974652d362e322d3634364346463f7374796c653d666c61742d737175617265266c6f676f3d76697465266c6f676f436f6c6f723d7768697465"&gt;&lt;img src="https://camo.githubusercontent.com/adb67415232a32f63cd361278746b84fd263f1252961e3447498a537931beb5c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f566974652d362e322d3634364346463f7374796c653d666c61742d737175617265266c6f676f3d76697465266c6f676f436f6c6f723d7768697465" alt="Vite"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/aa52bd7c9b078299ff52ca121189927f3b40b2f06ce2f2f8c717ceeaee88cf40/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5461696c77696e644353532d332e342d3338423241433f7374796c653d666c61742d737175617265266c6f676f3d7461696c77696e642d637373266c6f676f436f6c6f723d7768697465"&gt;&lt;img src="https://camo.githubusercontent.com/aa52bd7c9b078299ff52ca121189927f3b40b2f06ce2f2f8c717ceeaee88cf40/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5461696c77696e644353532d332e342d3338423241433f7374796c653d666c61742d737175617265266c6f676f3d7461696c77696e642d637373266c6f676f436f6c6f723d7768697465" alt="Tailwind CSS"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/2192cbfe6ceaae5f7a4919c1dcd38d0fab573f6bc06c10a243da23f221d45d4e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f457870726573732d342e32312d3030303030303f7374796c653d666c61742d737175617265266c6f676f3d65787072657373266c6f676f436f6c6f723d7768697465"&gt;&lt;img src="https://camo.githubusercontent.com/2192cbfe6ceaae5f7a4919c1dcd38d0fab573f6bc06c10a243da23f221d45d4e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f457870726573732d342e32312d3030303030303f7374796c653d666c61742d737175617265266c6f676f3d65787072657373266c6f676f436f6c6f723d7768697465" alt="Express"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/152aa2a37725b9fd554b28ff24d270f6071c67927a63e6d635a55c8e188e20c7/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d677265656e3f7374796c653d666c61742d737175617265"&gt;&lt;img src="https://camo.githubusercontent.com/152aa2a37725b9fd554b28ff24d270f6071c67927a63e6d635a55c8e188e20c7/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d677265656e3f7374796c653d666c61742d737175617265" alt="License"&gt;&lt;/a&gt;
&lt;/p&gt;




&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;💡 Overview&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;Students and self-directed learners frequently spend 80% of their study time passively re-reading 50-slide decks or skimming endless lecture recordings, leading to cramming and rapid forgetting. Standard AI summarizers only produce more dry walls of text.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn Faster&lt;/strong&gt; turns passive study materials into an active, game-inspired learning experience:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Synthesizes&lt;/strong&gt; unstructured lecture notes and transcripts into structured, high-yield takeaways.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Maps&lt;/strong&gt; core dependencies into an interactive visual &lt;strong&gt;Knowledge Graph&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Challenges&lt;/strong&gt; comprehension with an interactive &lt;strong&gt;Combat Quiz Arena&lt;/strong&gt; that rewards XP and isolates weak topics.&lt;/li&gt;
&lt;/ol&gt;




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


&lt;ul&gt;

&lt;li&gt;🎯 &lt;strong&gt;Tactical Lecture Synthesis&lt;/strong&gt;: Instant executive briefs, core formulas, essential definitions, and practical intuition without fluff.&lt;/li&gt;

&lt;li&gt;🧠 &lt;strong&gt;Interactive Knowledge Graph&lt;/strong&gt;: Dynamic node-link visualization displaying conceptual hierarchies, prerequisite pathways, and topic relationships.&lt;/li&gt;

&lt;li&gt;⚔️ &lt;strong&gt;Combat Quiz Arena&lt;/strong&gt;: Fast-paced active recall testing with instant…&lt;/li&gt;

&lt;/ul&gt;&lt;/div&gt;
&lt;br&gt;
  &lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Daks9h/learn-faster" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;p&gt;Stack Highlights&lt;/p&gt;

&lt;p&gt;Frontend: React + TypeScript + Vite, Tailwind CSS with brutalist zero-radius borders, Three.js / React Three Fiber interactive hero canvas.&lt;/p&gt;

&lt;p&gt;Backend: Node.js Express server with Server-Sent Events (SSE) streaming real-time stage progress (/api/analyze?stream=true).&lt;/p&gt;

&lt;p&gt;Data Integrity: Strict Zod schema validation with automatic error feedback retry loops to eliminate LLM schema degradation.&lt;/p&gt;

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

&lt;p&gt;The entire product was engineered around open-weight models and local inference:&lt;/p&gt;

&lt;p&gt;Local Open-Weight Core: Powered by Qwen2.5 7B running locally via Ollama. It runs smoothly on standard consumer hardware (tested on an everyday laptop NVIDIA RTX 3050 with 4GB VRAM).&lt;/p&gt;

&lt;p&gt;Long-Lecture Hierarchical Chunking: Dense 90-minute technical lectures exceed standard context budgets. The backend breaks 60,000+ character transcripts into sequential semantic chunks, distills technical definitions and equations, and then passes the consolidated technical brief to the synthesis engine.&lt;/p&gt;

&lt;p&gt;Strict JSON State Machine: Closed models charge extra for structured output guarantees. We built a zero-preamble prompt harness combined with Zod schema sanitization that enforces 4 options per question, valid index integers (0–3), and fuzzy-concept matching to keep quizzes 100% playable.&lt;/p&gt;

&lt;p&gt;Pluggable Architecture: A clean AIProvider interface allows swapping between local Ollama inference and lightweight cloud fallbacks (e.g. Gemini Flash) with zero client-side code changes.&lt;/p&gt;

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

&lt;p&gt;Open-source AI isn't just an implementation detail here—it is the reason this business model works:&lt;/p&gt;

&lt;p&gt;Zero Marginal Server Cost: Closed-source API costs scale linearly with your user base. With open weights running on the user's laptop, my infrastructure cost is $0. Whether a user synthesizes 1 lecture or 100 lectures during finals week, it costs me nothing.&lt;/p&gt;

&lt;p&gt;True Student Data Privacy: University professors frequently warn students against uploading proprietary lecture slides, internal problem sets, and unreleased exam hints to cloud AI tools. With local inference, client lecture data never leaves their laptop.&lt;/p&gt;

&lt;p&gt;No Network Dependency: Students study in library basements with dead zones, on trains, and on campus Wi-Fi that blocks AI services. Open innovation lets students study completely offline without an active internet connection.&lt;/p&gt;

&lt;p&gt;No API Price Hikes or Sudden Deprecations: You can't run a student side hustle if a cloud provider 3x's their token pricing or deprecates a model mid-semester. With frozen open weights, the software works forever.&lt;/p&gt;

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

&lt;p&gt;To test whether this was something people would actually use and pay for, I handed the build to an engineering friend preparing for a Computer Architecture midterm.&lt;/p&gt;

&lt;p&gt;What they said: "Normally, I spend 3 hours scrubbing through 50-minute Panopto recordings just to find the two slide examples the professor emphasized for the exam. The Exam Radar flagged the exact Booth's recoding hardware edge cases in 15 seconds."&lt;/p&gt;

&lt;p&gt;What did they ask for next? One-click export to Anki .apkg files so they can sync cards to their phone, and support for uploading raw course slide PDFs directly.&lt;/p&gt;

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

&lt;p&gt;Hacktoberfest Week 2: Side Hustle Track&lt;br&gt;
Open-Source AI / Local Inference Track&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>opensource</category>
    </item>
    <item>
      <title>StreetQuest AI: A Photo Treasure Hunt That Gets You Outside</title>
      <dc:creator>Daksh Lalwani</dc:creator>
      <pubDate>Mon, 12 Oct 2026 06:58:21 +0000</pubDate>
      <link>https://dev.to/daks9h/streetquest-ai-a-photo-treasure-hunt-that-gets-you-outside-3ab</link>
      <guid>https://dev.to/daks9h/streetquest-ai-a-photo-treasure-hunt-that-gets-you-outside-3ab</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;I spend most of my day looking at a screen. So I built something that makes me put it down.&lt;/p&gt;

&lt;p&gt;StreetQuest AI is a small treasure-hunt game. You pick a level and get a simple mission, like "find a heart-shaped object" or "find an unusual leaf". Then you go outside, take a photo, and upload it. An AI looks at the photo and tells you if it matches. If it does, you earn points.&lt;/p&gt;

&lt;p&gt;That's it. Nine missions, three levels. Easy missions take about two minutes. Medium unlocks after you finish two Easy ones, and Hard unlocks after two Medium ones. I kept it small on purpose, so it feels like a quick walk and not homework.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&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/Daks9h" rel="noopener noreferrer"&gt;
        Daks9h
      &lt;/a&gt; / &lt;a href="https://github.com/Daks9h/streetquest" rel="noopener noreferrer"&gt;
        streetquest
      &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;StreetQuest AI — Outdoor Treasure Hunt&lt;/h1&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;A calm, minimal outdoor treasure hunt game powered by &lt;strong&gt;Gemma 4&lt;/strong&gt; (&lt;code&gt;gemma-4-26b-a4b-it&lt;/code&gt;) via the Gemini API
Built for the &lt;strong&gt;Hacktoberfest 2026 DEV Open-Source AI Challenge&lt;/strong&gt;, Week 1 "Touch Grass"
Hashtags: &lt;code&gt;#devchallenge&lt;/code&gt; &lt;code&gt;#weekendchallenge&lt;/code&gt; &lt;code&gt;#hf26challenge&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🍃 Overview&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;StreetQuest encourages players to step outside and observe natural details around them:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Choose a level&lt;/strong&gt;: Easy (always open), Medium (unlocks after 2 Easy missions), or Hard (unlocks after 2 Medium missions).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Accept a mission&lt;/strong&gt;: 9 missions total, from finding living leaves to discovering natural patterns.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Capture a photo&lt;/strong&gt;: Uploaded directly from mobile or desktop with automated canvas resizing ($\le 1024\text{px}$).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI Photo Check&lt;/strong&gt;: The backend verifies the photo using &lt;strong&gt;Gemma 4 26B&lt;/strong&gt; in memory without ever writing user photos to disk.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Score &amp;amp; Ranks&lt;/strong&gt;: Earn points for valid matches (&lt;code&gt;Seedling&lt;/code&gt; $\rightarrow$ &lt;code&gt;Trail Finder&lt;/code&gt; $\rightarrow$ &lt;code&gt;Ranger&lt;/code&gt; $\rightarrow$ &lt;code&gt;Pathfinder&lt;/code&gt;).&lt;/li&gt;
&lt;/ol&gt;…&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Daks9h/streetquest" 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;The flow&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You pick a mission in the React app.&lt;/li&gt;
&lt;li&gt;The app shrinks your photo so it uploads fast.&lt;/li&gt;
&lt;li&gt;A small FastAPI backend sends the photo and the mission to Gemma 4.&lt;/li&gt;
&lt;li&gt;Gemma replies with a verdict (match, no match, or unclear), a confidence score and a short reason.&lt;/li&gt;
&lt;li&gt;The backend checks the reply is valid, then sends it back.&lt;/li&gt;
&lt;li&gt;If it's a match, you earn points. Each mission can only be rewarded once.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;The stack&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Frontend: React, Vite and Tailwind CSS&lt;/li&gt;
&lt;li&gt;Backend: Python and FastAPI&lt;/li&gt;
&lt;li&gt;AI: Gemma 4 through the Gemini API in Google AI Studio&lt;/li&gt;
&lt;li&gt;Storage: your browser's localStorage. No accounts, no database.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;A few choices I made&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The API key stays on the backend.&lt;/strong&gt; The browser never sees it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Photos are never saved.&lt;/strong&gt; They are processed in memory and then dropped.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The server decides the mission rules.&lt;/strong&gt; The browser only sends a mission ID, so nobody can edit the request to make any photo match.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;"Unclear" is a real answer.&lt;/strong&gt; If a photo is dark, blurry or far away, the app asks for a better one instead of guessing. A match with low confidence also counts as unclear.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The prompt ignores text inside the photo.&lt;/strong&gt; Someone could hold up a sign saying "this is a match", and the model is told not to follow it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What went wrong&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A photo of caterpillar goes wrong through AI during testing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Honest limits&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A photo check can't prove you went outside. Someone could upload a picture from the internet. StreetQuest is a nudge, not a lie detector.&lt;/li&gt;
&lt;li&gt;Scores live in your browser, so they can be edited. That's fine for a game, not for a competition.&lt;/li&gt;
&lt;li&gt;The free tier has rate limits, so the app shows a calm message when they are hit.&lt;/li&gt;
&lt;li&gt;On the free tier, Google may use what you send to improve its products. That is why the app asks you not to upload photos of people.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Gemma 4 is open-weight and released under the Apache 2.0 license. For a small project like mine, that matters in three ways:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No lock-in.&lt;/strong&gt; I used the hosted API to move fast, but my code only talks to one model name stored in a config setting. Switching models, or hosting Gemma myself, would be a small change, not a rewrite.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Privacy is possible.&lt;/strong&gt; A photo game can be sensitive. With open weights, a school, club or community group could run it on their own machine, so photos never leave their hands. I haven't built that yet, but a closed API wouldn't offer it at all.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clear rules.&lt;/strong&gt; Apache 2.0 means I can use, change and share the project without worrying about custom terms.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I also tested more than one Gemma 4 size on the same photos. [Edit this to match what you really tested, or delete it.] Trying different sizes is easy when the models are open.&lt;/p&gt;

&lt;p&gt;ThankYou!&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>Building Conversation Repairer for Aishwarya: Grounded Relationship Memory with Gemma</title>
      <dc:creator>Daksh Lalwani</dc:creator>
      <pubDate>Sun, 04 Oct 2026 23:34:12 +0000</pubDate>
      <link>https://dev.to/daks9h/building-conversation-repairer-for-aishwarya-grounded-relationship-memory-with-gemma-1cje</link>
      <guid>https://dev.to/daks9h/building-conversation-repairer-for-aishwarya-grounded-relationship-memory-with-gemma-1cje</guid>
      <description>&lt;p&gt;My friend Aishwarya often runs into a tough communication pattern. When tensions or awkward moments happen in a chat, she swings between two extremes: either she feels too kind and shy to state what she needs, or she swings the other way and sounds completely nonchalant and detached. &lt;/p&gt;

&lt;p&gt;Both reactions cause confusion. People misread her silence as indifference, or her detachment as rudeness, even when her actual intention was simply to avoid conflict. When we talked about it, she mentioned that she often forgets past commitments or mutual preferences agreed upon weeks earlier in long chat threads. When an argument flares up, she has no quick way to recall what was actually said.&lt;/p&gt;

&lt;p&gt;I built &lt;strong&gt;Conversation Repairer&lt;/strong&gt; for her. It takes an exported WhatsApp conversation (&lt;code&gt;.txt&lt;/code&gt;), extracts relationship context backed by exact quotes, stores everything strictly in the browser, and helps draft grounded responses when a chat gets tense.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;## What I Built&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conversation Repairer&lt;/strong&gt; is a full-stack tool that turns chat logs into a searchable relationship memory dashboard. &lt;br&gt;
When you paste a tense message exchange into the app, it does not invent an arbitrary apology. Instead, it retrieves relevant past promises, recurring patterns, and communication preferences from your history. Then it suggests three distinct response options:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Soft&lt;/strong&gt;: Gentle, acknowledging emotions without being overly apologetic.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Casual&lt;/strong&gt;: Low-friction and conversational, de-escalating tension without drama.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Direct&lt;/strong&gt;: Clear and honest, setting boundaries without sounding cold.
It also highlights things to avoid saying and flags honest uncertainties about the situation.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;## Demo&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Live Demo&lt;/strong&gt;: [&lt;a href="https://conversation-repairer.onrender.com/" rel="noopener noreferrer"&gt;https://conversation-repairer.onrender.com/&lt;/a&gt;]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Video Walkthrough&lt;/strong&gt;: [&lt;a href="https://drive.google.com/file/d/14azZci_Y4yMJE3f4lf1mUWXGQflvWv7p/view?usp=drive_link" rel="noopener noreferrer"&gt;https://drive.google.com/file/d/14azZci_Y4yMJE3f4lf1mUWXGQflvWv7p/view?usp=drive_link&lt;/a&gt;]&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;## Code&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Repository&lt;/strong&gt;: [&lt;a href="https://github.com/Daks9h/conversation-repairer" rel="noopener noreferrer"&gt;https://github.com/Daks9h/conversation-repairer&lt;/a&gt;]&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Tip for testing&lt;/strong&gt;: If you do not have a WhatsApp export handy, clone the repo and upload &lt;code&gt;samples/ios_sample.txt&lt;/code&gt;. It contains a realistic synthetic conversation between Kabir and Ananya covering canceled plans, late shows, and texting preferences.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;## How I Built It&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The core idea is simple: keep the server stateless, store personal memories only in the user's browser, and force the model to prove its claims with exact quotes.&lt;/p&gt;

&lt;p&gt;WhatsApp Export (.txt)&lt;br&gt;
            │&lt;br&gt;
            ▼&lt;br&gt;
  ┌──────────────────┐&lt;br&gt;
  │  Browser Parser  │  (Runs 100% in browser; strips bidi unicode)&lt;br&gt;
  └─────────┬────────┘&lt;br&gt;
            │&lt;br&gt;
            ▼&lt;br&gt;
  ┌──────────────────┐&lt;br&gt;
  │ Message Chunker  │  (Recent ~1,500 messages, 120-msg chunks)&lt;br&gt;
  └─────────┬────────┘&lt;br&gt;
            │&lt;br&gt;
            ▼&lt;br&gt;
  ┌──────────────────┐&lt;br&gt;
  │ Gemma Extraction │  (Extracts memories with exact quotes)&lt;br&gt;
  └─────────┬────────┘&lt;br&gt;
            │&lt;br&gt;
            ▼&lt;br&gt;
  ┌──────────────────┐&lt;br&gt;
  │ Quote Check Code │  (Drops memory if quote is not in chunk)&lt;br&gt;
  └─────────┬────────┘&lt;br&gt;
            │&lt;br&gt;
            ▼&lt;br&gt;
  ┌──────────────────┐&lt;br&gt;
  │   LocalStorage   │  (cr:memories stored strictly in browser)&lt;br&gt;
  └─────────┬────────┘&lt;br&gt;
            │&lt;br&gt;
   Tense chat snippet&lt;br&gt;
            │&lt;br&gt;
            ▼&lt;br&gt;
  ┌──────────────────┐&lt;br&gt;
  │ Keyword Retrieve │  (Scores overlap, category weight &amp;amp; recency)&lt;br&gt;
  └─────────┬────────┘&lt;br&gt;
            │&lt;br&gt;
            ▼&lt;br&gt;
  ┌──────────────────┐&lt;br&gt;
  │   Gemma Repair   │  (Analyzes conflict + retrieved evidence)&lt;br&gt;
  └─────────┬────────┘&lt;br&gt;
            │&lt;br&gt;
            ▼&lt;br&gt;
   3 Response Options: Soft, Casual, Direct&lt;/p&gt;

&lt;p&gt;I built and iterated on this application using AI coding assistants (Google Antigravity) for scaffold generation, refactoring, and test runners, while Google Gemma 4 powers the extraction and repair intelligence of the live product. I designed the architecture, quote verification engine, and retrieval scoring, and validated the pipeline across synthetic test cases.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;## Why Does Open Innovation Matter?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Personal conversations are deeply private. If you build communication tools using closed proprietary APIs, users are locked into third-party cloud platforms with no say over where their personal relationship history travels.&lt;/p&gt;

&lt;p&gt;Because Gemma is an open-weight model family, Conversation Repairer is not trapped inside a single vendor's walled garden. Anyone who wants complete privacy can run the entire application offline by setting LLM_PROVIDER=ollama in their .env file and running gemma3:4b on their own computer. No chat text ever needs to leave their machine.&lt;/p&gt;

&lt;p&gt;To be honest about the live deployment: the public demo on Render connects to Google's hosted Gemma API (gemma-4-26b-a4b-it) for inference, meaning text chunks travel over HTTPS to Google during analysis requests. However, the server remains completely stateless, stores nothing on disk, and saves all memories in local browser storage. Open weights make it possible for anyone to take the exact same code, run it locally, and have total data isolation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What Aishwarya Said&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I sent the working deployment to Aishwarya to test on her own chats.&lt;/p&gt;

&lt;p&gt;Her immediate reaction was honest and funny. She laughed and told me she wants to send the link directly to people who struggle with communication skills. She noted that she runs into this problem with people around her all the time, and having a tool that grounds replies in what was actually agreed upon is a relief. For her, seeing past preferences lined up side by side with the three response styles gave her an easy way to reply without spiraling into over-apologizing or shutting down.&lt;/p&gt;

&lt;p&gt;Privacy Note&lt;/p&gt;

&lt;p&gt;Because personal chats contain sensitive information:&lt;/p&gt;

&lt;p&gt;The server stores zero logs, zero conversation text, and zero user data.&lt;br&gt;
All memories and sender names stay inside your browser localStorage.&lt;br&gt;
If you prefer total isolation from cloud APIs, you can run Conversation Repairer offline by setting LLM_PROVIDER=ollama in your .env file and running gemma3:4b locally.&lt;/p&gt;

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