<?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: Hasish Infant</title>
    <description>The latest articles on DEV Community by Hasish Infant (@hasish_infant_882f4971c11).</description>
    <link>https://dev.to/hasish_infant_882f4971c11</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3940708%2F9552a0d8-3033-4135-b06e-42d3e83926bb.png</url>
      <title>DEV Community: Hasish Infant</title>
      <link>https://dev.to/hasish_infant_882f4971c11</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hasish_infant_882f4971c11"/>
    <language>en</language>
    <item>
      <title>My AI Negotiation Agent Remembered a Brand Paid Late — Before I Did</title>
      <dc:creator>Hasish Infant</dc:creator>
      <pubDate>Tue, 19 May 2026 16:40:42 +0000</pubDate>
      <link>https://dev.to/hasish_infant_882f4971c11/my-ai-negotiation-agent-remembered-a-brand-paid-late-before-i-did-1185</link>
      <guid>https://dev.to/hasish_infant_882f4971c11/my-ai-negotiation-agent-remembered-a-brand-paid-late-before-i-did-1185</guid>
      <description>&lt;p&gt;Six months after a nightmare skincare campaign, the same brand came back with another offer.&lt;/p&gt;

&lt;p&gt;Same lowball number.&lt;br&gt;
Same vague deliverables.&lt;br&gt;
Same missing payment terms.&lt;/p&gt;

&lt;p&gt;I had forgotten the details.&lt;/p&gt;

&lt;p&gt;The brand was counting on that.&lt;/p&gt;

&lt;p&gt;My AI assistant had forgotten everything too.&lt;/p&gt;

&lt;p&gt;It generated another polite, professional counteroffer — completely ignoring:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the delayed payment&lt;/li&gt;
&lt;li&gt;the unpaid revisions&lt;/li&gt;
&lt;li&gt;and the fact that the brand had eventually settled much higher after negotiation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The AI sounded intelligent.&lt;/p&gt;

&lt;p&gt;But it was negotiating blind.&lt;/p&gt;

&lt;p&gt;That moment became the starting point for DealMind.&lt;/p&gt;

&lt;p&gt;Not another AI chatbot.&lt;/p&gt;

&lt;p&gt;An AI negotiation system with persistent memory.&lt;/p&gt;

&lt;p&gt;Because negotiation isn’t just language.&lt;/p&gt;

&lt;p&gt;It’s accumulated leverage.&lt;/p&gt;


&lt;h1&gt;
  
  
  The Problem With Most AI Agents
&lt;/h1&gt;

&lt;p&gt;Most AI systems today are stateless.&lt;/p&gt;

&lt;p&gt;They generate impressive replies, summarize conversations, and sound intelligent for a single interaction.&lt;/p&gt;

&lt;p&gt;Then they forget everything.&lt;/p&gt;

&lt;p&gt;That creates a huge problem in negotiation systems because negotiation is not transactional.&lt;/p&gt;

&lt;p&gt;It’s historical.&lt;/p&gt;

&lt;p&gt;Every previous interaction changes leverage.&lt;/p&gt;

&lt;p&gt;Human talent managers understand this intuitively.&lt;/p&gt;

&lt;p&gt;They remember:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;which brands always lowball&lt;/li&gt;
&lt;li&gt;which companies delay invoices&lt;/li&gt;
&lt;li&gt;which partnerships generate strong conversions&lt;/li&gt;
&lt;li&gt;which campaigns spiral into revision chaos&lt;/li&gt;
&lt;li&gt;when to push harder&lt;/li&gt;
&lt;li&gt;when to walk away&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That accumulated context becomes strategic advantage.&lt;/p&gt;

&lt;p&gt;Most AI systems throw it away after every session.&lt;/p&gt;

&lt;p&gt;The standard AI negotiation workflow looks something like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Brand sends a DM&lt;/li&gt;
&lt;li&gt;You paste it into ChatGPT&lt;/li&gt;
&lt;li&gt;AI generates a confident-sounding counter&lt;/li&gt;
&lt;li&gt;Repeat from scratch next time&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The reply might sound polished.&lt;/p&gt;

&lt;p&gt;But strategically, it’s empty.&lt;/p&gt;

&lt;p&gt;The model has no idea what happened the last three times you negotiated with this category of brand.&lt;/p&gt;

&lt;p&gt;That realization completely changed how I approached DealMind.&lt;/p&gt;

&lt;p&gt;I stopped thinking about prompts.&lt;/p&gt;

&lt;p&gt;And started thinking about accumulated intelligence.&lt;/p&gt;


&lt;h1&gt;
  
  
  Architecture
&lt;/h1&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Instagram DM
        ↓
Hindsight Recall
        ↓
cascadeflow Routing
        ↓
Groq Model
        ↓
Negotiation Response
        ↓
Memory Stored Back
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Building Persistent Negotiation Memory
&lt;/h1&gt;

&lt;p&gt;The first major system I built was the memory layer.&lt;/p&gt;

&lt;p&gt;I wanted the agent to behave less like a chatbot and more like an experienced manager that remembers relationship history.&lt;/p&gt;

&lt;p&gt;To do that, every negotiation stores structured deal intelligence using Hindsight.&lt;/p&gt;

&lt;p&gt;The goal was simple:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;after every negotiation → store what happened&lt;/li&gt;
&lt;li&gt;before every negotiation → retrieve what matters&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The recall layer inside &lt;code&gt;lib/hindsight.ts&lt;/code&gt; performs semantic retrieval against historical negotiations:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;recall&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="nx"&gt;query&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;topK&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;
&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;RecalledMemory&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt;&lt;span class="o"&gt;&amp;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;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="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;BASE&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/pipelines/&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nf"&gt;pipelineId&lt;/span&gt;&lt;span class="p"&gt;()}&lt;/span&gt;&lt;span class="s2"&gt;/retrieve`&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;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;headers&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="nx"&gt;query&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;topK&lt;/span&gt; &lt;span class="p"&gt;}),&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;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;documents&lt;/span&gt; &lt;span class="o"&gt;??&lt;/span&gt; &lt;span class="p"&gt;[])&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;RecalledMemory&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The important detail here is that the query is semantic, not exact.&lt;/p&gt;

&lt;p&gt;A negotiation involving:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“GlowLab skincare sponsorship”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;should still retrieve memories from:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“NovaSkin product campaign”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;if the negotiation patterns are similar.&lt;/p&gt;

&lt;p&gt;That’s where memory starts becoming intelligence instead of storage.&lt;/p&gt;




&lt;h1&gt;
  
  
  Storing Leverage Instead of Conversations
&lt;/h1&gt;

&lt;p&gt;Raw chat history isn’t very useful.&lt;/p&gt;

&lt;p&gt;What matters is structured behavioral memory.&lt;/p&gt;

&lt;p&gt;So instead of storing full conversations, DealMind stores negotiation outcomes.&lt;/p&gt;

&lt;p&gt;The memory builder looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;buildDealMemory&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;d&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;DealMemoryPayload&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="kr"&gt;string&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;outcome&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;walked&lt;/span&gt;
    &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;walked away when countered&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
    &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;settled&lt;/span&gt;
    &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="s2"&gt;`settled at $&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;settled&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="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;outcome unknown&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;payNote&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;
    &lt;span class="nx"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;paymentStatus&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;late&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
      &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Paid late (2+ weeks).&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
      &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;paymentStatus&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;on-time&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
      &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Paid on time.&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
      &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;''&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;revNote&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;revisionOverrun&lt;/span&gt;
    &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Brand overran agreed revisions.&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
    &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;''&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="s2"&gt;`Brand: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;brand&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="s2"&gt;`Category: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;category&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="s2"&gt;`Offered: $&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;offered&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="s2"&gt;`Outcome: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;outcome&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="nx"&gt;payNote&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;revNote&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;notes&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Boolean&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt; &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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A stored memory might look like this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Brand: NovaSkin Co. Category: Skincare. Offered: $300. Outcome: settled at $650. Paid late (2+ weeks). Brand overran agreed revisions.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That single memory changes future negotiations dramatically.&lt;/p&gt;

&lt;p&gt;The next time the same brand appears:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;pricing floors increase&lt;/li&gt;
&lt;li&gt;NET-30 terms appear automatically&lt;/li&gt;
&lt;li&gt;revision caps get added proactively&lt;/li&gt;
&lt;li&gt;risk scores go up immediately&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The AI no longer negotiates from zero.&lt;/p&gt;

&lt;p&gt;It negotiates from history.&lt;/p&gt;




&lt;h1&gt;
  
  
  How Memory Changes the Negotiation Pipeline
&lt;/h1&gt;

&lt;p&gt;Every negotiation request flows through four stages before the AI generates a single sentence.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1 — Recall
&lt;/h2&gt;

&lt;p&gt;Before generating anything, DealMind retrieves relevant memories:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;memoryQuery&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;
  &lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;brand&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="nx"&gt;category&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; brand deal negotiation rate`&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;memories&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;recall&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;memoryQuery&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&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;memoryContext&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;
  &lt;span class="nx"&gt;memories&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
    &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="nx"&gt;memories&lt;/span&gt;
        &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;m&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;`[Memory &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&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="nx"&gt;m&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;content&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="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="se"&gt;\n&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="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;No past deals found.&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 2 — Analyze
&lt;/h2&gt;

&lt;p&gt;The system evaluates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;negotiation complexity&lt;/li&gt;
&lt;li&gt;risk level&lt;/li&gt;
&lt;li&gt;category patterns&lt;/li&gt;
&lt;li&gt;leverage indicators&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 3 — Route
&lt;/h2&gt;

&lt;p&gt;Tasks get routed dynamically through cascadeflow.&lt;/p&gt;

&lt;p&gt;Simple tasks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;classification&lt;/li&gt;
&lt;li&gt;pricing estimation&lt;/li&gt;
&lt;li&gt;categorization&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;go through lightweight Groq models.&lt;/p&gt;

&lt;p&gt;Complex tasks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;persuasive negotiation&lt;/li&gt;
&lt;li&gt;legal ambiguity&lt;/li&gt;
&lt;li&gt;multi-clause contracts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;escalate to stronger reasoning layers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4 — Store
&lt;/h2&gt;

&lt;p&gt;After the negotiation closes, the outcome gets written back into memory.&lt;/p&gt;

&lt;p&gt;The loop closes.&lt;/p&gt;

&lt;p&gt;And the system becomes slightly smarter.&lt;/p&gt;

&lt;p&gt;Every single deal.&lt;/p&gt;




&lt;h1&gt;
  
  
  Runtime Intelligence with cascadeflow
&lt;/h1&gt;

&lt;p&gt;Once memory was working well, another problem appeared.&lt;/p&gt;

&lt;p&gt;Every negotiation message was hitting the same expensive model.&lt;/p&gt;

&lt;p&gt;Even messages like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Sounds good, let’s proceed.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That’s like hiring a senior lawyer to sort your mail.&lt;/p&gt;

&lt;p&gt;The solution was runtime routing through cascadeflow.&lt;/p&gt;

&lt;p&gt;Instead of treating AI like a single black box, DealMind behaves like an adaptive negotiation pipeline.&lt;/p&gt;

&lt;p&gt;The classification layer determines whether a message actually requires deeper reasoning.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;lib/cascadeflow.ts&lt;/code&gt; handles the routing logic:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;classifyComplexity&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;
&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;ClassifyResult&lt;/span&gt;&lt;span class="o"&gt;&amp;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;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;https://api.groq.com/openai/v1/chat/completions&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;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Content-Type&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;application/json&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;Authorization&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`Bearer &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;GROQ_API_KEY&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="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="nx"&gt;MODELS&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;classify&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;max_tokens&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;120&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;temperature&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;messages&lt;/span&gt;&lt;span class="p"&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;role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;system&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
              &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Classify negotiation complexity.&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="p"&gt;{&lt;/span&gt;
            &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;user&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="p"&gt;],&lt;/span&gt;
      &lt;span class="p"&gt;}),&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;span class="k"&gt;return&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="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;choices&lt;/span&gt;&lt;span class="p"&gt;?.[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]?.&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;content&lt;/span&gt;
  &lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The routing system reduced inference cost dramatically while keeping negotiation quality high.&lt;/p&gt;

&lt;p&gt;More importantly, it made the system operationally intelligent.&lt;/p&gt;

&lt;p&gt;Users could actually see:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;memories being recalled&lt;/li&gt;
&lt;li&gt;models being selected&lt;/li&gt;
&lt;li&gt;leverage being calculated&lt;/li&gt;
&lt;li&gt;risk patterns emerging&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The AI stopped feeling reactive.&lt;/p&gt;

&lt;p&gt;It started feeling strategic.&lt;/p&gt;




&lt;h1&gt;
  
  
  The Most Interesting Behavior Emerged After 10 Deals
&lt;/h1&gt;

&lt;p&gt;This was the surprising part.&lt;/p&gt;

&lt;p&gt;After enough negotiations, category-level patterns started emerging automatically.&lt;/p&gt;

&lt;p&gt;The system learned that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;skincare brands consistently opened below settlement range&lt;/li&gt;
&lt;li&gt;tech brands paid faster&lt;/li&gt;
&lt;li&gt;affiliate-heavy campaigns underperformed&lt;/li&gt;
&lt;li&gt;brands that abused revisions once often repeated the behavior&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nobody explicitly programmed those insights.&lt;/p&gt;

&lt;p&gt;The memory layer surfaced them naturally through accumulated retrieval context.&lt;/p&gt;

&lt;p&gt;That’s when DealMind stopped feeling like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;an assistant&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;and started feeling like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;infrastructure&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The system wasn’t just helping generate replies anymore.&lt;/p&gt;

&lt;p&gt;It was accumulating operational intelligence over time.&lt;/p&gt;

&lt;p&gt;That’s a completely different category of AI product.&lt;/p&gt;




&lt;h1&gt;
  
  
  What Building DealMind Changed About My View of AI
&lt;/h1&gt;

&lt;p&gt;Most AI demos are impressive for one interaction.&lt;/p&gt;

&lt;p&gt;But real products are different.&lt;/p&gt;

&lt;p&gt;The systems people actually depend on are the ones that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;remember context&lt;/li&gt;
&lt;li&gt;evolve behavior&lt;/li&gt;
&lt;li&gt;maintain consistency&lt;/li&gt;
&lt;li&gt;accumulate leverage over time&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s especially true in negotiation.&lt;/p&gt;

&lt;p&gt;Because negotiation is cumulative.&lt;/p&gt;

&lt;p&gt;Every interaction changes strategy.&lt;/p&gt;

&lt;p&gt;Every outcome changes leverage.&lt;/p&gt;

&lt;p&gt;An AI system that forgets history can never negotiate strategically.&lt;/p&gt;

&lt;p&gt;Persistent memory changes that.&lt;/p&gt;

&lt;p&gt;And once an AI system starts remembering relationships instead of conversations, it stops behaving like a chatbot.&lt;/p&gt;

&lt;p&gt;It starts behaving like infrastructure.&lt;/p&gt;

&lt;p&gt;The future of AI systems isn’t better prompts.&lt;/p&gt;

&lt;p&gt;It’s accumulated intelligence.&lt;/p&gt;

&lt;h1&gt;
  
  
  Architecture
&lt;/h1&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.amazonaws.com%2Fuploads%2Farticles%2Fmagwum8k2oq5oij3yy2v.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.amazonaws.com%2Fuploads%2Farticles%2Fmagwum8k2oq5oij3yy2v.png" alt=" " width="800" height="1034"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  DealMind
&lt;/h1&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.amazonaws.com%2Fuploads%2Farticles%2Fm2u4ewnvbiwg76jhkl6l.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.amazonaws.com%2Fuploads%2Farticles%2Fm2u4ewnvbiwg76jhkl6l.png" alt=" " width="800" height="455"&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.amazonaws.com%2Fuploads%2Farticles%2Ftt63bcsjc55nkqxby5r0.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.amazonaws.com%2Fuploads%2Farticles%2Ftt63bcsjc55nkqxby5r0.png" alt=" " width="800" height="455"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>showdev</category>
      <category>startup</category>
    </item>
  </channel>
</rss>
