<?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: Reva Kale</title>
    <description>The latest articles on DEV Community by Reva Kale (@reva_kale).</description>
    <link>https://dev.to/reva_kale</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%2F4232190%2F1860a3e0-47ce-433d-9260-4cdb209ca959.png</url>
      <title>DEV Community: Reva Kale</title>
      <link>https://dev.to/reva_kale</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/reva_kale"/>
    <language>en</language>
    <item>
      <title>MSME-360: Building an AI Assistant That Remembers How Small Businesses Work</title>
      <dc:creator>Reva Kale</dc:creator>
      <pubDate>Sat, 07 Nov 2026 13:53:42 +0000</pubDate>
      <link>https://dev.to/reva_kale/msme-360-building-an-ai-assistant-that-remembers-how-small-businesses-work-40i7</link>
      <guid>https://dev.to/reva_kale/msme-360-building-an-ai-assistant-that-remembers-how-small-businesses-work-40i7</guid>
      <description>&lt;p&gt;&lt;strong&gt;By Reva Kale&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I started this project thinking one retrieval system would be enough. I was wrong, and the mistake taught me what each tool is actually good at.&lt;/p&gt;

&lt;h2&gt;
  
  
  What We Are Building
&lt;/h2&gt;

&lt;p&gt;MSME-360 is an assistant and dashboard for small businesses. It reads your messages, scans your receipts, creates GST invoices, and keeps your records in sync with Google Sheets.&lt;/p&gt;

&lt;p&gt;I built the AI side: the chat, the search, and the memory.&lt;/p&gt;

&lt;p&gt;The memory comes from &lt;a href="https://github.com/vectorize-io/hindsight" rel="noopener noreferrer"&gt;Hindsight&lt;/a&gt;, an open-source agent memory system from Vectorize.&lt;/p&gt;

&lt;p&gt;A few useful resources:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://vectorize.io/what-is-agent-memory" rel="noopener noreferrer"&gt;Agent Memory Explained&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hindsight.vectorize.io/" rel="noopener noreferrer"&gt;Hindsight Documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can also explore our project:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live Demo:&lt;/strong&gt; &lt;a href="https://pbl-project-tan.vercel.app/" rel="noopener noreferrer"&gt;https://pbl-project-tan.vercel.app/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/reva-32/pbl_project" rel="noopener noreferrer"&gt;https://github.com/reva-32/pbl_project&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Project Demo Video:&lt;/strong&gt; &lt;a href="https://www.youtube.com/watch?v=x-LB7Hc1c6I" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=x-LB7Hc1c6I&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Two Kinds of Knowing
&lt;/h2&gt;

&lt;p&gt;A business owner asks two very different kinds of questions.&lt;/p&gt;

&lt;p&gt;The first is about facts in their records: &lt;em&gt;"What was our highest invoice last month?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The answer sits in a receipt or an invoice somewhere.&lt;/p&gt;

&lt;p&gt;The second is about them: &lt;em&gt;"Make this invoice like the last one."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The answer is not in any document. It is in the habits, decisions, and instructions the owner has given over time.&lt;/p&gt;

&lt;p&gt;I tried to use one system for both, and the results were mushy.&lt;/p&gt;

&lt;p&gt;Vector search is great at finding documents but has no idea what the owner said last Tuesday. Memory is great at remembering the owner but should not be the store for every receipt.&lt;/p&gt;

&lt;p&gt;So I split the job.&lt;/p&gt;

&lt;h2&gt;
  
  
  Part One: Private Retrieval
&lt;/h2&gt;

&lt;p&gt;Every uploaded receipt, bill, or invoice is turned into text, summarised, and converted into a 384-dimensional embedding.&lt;/p&gt;

&lt;p&gt;These live on the &lt;code&gt;DecisionEvent&lt;/code&gt; collection in MongoDB Atlas with a vector index called &lt;code&gt;vector_index&lt;/code&gt; using cosine similarity.&lt;/p&gt;

&lt;p&gt;When the owner asks a question, I compute an embedding for it and run &lt;code&gt;$vectorSearch&lt;/code&gt;, always filtered by &lt;code&gt;userId&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;If the vector search comes back thin, a keyword regex fallback catches the obvious matches.&lt;/p&gt;

&lt;p&gt;The top three records go forward.&lt;/p&gt;

&lt;h2&gt;
  
  
  Part Two: Hindsight Memory
&lt;/h2&gt;

&lt;p&gt;Before the model answers, I recall relevant memories from Hindsight: past decisions, patterns, and instructions.&lt;/p&gt;

&lt;p&gt;After the conversation, anything worth keeping is retained.&lt;/p&gt;

&lt;p&gt;Over time, the assistant can also reflect on what it has stored to form a more useful picture of how the business runs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Putting It Together
&lt;/h2&gt;

&lt;p&gt;Here's how the complete flow works:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Question&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Embedding + &lt;code&gt;$vectorSearch&lt;/code&gt; (&lt;code&gt;userId&lt;/code&gt; filter) + keyword fallback&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Top 3 private records&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Hindsight recall + user profile defaults&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Groq model&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Answer, or an invoice PDF&lt;/p&gt;

&lt;p&gt;The model gets documents that say what happened and memories that say how this owner likes things done.&lt;/p&gt;

&lt;h2&gt;
  
  
  What It Looks Like in Use
&lt;/h2&gt;

&lt;p&gt;On day one, the owner asks for an invoice for Acme Corp for ₹25,000.&lt;/p&gt;

&lt;p&gt;The assistant has to ask about tax and payment terms. The owner says to always add 18 percent GST and use 15-day terms.&lt;/p&gt;

&lt;p&gt;That instruction is retained.&lt;/p&gt;

&lt;p&gt;Days later, a different customer, a different amount. The assistant does not ask. It builds the invoice with the right tax and terms.&lt;/p&gt;

&lt;p&gt;Without memory, every session starts from zero.&lt;/p&gt;

&lt;p&gt;With memory, the assistant feels like it has worked here for months.&lt;/p&gt;

&lt;h2&gt;
  
  
  Models and Function Calling
&lt;/h2&gt;

&lt;p&gt;We run on Groq, using models such as &lt;code&gt;llama-3.3-70b&lt;/code&gt; and &lt;code&gt;openai/gpt-oss-120b&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The invoice flow relies on function calling, and small models sometimes return a malformed call.&lt;/p&gt;

&lt;p&gt;I added handling so that a bad tool call is caught and retried instead of showing the user an error.&lt;/p&gt;

&lt;p&gt;If you build with tools, plan for this early.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Was Painful
&lt;/h2&gt;

&lt;p&gt;Deciding what to retain took longer than I expected.&lt;/p&gt;

&lt;p&gt;If you retain everything, recall fills up with noise.&lt;/p&gt;

&lt;p&gt;I now keep instructions, preferences, and business decisions, and leave raw document text to the vector index.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lessons I Would Reuse
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Separate "what is in my files" from "how do I work."&lt;/strong&gt; Search and memory solve different problems.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Filter by user at the retrieval layer.&lt;/strong&gt; Never trust the prompt to do isolation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep a keyword fallback.&lt;/strong&gt; Vector search alone misses exact names and numbers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Be picky about what you retain.&lt;/strong&gt; Quality of recall depends on quality of retention.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Expect tool calling to fail sometimes.&lt;/strong&gt; Catch it and retry quietly.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The Tools
&lt;/h2&gt;

&lt;p&gt;We ran Hindsight on Hindsight Cloud, adding the promo code &lt;code&gt;MEMHACK99&lt;/code&gt; in the billing section after registering for $50 of free credits.&lt;/p&gt;

&lt;p&gt;We used the Band AI desktop app while building, and the Hindsight community Slack was a big help when we had questions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Retrieval tells your assistant what is true.&lt;/p&gt;

&lt;p&gt;Memory tells it who it is working for.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You need both.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>codein</category>
      <category>hindsight</category>
    </item>
  </channel>
</rss>
