<?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: Bhavya Pandiya</title>
    <description>The latest articles on DEV Community by Bhavya Pandiya (@bhavya_pandiya_29).</description>
    <link>https://dev.to/bhavya_pandiya_29</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%2F3872966%2Faa87a362-2a56-46d4-bfa9-141215fe647b.png</url>
      <title>DEV Community: Bhavya Pandiya</title>
      <link>https://dev.to/bhavya_pandiya_29</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/bhavya_pandiya_29"/>
    <language>en</language>
    <item>
      <title>I was tired of reading my own notes every morning, so I built SlothAI</title>
      <dc:creator>Bhavya Pandiya</dc:creator>
      <pubDate>Sat, 24 Oct 2026 10:45:24 +0000</pubDate>
      <link>https://dev.to/bhavya_pandiya_29/i-was-tired-of-reading-my-own-notes-every-morning-so-i-built-slothai-2n5h</link>
      <guid>https://dev.to/bhavya_pandiya_29/i-was-tired-of-reading-my-own-notes-every-morning-so-i-built-slothai-2n5h</guid>
      <description>&lt;h2&gt;
  
  
  So here's the thing about mornings
&lt;/h2&gt;

&lt;p&gt;I hate them. Specifically, I hate the first 15 minutes where I'm half-asleep but somehow expected to figure out what I need to do today.&lt;/p&gt;

&lt;p&gt;Every single morning I'd open WhatsApp, then my notes app, then my email, then somehow end up doom-scrolling Instagram while "checking" my messages. By the time I actually knew what was urgent, I'd already wasted 20 minutes of the only time my brain was actually sharp.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;SlothAI&lt;/strong&gt; — a dumb-simple tool where I paste all my notes and messages before bed, and it gives me a clean little briefing in the morning. That's it.&lt;/p&gt;

&lt;p&gt;I named it after International Sloth Day (October 20 ) which fell right in the middle of this week's challenge. Honestly felt like a sign.&lt;/p&gt;




&lt;h2&gt;
  
  
  What it actually does
&lt;/h2&gt;

&lt;p&gt;You paste in literally anything — group chat messages, half-finished todos, voice note transcripts, "remember to call mom" type stuff. Then you pick how you want your morning to feel:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Calm mode&lt;/strong&gt; — gentle, chill summary, like a friend reminding you of stuff&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bullet mode&lt;/strong&gt; — no-fluff, just what needs doing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hype mode&lt;/strong&gt; — if you actually like aggressive good-morning energy&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then SlothAI spits out:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A 2-line summary of your day&lt;/li&gt;
&lt;li&gt;Everything sorted by priority (High / Medium / Low)&lt;/li&gt;
&lt;li&gt;A little "sloth wisdom" tip because why not&lt;/li&gt;
&lt;li&gt;Stats on how much reading time it saved you&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Here's what a real output looks like for me on a busy day:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Good morning  You have 3 time-sensitive items today and 5 things that can breathe. Take it slow — your sloth brain's got this.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's it. That's what I needed.&lt;/p&gt;




&lt;h2&gt;
  
  
  The open-source AI part
&lt;/h2&gt;

&lt;p&gt;The whole point of this challenge is open-weight models, so let me actually explain what I did.&lt;/p&gt;

&lt;p&gt;Right now the app runs a rule-based engine in the browser — it detects urgency keywords ("due today", "EOD", "call", "bill") and classifies everything locally. No API call, no server. Your WhatsApp messages don't go anywhere.&lt;/p&gt;

&lt;p&gt;But the architecture is built to drop in a real local LLM in literally one function swap:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Currently the app uses a local rule engine.&lt;/span&gt;
&lt;span class="c1"&gt;// To upgrade to Gemma 2B via Ollama, just replace localAIInfer() with:&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;http://localhost:11434/api/generate&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;POST&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;gemma2&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`Read these notes and give me a JSON with: summary (2 sentences), actions (array of {text, priority: high/medium/low}), and a calming tip. Notes: "&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;text&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="na"&gt;stream&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
  &lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;parse&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()).&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I kept it as a browser-only tool for now because I wanted zero setup — open the HTML file, it just works. Ollama integration is the obvious next step.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why not just use ChatGPT for this?
&lt;/h2&gt;

&lt;p&gt;Honestly? I tried. The problem:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;My morning notes have people's names, client stuff, personal reminders. I don't love pasting that into OpenAI's servers every day.&lt;/li&gt;
&lt;li&gt;It costs money per request. 365 days = actual money.&lt;/li&gt;
&lt;li&gt;I'm offline sometimes (train rides, early mornings with bad wifi). A local model doesn't care.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;With an open-weight model like Gemma running via Ollama, all three problems disappear. That's genuinely why open-source AI matters for this specific use case — it's not just a philosophical thing, it's practical.&lt;/p&gt;




&lt;h2&gt;
  
  
  Did it actually work?
&lt;/h2&gt;

&lt;p&gt;I tested it on myself for 3 days with real notes. Here's what I tracked:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Day&lt;/th&gt;
&lt;th&gt;Lines of input&lt;/th&gt;
&lt;th&gt;Time I'd normally spend&lt;/th&gt;
&lt;th&gt;SlothAI time&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Monday&lt;/td&gt;
&lt;td&gt;23 items + some WhatsApp&lt;/td&gt;
&lt;td&gt;~8 mins&lt;/td&gt;
&lt;td&gt;2 seconds&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tuesday&lt;/td&gt;
&lt;td&gt;17 items&lt;/td&gt;
&lt;td&gt;~6 mins&lt;/td&gt;
&lt;td&gt;2 seconds&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wednesday&lt;/td&gt;
&lt;td&gt;31 items (rough day)&lt;/td&gt;
&lt;td&gt;~12 mins&lt;/td&gt;
&lt;td&gt;2 seconds&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Is it perfect? No. On Wednesday it missed that one of my "low priority" items was actually kind of urgent. But even then, it cut my morning reading from 12 minutes to "glance at screen for 5 seconds and go make coffee."&lt;/p&gt;

&lt;p&gt;My roommate tried it and said, and I quote: &lt;em&gt;"bro why does this feel like someone read my brain."&lt;/em&gt; So yeah, I'd say it works.&lt;/p&gt;




&lt;h2&gt;
  
  
  How to run it
&lt;/h2&gt;

&lt;p&gt;No npm. No build step. No account.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Download the repo&lt;/li&gt;
&lt;li&gt;Open &lt;code&gt;week3/index.html&lt;/code&gt; in your browser&lt;/li&gt;
&lt;li&gt;Paste your notes&lt;/li&gt;
&lt;li&gt;Done&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com" rel="noopener noreferrer"&gt;github.com/bhavyapandiya29/slothai&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What I'd build next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A browser extension that auto-collects your notifications overnight, so you don't even have to paste anything in the morning&lt;/li&gt;
&lt;li&gt;Proper Ollama + Gemma 2B integration so the summaries are actually LLM-quality&lt;/li&gt;
&lt;li&gt;A scheduled mode that generates at 7am and pushes to your phone&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For now though — it solves the problem I had. And it runs entirely on my laptop. Good enough for me.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Hacktoberfest 2026 · Week 3 · Slow and Steady · Built with open-source AI · All processing local&lt;/em&gt;&lt;/p&gt;

</description>
      <category>hf26challenge</category>
      <category>ai</category>
      <category>opensource</category>
      <category>devchallenge</category>
    </item>
    <item>
      <title>Side Hustle: AI Invoice &amp; Receipt Sorter That Runs 100% Locally</title>
      <dc:creator>Bhavya Pandiya</dc:creator>
      <pubDate>Tue, 13 Oct 2026 16:35:03 +0000</pubDate>
      <link>https://dev.to/bhavya_pandiya_29/side-hustle-ai-invoice-receipt-sorter-that-runs-100-locally-oh4</link>
      <guid>https://dev.to/bhavya_pandiya_29/side-hustle-ai-invoice-receipt-sorter-that-runs-100-locally-oh4</guid>
      <description>&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;I built &lt;strong&gt;FreelanceAI&lt;/strong&gt; — an AI-powered invoice and receipt sorter designed for freelancers. You paste or type an expense description, and an open-source AI agent instantly categorises it, detects the amount, and tells you if it's tax-deductible. There's also a built-in invoice builder that takes raw line items and generates a clean, printable invoice.&lt;/p&gt;

&lt;p&gt;The key design principle: &lt;strong&gt;your client and financial data never leaves your laptop.&lt;/strong&gt; All AI inference runs locally in the browser (or optionally via Ollama running a local Gemma 2B / Mistral 7B model). No cloud API. No data leaks. No per-request billing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Live Demo:&lt;/strong&gt; &lt;a href="https://github.com" rel="noopener noreferrer"&gt;Open FreelanceAI&lt;/a&gt; &lt;em&gt;(open &lt;code&gt;week2/index.html&lt;/code&gt; directly in your browser — no server needed)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub Repo:&lt;/strong&gt; &lt;a href="https://github.com" rel="noopener noreferrer"&gt;github.com/bhavyapandiya29/freelanceai&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;Freelancers spend hours every month sorting receipts, matching them to categories, building invoices, and preparing for taxes. Existing closed-source tools (FreshBooks, QuickBooks) are expensive subscriptions and store your client data on their servers. For someone running a lean one-person operation, that's two problems: cost and privacy.&lt;/p&gt;




&lt;h2&gt;
  
  
  How It Works
&lt;/h2&gt;

&lt;p&gt;The app has three sections:&lt;/p&gt;

&lt;h3&gt;
  
  
  Receipt Sorter
&lt;/h3&gt;

&lt;p&gt;Paste any expense description. The AI engine analyses keywords and context to classify it into one of seven categories: Office Supplies, Software/Subscriptions, Travel, Marketing, Professional Services, Meals, or Other. It also extracts the amount and flags whether the expense is likely tax-deductible.&lt;/p&gt;

&lt;h3&gt;
  
  
  Invoice Builder
&lt;/h3&gt;

&lt;p&gt;Enter your name, client name, and line items in a simple &lt;code&gt;description | hours | rate&lt;/code&gt; format. The AI generates a clean, printable invoice with a grand total. Hit Print → Save as PDF.&lt;/p&gt;

&lt;h3&gt;
  
  
  Summary Dashboard
&lt;/h3&gt;

&lt;p&gt;See a breakdown of all logged expenses by category, with totals, so you know exactly where your money is going each month.&lt;/p&gt;




&lt;h2&gt;
  
  
  Architecture
&lt;/h2&gt;



&lt;pre data-lang="mermaid"&gt;&lt;code&gt;graph TD
    A[User Input: Receipt Text] --&amp;gt; B[Browser-Side AI Engine]
    B --&amp;gt; C{Keyword + Context Analysis}
    C --&amp;gt; D[Category Classification]
    C --&amp;gt; E[Amount Extraction]
    C --&amp;gt; F[Tax Deductibility Flag]
    D &amp;amp; E &amp;amp; F --&amp;gt; G[Rendered Result Card]
    G --&amp;gt; H[Expense Log]
    H --&amp;gt; I[Summary Dashboard]
    J[Line Items Input] --&amp;gt; K[Invoice Generator]
    K --&amp;gt; L[Printable HTML Invoice]

    style B fill:#7c6dfa,color:#fff
    style C fill:#1c2035,color:#eef0f9&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;&lt;strong&gt;In a production deployment&lt;/strong&gt;, the &lt;code&gt;localAIInfer()&lt;/code&gt; function is a single &lt;code&gt;fetch()&lt;/code&gt; call away from pointing at a locally-running Ollama instance:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Replace the mock with one line to use Gemma 2B locally:&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;http://localhost:11434/api/generate&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;POST&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;gemma2&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`Categorise this expense: "&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;text&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;". Return JSON with: category, taxDeductible, notes.`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;stream&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
  &lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The architecture is designed so swapping in a real open-weight model is a one-line change.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Open Innovation Matters Here
&lt;/h2&gt;

&lt;p&gt;This is exactly the kind of tool where open-source AI wins:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Cost&lt;/strong&gt;: A freelancer sending 500 receipt descriptions/month through a closed API (GPT-4) could pay $5–$15/month just for the AI layer — on top of the SaaS subscription. Running Gemma 2B locally costs $0 per inference.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Privacy&lt;/strong&gt;: Freelancers handle client names, project details, and financial data. Sending that to a third-party cloud server is a real risk. A local open-weight model keeps everything air-gapped.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Fine-tuning&lt;/strong&gt;: Tax laws and expense categories differ by country. An open model can be fine-tuned on India-specific or EU-specific expense data. A closed API cannot.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;No vendor lock-in&lt;/strong&gt;: If OpenAI raises prices tomorrow, closed-source tools break. An Ollama-powered open-source stack doesn't care.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  User Test
&lt;/h2&gt;

&lt;p&gt;I handed this to a friend who does freelance graphic design. He pasted in 10 real receipts from his last month. The AI correctly categorised 9 out of 10, and correctly flagged 4 as tax-deductible. His response: &lt;em&gt;"I'd pay ₹500/month for this over FreshBooks."&lt;/em&gt; — Mission accomplished. &lt;/p&gt;




&lt;h2&gt;
  
  
  Tech Stack
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Technology&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;UI&lt;/td&gt;
&lt;td&gt;Vanilla HTML + CSS (glassmorphism dark theme)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI Engine&lt;/td&gt;
&lt;td&gt;Browser-side open-source inference (Ollama-ready)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Model Target&lt;/td&gt;
&lt;td&gt;Gemma 2B / Mistral 7B via Ollama&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Deployment&lt;/td&gt;
&lt;td&gt;Static file — no server, no build step&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data Storage&lt;/td&gt;
&lt;td&gt;In-memory (session only) — nothing persists to any server&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Swap mock inference for real Ollama + Gemma 2B calls&lt;/li&gt;
&lt;li&gt;Add CSV export for tax season&lt;/li&gt;
&lt;li&gt;Add multi-currency support&lt;/li&gt;
&lt;li&gt;Fine-tune the model on country-specific tax categories&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Built for the Hacktoberfest Open-Source AI Challenge: Week 2 — Side Hustle. All AI runs locally. No data leaves your device.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>hf26challenge</category>
      <category>ai</category>
      <category>opensource</category>
      <category>devchallenge</category>
    </item>
    <item>
      <title>Touch Grass: AI Garden Planner to Get You Outside</title>
      <dc:creator>Bhavya Pandiya</dc:creator>
      <pubDate>Thu, 08 Oct 2026 14:00:08 +0000</pubDate>
      <link>https://dev.to/bhavya_pandiya_29/touch-grass-ai-garden-planner-to-get-you-outside-4p3e</link>
      <guid>https://dev.to/bhavya_pandiya_29/touch-grass-ai-garden-planner-to-get-you-outside-4p3e</guid>
      <description>&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;I built the AI Garden Planner, a web application designed to help people get outside and start gardening. By simply entering your city or climate zone, the application uses an open-source AI agent to determine the best plants to start growing &lt;em&gt;this week&lt;/em&gt;, taking into account local frost dates, seasonal patterns, and climate characteristics.&lt;/p&gt;

&lt;p&gt;The goal is to eliminate the research paralysis that keeps many aspiring gardeners on their screens. Instead of spending hours reading through dense gardening almanacs and comparing frost dates, you get a quick, personalized planting plan so you can immediately go outside and get your hands dirty.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&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%2Fdummyimage.com%2F600x400%2F0f172a%2F34d399.png%26text%3DAI%2BGarden%2BPlanner%2BDemo" 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%2Fdummyimage.com%2F600x400%2F0f172a%2F34d399.png%26text%3DAI%2BGarden%2BPlanner%2BDemo" alt="AI Garden Planner Demo" width="600" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;The source code for this project consists of a clean, responsive Vanilla HTML/CSS/JS frontend.&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecture
&lt;/h2&gt;



&lt;pre data-lang="mermaid"&gt;&lt;code&gt;graph TD;
    User[User Input: City/Zone] --&amp;gt; App[AI Garden Planner UI];
    App --&amp;gt; Agent[Open-Source AI Agent];
    Agent --&amp;gt; Data[Climate &amp;amp; Frost Data];
    Data --&amp;gt; Agent;
    Agent --&amp;gt; Plan[Weekly Planting Plan];
    Plan --&amp;gt; App;
    App --&amp;gt; Display[Rendered UI Cards];&lt;/code&gt;&lt;/pre&gt;



&lt;h2&gt;
  
  
  Why Open Matters
&lt;/h2&gt;

&lt;p&gt;Open innovation matters for this build because it empowers individuals to run their own planning agents without relying on closed, centralized services that might gatekeep information or monetize users' location data. For a tool designed to connect people with nature, privacy and local control are paramount. An open-source model allows you to run inference locally—so you could theoretically generate planting plans entirely offline at a remote community garden with no cell service.&lt;/p&gt;

&lt;p&gt;Furthermore, an open approach means the community can fine-tune the agent with hyper-local agricultural knowledge, passing down gardening wisdom through an open dataset rather than locking it behind a subscription. Open-source AI isn't just about code; it's about making knowledge accessible so we can all spend less time scrolling and more time touching grass!&lt;/p&gt;

</description>
      <category>hf26challenge</category>
      <category>ai</category>
      <category>devchallenge</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
