<?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: Sanjana jha</title>
    <description>The latest articles on DEV Community by Sanjana jha (@sanjana_jha_bed43d0288644).</description>
    <link>https://dev.to/sanjana_jha_bed43d0288644</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%2F4015959%2Fb867d236-8932-42d1-8aea-4b20da1645d8.png</url>
      <title>DEV Community: Sanjana jha</title>
      <link>https://dev.to/sanjana_jha_bed43d0288644</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sanjana_jha_bed43d0288644"/>
    <language>en</language>
    <item>
      <title>Local Expense Sorter: an offline categorizer for freelancers and small shops</title>
      <dc:creator>Sanjana jha</dc:creator>
      <pubDate>Sun, 18 Oct 2026 17:19:38 +0000</pubDate>
      <link>https://dev.to/sanjana_jha_bed43d0288644/local-expense-sorter-an-offline-categorizer-for-freelancers-and-small-shops-3llg</link>
      <guid>https://dev.to/sanjana_jha_bed43d0288644/local-expense-sorter-an-offline-categorizer-for-freelancers-and-small-shops-3llg</guid>
      <description>&lt;h1&gt;
  
  
  devchallenge #hf26challenge
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week2-2026-10-12"&gt;Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;Local Expense Sorter takes a bank statement CSV and categorizes each transaction (Food &amp;amp; Drinks, Supplies, Rent, Client Income, and so on) using a small open-weight model running on the user's own laptop. It then shows monthly spend charts and exports an Excel workbook or CSV for an accountant.&lt;/p&gt;

&lt;p&gt;It's for freelancers and small shop owners who spend hours sorting bank and UPI statements by hand. Most tools that do this upload financial data to the cloud. This one doesn't. When a user corrects a category, that correction is saved and used as an example for future imports.&lt;/p&gt;

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

&lt;p&gt;No hosted link. Here's the dashboard after importing a sample statement:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fsanjana-jha-001%2Fexpense-sorter%2Fmain%2Fdocs%2Fdashboard.png" class="article-body-image-wrapper"&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%2Fsanjana-jha-001%2Fexpense-sorter%2Fmain%2Fdocs%2Fdashboard.png" alt="Dashboard" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To try it, follow the setup steps in the &lt;a href="https://github.com/sanjana-jha-001/expense-sorter#readme" rel="noopener noreferrer"&gt;README&lt;/a&gt; and upload the sample CSV included there.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://github.com/sanjana-jha-001/expense-sorter" rel="noopener noreferrer"&gt;https://github.com/sanjana-jha-001/expense-sorter&lt;/a&gt;&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Model:&lt;/strong&gt; Qwen2.5 3B (open weights), run locally through &lt;strong&gt;Ollama&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Storage:&lt;/strong&gt; &lt;strong&gt;SQLite&lt;/strong&gt;, a local file. Duplicate transactions are detected with a hash, so re-importing a statement is safe.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interface:&lt;/strong&gt; &lt;strong&gt;Streamlit&lt;/strong&gt; and &lt;strong&gt;pandas&lt;/strong&gt;, bound to &lt;code&gt;127.0.0.1&lt;/code&gt; so only the same machine can reach it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Categorization runs in order of precedence. A saved correction for a merchant is used first, with no model call. Repeat merchants in the same batch reuse the earlier result. Only new merchants go to the model, and the 20 most recent corrections are included in the prompt as examples.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Privacy:&lt;/strong&gt; Bank statements show client names and family spending. With a local model, nothing leaves the laptop. The README shows how to run the app with &lt;code&gt;--network none&lt;/code&gt; to verify this.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost:&lt;/strong&gt; Per-transaction API fees would eat the margin on a small paid tool. Local inference costs only electricity.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Control:&lt;/strong&gt; I can swap models, edit the prompt, or change categories without asking a vendor.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The trade-off is accuracy. A 3B model is less accurate than a large cloud model on messy bank descriptions, so the review screen is part of the design, and every correction improves later imports.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>TouchGrass AI** 🌿 — an AI-powered outdoor activity recommendation system</title>
      <dc:creator>Sanjana jha</dc:creator>
      <pubDate>Thu, 08 Oct 2026 16:15:25 +0000</pubDate>
      <link>https://dev.to/sanjana_jha_bed43d0288644/touchgrass-ai-an-ai-powered-outdoor-activity-recommendation-system-1li9</link>
      <guid>https://dev.to/sanjana_jha_bed43d0288644/touchgrass-ai-an-ai-powered-outdoor-activity-recommendation-system-1li9</guid>
      <description>&lt;p&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;/p&gt;

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

&lt;p&gt;I built &lt;strong&gt;TouchGrass AI&lt;/strong&gt; 🌿 — an AI-powered outdoor activity recommendation system designed to do something unusual: &lt;strong&gt;help people spend less time with technology.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Instead of recommending another app, video, or online activity, TouchGrass AI gives you a small real-world mission to complete outside.&lt;/p&gt;

&lt;p&gt;You tell it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🧠 Your current mood&lt;/li&gt;
&lt;li&gt;🎯 Your goal&lt;/li&gt;
&lt;li&gt;⏱️ How much time you have&lt;/li&gt;
&lt;li&gt;🌿 Your preferred activity&lt;/li&gt;
&lt;li&gt;🌳 Your environment&lt;/li&gt;
&lt;li&gt;👥 Whether you're alone or with someone&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It then recommends a personalized outdoor activity that fits your situation.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Light Hunt&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Find an interesting patch of sunlight and notice three different shadows.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Or:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;No-Route Walk&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Take a short walk without following your usual route and discover three things you normally overlook.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The idea is simple:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use AI for a few seconds → Get a mission → Put your phone down → Go outside.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;TouchGrass AI is designed for anyone who feels like they spend too much time in front of a screen and wants a simple reason to step outside.&lt;/p&gt;

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

&lt;p&gt;🌿 &lt;strong&gt;Try TouchGrass AI:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://touchgrass-mmewgdojhn6dqggh52qkfs.streamlit.app/" rel="noopener noreferrer"&gt;https://touchgrass-mmewgdojhn6dqggh52qkfs.streamlit.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The goal of the experience is intentionally short. Once you receive your mission, you're encouraged to stop looking at the screen and actually do it.&lt;/p&gt;

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

&lt;p&gt;💻 &lt;strong&gt;GitHub Repository:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://github.com/sanjana-jha-001/touchgrass" rel="noopener noreferrer"&gt;https://github.com/sanjana-jha-001/touchgrass&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project is open source and built with Python and Streamlit.&lt;/p&gt;

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

&lt;p&gt;TouchGrass AI is built with &lt;strong&gt;Python + Streamlit&lt;/strong&gt; and combines a built-in recommendation system with optional local AI inference.&lt;/p&gt;

&lt;p&gt;The project can use &lt;strong&gt;Ollama with open-weight models&lt;/strong&gt; to generate personalized outdoor missions.&lt;/p&gt;

&lt;p&gt;The recommendation prompt gives the model the user's:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mood&lt;/li&gt;
&lt;li&gt;Goal&lt;/li&gt;
&lt;li&gt;Available time&lt;/li&gt;
&lt;li&gt;Preferred activity&lt;/li&gt;
&lt;li&gt;Environment&lt;/li&gt;
&lt;li&gt;Social situation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The model is specifically instructed to recommend activities that get the user &lt;strong&gt;away from the screen&lt;/strong&gt;, rather than suggesting more digital content.&lt;/p&gt;

&lt;p&gt;I also included a built-in recommendation system, so the application can still work without a running AI model.&lt;/p&gt;

&lt;p&gt;One important design decision was making AI an &lt;strong&gt;enabler rather than the destination&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The successful outcome isn't another long AI conversation.&lt;/p&gt;

&lt;p&gt;The successful outcome is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The user closes the app and goes outside. 🌱&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;p&gt;Open innovation is especially important for this project because I wanted the AI component to be transparent, accessible, and replaceable.&lt;/p&gt;

&lt;p&gt;Using &lt;strong&gt;open-weight models and local inference through Ollama&lt;/strong&gt; means the project doesn't have to depend entirely on a proprietary cloud AI API.&lt;/p&gt;

&lt;p&gt;That makes it possible to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Run AI locally&lt;/li&gt;
&lt;li&gt;Experiment with different open-weight models&lt;/li&gt;
&lt;li&gt;Customize the recommendation prompt&lt;/li&gt;
&lt;li&gt;Build without requiring a paid API key&lt;/li&gt;
&lt;li&gt;Keep the AI component flexible and replaceable&lt;/li&gt;
&lt;li&gt;Learn how the AI component actually works&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For a project whose goal is to reduce dependence on screens and online services, using local AI felt especially appropriate.&lt;/p&gt;

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

&lt;p&gt;I used AI-assisted development to help design, implement, debug, and improve TouchGrass AI.&lt;/p&gt;

&lt;p&gt;The project itself is focused on using AI responsibly: instead of optimizing for more engagement, it uses AI to encourage &lt;strong&gt;less screen time and more real-world activity.&lt;/strong&gt;&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Open-Source AI / AI-powered application&lt;/li&gt;
&lt;li&gt;Open Innovation&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Final Thought
&lt;/h2&gt;

&lt;p&gt;Most technology is designed around:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"How can we keep the user engaged?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I wanted to experiment with the opposite question:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"How can AI help the user leave?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That's TouchGrass AI. 🌿&lt;/p&gt;

&lt;p&gt;Use AI for a few seconds.&lt;/p&gt;

&lt;p&gt;Get your mission.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Touch grass.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>🌿 I Built TouchGrass AI — An AI That Wants You to Use Your Phone Less</title>
      <dc:creator>Sanjana jha</dc:creator>
      <pubDate>Thu, 08 Oct 2026 16:11:29 +0000</pubDate>
      <link>https://dev.to/sanjana_jha_bed43d0288644/i-built-touchgrass-ai-an-ai-that-wants-you-to-use-your-phone-less-g6i</link>
      <guid>https://dev.to/sanjana_jha_bed43d0288644/i-built-touchgrass-ai-an-ai-that-wants-you-to-use-your-phone-less-g6i</guid>
      <description>&lt;p&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;/p&gt;

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

&lt;p&gt;I built &lt;strong&gt;TouchGrass AI&lt;/strong&gt; 🌿 — an AI-powered outdoor activity recommendation system designed to do something unusual: &lt;strong&gt;help people spend less time with technology.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Instead of recommending another app, video, or online activity, TouchGrass AI gives you a small real-world mission to complete outside.&lt;/p&gt;

&lt;p&gt;You tell it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🧠 Your current mood&lt;/li&gt;
&lt;li&gt;🎯 Your goal&lt;/li&gt;
&lt;li&gt;⏱️ How much time you have&lt;/li&gt;
&lt;li&gt;🌿 Your preferred activity&lt;/li&gt;
&lt;li&gt;🌳 Your environment&lt;/li&gt;
&lt;li&gt;👥 Whether you're alone or with someone&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It then recommends a personalized outdoor activity that fits your situation.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Light Hunt&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Find an interesting patch of sunlight and notice three different shadows.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Or:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;No-Route Walk&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Take a short walk without following your usual route and discover three things you normally overlook.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The idea is simple:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use AI for a few seconds → Get a mission → Put your phone down → Go outside.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;TouchGrass AI is designed for anyone who feels like they spend too much time in front of a screen and wants a simple reason to step outside.&lt;/p&gt;

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

&lt;p&gt;🌿 &lt;strong&gt;Try TouchGrass AI:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://touchgrass-mmewgdojhn6dqggh52qkfs.streamlit.app/" rel="noopener noreferrer"&gt;https://touchgrass-mmewgdojhn6dqggh52qkfs.streamlit.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The goal of the experience is intentionally short. Once you receive your mission, you're encouraged to stop looking at the screen and actually do it.&lt;/p&gt;

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

&lt;p&gt;💻 &lt;strong&gt;GitHub Repository:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://github.com/sanjana-jha-001/touchgrass" rel="noopener noreferrer"&gt;https://github.com/sanjana-jha-001/touchgrass&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project is open source and built with Python and Streamlit.&lt;/p&gt;

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

&lt;p&gt;TouchGrass AI is built with &lt;strong&gt;Python + Streamlit&lt;/strong&gt; and combines a built-in recommendation system with optional local AI inference.&lt;/p&gt;

&lt;p&gt;The project can use &lt;strong&gt;Ollama with open-weight models&lt;/strong&gt; to generate personalized outdoor missions.&lt;/p&gt;

&lt;p&gt;The recommendation prompt gives the model the user's:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mood&lt;/li&gt;
&lt;li&gt;Goal&lt;/li&gt;
&lt;li&gt;Available time&lt;/li&gt;
&lt;li&gt;Preferred activity&lt;/li&gt;
&lt;li&gt;Environment&lt;/li&gt;
&lt;li&gt;Social situation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The model is specifically instructed to recommend activities that get the user &lt;strong&gt;away from the screen&lt;/strong&gt;, rather than suggesting more digital content.&lt;/p&gt;

&lt;p&gt;I also included a built-in recommendation system, so the application can still work without a running AI model.&lt;/p&gt;

&lt;p&gt;One important design decision was making AI an &lt;strong&gt;enabler rather than the destination&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The successful outcome isn't another long AI conversation.&lt;/p&gt;

&lt;p&gt;The successful outcome is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The user closes the app and goes outside. 🌱&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;p&gt;Open innovation is especially important for this project because I wanted the AI component to be transparent, accessible, and replaceable.&lt;/p&gt;

&lt;p&gt;Using &lt;strong&gt;open-weight models and local inference through Ollama&lt;/strong&gt; means the project doesn't have to depend entirely on a proprietary cloud AI API.&lt;/p&gt;

&lt;p&gt;That makes it possible to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Run AI locally&lt;/li&gt;
&lt;li&gt;Experiment with different open-weight models&lt;/li&gt;
&lt;li&gt;Customize the recommendation prompt&lt;/li&gt;
&lt;li&gt;Build without requiring a paid API key&lt;/li&gt;
&lt;li&gt;Keep the AI component flexible and replaceable&lt;/li&gt;
&lt;li&gt;Learn how the AI component actually works&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For a project whose goal is to reduce dependence on screens and online services, using local AI felt especially appropriate.&lt;/p&gt;

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

&lt;p&gt;I used AI-assisted development to help design, implement, debug, and improve TouchGrass AI.&lt;/p&gt;

&lt;p&gt;The project itself is focused on using AI responsibly: instead of optimizing for more engagement, it uses AI to encourage &lt;strong&gt;less screen time and more real-world activity.&lt;/strong&gt;&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Open-Source AI / AI-powered application&lt;/li&gt;
&lt;li&gt;Open Innovation&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Final Thought
&lt;/h2&gt;

&lt;p&gt;Most technology is designed around:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"How can we keep the user engaged?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I wanted to experiment with the opposite question:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"How can AI help the user leave?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That's TouchGrass AI. 🌿&lt;/p&gt;

&lt;p&gt;Use AI for a few seconds.&lt;/p&gt;

&lt;p&gt;Get your mission.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Touch grass.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>College Copilot: an AI that tells my friend what matters today</title>
      <dc:creator>Sanjana jha</dc:creator>
      <pubDate>Sun, 04 Oct 2026 12:29:53 +0000</pubDate>
      <link>https://dev.to/sanjana_jha_bed43d0288644/college-copilot-an-ai-that-tells-my-friend-what-matters-today-5ae6</link>
      <guid>https://dev.to/sanjana_jha_bed43d0288644/college-copilot-an-ai-that-tells-my-friend-what-matters-today-5ae6</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;Ask any college student where their important updates live and the honest answer is: everywhere. WhatsApp groups, notice PDFs, screenshots of notice boards, assignment deadlines, internship forwards.&lt;/p&gt;

&lt;p&gt;I built &lt;strong&gt;College Copilot&lt;/strong&gt; for my friend &lt;strong&gt;Keerti&lt;/strong&gt;, a B.Tech student, so she doesn't have to dig through all of that. It reads her college chaos and answers one question: &lt;strong&gt;"What matters for ME right now, and what should I do?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Instead of just summarising notices, it matches them with her subjects, attendance and interests and tells her what to do:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;⚠️ DBMS attendance is 72%, 75% is required. Attend the next 3 classes.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;What it does:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Reads everything:&lt;/strong&gt; WhatsApp chat exports, notice PDFs, screenshots and pasted text, including Hinglish like "kal submit karna hai"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Filters for her:&lt;/strong&gt; ignores notices meant for other branches and ranks the rest by urgency&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Attendance planner:&lt;/strong&gt; shows how many classes she must attend in each subject, with a bunk simulator&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deadlines, exams and internships&lt;/strong&gt; in separate tabs, with apply links&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ask anything&lt;/strong&gt;, in Hinglish ("is hafte kya submit karna hai?")&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Calendar export&lt;/strong&gt; to Google Calendar, and a ready-to-send Hinglish morning message&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/1j2FeowdWDo" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Live app: &lt;a href="https://college-copilot-jdgv5fsevwfc4jbcgzmyrz.streamlit.app/" rel="noopener noreferrer"&gt;https://college-copilot-jdgv5fsevwfc4jbcgzmyrz.streamlit.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The live app is hosted and sends text to a cloud model, so I only use made-up sample chats and notices on it. Please don't enter real private data there.&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/sanjana-jha-001" rel="noopener noreferrer"&gt;
        sanjana-jha-001
      &lt;/a&gt; / &lt;a href="https://github.com/sanjana-jha-001/college-copilot" rel="noopener noreferrer"&gt;
        college-copilot
      &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;🎓 College Copilot - private, offline AI for one student&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Reads scattered college info (WhatsApp exports, notice PDFs, screenshots), matches it to the student's
subjects/attendance/interests and answers: &lt;strong&gt;"What matters for ME right now and what should I do?"&lt;/strong&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Run&lt;/h2&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Install &lt;a href="https://ollama.com" rel="nofollow noopener noreferrer"&gt;Ollama&lt;/a&gt;, then: &lt;code&gt;ollama pull qwen2.5:7b&lt;/code&gt; (optional vision: &lt;code&gt;ollama pull qwen2.5vl:7b&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pip install -r requirements.txt&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;streamlit run app.py&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Upload &lt;code&gt;sample_chat.txt&lt;/code&gt; from the sidebar to test, then your friend's real chat.&lt;/li&gt;
&lt;/ol&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;WhatsApp chat parser (Android + iOS formats), Hinglish-aware extraction ("kal", "aaj")&lt;/li&gt;
&lt;li&gt;Notice PDFs + screenshots (local vision model)&lt;/li&gt;
&lt;li&gt;Priority ranking by urgency x your subjects x your interests; other-branch notices are dropped&lt;/li&gt;
&lt;li&gt;Attendance planner: classes you must attend, safe bunks left, bunk simulator (pure code, no LLM math)&lt;/li&gt;
&lt;li&gt;Internship tab with links, Ask-anything chat (Hinglish), ready-to-send morning WhatsApp message&lt;/li&gt;
&lt;li&gt;Calendar (.ics) export, profile saved locally&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Why open source&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;Private chats and attendance never leave the laptop, works with…&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/sanjana-jha-001/college-copilot" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Open-weight model:&lt;/strong&gt; the hosted demo runs an open-weight model (default: OpenAI's gpt-oss-120b) served through &lt;strong&gt;Groq&lt;/strong&gt;. The app fetches the models Groq currently offers and lets me pick one from a dropdown.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local option:&lt;/strong&gt; the same LLM layer in &lt;code&gt;core.py&lt;/code&gt; can talk to a local &lt;strong&gt;Ollama&lt;/strong&gt; model instead, so the app isn't tied to one provider.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Streamlit&lt;/strong&gt; for the interface, &lt;strong&gt;Python&lt;/strong&gt; for WhatsApp parsing, PDF reading and ranking.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The AI only reads, code does the maths.&lt;/strong&gt; The LLM extracts deadlines and actions from messy text. The attendance calculation, the "classes you must attend" count and the priority ranking are plain code, so the numbers are never hallucinated.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hinglish dates:&lt;/strong&gt; the prompt resolves words like "kal" and "aaj" relative to the date of each message, so deadlines get real dates.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;This app deals with some of the most personal data a student has: private group chats and attendance records.&lt;/p&gt;

&lt;p&gt;Open models gave me choices a closed API wouldn't:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No lock-in.&lt;/strong&gt; While building this, Groq retired a model I had hard-coded and my app broke. Because the model is just a setting, I moved to another open model with one dropdown instead of rewriting anything.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Where the data goes is a choice.&lt;/strong&gt; The same open model can run on a hosted service for a public demo, or on the student's own laptop through Ollama when privacy matters.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No dependency on one vendor's pricing or availability.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

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