<?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: Saran Soundharajan</title>
    <description>The latest articles on DEV Community by Saran Soundharajan (@saran0206).</description>
    <link>https://dev.to/saran0206</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%2F4149786%2Fbf490df3-a0fc-48aa-8c50-664158cd627c.png</url>
      <title>DEV Community: Saran Soundharajan</title>
      <link>https://dev.to/saran0206</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/saran0206"/>
    <language>en</language>
    <item>
      <title>A Verified Course Directory Anyone Can Monetize</title>
      <dc:creator>Saran Soundharajan</dc:creator>
      <pubDate>Thu, 15 Oct 2026 07:37:58 +0000</pubDate>
      <link>https://dev.to/saran0206/a-verified-course-directory-anyone-can-monetize-5pf</link>
      <guid>https://dev.to/saran0206/a-verified-course-directory-anyone-can-monetize-5pf</guid>
      <description>&lt;p&gt;This is a submission for the Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle&lt;/p&gt;

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

&lt;p&gt;LearnPath is a tool that answers one question: “Which course should I actually trust?”&lt;/p&gt;

&lt;p&gt;You type a skill, and LearnPath finds the resources people have genuinely recommended in real discussions on Hacker News, Reddit and YouTube. It shows them as clean cards you can filter by:&lt;/p&gt;

&lt;p&gt;Pricing: Free, Paid or Freemium&lt;br&gt;
Type: YouTube, Course, Book or Website&lt;br&gt;
Level: Beginner, Intermediate or Advanced&lt;/p&gt;

&lt;p&gt;Every card has a “See proof” button linking straight to the original posts behind the recommendation, so nobody has to take the AI’s word for it.&lt;/p&gt;

&lt;p&gt;Who would pay, and why:&lt;/p&gt;

&lt;p&gt;Self-learners and career switchers spend real money and time on courses. A wrong pick costs them both, so a trustworthy shortlist is worth paying for.&lt;br&gt;
Bootcamps, communities and newsletter writers need “what should I learn first” guides but don’t have time to research each skill.&lt;br&gt;
Small teams and training managers need vetted resources for upskilling without paying for a corporate learning platform.&lt;/p&gt;

&lt;p&gt;The problem it solves: “best course” lists are mostly SEO spam or paid promotion. LearnPath replaces that with community-backed recommendations and receipts for every one.&lt;/p&gt;

&lt;p&gt;Side hustle angle: the core search is free. The paid layer I’m planning is saved learning paths, curated skill roadmaps for creators and communities, and an API or embeddable widget so others can put verified recommendations on their own sites.&lt;/p&gt;

&lt;p&gt;Demo&lt;/p&gt;

&lt;p&gt;🔗 Live app: &lt;a href="https://learnpath-2.onrender.com/" rel="noopener noreferrer"&gt;https://learnpath-2.onrender.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;(It’s on a free tier, so the first load may take a few seconds to wake up.)&lt;/p&gt;

&lt;p&gt;Code&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/Saran0605" rel="noopener noreferrer"&gt;
        Saran0605
      &lt;/a&gt; / &lt;a href="https://github.com/Saran0605/LearnPath" rel="noopener noreferrer"&gt;
        LearnPath
      &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;LearnPath 🎯&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;LearnPath is an AI-powered, community-backed learning resource aggregator built with the MERN stack (&lt;strong&gt;M&lt;/strong&gt;ongoDB, &lt;strong&gt;E&lt;/strong&gt;xpress, &lt;strong&gt;R&lt;/strong&gt;eact, &lt;strong&gt;N&lt;/strong&gt;ode.js) and powered by Google's open-weight &lt;strong&gt;Gemma AI&lt;/strong&gt; model (&lt;code&gt;gemma-2-9b-it&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;It solves a common problem: &lt;strong&gt;"I want to learn a skill, but I don't know which course, book, or video to trust."&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;LearnPath automatically scans Hacker News, Reddit, and YouTube for real developer discussions, extracts course and book recommendations, and validates them against an &lt;strong&gt;Anti-Hallucination rule Engine&lt;/strong&gt; before presenting them on a modern, real-time dashboard.&lt;/p&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;No User Accounts / Login Required&lt;/strong&gt;: Public, open dashboard for immediate access.&lt;/li&gt;
&lt;li&gt;🤖 &lt;strong&gt;Open-Weight Gemma AI Integration&lt;/strong&gt;: Utilizes Gemma model via Google AI Studio (&lt;code&gt;GEMINI_API_KEY&lt;/code&gt; &amp;amp; &lt;code&gt;GEMINI_MODEL&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;🛡️ &lt;strong&gt;Strict Anti-Hallucination Design&lt;/strong&gt;: The AI model is strictly prohibited from inventing URLs or drawing recommendations from memory. Recommendations are verified against raw fetched…&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/Saran0605/LearnPath" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


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

&lt;p&gt;Open-source AI: Gemma, Google’s open-weight model (gemma-2-9b-it), served through Google AI Studio. The model is a single config value (GEMINI_MODEL), so the whole product is built around swappable open weights.&lt;/p&gt;

&lt;p&gt;Stack: MongoDB Atlas + Mongoose, Express, React (Vite), Node.js, deployed on Render.&lt;/p&gt;

&lt;p&gt;How a search works:&lt;/p&gt;

&lt;p&gt;The skill is validated, then I check MongoDB for a cached result less than 7 days old.&lt;br&gt;
If there isn’t one, the server fetches real discussions in parallel from the Hacker News Algolia API, Reddit’s public search and the YouTube Data API.&lt;br&gt;
Everything is numbered into source snippets and sent to Gemma with a strict prompt: extract recommendations only from these snippets, never from memory.&lt;br&gt;
Gemma returns structured JSON with the name, link, price type, level, a one-line summary and how many sources mention it.&lt;br&gt;
The result is saved to MongoDB and shown on the dashboard.&lt;/p&gt;

&lt;p&gt;The part that makes it sellable is trust. LLMs love to invent courses that sound real, and a product that recommends fake courses has no business model. So after Gemma answers, my server validates every resource. If its URL or name doesn’t physically appear in the source text I fetched, it’s thrown away. Every recommendation must also point to valid source IDs, which is why “See proof” always works.&lt;/p&gt;

&lt;p&gt;Built to be cheap to run:&lt;/p&gt;

&lt;p&gt;7-day caching in MongoDB means repeat searches cost nothing&lt;br&gt;
A seed script pre-caches popular skills, so the demo is instant&lt;br&gt;
Rate limiting and Helmet protect the API&lt;br&gt;
Sources are fetched with Promise.allSettled, so if one (like Reddit) blocks me, the others still work&lt;br&gt;
Why Does Open Innovation Matter?&lt;/p&gt;

&lt;p&gt;For a side hustle, the economics decide everything, and open weights change them:&lt;/p&gt;

&lt;p&gt;Cost control: A free-tier setup is enough to validate the idea. If it grows, I can self-host Gemma instead of watching per-token API bills eat the margin.&lt;br&gt;
No lock-in: Swapping models is a config change, so I can test other open models for extraction quality without rewriting the app.&lt;br&gt;
Inspectable: Recommending learning resources affects what people spend their time and money on. I want the model behind that to be something people can study and question, not a black box.&lt;br&gt;
Room to specialize: Open weights could later be fine-tuned for better price and level detection, which a closed API wouldn’t allow.&lt;/p&gt;

&lt;p&gt;Honest limitations:&lt;/p&gt;

&lt;p&gt;The model can still misread pricing, so it sometimes says “unknown” or gets Free vs Paid wrong. That’s why every card links to its proof.&lt;br&gt;
Results depend on how much discussion exists, so very niche skills may return few or no resources.&lt;br&gt;
Some sources (like Reddit) can block requests, so results vary.&lt;br&gt;
There’s no ranking by recency yet and no user ratings.&lt;br&gt;
Prize Categories&lt;br&gt;
Best Use of Gemma: Gemma does the extraction and summarization at the core of the app.&lt;br&gt;
Best Use of MongoDB Atlas: Atlas stores cached searches and the “recently searched” list.&lt;br&gt;
Best Use of Render: The app is deployed on Render.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>GrassQuest: A 30-Second App That Sends You Outside (my pick: short and clear)</title>
      <dc:creator>Saran Soundharajan</dc:creator>
      <pubDate>Fri, 09 Oct 2026 13:17:23 +0000</pubDate>
      <link>https://dev.to/saran0206/grassquest-a-30-second-app-that-sends-you-outside-my-pick-short-and-clear-4mdh</link>
      <guid>https://dev.to/saran0206/grassquest-a-30-second-app-that-sends-you-outside-my-pick-short-and-clear-4mdh</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;GrassQuest&lt;/strong&gt; is a tiny web app with one goal: spend 30 seconds on the screen, then go outside.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Time:&lt;/strong&gt; 10, 20 or 45 minutes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Surroundings:&lt;/strong&gt; street, park, campus or terrace&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Energy:&lt;/strong&gt; chill, normal or active&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It checks your local weather and generates a &lt;strong&gt;mission card&lt;/strong&gt; with 4-5 small, safe outdoor tasks. For example: find the largest tree in sight and look at its bark, listen for one full minute and count the different bird calls, or walk back with your phone in your pocket.&lt;/p&gt;

&lt;p&gt;Most apps try to keep you looking at the screen. I wanted the screen to be the shortest part of the experience, so I added:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;📵 Phone Away mode:&lt;/strong&gt; a plain countdown screen that says "Go outside. Come back when the timer ends."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🖨️ Print and 📸 download as image:&lt;/strong&gt; take the card with you on paper or as a saved image, so you don't need to keep the app open.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;😊 A tiny reflection screen&lt;/strong&gt; after your walk (Refreshing, Peaceful or Energized).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's for anyone who spends too much time on a screen and wants a nudge to step outside without planning anything. There's no login, no accounts and no tracking.&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://grassquest-76mk.onrender.com/" rel="noopener noreferrer"&gt;https://grassquest-76mk.onrender.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(Hosted on a free tier, so the first load may take a few seconds to wake up.)&lt;/em&gt;&lt;/p&gt;

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


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Saran0605" rel="noopener noreferrer"&gt;
        Saran0605
      &lt;/a&gt; / &lt;a href="https://github.com/Saran0605/GrassQuest" rel="noopener noreferrer"&gt;
        GrassQuest
      &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;🌿 GrassQuest&lt;/h1&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Get off the screen in under 30 seconds, then go outside.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;GrassQuest is a lightweight, calm, nature-themed web app built with &lt;strong&gt;React (Vite)&lt;/strong&gt; and &lt;strong&gt;Express&lt;/strong&gt;. It generates 4-5 quick, actionable, safe outdoor micro-missions based on your available time, surroundings, energy level, and live local weather.&lt;/p&gt;
&lt;p&gt;No login, no user accounts, no tracking, no friction.&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;⚡ Under 30-Second Setup:&lt;/strong&gt; Select your time available (10/20/45 min), surroundings (street/park/campus/terrace), and energy level (chill/normal/active).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;⛅ Live Weather Auto-Detection:&lt;/strong&gt; Uses browser geolocation + &lt;a href="https://open-meteo.com/" rel="nofollow noopener noreferrer"&gt;Open-Meteo API&lt;/a&gt; (no key required). Includes a city search fallback input.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🤖 Gemma / Gemini AI Generation:&lt;/strong&gt; Generates safe, engaging 4-5 outdoor task cards tailored to weather and surroundings.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;📸 Download as Image:&lt;/strong&gt; Export your mission card as a PNG using &lt;code&gt;html-to-image&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🖨️ Clean Print Mode:&lt;/strong&gt; Custom print stylesheet to print crisp mission cards on paper.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;📵 Phone Away Mode:&lt;/strong&gt; Full-screen minimal countdown timer screen instructing…&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/Saran0605/GrassQuest" 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;Stack:&lt;/strong&gt; React (Vite) frontend, Express backend, optional MongoDB Atlas with Mongoose, deployed on Render. Express serves the built React app, so it's one deployable service.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Open-source AI:&lt;/strong&gt; &lt;strong&gt;Gemma&lt;/strong&gt;, Google's open-weight model, called through Google AI Studio. The prompt includes the time, surroundings, energy level and live weather, and asks for strict JSON: a title, a short intro and 4-5 tasks. The server parses and validates that JSON before showing it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Weather:&lt;/strong&gt; the browser's geolocation plus the &lt;strong&gt;Open-Meteo API&lt;/strong&gt;, which is free and needs no API key. If location is blocked, there's a city search fallback.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Making it reliable:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A curated set of &lt;strong&gt;fallback missions&lt;/strong&gt; means the app still works if the AI call fails or no key is set.&lt;/li&gt;
&lt;li&gt;Rate limiting, Helmet and CORS on the API.&lt;/li&gt;
&lt;li&gt;The prompt asks for safe, free tasks that don't need buying anything or going somewhere risky.&lt;/li&gt;
&lt;li&gt;Saving cards to MongoDB Atlas is optional and stores no personal data.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Running it fully local:&lt;/strong&gt; the README includes a path for running the same prompt with &lt;strong&gt;Ollama + Gemma&lt;/strong&gt;, so mission generation can work on a laptop with no external API.&lt;/p&gt;

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

&lt;p&gt;This app sends your location-based context (weather and where you are) into a prompt, and it's meant to be used in everyday life, often outdoors. An open-weight model fits that well:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Local option:&lt;/strong&gt; because Gemma's weights are open, the same prompt can run through Ollama on your own machine with no internet. That's a better match for a "go outside" app than something that depends on a remote service.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Privacy:&lt;/strong&gt; your location and habits don't have to go to a provider you don't control.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost:&lt;/strong&gt; it can run free, which matters for a tool that's supposed to be something anyone can use.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Swappable and tunable:&lt;/strong&gt; I can change the model, or later adapt its tone (calm, playful, kids' mode) without being tied to one vendor.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Gemma:&lt;/strong&gt; Gemma generates every mission card.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Render:&lt;/strong&gt; the full-stack app is deployed on Render.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of MongoDB Atlas:&lt;/strong&gt; generated cards are stored in Atlas. *&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>LearnPath: Stop Guessing Which Course to Trust (Built for My Friend)</title>
      <dc:creator>Saran Soundharajan</dc:creator>
      <pubDate>Fri, 02 Oct 2026 17:15:40 +0000</pubDate>
      <link>https://dev.to/saran0206/learnpath-stop-guessing-which-course-to-trust-built-for-my-friend-3p07</link>
      <guid>https://dev.to/saran0206/learnpath-stop-guessing-which-course-to-trust-built-for-my-friend-3p07</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;My friend wants to learn new skills, but every time they search, they hit the same wall: hundreds of courses, playlists and books, and no way to tell which ones actually worked for real learners. Most "best course" lists are SEO spam or paid promotion.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;LearnPath&lt;/strong&gt;. You type a skill, and it finds the resources people have genuinely recommended in real discussions, then shows them as clean cards you can filter by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pricing:&lt;/strong&gt; Free, Paid or Freemium&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Type:&lt;/strong&gt; YouTube, Course, Book or Website&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Level:&lt;/strong&gt; Beginner, Intermediate or Advanced&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every card has a &lt;strong&gt;"See proof"&lt;/strong&gt; button that links straight to the original Hacker News, Reddit or YouTube posts behind the recommendation. You never have to take the AI's word for it.&lt;/p&gt;

&lt;p&gt;There are no accounts and no login. You open it and search.&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://learnpath-2.onrender.com/" rel="noopener noreferrer"&gt;https://learnpath-2.onrender.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(It's on a free tier, so the first load may take a few seconds to wake up.)&lt;/em&gt;&lt;/p&gt;

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


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Saran0605" rel="noopener noreferrer"&gt;
        Saran0605
      &lt;/a&gt; / &lt;a href="https://github.com/Saran0605/LearnPath" rel="noopener noreferrer"&gt;
        LearnPath
      &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;LearnPath 🎯&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;LearnPath is an AI-powered, community-backed learning resource aggregator built with the MERN stack (&lt;strong&gt;M&lt;/strong&gt;ongoDB, &lt;strong&gt;E&lt;/strong&gt;xpress, &lt;strong&gt;R&lt;/strong&gt;eact, &lt;strong&gt;N&lt;/strong&gt;ode.js) and powered by Google's open-weight &lt;strong&gt;Gemma AI&lt;/strong&gt; model (&lt;code&gt;gemma-2-9b-it&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;It solves a common problem: &lt;strong&gt;"I want to learn a skill, but I don't know which course, book, or video to trust."&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;LearnPath automatically scans Hacker News, Reddit, and YouTube for real developer discussions, extracts course and book recommendations, and validates them against an &lt;strong&gt;Anti-Hallucination rule Engine&lt;/strong&gt; before presenting them on a modern, real-time dashboard.&lt;/p&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;No User Accounts / Login Required&lt;/strong&gt;: Public, open dashboard for immediate access.&lt;/li&gt;
&lt;li&gt;🤖 &lt;strong&gt;Open-Weight Gemma AI Integration&lt;/strong&gt;: Utilizes Gemma model via Google AI Studio (&lt;code&gt;GEMINI_API_KEY&lt;/code&gt; &amp;amp; &lt;code&gt;GEMINI_MODEL&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;🛡️ &lt;strong&gt;Strict Anti-Hallucination Design&lt;/strong&gt;: The AI model is strictly prohibited from inventing URLs or drawing recommendations from memory. Recommendations are verified against raw fetched…&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/Saran0605/LearnPath" 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;Stack:&lt;/strong&gt; MongoDB Atlas + Mongoose, Express, React (Vite), Node.js, deployed on Render.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The AI:&lt;/strong&gt; &lt;strong&gt;Gemma&lt;/strong&gt;, Google's open-weight model, served through Google AI Studio.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How a search works:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The skill is validated, then I check MongoDB for a cached result less than 7 days old.&lt;/li&gt;
&lt;li&gt;If there is none, the server fetches real discussions in parallel from the &lt;strong&gt;Hacker News Algolia API&lt;/strong&gt;, &lt;strong&gt;Reddit's public search&lt;/strong&gt; and the &lt;strong&gt;YouTube Data API&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Everything is numbered into source snippets and sent to Gemma with a strict prompt: &lt;em&gt;extract recommendations only from these snippets, never from memory.&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Gemma returns structured JSON with the name, link, price type, level, a one-line summary and how many sources mention it.&lt;/li&gt;
&lt;li&gt;The result is saved to MongoDB and shown on the dashboard.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;The part I care about most is the anti-hallucination check.&lt;/strong&gt; LLMs love to invent courses that sound real. So after Gemma answers, my server validates every resource. If its URL or name doesn't physically appear in the source text I fetched, it gets thrown away. Every recommendation also has to point to valid source IDs. This is why "See proof" works: each card is tied to real posts.&lt;/p&gt;

&lt;p&gt;Other details:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Rate limiting and Helmet on the API&lt;/li&gt;
&lt;li&gt;A seed script that pre-caches popular skills so the demo is instant&lt;/li&gt;
&lt;li&gt;Sources fetched with &lt;code&gt;Promise.allSettled&lt;/code&gt;, so if one source (like Reddit) blocks me, the others still work&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Using an open-weight model changed what I could build:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Swappable:&lt;/strong&gt; Gemma is just a config value (&lt;code&gt;GEMINI_MODEL&lt;/code&gt;). I can test other open models for extraction quality without rewriting the app.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Self-hostable:&lt;/strong&gt; Today it runs through an API, but because the weights are open, I can move it to my own machine or server later. A closed model locks you into one provider.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inspectable:&lt;/strong&gt; Recommending learning resources affects what people spend time and money on. I want the model behind that to be something people can study and question.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cheap:&lt;/strong&gt; A free-tier setup is enough for a student project, which means a tool like this can stay free for my friends.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Honest Limitations
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The model can still misread pricing, so it sometimes says "unknown" or gets Free vs Paid wrong. That's why every card links to its proof.&lt;/li&gt;
&lt;li&gt;Results depend on how much discussion exists. Very niche skills may return few or no resources.&lt;/li&gt;
&lt;li&gt;Some sources (like Reddit) can block requests, so results vary.&lt;/li&gt;
&lt;li&gt;It's a weekend build, so there's no ranking by recency yet and no user ratings.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Gemma:&lt;/strong&gt; Gemma does the extraction and summarization at the core of the app.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of MongoDB Atlas:&lt;/strong&gt; Atlas stores cached searches and the "recently searched" list.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Render:&lt;/strong&gt; The app is deployed on Render.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thanks for reading! If you try it, I'd love to know which skill you searched for. 🎓&lt;/p&gt;

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