<?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: Prakhar Gupta</title>
    <description>The latest articles on DEV Community by Prakhar Gupta (@prakhar_410).</description>
    <link>https://dev.to/prakhar_410</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%2F4153092%2F60968465-458b-4e19-b938-e0a3d877a696.png</url>
      <title>DEV Community: Prakhar Gupta</title>
      <link>https://dev.to/prakhar_410</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/prakhar_410"/>
    <language>en</language>
    <item>
      <title>Online Judge</title>
      <dc:creator>Prakhar Gupta</dc:creator>
      <pubDate>Sat, 24 Oct 2026 10:56:54 +0000</pubDate>
      <link>https://dev.to/prakhar_410/online-judge-2ed</link>
      <guid>https://dev.to/prakhar_410/online-judge-2ed</guid>
      <description>&lt;h1&gt;
  
  
  OnlineJudge 🦥 — Making Competitive Programming Debugging Less Painful with Open-Source AI
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week3-2026-10-19"&gt;Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;Anyone who practices competitive programming knows this feeling.&lt;/p&gt;

&lt;p&gt;You submit your C++ solution. You wait for the verdict.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Wrong Answer.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You reread your code, check the conditions, inspect the loops, and try another test case. Somehow, the bug is still there.&lt;/p&gt;

&lt;p&gt;Sometimes, the problem isn't the algorithm itself. It's a single incorrect boundary, an overlooked edge case, or a small logical mistake that takes far too long to find.&lt;/p&gt;

&lt;p&gt;I wanted to make this process less frustrating.&lt;/p&gt;

&lt;p&gt;Introducing &lt;strong&gt;SlothJudge 🦥&lt;/strong&gt;, an AI-powered debugging assistant designed to help competitive programmers investigate failing solutions without doing all the repetitive debugging work manually.&lt;/p&gt;

&lt;p&gt;The project builds on my experience developing an online judge:&lt;/p&gt;

&lt;p&gt;🔗 &lt;strong&gt;Existing project:&lt;/strong&gt; &lt;a href="https://github.com/rot44/Online-Judge" rel="noopener noreferrer"&gt;Online Judge on GitHub&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The idea behind SlothJudge is to bring open-source AI into the competitive programming workflow and make debugging more efficient.&lt;/p&gt;

&lt;p&gt;The planned workflow is straightforward:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Investigate bugs:&lt;/strong&gt; Provide C++ code, a problem statement, and a verdict to receive possible explanations for the failure.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Find tricky cases:&lt;/strong&gt; Generate edge cases that could expose weaknesses in the solution.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Suggest minimal fixes:&lt;/strong&gt; Focus on the suspicious condition or logic rather than rewriting the entire program.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Explain the problem:&lt;/strong&gt; Understand why a potential bug occurs instead of blindly copying a corrected solution.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep learning:&lt;/strong&gt; Use AI as a debugging companion while retaining control over the final implementation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal isn't to replace the programmer or reveal complete solutions automatically. It's to help programmers get unstuck and spend more time learning algorithms.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;GitHub repository:&lt;/strong&gt; &lt;a href="https://github.com/rot44/Online-Judge" rel="noopener noreferrer"&gt;https://github.com/rot44/Online-Judge&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Live application:&lt;/strong&gt; [Add your verified deployment URL here]&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Video demonstration:&lt;/strong&gt; [Add a screen recording here]&lt;/p&gt;

&lt;p&gt;The demonstration will show a real debugging scenario:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Submit a C++ solution containing a known bug.&lt;/li&gt;
&lt;li&gt;Provide the problem statement and failure details.&lt;/li&gt;
&lt;li&gt;Ask SlothJudge to investigate the likely cause.&lt;/li&gt;
&lt;li&gt;Review the diagnosis and suggested edge cases.&lt;/li&gt;
&lt;li&gt;Fix the issue and verify the solution against the relevant tests.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The aim is to demonstrate how AI can reduce repetitive debugging effort, not merely generate code.&lt;/p&gt;

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

&lt;p&gt;The existing Online Judge project is available here:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/rot44/Online-Judge" rel="noopener noreferrer"&gt;rot44/Online-Judge — GitHub Repository&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I'll use this project as the foundation for exploring a more intelligent competitive programming workflow.&lt;/p&gt;

&lt;p&gt;The repository currently represents my existing Online Judge work. Any SlothJudge-specific AI features will be documented separately and demonstrated once implemented.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI implementation branch or repository:&lt;/strong&gt; [Add the link when available]&lt;/p&gt;

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

&lt;p&gt;The objective is to integrate an open-weight language model into a debugging workflow rather than rely entirely on a proprietary AI API.&lt;/p&gt;

&lt;h3&gt;
  
  
  Planned technology stack
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; A web interface for submitting code and viewing debugging reports.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; Node.js and Express for request handling and prompt construction.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI inference:&lt;/strong&gt; Ollama for running a compatible model locally.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI model:&lt;/strong&gt; Gemma, Google's open-weight model family.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Target language:&lt;/strong&gt; C++, with other languages as potential future additions.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Architecture
&lt;/h3&gt;

&lt;p&gt;The workflow is designed around five steps.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Input collection&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The user supplies the source code, problem statement, programming language, and failure information.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Context preparation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The backend constructs a structured prompt containing the relevant information. The prompt instructs the model to investigate likely errors and prioritize minimal, educational hints.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Open-weight model inference&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A compatible Gemma model processes the request through Ollama. When configured for local inference, the code can remain on the user's machine.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Debugging report&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The model's response is presented as a structured report containing a likely cause, an explanation, potential edge cases, and a suggested correction.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Human verification&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The programmer reviews the suggestions and tests the code independently. The AI provides assistance rather than guaranteeing correctness.&lt;/p&gt;

&lt;p&gt;This design keeps the debugging workflow focused on learning and makes the model replaceable as better open-weight alternatives become available.&lt;/p&gt;

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

&lt;p&gt;For SlothJudge, open innovation is about more than choosing a different model. It gives developers greater control over how AI fits into their everyday workflow.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Privacy through local inference
&lt;/h3&gt;

&lt;p&gt;Source code can contain unfinished solutions, personal notes, or experimental implementations.&lt;/p&gt;

&lt;p&gt;When the model runs locally and the application does not send inputs to external services, the debugging workflow can keep that code on the user's own machine.&lt;/p&gt;

&lt;p&gt;This is particularly valuable for programmers who prefer not to send their code to a third-party AI API.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Reduced dependence on paid APIs
&lt;/h3&gt;

&lt;p&gt;Debugging is iterative. A programmer may need several rounds of feedback before identifying the actual problem.&lt;/p&gt;

&lt;p&gt;Local inference avoids per-request charges from a hosted model API. Users still need compatible hardware, storage, electricity, and the time to set up the model, but repeated requests do not incur a separate model API fee.&lt;/p&gt;

&lt;p&gt;That makes frequent experimentation more accessible to students.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Freedom to experiment
&lt;/h3&gt;

&lt;p&gt;An open-weight model allows developers to experiment with different model sizes, inference settings, and prompts.&lt;/p&gt;

&lt;p&gt;For example, I could compare how different models handle:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Off-by-one errors in binary search.&lt;/li&gt;
&lt;li&gt;Incorrect visitation logic in BFS and DFS.&lt;/li&gt;
&lt;li&gt;Boundary conditions in dynamic programming.&lt;/li&gt;
&lt;li&gt;Integer overflow and unusual input constraints.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These experiments could help determine which model is most useful for competitive programming rather than relying on assumptions about model quality.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. A debugging workflow designed for programmers
&lt;/h3&gt;

&lt;p&gt;A general-purpose chatbot can explain code, but a dedicated assistant can organize its output around the actual debugging process.&lt;/p&gt;

&lt;p&gt;The prompts can prioritize minimal fixes, suspicious conditions, edge cases, and educational explanations.&lt;/p&gt;

&lt;p&gt;The objective is to make the AI useful for learning rather than simply returning a complete replacement solution.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. The possibility of offline use
&lt;/h3&gt;

&lt;p&gt;Once the model, dependencies, and application are installed, the core workflow can operate without internet access, provided it does not depend on remote APIs or online judge services.&lt;/p&gt;

&lt;p&gt;That means the debugging assistant can remain useful even when a hosted AI service is unavailable.&lt;/p&gt;

&lt;p&gt;Open innovation does not automatically make a model more accurate than a closed model. What it offers here is control, flexibility, local execution, and the ability to experiment without being locked into one provider.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Agent session:&lt;/strong&gt; [Add your DevRelay session link here, if available]&lt;/p&gt;

&lt;p&gt;I plan to share the development session to show how the project evolved, including prompt design, implementation decisions, debugging iterations, and lessons learned.&lt;/p&gt;

&lt;p&gt;This section is optional and will be completed if I have a suitable session to share.&lt;/p&gt;

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

&lt;p&gt;The whole point of SlothJudge is to reduce the repetitive work between receiving a failed verdict and understanding what went wrong.&lt;/p&gt;

&lt;p&gt;Imagine spending 20 minutes manually inspecting a solution, trying random inputs, and rereading the same conditions.&lt;/p&gt;

&lt;p&gt;A useful AI diagnosis might narrow the investigation to a single incorrect boundary condition or an edge case that was never considered.&lt;/p&gt;

&lt;p&gt;That doesn't mean every bug will be fixed instantly. Some problems require substantial algorithmic reasoning, and AI-generated diagnoses can be wrong.&lt;/p&gt;

&lt;p&gt;The aim is to reduce blind trial and error and give the programmer a more focused starting point.&lt;/p&gt;

&lt;p&gt;To evaluate the project, I plan to test it against a collection of known C++ bugs and record:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Whether the model identifies the underlying issue.&lt;/li&gt;
&lt;li&gt;Whether the generated test cases expose the bug.&lt;/li&gt;
&lt;li&gt;The time taken to generate a report.&lt;/li&gt;
&lt;li&gt;How useful the feedback is compared with manual debugging.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'll report actual measurements once the evaluation is complete rather than claim time savings without evidence.&lt;/p&gt;

&lt;p&gt;After all, a project about saving time should demonstrate that it really saves time.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Primary target: Best Use of Gemma — $200&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;SlothJudge is designed to use Gemma as its open-weight debugging model through local inference with Ollama. This category is relevant once that integration is implemented and demonstrated.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Overall challenge: Hacktoberfest Open-Source AI Challenge Week 3 — $250&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The project targets the &lt;em&gt;Slow and Steady&lt;/em&gt; theme by exploring how open-source AI can reduce repetitive debugging work for competitive programmers.&lt;/p&gt;

&lt;p&gt;The prize categories are goals for the submission, not a claim of eligibility or a guarantee of winning.&lt;/p&gt;

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

&lt;p&gt;I'm interested in building tools that make learning to code less frustrating.&lt;/p&gt;

&lt;p&gt;Competitive programming is already challenging enough. Spending excessive time searching for a tiny bug can make the experience even harder, especially when you're learning a new algorithm or technique.&lt;/p&gt;

&lt;p&gt;SlothJudge explores whether open-weight AI can help programmers investigate failures, discover edge cases, and understand their mistakes while keeping control of their code.&lt;/p&gt;

&lt;p&gt;The larger idea is simple: use AI to reduce repetitive effort without removing the learning process.&lt;/p&gt;

&lt;p&gt;Build less frustration. Debug smarter. Stay lazy. 🦥&lt;/p&gt;

&lt;h1&gt;
  
  
  devchallenge #hf26challenge #opensource #AI #Cplusplus #CompetitiveProgramming #Gemma
&lt;/h1&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>Flora Quest</title>
      <dc:creator>Prakhar Gupta</dc:creator>
      <pubDate>Sat, 10 Oct 2026 12:02:46 +0000</pubDate>
      <link>https://dev.to/prakhar_410/flora-quest-5d90</link>
      <guid>https://dev.to/prakhar_410/flora-quest-5d90</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;&lt;strong&gt;FloraQuest-AI&lt;/strong&gt; is a lightweight, offline-first web companion designed to get you off the screen and into nature in under 60 seconds.&lt;/p&gt;

&lt;p&gt;Features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Offline Specimen ID:&lt;/strong&gt; Identify trail leaves, trees, and birds using open-weight vision models (MobileNet-v2) running directly in your browser.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fall Foliage Route Scout:&lt;/strong&gt; Generate 15–90 min trail loops with a 3-item sensory scavenger hunt.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Frost &amp;amp; Soil Radar:&lt;/strong&gt; Know what to sow (garlic, winter greens, bulbs) before the first freeze.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Screen-Off Mode:&lt;/strong&gt; Ambient forest breeze synthesizer to encourage pocketing your phone.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;Open &lt;code&gt;index.html&lt;/code&gt; in your browser.&lt;/li&gt;
&lt;li&gt;Works 100% offline with zero API keys required.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/SrujanTag/FloraQuest-AI" rel="noopener noreferrer"&gt;https://github.com/SrujanTag/FloraQuest-AI&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Open-Weight AI:&lt;/strong&gt; Hugging Face &lt;code&gt;@xenova/transformers&lt;/code&gt; running &lt;code&gt;MobileNet-v2&lt;/code&gt; directly on-device in WebAssembly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stack:&lt;/strong&gt; HTML5, Vanilla CSS, Vanilla JS, and Web Audio API for offline forest sounds.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local Fallback:&lt;/strong&gt; Built-in offline trail database for zero-signal environments.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Runs with No Signal:&lt;/strong&gt; Deep in the woods or on trails, closed cloud APIs don't work. Open weights run on your device without cell reception.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Privacy:&lt;/strong&gt; Photos and GPS location never leave your phone.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero Cost:&lt;/strong&gt; $0 in API fees or server hosting costs.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Built with Antigravity AI pair programming assistant.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>Repo Chatter</title>
      <dc:creator>Prakhar Gupta</dc:creator>
      <pubDate>Sat, 03 Oct 2026 18:21:19 +0000</pubDate>
      <link>https://dev.to/prakhar_410/repo-chatter-3i3o</link>
      <guid>https://dev.to/prakhar_410/repo-chatter-3i3o</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;&lt;strong&gt;Repo Chatter&lt;/strong&gt; lets you paste any public GitHub repository URL and ask questions about its README in plain English. The app fetches the README, indexes it, and answers using only what the documentation says. Every answer shows the exact README chunks it was based on, so you can verify the source yourself. If the README doesn't cover your question, the app says so instead of guessing.&lt;/p&gt;

&lt;p&gt;The app also tracks commit activity for each added repo through an hourly background job, and the interface uses a custom black-and-white design with a cursor-following glow and a scroll-driven landing page.&lt;/p&gt;

&lt;p&gt;I built this for my teammate *&lt;em&gt;&lt;a class="mentioned-user" href="https://dev.to/attlar"&gt;@attlar&lt;/a&gt; *&lt;/em&gt;, who regularly digs through unfamiliar open-source projects to find a single install command or environment variable. Reading a long README for one detail is slow. With Repo Chatter, it's one question away.&lt;/p&gt;

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

&lt;p&gt;🔗 &lt;strong&gt;Live app:&lt;/strong&gt; &lt;a href="https://repo-chatter.netlify.app/" rel="noopener noreferrer"&gt;https://repo-chatter.netlify.app/&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;The full source is on GitHub:&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/loveyadav1015" rel="noopener noreferrer"&gt;
        loveyadav1015
      &lt;/a&gt; / &lt;a href="https://github.com/loveyadav1015/RepoChatter" rel="noopener noreferrer"&gt;
        RepoChatter
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Repo Chatter is an AI-powered RAG application that allows users to chat with public GitHub repository READMEs through a cinematic, monochrome interface, providing grounded answers with source citations and tracking commit activity.
    &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;Repo Chatter 🚀&lt;/h1&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Chat with any GitHub repository's README using AI-powered RAG — wrapped in a
cinematic, monochrome interface.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Repo Chatter lets developers paste a public GitHub repository URL and instantly ask
natural-language questions about its README — grounded strictly in the actual
documentation, with source citations. It tracks repository commit activity in the
background via a scheduled job, and presents it all through a custom black-and-white
interface with a cursor-reactive glow and an illustrated scroll-triggered landing hero.&lt;/p&gt;
&lt;p&gt;Built as a submission for &lt;strong&gt;OverEngineered&lt;/strong&gt; — the Web Development Wing selection process.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🎯 Features&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;📚 Add Any Public Repo&lt;/strong&gt; — paste a GitHub URL, README is fetched and indexed automatically&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;💬 Grounded Q&amp;amp;A&lt;/strong&gt; — ask questions in plain English, get answers based strictly on the README (no hallucination — the model explicitly refuses to answer outside the provided context)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;📍 Source Citations&lt;/strong&gt; — every answer shows exactly which README chunks were…&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/loveyadav1015/RepoChatter" 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;Frontend&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;React with Vite&lt;/li&gt;
&lt;li&gt;shadcn/ui components&lt;/li&gt;
&lt;li&gt;GSAP with ScrollTrigger for the scroll-driven hero&lt;/li&gt;
&lt;li&gt;Tailwind CSS and Axios&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Backend&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Node.js and Express (ESM), organized into routes, controllers, and services&lt;/li&gt;
&lt;li&gt;Raw PostgreSQL driver (&lt;code&gt;pg&lt;/code&gt;) with parameterized queries throughout&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;node-cron&lt;/code&gt; for scheduled jobs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Database&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;PostgreSQL 16 with the pgvector extension&lt;/li&gt;
&lt;li&gt;Exact k-NN similarity search, which is correct and fast enough at this scale&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;AI models&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Embeddings:&lt;/strong&gt; &lt;code&gt;sentence-transformers/all-MiniLM-L6-v2&lt;/code&gt;, an open-weight model that produces 384-dimension vectors, served through the HuggingFace Inference API&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Generation:&lt;/strong&gt; Mixtral 8x7B, an open-weight mixture-of-experts model, served through Groq for fast inference&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Both models are open-weight, but the current deployment calls them through hosted APIs rather than running them on my own servers. Each model call sits behind a service adapter, so moving to a self-hosted model is a change to one module.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Infrastructure&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Docker Compose for the local stack (database, backend, frontend)&lt;/li&gt;
&lt;li&gt;Netlify for the static frontend&lt;/li&gt;
&lt;li&gt;Render for the backend and the managed PostgreSQL database&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How the RAG Pipeline Works
&lt;/h2&gt;

&lt;p&gt;Repo Chatter has two flows. Ingestion runs when a repo is added. Retrieval and generation run when a question is asked.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ingestion: when a repo is added&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart LR
    A[GitHub URL] --&amp;gt; B[Fetch README&amp;lt;br/&amp;gt;GitHub REST API]
    B --&amp;gt; C[Chunk&amp;lt;br/&amp;gt;~500 chars each]
    C --&amp;gt; D[Embed each chunk&amp;lt;br/&amp;gt;384-dim vectors]
    D --&amp;gt; E[(repo_chunks&amp;lt;br/&amp;gt;pgvector column)]&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;&lt;strong&gt;Retrieval and generation: when a question is asked&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart LR
    Q[User question] --&amp;gt; EQ[Embed question&amp;lt;br/&amp;gt;same model]
    EQ --&amp;gt; R[Retrieve top 5 chunks&amp;lt;br/&amp;gt;cosine distance]
    E[(repo_chunks)] --&amp;gt; R
    R --&amp;gt; G[Generate grounded answer&amp;lt;br/&amp;gt;Groq, Mixtral 8x7B]
    G --&amp;gt; A[Answer + source chunks]
    A --&amp;gt; H[(chat_history)]&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;&lt;strong&gt;Step by step&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Fetch:&lt;/strong&gt; the backend retrieves the README through the authenticated GitHub API. Authentication raises the rate limit well above the 60 requests per hour allowed for anonymous calls.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Chunk:&lt;/strong&gt; the README is split into fixed-size chunks of about 500 characters.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Embed:&lt;/strong&gt; each chunk is converted into a 384-dimension vector.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Store:&lt;/strong&gt; chunks and vectors are saved to the &lt;code&gt;repo_chunks&lt;/code&gt; table.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Embed the question:&lt;/strong&gt; the question goes through the same model, so it lives in the same vector space as the chunks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Retrieve:&lt;/strong&gt; pgvector returns the five chunks with the smallest cosine distance to the question.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Generate:&lt;/strong&gt; the model receives the question and those chunks, with instructions to answer only from that context.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Respond and log:&lt;/strong&gt; the answer and its source chunks are returned to the frontend and saved to &lt;code&gt;chat_history&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;When the README doesn't cover the question, the response looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"answer"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"I don't know, this isn't covered in the README."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"sourceChunkIds"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"..."&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"sourceChunkTexts"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"..."&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Commit Tracking
&lt;/h2&gt;

&lt;p&gt;An hourly &lt;code&gt;node-cron&lt;/code&gt; job keeps commit data current for every tracked repository:&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart LR
    T[Hourly tick] --&amp;gt; L[Load tracked repos]
    L --&amp;gt; F[Fetch commits since last_fetched&amp;lt;br/&amp;gt;GitHub API, paginated]
    F --&amp;gt; I[Insert into commit_logs&amp;lt;br/&amp;gt;ON CONFLICT DO NOTHING]
    I --&amp;gt; U[Update commit_count&amp;lt;br/&amp;gt;and last_fetched]&lt;/code&gt;&lt;/pre&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;First run:&lt;/strong&gt; fetches up to 100 recent commits, with pagination handled explicitly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Later runs:&lt;/strong&gt; fetches only commits newer than &lt;code&gt;last_fetched&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deduplication:&lt;/strong&gt; a unique constraint on &lt;code&gt;(repo_id, commit_hash)&lt;/code&gt; means reruns never create duplicate rows.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Database Design
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Table&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;tracked_repos&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Repo URL, owner, cached README, fetch and embed timestamps, commit count&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;repo_chunks&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;README chunks with 384-dim pgvector embeddings&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;commit_logs&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Commits fetched by the cron job, unique on &lt;code&gt;(repo_id, commit_hash)&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;chat_history&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Each question, its answer, and the source chunks it cited&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

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

&lt;p&gt;Open models are what made this project practical.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cost:&lt;/strong&gt; the embedding model is open-weight, so re-indexing a repo doesn't add a per-chunk charge on someone else's bill.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reproducibility:&lt;/strong&gt; because I can pin a specific model version, retrieval behavior stays consistent over time. A closed API can change under you without notice.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flexibility:&lt;/strong&gt; the service adapters let me swap in a different open model, or self-host one, without rewriting the retrieval or generation logic.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inspectability:&lt;/strong&gt; with open weights, I can test how the model behaves and read exactly what the retrieval step sends to it.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;&lt;strong&gt;Best Use of Render ($200 USD) :&lt;/strong&gt; The Express backend (RAG ingestion, retrieval, generation, and the hourly commit job) and the managed PostgreSQL database both run on Render.&lt;/p&gt;

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