<?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: Varshith</title>
    <description>The latest articles on DEV Community by Varshith (@varshith_07e1cc3c6ee80c38).</description>
    <link>https://dev.to/varshith_07e1cc3c6ee80c38</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%2F4148432%2F06665562-213b-4ca6-81c8-0c5df1e5aa5d.png</url>
      <title>DEV Community: Varshith</title>
      <link>https://dev.to/varshith_07e1cc3c6ee80c38</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/varshith_07e1cc3c6ee80c38"/>
    <language>en</language>
    <item>
      <title>How I Built a Content Agent That Learns with Hindsight</title>
      <dc:creator>Varshith</dc:creator>
      <pubDate>Tue, 29 Sep 2026 03:39:03 +0000</pubDate>
      <link>https://dev.to/varshith_07e1cc3c6ee80c38/how-i-built-a-content-agent-that-learns-with-hindsight-2696</link>
      <guid>https://dev.to/varshith_07e1cc3c6ee80c38/how-i-built-a-content-agent-that-learns-with-hindsight-2696</guid>
      <description>&lt;p&gt;How I Built a Content Agent That Learns with Hindsight&lt;/p&gt;

&lt;p&gt;Most AI content tools can generate a good recommendation once. The harder problem is getting the next recommendation to change because of what happened before.&lt;/p&gt;

&lt;p&gt;I built ContentMind around that problem: instead of treating every content strategy request as a fresh prompt, the agent recalls relevant history, uses that context to make a decision, and retains feedback so future decisions can be informed by experience.&lt;/p&gt;

&lt;p&gt;What I Wanted ContentMind to Remember&lt;/p&gt;

&lt;p&gt;A normal prompt can tell an LLM what I want right now. It does not automatically give the model a durable record of what happened in previous interactions.&lt;/p&gt;

&lt;p&gt;For a content strategy system, that missing history matters.&lt;/p&gt;

&lt;p&gt;A useful strategist should be able to answer questions such as which topics and formats performed well, what underperformed, what the audience prefers, what feedback has already been given, and which content gaps remain.&lt;/p&gt;

&lt;p&gt;ContentMind is built around those questions.&lt;/p&gt;

&lt;p&gt;The application stores a synthetic historical dataset for a technology education brand called TechNova. The dataset contains historical posts with topics, formats, platforms, dates, views, likes, comments, shares, saves, engagement rates, outcomes, summaries, and target audiences.&lt;/p&gt;

&lt;p&gt;That information is converted into memory and stored in Hindsight. The agent can then retrieve the memories that are relevant to a new strategy question instead of starting from an empty context every time.&lt;/p&gt;

&lt;p&gt;How the System Fits Together&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%2Fjick5pd6q56prrgy58u8.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%2Fjick5pd6q56prrgy58u8.png" alt=" " width="800" height="619"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The application is a Next.js application using the App Router, React, TypeScript, and Tailwind CSS.&lt;/p&gt;

&lt;p&gt;The server-side API routes connect three services:&lt;/p&gt;

&lt;p&gt;Browser&lt;br&gt;
   |&lt;br&gt;
   v&lt;br&gt;
Next.js / React&lt;br&gt;
   |&lt;br&gt;
   +--------------------+&lt;br&gt;
   |                    |&lt;br&gt;
   v                    v&lt;br&gt;
Supabase             Next.js API Routes&lt;br&gt;
Auth + PostgreSQL         |&lt;br&gt;
                          +---- Hindsight Cloud&lt;br&gt;
                          |&lt;br&gt;
                          +---- Groq&lt;/p&gt;

&lt;p&gt;Supabase handles authentication and the application database. Hindsight provides the persistent memory layer. Groq generates the final strategy recommendation using the memories returned by Hindsight.&lt;/p&gt;

&lt;p&gt;There is no separate backend service. The Next.js API routes act as the server-side boundary, which also means the Hindsight and Groq credentials can remain server-side.&lt;/p&gt;

&lt;p&gt;The repository uses the official Hindsight client:&lt;/p&gt;

&lt;p&gt;import { HindsightClient } from '@vectorize-io/hindsight-client';&lt;/p&gt;

&lt;p&gt;function getHindsightClient() {&lt;br&gt;
  const apiKey = process.env.HINDSIGHT_API_KEY;&lt;br&gt;
  const baseUrl =&lt;br&gt;
    process.env.HINDSIGHT_BASE_URL ||&lt;br&gt;
    '&lt;a href="https://api.hindsight.vectorize.io" rel="noopener noreferrer"&gt;https://api.hindsight.vectorize.io&lt;/a&gt;';&lt;/p&gt;

&lt;p&gt;if (!apiKey) {&lt;br&gt;
    throw new Error(&lt;br&gt;
      'HINDSIGHT_API_KEY environment variable is not set'&lt;br&gt;
    );&lt;br&gt;
  }&lt;/p&gt;

&lt;p&gt;return new HindsightClient({&lt;br&gt;
    baseUrl,&lt;br&gt;
    apiKey,&lt;br&gt;
  });&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;I kept the Hindsight client behind a small service layer instead of calling it throughout the UI. That gave the rest of the application a simple interface for retaining and recalling content.&lt;/p&gt;

&lt;p&gt;The Memory Loop: Retain, Recall, Decide&lt;/p&gt;

&lt;p&gt;Screenshot: ContentMind demo context screen showing the memory-driven workflow. Place the demo context screenshot here.&lt;/p&gt;

&lt;p&gt;The core of ContentMind is a simple loop:&lt;/p&gt;

&lt;p&gt;Historical data / feedback&lt;br&gt;
          |&lt;br&gt;
          v&lt;br&gt;
       RETAIN&lt;br&gt;
          |&lt;br&gt;
          v&lt;br&gt;
       HINDSIGHT&lt;br&gt;
          |&lt;br&gt;
          v&lt;br&gt;
        RECALL&lt;br&gt;
          |&lt;br&gt;
          v&lt;br&gt;
     Strategy Agent&lt;br&gt;
          |&lt;br&gt;
          v&lt;br&gt;
       GROQ LLM&lt;br&gt;
          |&lt;br&gt;
          v&lt;br&gt;
     Recommendation&lt;br&gt;
          |&lt;br&gt;
          v&lt;br&gt;
       Feedback&lt;br&gt;
          |&lt;br&gt;
          +------&amp;gt; RETAIN&lt;/p&gt;

&lt;p&gt;This is the part I found more interesting than simply connecting an LLM to a database.&lt;/p&gt;

&lt;p&gt;The application is not trying to put the entire history into every prompt. Instead, it asks the memory system for information relevant to the current question.&lt;/p&gt;

&lt;p&gt;The Hindsight service exposes that directly:&lt;/p&gt;

&lt;p&gt;export async function recallRelevantContent(&lt;br&gt;
  query: string,&lt;br&gt;
  budget: 'low' | 'mid' | 'high' = 'mid'&lt;br&gt;
) {&lt;br&gt;
  const client = getHindsightClient();&lt;br&gt;
  const bankId = getBankId();&lt;/p&gt;

&lt;p&gt;const response = await client.recall(bankId, query, {&lt;br&gt;
    budget,&lt;br&gt;
    maxTokens: 4096,&lt;br&gt;
  });&lt;/p&gt;

&lt;p&gt;return response.results || [];&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;The query becomes the retrieval signal.&lt;/p&gt;

&lt;p&gt;For example, when the user asks:&lt;/p&gt;

&lt;p&gt;What cybersecurity content should we create?&lt;/p&gt;

&lt;p&gt;ContentMind recalls memories related to cybersecurity, historical performance, audience preferences, and previously stored patterns.&lt;/p&gt;

&lt;p&gt;That means the model receives relevant experience rather than just the latest question.&lt;/p&gt;

&lt;p&gt;Seeding the Agent With Experience&lt;/p&gt;

&lt;p&gt;Before the agent can learn from new interactions, it needs some history to work with.&lt;/p&gt;

&lt;p&gt;ContentMind has a seed endpoint that prepares a memory bank with several kinds of information:&lt;/p&gt;

&lt;p&gt;Brand profile&lt;/p&gt;

&lt;p&gt;Audience preferences&lt;/p&gt;

&lt;p&gt;High-performing content patterns&lt;/p&gt;

&lt;p&gt;Underperforming content patterns&lt;/p&gt;

&lt;p&gt;Content-gap analysis&lt;/p&gt;

&lt;p&gt;Selected historical posts&lt;/p&gt;

&lt;p&gt;The seed operation uses Hindsight's batch retention rather than making a separate request for every memory:&lt;/p&gt;

&lt;p&gt;await retainBatch(contentItems);&lt;/p&gt;

&lt;p&gt;return NextResponse.json({&lt;br&gt;
  success: true,&lt;br&gt;
  message: &lt;code&gt;Successfully seeded ${contentItems.length} memories into Hindsight&lt;/code&gt;,&lt;br&gt;
  itemsSeeded: contentItems.length,&lt;br&gt;
  breakdown: {&lt;br&gt;
    brandProfile: 1,&lt;br&gt;
    audiencePreferences: 1,&lt;br&gt;
    performancePatterns: 4,&lt;br&gt;
    contentGaps: 1,&lt;br&gt;
    historicalPosts: topPosts.length,&lt;br&gt;
  },&lt;br&gt;
});&lt;/p&gt;

&lt;p&gt;The historical data is also deliberately stored as structured natural-language memory.&lt;/p&gt;

&lt;p&gt;For example, a retained historical post contains its title, topic, subtopic, format, platform, date, performance, outcome, summary, and target audience.&lt;/p&gt;

&lt;p&gt;That gives retrieval enough context to connect a question with a previous content outcome.&lt;/p&gt;

&lt;p&gt;Recall Happens Before the LLM&lt;/p&gt;

&lt;p&gt;The strategy endpoint is where the pieces meet.&lt;/p&gt;

&lt;p&gt;The API first checks that both Hindsight and Groq are configured. It then retrieves relevant memories and passes them into the strategy generator.&lt;/p&gt;

&lt;p&gt;The important part is the ordering:&lt;/p&gt;

&lt;p&gt;const memories = await recallRelevantContent(&lt;br&gt;
  query,&lt;br&gt;
  budget as 'low' | 'mid' | 'high'&lt;br&gt;
);&lt;/p&gt;

&lt;p&gt;const recommendation =&lt;br&gt;
  await generateStrategyRecommendation(&lt;br&gt;
    query,&lt;br&gt;
    memories,&lt;br&gt;
    true&lt;br&gt;
  );&lt;/p&gt;

&lt;p&gt;I intentionally kept retrieval before generation.&lt;/p&gt;

&lt;p&gt;The LLM should not be responsible for remembering the history itself. Hindsight handles retrieval, and Groq handles the language-model reasoning over the retrieved context.&lt;/p&gt;

&lt;p&gt;That separation also makes the system easier to reason about.&lt;/p&gt;

&lt;p&gt;Turning Memories Into a Strategy&lt;/p&gt;

&lt;p&gt;Screenshot: Strategy screen showing the cybersecurity recommendation and memories used. Place the strategy screenshot here.&lt;/p&gt;

&lt;p&gt;Once Hindsight returns relevant memories, ContentMind converts them into context for the LLM.&lt;/p&gt;

&lt;p&gt;The strategy service builds a readable memory context:&lt;/p&gt;

&lt;p&gt;const memoryContext = memories.length &amp;gt; 0&lt;br&gt;
  ? memories&lt;br&gt;
      .map((m, i) =&amp;gt; &lt;code&gt;Memory ${i + 1}: ${m.text}&lt;/code&gt;)&lt;br&gt;
      .join('\n\n')&lt;br&gt;
  : 'No specific historical memories retrieved.';&lt;/p&gt;

&lt;p&gt;The system prompt then tells the model how to use that evidence.&lt;/p&gt;

&lt;p&gt;It explicitly instructs the model to:&lt;/p&gt;

&lt;p&gt;ground recommendations in historical memories&lt;/p&gt;

&lt;p&gt;reference patterns found in the data&lt;/p&gt;

&lt;p&gt;avoid inventing performance data&lt;/p&gt;

&lt;p&gt;acknowledge limited evidence&lt;/p&gt;

&lt;p&gt;learn from both successful and unsuccessful content&lt;/p&gt;

&lt;p&gt;identify content gaps and audience preferences&lt;/p&gt;

&lt;p&gt;The recommendation is returned as structured JSON rather than free-form text:&lt;/p&gt;

&lt;p&gt;const completion =&lt;br&gt;
  await groq.chat.completions.create({&lt;br&gt;
    messages: [&lt;br&gt;
      { role: 'system', content: systemPrompt },&lt;br&gt;
      { role: 'user', content: userPrompt },&lt;br&gt;
    ],&lt;br&gt;
    model: 'openai/gpt-oss-120b',&lt;br&gt;
    temperature: 0.7,&lt;br&gt;
    max_tokens: 2000,&lt;br&gt;
    response_format: { type: 'json_object' },&lt;br&gt;
  });&lt;/p&gt;

&lt;p&gt;That gives the UI predictable fields such as:&lt;/p&gt;

&lt;p&gt;recommendation&lt;br&gt;
reasoning&lt;br&gt;
suggestedTopics&lt;br&gt;
suggestedFormats&lt;br&gt;
targetAudience&lt;br&gt;
confidence&lt;br&gt;
memoriesUsed&lt;/p&gt;

&lt;p&gt;The UI can then show not only the recommendation but also how much memory influenced it.&lt;/p&gt;

&lt;p&gt;A Concrete Example&lt;/p&gt;

&lt;p&gt;Screenshot: Recall screen showing 335 memories, 45 historical posts, and 12 audience signals. Place the recall screenshot here.&lt;/p&gt;

&lt;p&gt;The clearest way to see the system is to ask the same type of question a content strategist might ask:&lt;/p&gt;

&lt;p&gt;What cybersecurity content should we create?&lt;/p&gt;

&lt;p&gt;In the seeded dataset, practical cybersecurity demonstrations perform better than generic awareness content.&lt;/p&gt;

&lt;p&gt;For example, the historical data contains practical demonstrations such as API security testing and XSS testing, while generic cybersecurity awareness posts have lower engagement in the dataset.&lt;/p&gt;

&lt;p&gt;When ContentMind recalls those patterns, the resulting recommendation becomes more specific:&lt;/p&gt;

&lt;p&gt;Focus on practical cybersecurity demonstrations and attack/defense scenarios.&lt;/p&gt;

&lt;p&gt;The interface then surfaces suggested topics such as:&lt;/p&gt;

&lt;p&gt;Penetration Testing&lt;/p&gt;

&lt;p&gt;SIEM Implementation&lt;/p&gt;

&lt;p&gt;and formats such as:&lt;/p&gt;

&lt;p&gt;Tutorial&lt;/p&gt;

&lt;p&gt;Hands-on Guide&lt;/p&gt;

&lt;p&gt;The UI also displays the number of memories used to produce the recommendation.&lt;/p&gt;

&lt;p&gt;That detail matters.&lt;/p&gt;

&lt;p&gt;Instead of presenting an answer as if it appeared from nowhere, ContentMind exposes the connection between the recommendation and the memory layer.&lt;/p&gt;

&lt;p&gt;Feedback Becomes Another Memory&lt;/p&gt;

&lt;p&gt;Recall alone is not enough.&lt;/p&gt;

&lt;p&gt;If a user says that a recommendation was useful, that information should become part of the system's future context.&lt;/p&gt;

&lt;p&gt;ContentMind has a feedback endpoint for exactly that.&lt;/p&gt;

&lt;p&gt;let feedbackContent = '';&lt;/p&gt;

&lt;p&gt;if (helpful) {&lt;br&gt;
  feedbackContent =&lt;br&gt;
    &lt;code&gt;Positive Feedback: User found the recommendation helpful.&lt;/code&gt; +&lt;br&gt;
    &lt;code&gt;${feedback ?&lt;/code&gt;User comment: "${feedback}"&lt;code&gt;: ''}&lt;/code&gt;;&lt;/p&gt;

&lt;p&gt;if (query) {&lt;br&gt;
    feedbackContent +=&lt;br&gt;
      &lt;code&gt;Original query: "${query}"&lt;/code&gt;;&lt;br&gt;
  }&lt;br&gt;
} else {&lt;br&gt;
  feedbackContent =&lt;br&gt;
    &lt;code&gt;Negative Feedback: User found the recommendation not helpful.&lt;/code&gt; +&lt;br&gt;
    &lt;code&gt;${feedback&lt;br&gt;
      ?&lt;/code&gt;User comment: "${feedback}"&lt;code&gt;&lt;br&gt;
      : 'No specific reason provided.'&lt;br&gt;
    }&lt;/code&gt;;&lt;/p&gt;

&lt;p&gt;if (query) {&lt;br&gt;
    feedbackContent +=&lt;br&gt;
      &lt;code&gt;Original query: "${query}"&lt;/code&gt;;&lt;br&gt;
  }&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;That feedback is then retained in Hindsight:&lt;/p&gt;

&lt;p&gt;await retainFeedback(&lt;br&gt;
  feedbackContent,&lt;br&gt;
  'user_feedback'&lt;br&gt;
);&lt;/p&gt;

&lt;p&gt;Feedback becomes another memory that can participate in later retrieval.&lt;/p&gt;

&lt;p&gt;That creates a loop:&lt;/p&gt;

&lt;p&gt;Question&lt;br&gt;
   ↓&lt;br&gt;
Recall&lt;br&gt;
   ↓&lt;br&gt;
Recommendation&lt;br&gt;
   ↓&lt;br&gt;
User feedback&lt;br&gt;
   ↓&lt;br&gt;
Retain&lt;br&gt;
   ↓&lt;br&gt;
Future recall&lt;br&gt;
   ↓&lt;br&gt;
Different or more specific recommendation&lt;/p&gt;

&lt;p&gt;This is a much more useful mental model for an agent than treating memory as a static archive.&lt;/p&gt;

&lt;p&gt;Why Hindsight Was Useful Here&lt;/p&gt;

&lt;p&gt;I could have built a conventional search layer over historical posts and manually constructed a large prompt. That would solve part of the problem, but ContentMind needs to store different kinds of experience: historical posts, performance patterns, audience preferences, brand information, content gaps, and user feedback.&lt;/p&gt;

&lt;p&gt;Hindsight gives the application a common memory interface for retaining and recalling those pieces of experience.&lt;/p&gt;

&lt;p&gt;The key benefit is not simply persistence. It is that the strategy pipeline can ask for memories relevant to the current question instead of pushing the entire history into every prompt.&lt;/p&gt;

&lt;p&gt;What I Learned&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Memory needs to be part of the decision path&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Adding a memory page to an AI application is not the same as building a memory-driven agent.&lt;/p&gt;

&lt;p&gt;The important question is:&lt;/p&gt;

&lt;p&gt;Does retrieved experience actually change what the agent does?&lt;/p&gt;

&lt;p&gt;In ContentMind, memory is retrieved before strategy generation, so the answer can be grounded in previous content outcomes and feedback.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Retrieval quality matters more than storing everything&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I initially thought the interesting part would be storing a large amount of history.&lt;/p&gt;

&lt;p&gt;It turns out that storing information is only half of the problem.&lt;/p&gt;

&lt;p&gt;The useful part is retrieving the right memories for the question being asked.&lt;/p&gt;

&lt;p&gt;A strategy agent does not need every historical post every time. It needs the subset of experience that helps answer the current question.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Feedback should be treated as data&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A user's comment such as "our audience responds better to practical demonstrations" can be more valuable than another generic prompt.&lt;/p&gt;

&lt;p&gt;By retaining feedback, the system has a way to turn an interaction into future context.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The LLM should not be the memory system&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Groq is responsible for generating the recommendation. Hindsight is responsible for the persistent memory layer.&lt;/p&gt;

&lt;p&gt;Keeping those responsibilities separate made the architecture easier to understand and easier to change.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Show the evidence behind the recommendation&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Exposing memory usage alongside the recommendation makes the source of the answer easier to understand. The user can see that the response is grounded in recalled experience rather than appearing from nowhere.&lt;/p&gt;

&lt;p&gt;A Note on the Current Architecture&lt;/p&gt;

&lt;p&gt;ContentMind uses Supabase for authentication and PostgreSQL application data, with Row Level Security policies protecting workspace data.&lt;/p&gt;

&lt;p&gt;The Hindsight integration is organized around a configurable HINDSIGHT_BANK_ID. For a larger multi-user deployment, I would scope that bank to the authenticated workspace or user as well, so independent customers never share an agent memory bank. Persistent memory introduces an isolation problem that deserves the same attention as ordinary application data.&lt;/p&gt;

&lt;p&gt;Conclusion&lt;/p&gt;

&lt;p&gt;The most important change in ContentMind was changing the assumption that every strategy request should start from zero.&lt;/p&gt;

&lt;p&gt;With Hindsight in the loop, ContentMind can retain historical content knowledge and feedback, recall relevant experience, and use that context to generate a strategy.&lt;/p&gt;

&lt;p&gt;The resulting architecture is simple:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;         ┌───────────────┐
         │   ContentMind │
         └───────┬───────┘
                 |
         ┌───────▼───────┐
         │    Next.js    │
         └───┬───────┬───┘
             |       |
    ┌────────▼─┐   ┌─▼────────┐
    │ Supabase │   │   Groq   │
    │ Auth + DB│   │   LLM    │
    └──────────┘   └────┬─────┘
                        |
                 ┌──────▼──────┐
                 │  Hindsight  │
                 │ Recall      │
                 │ Retain      │
                 │ Reflect     │
                 └──────┬──────┘
                        |
                 Future decisions
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;The idea I would carry into other agent systems is straightforward: if an agent is expected to improve over time, memory cannot be an afterthought. It needs to sit directly in the path between what the agent has experienced and what it decides to do next.&lt;/p&gt;

&lt;p&gt;Further Reading&lt;/p&gt;

&lt;p&gt;Hindsight GitHub&lt;/p&gt;

&lt;p&gt;Hindsight documentation&lt;/p&gt;

&lt;p&gt;Vectorize agent memory&lt;/p&gt;

&lt;p&gt;Project&lt;/p&gt;

&lt;p&gt;ContentMind GitHub repository : -&lt;a href="https://github.com/saivarshith9347/contentmind.git" rel="noopener noreferrer"&gt;https://github.com/saivarshith9347/contentmind.git&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Live ContentMind application:-&lt;a href="https://contentmind-sigma.vercel.app/" rel="noopener noreferrer"&gt;https://contentmind-sigma.vercel.app/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>workplace</category>
      <category>typescript</category>
    </item>
  </channel>
</rss>
