<?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>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>
