<?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: guthikonda naveen</title>
    <description>The latest articles on DEV Community by guthikonda naveen (@guthikonda_naveen_56113ca).</description>
    <link>https://dev.to/guthikonda_naveen_56113ca</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%2F4181946%2Ff44a74b8-5bb2-4f39-ba5d-ac0e1946bc7f.png</url>
      <title>DEV Community: guthikonda naveen</title>
      <link>https://dev.to/guthikonda_naveen_56113ca</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/guthikonda_naveen_56113ca"/>
    <language>en</language>
    <item>
      <title>Ending AI Amnesia in Meetings: Building the Fireflies.ai Connector for Cognee</title>
      <dc:creator>guthikonda naveen</dc:creator>
      <pubDate>Tue, 13 Oct 2026 11:25:16 +0000</pubDate>
      <link>https://dev.to/guthikonda_naveen_56113ca/ending-ai-amnesia-in-meetings-building-the-firefliesai-connector-for-cognee-1f3d</link>
      <guid>https://dev.to/guthikonda_naveen_56113ca/ending-ai-amnesia-in-meetings-building-the-firefliesai-connector-for-cognee-1f3d</guid>
      <description>&lt;p&gt;Have you ever asked an AI assistant about a critical decision made during yesterday's team sync, only to be met with a generic apology or complete hallucination?&lt;/p&gt;

&lt;p&gt;AI agents typically excel at reading documents from Notion or Google Drive and indexing code repositories on GitHub. But here is the reality of modern engineering and product teams: &lt;strong&gt;over 80% of high-impact technical, architectural, and business commitments happen verbally in meetings.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When your AI agents lack access to spoken conversations, they suffer from &lt;strong&gt;conversational amnesia&lt;/strong&gt;. They cannot recall who committed to fixing a bug, what trade-offs were discussed for an upcoming release, or why an architecture decision was approved.&lt;/p&gt;

&lt;p&gt;For &lt;strong&gt;Mergetober&lt;/strong&gt;—the month-long open source celebration with &lt;strong&gt;Cognee&lt;/strong&gt; and &lt;strong&gt;WeMakeDevs&lt;/strong&gt;—I built and contributed the &lt;strong&gt;Fireflies.ai Data-Source Connector&lt;/strong&gt; (&lt;a href="https://github.com/topoteretes/cognee-community/pull/375" rel="noopener noreferrer"&gt;Pull Request #375&lt;/a&gt;) to solve this problem.&lt;/p&gt;

&lt;p&gt;In this post, I will walk you through how the connector bridges meeting speech and Cognee's knowledge graph, the architectural challenges we solved, and how you can use it in your own agentic workflows.&lt;/p&gt;




&lt;h2&gt;
  
  
  What is Cognee?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/topoteretes/cognee" rel="noopener noreferrer"&gt;Cognee&lt;/a&gt; is the open-source memory layer for AI agents. Rather than dumping raw text into a standard vector database and relying solely on semantic similarity search (which loses entity relationships and structural context), Cognee blends:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Knowledge Graphs:&lt;/strong&gt; Nodes representing entities, concepts, and people, linked by typed edges representing real-world relationships.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vector Embeddings:&lt;/strong&gt; Fine-grained semantic embeddings for flexible retrieval.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Graph Retrieval &amp;amp; Completion:&lt;/strong&gt; Enabling agents to traverse multi-hop connections to answer complex reasoning queries.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  The Vision: Turning Spoken Words into a Living Knowledge Graph
&lt;/h2&gt;

&lt;p&gt;Integrating meeting intelligence is much more complex than fetching plain text. A raw transcript is noisy, messy, and lacks semantic structure. If an LLM reads &lt;em&gt;"John: I'll handle the API rate limits"&lt;/em&gt;, without context, the agent doesn't know which John, what his email is, or what exact task was committed.&lt;/p&gt;

&lt;p&gt;Our Fireflies connector ingests transcripts, executive overviews, action items, and speaker-attributed turns from &lt;a href="https://fireflies.ai" rel="noopener noreferrer"&gt;Fireflies.ai&lt;/a&gt; directly into Cognee.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Architectural Solutions
&lt;/h3&gt;

&lt;h4&gt;
  
  
  1. True Speaker Attribution
&lt;/h4&gt;

&lt;p&gt;In Fireflies, speaker utterances often contain only display names or raw labels (&lt;code&gt;Speaker 1&lt;/code&gt;). Our connector implements a speaker-resolution engine that correlates meeting turns against the verified meeting attendee list (&lt;code&gt;Name (email)&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;This allows Cognee's entity extraction pipeline to establish explicit, unambiguous graph edges:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;[Alice (alice@example.com)] ──(committed to)──&amp;gt; [Action Item: Update Rate Limits]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;[Bob (bob@example.com)] ──(spoke about)──&amp;gt; [Architecture Migration to Kubernetes]&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  2. Document-Mode Routing
&lt;/h4&gt;

&lt;p&gt;Cognee supports different ingestion pipelines. For meeting notes, we declared &lt;code&gt;DOCUMENT_SOURCE_ATTR = "fireflies"&lt;/code&gt;. This directs synthesized meeting summaries and dialogues through Cognee's natural language entity extraction (GLiNER / LLM extraction) rather than rigid tabular database schemas.&lt;/p&gt;

&lt;h4&gt;
  
  
  3. Incremental Synchronization
&lt;/h4&gt;

&lt;p&gt;Nobody wants to re-ingest hundreds of hours of historical meetings on every run. The connector uses a high-watermark timestamp cursor (&lt;code&gt;fromDate&lt;/code&gt;) persisted across runs. On subsequent executions, only meetings recorded since the last sync are fetched.&lt;/p&gt;

&lt;h4&gt;
  
  
  4. Forget-on-Delete Reconciliations
&lt;/h4&gt;

&lt;p&gt;What happens when a meeting is deleted from Fireflies for privacy or compliance? If your memory layer doesn't reconcile deletions, zombie nodes persist in your graph. Our connector emits &lt;code&gt;_deleted: True&lt;/code&gt; tombstones on merge, which triggers Cognee's &lt;code&gt;orphan_cleanup&lt;/code&gt; mechanism to automatically purge obsolete entities. We also included a safe-sweep guard to protect against transient empty API responses.&lt;/p&gt;

&lt;h4&gt;
  
  
  5. Plan-Quota &amp;amp; Rate-Limit Resilience
&lt;/h4&gt;

&lt;p&gt;Fireflies enforces API quotas (such as 50 requests/day on free developer tiers). The connector handles HTTP 429 and rate-limiting headers with intelligent exponential backoff and &lt;code&gt;Retry-After&lt;/code&gt; header tracking, preventing ingestion jobs from crashing.&lt;/p&gt;




&lt;h2&gt;
  
  
  Quickstart: Using the Fireflies Connector
&lt;/h2&gt;

&lt;p&gt;Here is how simple it is to give your Cognee agents persistent meeting memory:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Installation
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;cognee-community-connector-fireflies
&lt;span class="c"&gt;# Or using uv:&lt;/span&gt;
uv add cognee-community-connector-fireflies
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Ingest &amp;amp; Recall in Python
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;asyncio&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;cognee&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;cognee_community_connector_fireflies&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;fireflies_source&lt;/span&gt;

&lt;span class="n"&gt;DATASET_NAME&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;team_meeting_memory&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="c1"&gt;# 1. Initialize the Fireflies source (uses FIREFLIES_API_KEY)
&lt;/span&gt;    &lt;span class="n"&gt;source&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;fireflies_source&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;days_back&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;14&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;               &lt;span class="c1"&gt;# Ingest meetings from the last 2 weeks
&lt;/span&gt;        &lt;span class="n"&gt;include_action_items&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;# Extract action items
&lt;/span&gt;        &lt;span class="n"&gt;include_sentences&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;     &lt;span class="c1"&gt;# Extract full speaker dialogue
&lt;/span&gt;    &lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="c1"&gt;# 2. Ingest into Cognee Knowledge Graph
&lt;/span&gt;    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;🧠 Ingesting meeting transcripts into Cognee memory...&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;cognee&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;remember&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;source&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;dataset_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;DATASET_NAME&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;primary_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;write_disposition&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;merge&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="c1"&gt;# 3. Ask your AI agent about meeting commitments
&lt;/span&gt;    &lt;span class="n"&gt;query&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Who committed to updating the rate-limit documentation in our sync?&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;cognee&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;search&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;query_text&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;query_type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;cognee&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;SearchType&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GRAPH_COMPLETION&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;datasets&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;DATASET_NAME&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;🔍 Recall Result:&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;__name__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;__main__&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;asyncio&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  100% Mocked Offline Test Suite
&lt;/h2&gt;

&lt;p&gt;Open-source contributions must be reliable and maintainable. To ensure contributors and CI environments can test without needing proprietary Fireflies credentials, the entire test suite in &lt;code&gt;tests/test_fireflies.py&lt;/code&gt; is &lt;strong&gt;100% offline and mocked&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Comprehensive test coverage (16/16 tests passing in 0.19s).&lt;/li&gt;
&lt;li&gt;Full coverage for speaker resolution, pagination, tombstone emissions, cursor persistence, and rate-limit backoff.&lt;/li&gt;
&lt;li&gt;Full compliance with the Topoteretes Developer Certificate of Origin (DCO).&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Links &amp;amp; Acknowledgements
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pull Request:&lt;/strong&gt; &lt;a href="https://github.com/topoteretes/cognee-community/pull/375" rel="noopener noreferrer"&gt;topoteretes/cognee-community #375&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/topoteretes/cognee" rel="noopener noreferrer"&gt;topoteretes/cognee&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mergetober Hackathon:&lt;/strong&gt; &lt;a href="https://www.wemakedevs.org/hackathons/mergetober" rel="noopener noreferrer"&gt;WeMakeDevs Mergetober&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Huge thanks to the &lt;strong&gt;Cognee&lt;/strong&gt; team and &lt;strong&gt;WeMakeDevs&lt;/strong&gt; for organizing Mergetober and building such an innovative ecosystem for AI memory. Let's make AI agents remember what actually matters!&lt;/p&gt;

</description>
      <category>mergetober</category>
      <category>opensource</category>
      <category>ai</category>
      <category>python</category>
    </item>
  </channel>
</rss>
