<?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: Gargi Joshi</title>
    <description>The latest articles on DEV Community by Gargi Joshi (@gargijoshi9).</description>
    <link>https://dev.to/gargijoshi9</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%2F4166661%2F04793bac-97d2-413e-8cdd-b6a0d5069d2b.jpg</url>
      <title>DEV Community: Gargi Joshi</title>
      <link>https://dev.to/gargijoshi9</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gargijoshi9"/>
    <language>en</language>
    <item>
      <title>MSME-360: How I Kept Every Tenant's Hindsight Memory Strictly Separate</title>
      <dc:creator>Gargi Joshi</dc:creator>
      <pubDate>Sat, 07 Nov 2026 13:54:06 +0000</pubDate>
      <link>https://dev.to/gargijoshi9/msme-360-how-i-kept-every-tenants-hindsight-memory-strictly-separate-16o1</link>
      <guid>https://dev.to/gargijoshi9/msme-360-how-i-kept-every-tenants-hindsight-memory-strictly-separate-16o1</guid>
      <description>&lt;p&gt;If an assistant remembers everything about a business, you had better be sure it never mixes that memory with another business.&lt;/p&gt;

&lt;p&gt;What the system does&lt;/p&gt;

&lt;p&gt;MSME-360 is a single dashboard for small and medium businesses. It has a chat assistant, a unified inbox for WhatsApp, Instagram, Facebook and Gmail, GST invoice generation, receipt scanning, and a live link to Google Sheets. The assistant uses Hindsight agent memory (&lt;a href="https://github.com/vectorize-io/hindsight" rel="noopener noreferrer"&gt;https://github.com/vectorize-io/hindsight&lt;/a&gt;) so it can remember past decisions and instructions across sessions.&lt;/p&gt;

&lt;p&gt;Hindsight documentation: &lt;a href="https://hindsight.vectorize.io/" rel="noopener noreferrer"&gt;https://hindsight.vectorize.io/&lt;/a&gt;&lt;br&gt;
Agent memory explainer: &lt;a href="https://vectorize.io/what-is-agent-memory" rel="noopener noreferrer"&gt;https://vectorize.io/what-is-agent-memory&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I built the backend: Node.js, Express, MongoDB with Mongoose, JWT authentication, encryption for stored credentials, PDF invoices and billing.&lt;/p&gt;

&lt;p&gt;The through-line: one rule for every record&lt;/p&gt;

&lt;p&gt;The rule is simple. Every record belongs to a userId, and every query is filtered by it. That covers vendors, customers, inventory, inbox threads, vector records and Google Sheet IDs.&lt;/p&gt;

&lt;p&gt;A business owner who asks "who is my most reliable vendor?" must only ever get an answer built from their own data and their own memory. A mix up here would not be a small bug. It would end the product.&lt;/p&gt;

&lt;p&gt;So I put the check in one place. Every protected route reads the JWT bearer token, finds the user, and passes userId down into the controllers and services. Nothing below that layer is allowed to query without it. When we later added memory and search, the same rule carried over without any new thinking.&lt;/p&gt;

&lt;p&gt;Keeping secrets safe&lt;/p&gt;

&lt;p&gt;Connecting WhatsApp, Instagram, Facebook and Gmail means storing access tokens for other people's accounts. We never store those as plain text. I wrapped them in AES-256-GCM encryption using Node's built in crypto module, so a leaked database row is useless without the server key. The secret box decrypts only when a message actually needs to be sent.&lt;/p&gt;

&lt;p&gt;Architecture Diagram&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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fevupn36tmmwol9eqohbx.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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fevupn36tmmwol9eqohbx.png" alt="Architecture Diagram" width="800" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Invoices from a sentence&lt;/p&gt;

&lt;p&gt;The chat can create invoices from messages such as "Create an invoice for Acme Corp for ₹25,000". I used PDFKit to generate the file on the fly, with the company name, GSTIN, PAN and tax rate coming from the user's settings.&lt;/p&gt;

&lt;p&gt;This is where memory shows its value. After the owner tells the assistant once to always add 18 percent GST and use 15 day payment terms, Hindsight recalls that instruction and the invoice route receives the right values without asking again.&lt;/p&gt;

&lt;p&gt;Billing and uploads&lt;/p&gt;

&lt;p&gt;New accounts start on a trial subscription, and the billing controller tracks the plan. For uploads I used Multer to handle receipts and PDFs, then passed the files to the OCR service my teammate built. Keeping uploads, billing and auth in clear separate controllers kept the codebase easy for five people to work in at the same time.&lt;/p&gt;

&lt;p&gt;What went wrong&lt;/p&gt;

&lt;p&gt;My first version of the user filter lived inside each controller. Two controllers drifted apart and one forgot a check during testing. I caught it, but it scared me enough to move the logic into shared middleware. If a rule has to be true everywhere, put it in one place and make it impossible to skip.&lt;/p&gt;

&lt;p&gt;Lessons I would reuse&lt;/p&gt;

&lt;p&gt;1.⁠ ⁠Make tenant isolation a rule of the framework, not a habit of the developers.&lt;/p&gt;

&lt;p&gt;2.⁠ ⁠Return fast, sync later. Slow third party calls should never sit in the user's click path.&lt;/p&gt;

&lt;p&gt;3.⁠ ⁠Encrypt third party tokens at rest from day one. It is much harder to add later.&lt;/p&gt;

&lt;p&gt;4.⁠ ⁠Treat memory as user data. Anything an agent remembers deserves the same access rules as a database row.&lt;/p&gt;

&lt;p&gt;5.⁠ ⁠Split controllers early. Auth, billing, uploads and search are easier to debug apart.&lt;/p&gt;

&lt;p&gt;We used Hindsight Cloud for memory, redeeming the promo code MEMHACK99 in the billing section after we registered to get the free credits. We worked with the Band AI desktop app, and the Hindsight community Slack was where we asked our questions. Language model calls go through Groq.&lt;/p&gt;

&lt;p&gt;Memory is only a feature when it is safe. Once it is safe, it becomes the reason people trust the product.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://pbl-project-tan.vercel.app/" rel="noopener noreferrer"&gt;GITHUB&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/reva-32/pbl_project" rel="noopener noreferrer"&gt;LIVE LINK&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=x-LB7Hc1c6I" rel="noopener noreferrer"&gt;YOUTUBE&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>hindsight</category>
      <category>codein</category>
    </item>
    <item>
      <title>🦥 SlothMode — Less Overwhelm, Smaller Steps</title>
      <dc:creator>Gargi Joshi</dc:creator>
      <pubDate>Sat, 24 Oct 2026 07:47:09 +0000</pubDate>
      <link>https://dev.to/gargijoshi9/slothmode-less-overwhelm-smaller-steps-934</link>
      <guid>https://dev.to/gargijoshi9/slothmode-less-overwhelm-smaller-steps-934</guid>
      <description>&lt;h1&gt;
  
  
  🦥 SlothMode: Less Overwhelm, Smaller Steps — AI-Powered Planning at a Human Pace
&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;Ever spend so much time planning your tasks that you have no energy left to actually do them?&lt;/p&gt;

&lt;p&gt;I built &lt;strong&gt;SlothMode&lt;/strong&gt;, a gentle, AI-assisted task planner designed to make productivity feel less overwhelming. It is especially useful for students and people who struggle with executive dysfunction or planning anxiety.&lt;/p&gt;

&lt;p&gt;Instead of dumping a huge to-do list into a rigid calendar, SlothMode helps turn tasks into manageable steps and creates a schedule that leaves room for breaks and everyday routines.&lt;/p&gt;

&lt;p&gt;🦥 &lt;strong&gt;What makes it different?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Personalized onboarding:&lt;/strong&gt; Set up sleep, meals, college or work hours, and other routine preferences.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local AI assistance:&lt;/strong&gt; Gemma 3 1B helps classify tasks, estimate durations, assess urgency, and suggest smaller subtasks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gentle scheduling:&lt;/strong&gt; A deterministic scheduler organizes tasks into focus sessions and breaks while respecting deadlines and protected routine blocks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flexible planning:&lt;/strong&gt; Switch between day, week, and month views, edit tasks, track subtasks, and reschedule overdue work.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Graceful fallback:&lt;/strong&gt; If Ollama or the model is unavailable, rule-based estimation helps the app remain usable.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal isn't to squeeze more work into every minute. It's to make starting feel easier.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://github.com/gargijoshi9/SlothMode/blob/main/README.md" rel="noopener noreferrer"&gt;Click here for video and screenshots&lt;/a&gt;&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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwqlu3jis08klhknqiy4u.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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwqlu3jis08klhknqiy4u.png" alt=" " width="800" height="439"&gt;&lt;/a&gt;&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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkqxnds5qt4rc1cojl1dt.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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkqxnds5qt4rc1cojl1dt.png" alt=" " width="800" height="441"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Screenshots and a walkthrough are also available in the repository.&lt;/p&gt;

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

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

&lt;p&gt;Built with React, TypeScript, Vite, Express, Ollama, and Gemma 3 1B.&lt;/p&gt;

&lt;p&gt;Check out the repository for the source code, setup instructions, and implementation details.&lt;/p&gt;

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

&lt;p&gt;SlothMode combines local AI assistance with predictable scheduling logic.&lt;/p&gt;

&lt;p&gt;The frontend is built with React and TypeScript, with Vite for development and building. An Express backend exposes endpoints for task estimation, classification, and planning.&lt;/p&gt;

&lt;p&gt;For AI-assisted task understanding, I integrated &lt;strong&gt;Gemma 3 1B through Ollama&lt;/strong&gt;. The model can help estimate how long a task might take, identify its category and urgency, and suggest smaller steps.&lt;/p&gt;

&lt;p&gt;But I deliberately kept the actual scheduling deterministic.&lt;/p&gt;

&lt;p&gt;The model helps interpret the task; the scheduler decides how to fit work into the day. It organizes focus sessions and breaks around deadlines and protected routine blocks rather than asking a language model to invent calendar timestamps.&lt;/p&gt;

&lt;p&gt;I also added validation and rule-based fallbacks for unavailable models or invalid responses. This matters because a productivity app should not become unusable just because its AI dependency is temporarily unavailable.&lt;/p&gt;

&lt;p&gt;One of the most important parts was connecting personalized onboarding to actual scheduling behavior. Routine preferences should influence the plan, not merely make the onboarding screen look personalized.&lt;/p&gt;

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

&lt;p&gt;Open innovation made it possible to experiment with AI-assisted planning without building the entire experience around a closed, hosted model API.&lt;/p&gt;

&lt;p&gt;Using an open-weight model locally through Ollama gave me more control over the integration and let me develop around a model I could run on my own machine.&lt;/p&gt;

&lt;p&gt;It also encouraged a useful architectural separation: AI handles flexible language understanding, while deterministic code handles scheduling decisions.&lt;/p&gt;

&lt;p&gt;That combination makes the application easier to reason about and gives it a fallback path when the model isn't available.&lt;/p&gt;

&lt;p&gt;Open tools also make the project easier for other developers to inspect, learn from, and extend. Contributors can examine the integration, experiment with different models, or improve the scheduler without needing to treat the AI service as a black box.&lt;/p&gt;

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

&lt;p&gt;SlothMode is meant to reduce the mental effort between “I have so much to do” and “Here's one small thing I can start.”&lt;/p&gt;

&lt;p&gt;I haven't measured time saved yet, so I won't make up a number. For now, the goal is a calmer starting point, more realistic plans, and permission to take things one step at a time.&lt;/p&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; — SlothMode uses Gemma 3 1B locally through Ollama for task classification, time estimates, urgency, and suggested subtasks.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Less overwhelm. Smaller steps. A gentler way to get things done.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Thanks for checking out SlothMode! 🦥&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;u&gt;Always open to suggesstion and improvements !&lt;/u&gt;&lt;/em&gt; ❤️&lt;/p&gt;

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