<?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: Krushi Koyagura</title>
    <description>The latest articles on DEV Community by Krushi Koyagura (@callmekrushi).</description>
    <link>https://dev.to/callmekrushi</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%2F4150528%2Fddfec404-6d52-4bd9-95bf-e75951dbe1e8.png</url>
      <title>DEV Community: Krushi Koyagura</title>
      <link>https://dev.to/callmekrushi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/callmekrushi"/>
    <language>en</language>
    <item>
      <title>Same invoice, same LLM, one Hindsight memory: email became a call</title>
      <dc:creator>Krushi Koyagura</dc:creator>
      <pubDate>Tue, 29 Sep 2026 18:03:44 +0000</pubDate>
      <link>https://dev.to/callmekrushi/same-invoice-same-llm-one-hindsight-memory-email-became-a-call-2b3j</link>
      <guid>https://dev.to/callmekrushi/same-invoice-same-llm-one-hindsight-memory-email-became-a-call-2b3j</guid>
      <description>&lt;p&gt;I wanted to ask one question: if an agent gets the same overdue invoice and uses exactly the same language model, how much can its suggestion change when the only new thing is customer memory?&lt;/p&gt;

&lt;p&gt;So I created &lt;em&gt;PayRecall, a test for B2B accounts receivable. It does not send emails make calls or link to an accounting system. Given an invoice it suggests the next step to take: **who to talk to which way to communicate what tone to use, when to act and how to start the conversation&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;The part that is interesting is the controlled test. The &lt;em&gt;memory-off&lt;/em&gt; path sees a simple customer profile. The &lt;em&gt;memory-on&lt;/em&gt; path sees the invoice and model but also gets information about the customer from Hindsight.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Why the Baseline Keeps Making the Same Mistake&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
An overdue invoice has details like the amount, due date, customer and contacts. It does not have the history that shows whether a collection strategy will work.&lt;/p&gt;

&lt;p&gt;For example previous emails to a shared accounts inbox may not have been read calls to an AP decision-maker may have led to a promise to pay or a strong message may have started a disagreement. The person who was contacted before might have left the company.&lt;/p&gt;

&lt;p&gt;A normal AI does not know any of this unless that information is in the prompt. Of adding historical messages each time PayRecall uses &lt;em&gt;Hindsight&lt;/em&gt; as the memory part that keeps finds, puts together and thinks about customer history.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What Hindsight Brings&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For the memory-on path PayRecall finds customer-specific memories using tags. It also uses a customer model and looks at the same information again.&lt;/p&gt;

&lt;p&gt;The design keeps memory separate from the decision part. A special memory part handles Hindsight. The decision agent uses the information that is found.&lt;/p&gt;

&lt;p&gt;Customer tags also help keep things separate: a question about one customer should not accidentally find another customers history.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When the Suggestion Changes&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The example uses &lt;em&gt;Meridian Retail&lt;/em&gt;. An overdue invoice, INV-2041.&lt;/p&gt;

&lt;p&gt;Without memory the model can suggest an action: contact the accounts-payable contact by email use a polite tone and ask for a payment date.&lt;/p&gt;

&lt;p&gt;With memory the situation changes. Previous records show that emails to the shared accounts inbox were not read calls to the AP decision-maker were successful a strong message led to a dispute and the old contact left. A new AP contact also has a time when they can be reached.&lt;/p&gt;

&lt;p&gt;The memory-based suggestion can then be a call to the contact during their available time using a friendly rather than strict way.&lt;/p&gt;

&lt;p&gt;The main point is not that calling is always better than emailing. &lt;em&gt;The point is that the agent now has proof that this customer might need a way.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;From Past to a Customer Plan&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The data has 35 stories covering several months. They look like collection notes: emails, call summaries WhatsApp attempts, promises to pay, arguments and changes in contacts.&lt;/p&gt;

&lt;p&gt;Of turning every note into a fixed format PayRecall keeps the stories and lets Hindsight find useful facts.&lt;/p&gt;

&lt;p&gt;Repeated events can then become higher-level trends. For example one event says an email was sent. A customer-level trend might show that the shared accounts inbox often does not get a response.&lt;/p&gt;

&lt;p&gt;This information helps build the customers model, which is updated when new results come in.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Agent Can Learn From New Results&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After a suggestion PayRecall lets a person record what happened. The system saves the &lt;em&gt;agents action&lt;/em&gt; and the &lt;em&gt;customers response&lt;/em&gt; separately.&lt;/p&gt;

&lt;p&gt;Hindsight can then find facts from both update the customer model and affect the suggestion.&lt;/p&gt;

&lt;p&gt;One test taught a lesson: I said the customer preferred email. Later suggestions started to use that preference. The system was not going wrong—it had learned what I told it.&lt;/p&gt;

&lt;p&gt;This means memory tests must be treated like database tests. Test data can become part of the agents actions and must be found kept separate and cleaned up.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What the Test Shows&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The strongest result is not one suggestion. It is the difference between two tests:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Same invoice. Same model. Same process. Different facts available.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Without memory the model suggests an action. With customer memory it can use results changes in contact timing preferences and old strategies that did not work.&lt;/p&gt;

&lt;p&gt;That is the role I wanted Hindsight to have in PayRecall: not another prompt with old text but a &lt;em&gt;long-term part, between what happened before and what the agent decides next&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;PayRecall is still a small model using fake data and human-entered results.. The test shows the main idea clearly: &lt;em&gt;memory can change an agents actions without changing the model itself.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Hindsight GitHub: &lt;a href="https://github.com/vectorize-io/hindsight" rel="noopener noreferrer"&gt;https://github.com/vectorize-io/hindsight&lt;/a&gt; documentation: &lt;a href="https://hindsight.vectorize.io/" rel="noopener noreferrer"&gt;https://hindsight.vectorize.io/&lt;/a&gt; Vectorize agent memory: &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;&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%2F1uu6dovawa2lcd218lnw.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%2F1uu6dovawa2lcd218lnw.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;br&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%2F26zeysluvr32p0848st2.jpeg" 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%2F26zeysluvr32p0848st2.jpeg" alt=" " width="800" height="362"&gt;&lt;/a&gt;&lt;br&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%2F7mi1ye8swqgfnpqks17l.jpeg" 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%2F7mi1ye8swqgfnpqks17l.jpeg" alt=" " width="800" height="359"&gt;&lt;/a&gt;&lt;br&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%2F3olcx7age95r223ny1tl.jpeg" 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%2F3olcx7age95r223ny1tl.jpeg" alt=" " width="800" height="406"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>hindsight</category>
      <category>agents</category>
      <category>api</category>
      <category>llm</category>
    </item>
  </channel>
</rss>
