<?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: Satya Narasimha kumar</title>
    <description>The latest articles on DEV Community by Satya Narasimha kumar (@satya_narasimhakumar_4a7).</description>
    <link>https://dev.to/satya_narasimhakumar_4a7</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%2F4147007%2F52e7c8be-d46e-46aa-a3c2-d990e41607ed.jpg</url>
      <title>DEV Community: Satya Narasimha kumar</title>
      <link>https://dev.to/satya_narasimhakumar_4a7</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/satya_narasimhakumar_4a7"/>
    <language>en</language>
    <item>
      <title>I built a sales agent that still remembers the deal after I close the tab</title>
      <dc:creator>Satya Narasimha kumar</dc:creator>
      <pubDate>Mon, 28 Sep 2026 11:33:19 +0000</pubDate>
      <link>https://dev.to/satya_narasimhakumar_4a7/i-built-a-sales-agent-that-still-remembers-the-deal-after-i-close-the-tab-32pa</link>
      <guid>https://dev.to/satya_narasimhakumar_4a7/i-built-a-sales-agent-that-still-remembers-the-deal-after-i-close-the-tab-32pa</guid>
      <description>&lt;p&gt;I built a sales agent that still remembers the deal after I&lt;br&gt;
close the tab&lt;br&gt;
A Streamlit sales assistant that uses Hindsight for persistent deal memory and Groq for answers.&lt;br&gt;
Sales work is not one conversation. It is weeks of meetings, emails, objections, pricing talks, and changing&lt;br&gt;
stakeholders. The details that matter most—who the CFO is, why price is a blocker, which competitor just&lt;br&gt;
entered the shortlist—are easy to lose between sessions.&lt;br&gt;
I built a conversational deal agent for that problem. It uses Hindsight as persistent memory and Groq to&lt;br&gt;
generate answers, so it can recall deal context across interactions instead of starting from zero every time.&lt;br&gt;
The problem&lt;br&gt;
Sales representatives often reopen CRM notes, meeting transcripts, Slack threads, and personal notebooks just&lt;br&gt;
to reconstruct an active deal. That retrieval tax is expensive. Context is scattered across tools. Objections get&lt;br&gt;
buried. New teammates inherit incomplete history. Simple questions such as “What did we already say about&lt;br&gt;
pricing?” require hunting rather than asking.&lt;br&gt;
A chatbot that only remembers the current session is not enough. The useful agent is the one that still knows&lt;br&gt;
the deal after the app is restarted. This project gives the agent that capability. Over time it can recall customer&lt;br&gt;
and stakeholder details, objections, competitors, pricing discussions, deal status, and previous interaction&lt;br&gt;
context. The design goal is simple: the agent should get more useful the longer it is used.&lt;br&gt;
What I built&lt;br&gt;
The Deal Intelligence Agent is a Streamlit chat application. A sales rep talks to it in natural language. Before&lt;br&gt;
each reply, the app asks Hindsight for memories related to the latest message. Those memories are added to&lt;br&gt;
the model context. After the reply, new deal information is stored so later questions can retrieve it.&lt;br&gt;
That loop—recall, generate, retain—is the product. It is not a full CRM replacement. It is a memory-first&lt;br&gt;
conversation layer on top of deal knowledge: fast to query, persistent across sessions, and designed around&lt;br&gt;
how reps actually talk about deals.&lt;br&gt;
Architecture&lt;br&gt;
The flow is linear:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A sales rep sends a message in the Streamlit chat UI.&lt;/li&gt;
&lt;li&gt;The app calls Hindsight Recall and pulls persistent memories relevant to that prompt.&lt;/li&gt;
&lt;li&gt;Recalled context is combined with the user message and sent to a Groq LLM (openai/gpt-oss-20b
via an OpenAI-compatible API).&lt;/li&gt;
&lt;li&gt;The model produces the agent reply.
Persistent memory for sales conversations Page 1
Deal Intelligence Agent Technical Article&lt;/li&gt;
&lt;li&gt;The app calls Hindsight Retain and stores the new deal information.
Memory sits in the critical path of every turn, not off to the side.
How memory works
Hindsight is used in two places.
Recall. Before generation, the application requests memories related to the latest user message:
memories = recall(prompt)
Those memories are injected into the system context so the model answers with deal history, not just the
current sentence.
Retain. After the response is produced, the user’s deal information is stored:
remember(prompt)
Later questions can retrieve that information even if the Streamlit process was restarted. That is the difference
between session chat history and durable deal memory.
Example
A representative can write:
“Acme Corp is evaluating our product. Sarah, the CFO, is the main decision-maker. Their main
objection is that our price is too high. They are also considering CompetitorX.”
Later they can ask:
“What do you know about the Acme deal?”
The agent should answer with the remembered stakeholders, objection, and competitive set—without the user
restating any of it.
A strong demonstration is: enter a deal detail, ask a follow-up, add another fact, ask the agent to recall it,
restart the application, and ask again. If the last step still works, persistent memory is doing its job.
Stack
The stack is intentionally small: Python for application logic, Streamlit for the chat UI, Hindsight by
Vectorize for recall and retain, the Groq API with openai/gpt-oss-20b for generation, the OpenAI Python
SDK against Groq’s OpenAI-compatible API, and python-dotenv for environment variables.
deal-intelligence-agent/
app.py
requirements.txt
.env.example
.gitignore
README.md
Persistent memory for sales conversations Page 2
Deal Intelligence Agent Technical Article
docs/
architecture.md
demo-script.md
submission-checklist.md
Setup
Clone the repository, create a virtual environment, install dependencies from requirements.txt, and copy
.env.example to .env. Add:
HINDSIGHT_API_KEY=your_key
GROQ_API_KEY=your_key
Never commit .env. Then run streamlit run app.py and open &lt;a href="http://localhost:8501" rel="noopener noreferrer"&gt;http://localhost:8501&lt;/a&gt;.
Security
API keys come from environment variables only. Do not upload .env files, keys, passwords, private customer
data, or confidential company information. For public demos, use synthetic deal data unless there is
permission to publish real accounts.
Why this works
Most sales copilots fail in the same place: they sound fluent in one thread and forgetful in the next. CRM
systems store records, but they are not conversational. Chatbots are conversational, but they usually forget.
This agent sits between those two worlds. It accepts natural language, remembers people, objections,
competitors, pricing, and status, and improves across interactions rather than only within a single session. An
agent that remembers the Acme CFO, the price objection, and CompetitorX is already more useful on the fifth
question than on the first.
What I would add next
Natural next steps include structured deal profiles; automatic extraction of customer, stakeholder, objection,
competitor, and next-action fields; deal-stage tracking; ROI and pricing analysis; memory confidence and
source display; CRM integration; and human approval before external actions. Those extensions make
memory more inspectable. They do not change the core idea: persist the deal, then talk to it.
Sales teams do not need another chatbot that forgets the deal when the tab closes. They need an agent that can
be told “Sarah is the CFO and price is the objection” once, and still know it tomorrow. That is what this
project does: Streamlit for the conversation, Groq for the language, and Hindsight for the memory that makes
the conversation compound over time.
Persistent memory for sales conversations 
&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%2F9phkrd7kzkyq8cv45zb2.png" alt=" " width="800" height="520"&gt;
github repositiores - deal-intelligence-agent
&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%2F2ojx8cgnb3s5meoyx9si.png" alt=" " width="800" height="520"&gt; &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;team photo - satya and jathin &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%2Fxxzsjyr7wuv4my6boy89.jpg" 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%2Fxxzsjyr7wuv4my6boy89.jpg" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>python</category>
      <category>llm</category>
      <category>agents</category>
    </item>
  </channel>
</rss>
