<?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: Darshan Rajput</title>
    <description>The latest articles on DEV Community by Darshan Rajput (@darshan_rajput_3690).</description>
    <link>https://dev.to/darshan_rajput_3690</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%2F4180988%2Fcf7a5d1a-b6a1-47b4-8061-d423bf7f0b9e.jpg</url>
      <title>DEV Community: Darshan Rajput</title>
      <link>https://dev.to/darshan_rajput_3690</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/darshan_rajput_3690"/>
    <language>en</language>
    <item>
      <title>cognee</title>
      <dc:creator>Darshan Rajput</dc:creator>
      <pubDate>Sat, 31 Oct 2026 05:02:09 +0000</pubDate>
      <link>https://dev.to/darshan_rajput_3690/cognee-40pn</link>
      <guid>https://dev.to/darshan_rajput_3690/cognee-40pn</guid>
      <description></description>
    </item>
    <item>
      <title>I Built a QuickBooks Connector for an AI Knowledge Graph — Here’s What I Learned</title>
      <dc:creator>Darshan Rajput</dc:creator>
      <pubDate>Wed, 21 Oct 2026 04:53:34 +0000</pubDate>
      <link>https://dev.to/darshan_rajput_3690/i-built-a-quickbooks-connector-for-an-ai-knowledge-graph-heres-what-i-learned-50jm</link>
      <guid>https://dev.to/darshan_rajput_3690/i-built-a-quickbooks-connector-for-an-ai-knowledge-graph-heres-what-i-learned-50jm</guid>
      <description>&lt;p&gt;What if you could ask AI questions about invoices, unpaid bills, and financial records instead of searching through them manually?&lt;/p&gt;

&lt;p&gt;That’s the idea behind my latest open-source contribution to &lt;strong&gt;Cognee Community&lt;/strong&gt;: a QuickBooks Online data connector.&lt;/p&gt;

&lt;p&gt;🔗 &lt;strong&gt;Pull Request:&lt;/strong&gt; &lt;a href="https://github.com/topoteretes/cognee-community/pull/402" rel="noopener noreferrer"&gt;https://github.com/topoteretes/cognee-community/pull/402&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📌 &lt;strong&gt;Issue:&lt;/strong&gt; &lt;a href="https://github.com/topoteretes/cognee/issues/4802" rel="noopener noreferrer"&gt;https://github.com/topoteretes/cognee/issues/4802&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🧠 What does it do?
&lt;/h2&gt;

&lt;p&gt;QuickBooks stores useful business information, but AI systems need a way to ingest and understand that data.&lt;/p&gt;

&lt;p&gt;I worked on a connector that brings QuickBooks financial records into Cognee's AI memory workflow.&lt;/p&gt;

&lt;p&gt;The connector supports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📄 Ingesting invoices, vendor bills, and credit memos.&lt;/li&gt;
&lt;li&gt;🔐 OAuth 2.0 authentication and token refresh.&lt;/li&gt;
&lt;li&gt;🔄 Incremental sync to retrieve new and updated records.&lt;/li&gt;
&lt;li&gt;🗑️ Deletion detection to help remove outdated information.&lt;/li&gt;
&lt;li&gt;🛡️ Retry handling and safeguards against accidental deletion.&lt;/li&gt;
&lt;li&gt;🧪 Automated tests and offline pipeline verification using DuckDB.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  ⚙️ How does it work?
&lt;/h2&gt;

&lt;p&gt;The basic workflow is:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;QuickBooks → Python Connector → DLT → Cognee → Knowledge Graph&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The connector retrieves financial records, formats them into readable Markdown documents, and sends them through Cognee's ingestion workflow.&lt;/p&gt;

&lt;p&gt;For example, instead of working with raw invoice JSON, the system can process information such as customer names, invoice totals, payment status, and line items.&lt;/p&gt;

&lt;p&gt;This makes the information more useful for downstream AI search and knowledge extraction.&lt;/p&gt;

&lt;h2&gt;
  
  
  🔍 The biggest challenge: keeping data in sync
&lt;/h2&gt;

&lt;p&gt;Fetching records is only one part of building a reliable connector.&lt;/p&gt;

&lt;p&gt;What happens when an invoice changes? What if someone deletes a record? And what if an API request fails and returns no data?&lt;/p&gt;

&lt;p&gt;I worked on incremental synchronization using &lt;code&gt;Metadata.LastUpdatedTime&lt;/code&gt;, deletion detection through QuickBooks Change Data Capture (CDC), and a fallback reconciliation mechanism.&lt;/p&gt;

&lt;p&gt;I also added a safety check to prevent an empty synchronization sweep from accidentally marking previously known records for deletion.&lt;/p&gt;

&lt;p&gt;The submitted test suite documents &lt;strong&gt;12 passing tests&lt;/strong&gt;, covering data formatting, synchronization, deletion handling, and retry behavior.&lt;/p&gt;

&lt;h2&gt;
  
  
  💡 What I learned
&lt;/h2&gt;

&lt;p&gt;This contribution taught me that building a data connector is about much more than calling an API.&lt;/p&gt;

&lt;p&gt;You need to think about data consistency, authentication, synchronization state, failure handling, and testing edge cases.&lt;/p&gt;

&lt;p&gt;Working on these details gave me practical experience with &lt;strong&gt;Python, REST APIs, DLT, data pipelines, testing, and AI knowledge graphs&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  🙌 Explore the project
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;My pull request:&lt;/strong&gt; &lt;a href="https://github.com/topoteretes/cognee-community/pull/402" rel="noopener noreferrer"&gt;https://github.com/topoteretes/cognee-community/pull/402&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Original issue:&lt;/strong&gt; &lt;a href="https://github.com/topoteretes/cognee/issues/4802" rel="noopener noreferrer"&gt;https://github.com/topoteretes/cognee/issues/4802&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cognee:&lt;/strong&gt; &lt;a href="https://github.com/topoteretes/cognee" rel="noopener noreferrer"&gt;https://github.com/topoteretes/cognee&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cognee Community:&lt;/strong&gt; &lt;a href="https://github.com/topoteretes/cognee-community" rel="noopener noreferrer"&gt;https://github.com/topoteretes/cognee-community&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thanks to the  Cognee maintainers and community for creating opportunities to learn and contribute to open-source AI infrastructure.&lt;/p&gt;

&lt;p&gt;The pull request is currently open for review, and I welcome feedback from other developers.&lt;/p&gt;

&lt;h2&gt;
  
  
  💬 Let's discuss!
&lt;/h2&gt;

</description>
      <category>ai</category>
      <category>wemakedevs</category>
      <category>cognee</category>
      <category>opensource</category>
    </item>
    <item>
      <title>##I Built a Brex Connector for Cognee: Bringing Business Expense Data Into AI Memory 🚀</title>
      <dc:creator>Darshan Rajput</dc:creator>
      <pubDate>Mon, 19 Oct 2026 13:53:42 +0000</pubDate>
      <link>https://dev.to/darshan_rajput_3690/i-built-a-brex-connector-for-cognee-bringing-business-expense-data-into-ai-memory-2i6</link>
      <guid>https://dev.to/darshan_rajput_3690/i-built-a-brex-connector-for-cognee-bringing-business-expense-data-into-ai-memory-2i6</guid>
      <description>&lt;h1&gt;
  
  
  I Built a Brex Connector for Cognee: Bringing Business Expense Data Into AI Memory 🚀
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;What I learned building an open-source data connector during MergeTober by WeMakeDevs.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;What if you could ask an AI assistant about business expenses instead of manually searching through transaction records, notes, and budgets?&lt;/p&gt;

&lt;p&gt;That question captures the idea behind my recent open-source contribution to &lt;a href="https://github.com/topoteretes/cognee-community" rel="noopener noreferrer"&gt;Cognee Community&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;During &lt;strong&gt;MergeTober by WeMakeDevs&lt;/strong&gt;, I worked on building a &lt;strong&gt;Brex data-source connector for Cognee&lt;/strong&gt;. The work involved much more than fetching data from an API. I also had to think about how the data should be organized, how future syncs should work, and how to protect existing data when something goes wrong.&lt;/p&gt;

&lt;p&gt;Here is what I built, how it works, and what I learned.&lt;/p&gt;

&lt;h2&gt;
  
  
  🌍 My entry into MergeTober
&lt;/h2&gt;

&lt;p&gt;Open source can feel intimidating when you're starting out. You might wonder which project to choose, how to understand an unfamiliar codebase, or what maintainers expect from a contribution.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.wemakedevs.org/hackathons/mergetober" rel="noopener noreferrer"&gt;MergeTober&lt;/a&gt; gave me an opportunity to work on a real integration issue rather than build another standalone demo.&lt;/p&gt;

&lt;p&gt;My workflow was straightforward:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Find an open issue that matches a real project need.&lt;/li&gt;
&lt;li&gt;Understand the requirements and existing architecture.&lt;/li&gt;
&lt;li&gt;Implement the feature and submit a pull request.&lt;/li&gt;
&lt;li&gt;Document the work so other developers can understand it.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I chose a connector issue because I wanted hands-on experience with APIs, data engineering, and AI infrastructure.&lt;/p&gt;

&lt;h2&gt;
  
  
  🧠 Why connectors matter for AI
&lt;/h2&gt;

&lt;p&gt;Consider a company that stores information across different tools. Expense records live in a financial platform, project updates live elsewhere, and important context is buried in notes.&lt;/p&gt;

&lt;p&gt;Even a capable AI system cannot use information it cannot access.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/topoteretes/cognee" rel="noopener noreferrer"&gt;Cognee&lt;/a&gt; is an open-source project focused on turning data into structured AI memory. Data connectors help bring information from external systems into that workflow.&lt;/p&gt;

&lt;p&gt;That led me to a practical question:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How can we make business expense information available to an AI knowledge system in a useful, structured, and maintainable way?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;My contribution was an attempt to solve that problem for Brex.&lt;/p&gt;

&lt;h2&gt;
  
  
  🔌 What I built: the Brex connector
&lt;/h2&gt;

&lt;p&gt;Brex provides business expense and budget management capabilities. My connector brings selected Brex data into Cognee's ingestion workflow.&lt;/p&gt;

&lt;p&gt;You can explore the implementation here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/topoteretes/cognee/issues/4797" rel="noopener noreferrer"&gt;GitHub issue #4797 — Brex connector requirements&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/topoteretes/cognee-community/pull/389" rel="noopener noreferrer"&gt;Pull request #389 — My implementation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The connector supports three data resources:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Resource&lt;/th&gt;
&lt;th&gt;Information collected&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Expenses&lt;/td&gt;
&lt;td&gt;Amounts, merchants, categories, statuses, and dates&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Memos&lt;/td&gt;
&lt;td&gt;Expense notes and business justifications&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Budgets&lt;/td&gt;
&lt;td&gt;Budget limits, spending, and budget relationships&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The interesting part is that these resources don't all need to be represented in the same way.&lt;/p&gt;

&lt;p&gt;Expense memos can become readable documents for contextual knowledge extraction, while expenses and budgets can remain structured records for organized data processing.&lt;/p&gt;

&lt;p&gt;This gives downstream workflows access to both business context and structured information.&lt;/p&gt;

&lt;h2&gt;
  
  
  ⚙️ How the connector works
&lt;/h2&gt;

&lt;p&gt;Here is the simplified architecture:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;       Brex Platform API
                |
                v
       Authentication
       + Pagination
                |
                v
       Fetch Expenses,
       Memos and Budgets
                |
                v
       Transform the Data
          /          \
         v            v
   Document Mode   Structured Mode
         \            /
          v          v
          DLT Ingestion
                |
                v
          Cognee Workflow
                |
                v
        AI Knowledge Retrieval
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let's break down the engineering decisions behind it.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Authentication and API requests
&lt;/h3&gt;

&lt;p&gt;The connector uses Bearer token authentication to access the Brex Platform API.&lt;/p&gt;

&lt;p&gt;It also handles paginated responses, so the integration can retrieve records across multiple API pages rather than stopping at the first batch.&lt;/p&gt;

&lt;p&gt;API integrations must account for failure cases, too. The implementation includes handling for authentication errors, permission errors, and rate limits.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Turning raw data into useful information
&lt;/h3&gt;

&lt;p&gt;Raw API responses aren't always the best representation for an AI knowledge pipeline.&lt;/p&gt;

&lt;p&gt;For example, consider an expense containing a merchant, amount, department, budget, and a note explaining why the purchase was necessary.&lt;/p&gt;

&lt;p&gt;The connector can transform that context into a readable document card while preserving expenses and budgets as structured records.&lt;/p&gt;

&lt;p&gt;This separation makes the data easier to consume in different downstream workflows.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Incremental synchronization
&lt;/h3&gt;

&lt;p&gt;Fetching every record during every run can be inefficient as datasets grow.&lt;/p&gt;

&lt;p&gt;The connector uses Brex's &lt;code&gt;posted_at_start&lt;/code&gt; filter and stores synchronization state through DLT's resource-state mechanism to track the latest processed timestamp.&lt;/p&gt;

&lt;p&gt;Subsequent runs can then use that timestamp to retrieve relevant new or updated expense records.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The important lesson:&lt;/strong&gt; reliable integrations need to remember where the previous synchronization ended.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Handling deletions safely
&lt;/h3&gt;

&lt;p&gt;One of the more interesting challenges was deletion reconciliation.&lt;/p&gt;

&lt;p&gt;Suppose a record disappears from the source. Eventually, the destination should stop treating that record as current.&lt;/p&gt;

&lt;p&gt;However, imagine the API temporarily fails while the connector is checking which records still exist. Treating an incomplete response as a complete snapshot could incorrectly mark valid records as deleted.&lt;/p&gt;

&lt;p&gt;The implementation therefore includes a guardrail: if reconciliation encounters API or network errors, deletion-marker generation is aborted rather than proceeding with potentially incomplete information.&lt;/p&gt;

&lt;p&gt;This is an important distinction between simply syncing data and building a connector that considers data integrity.&lt;/p&gt;

&lt;h2&gt;
  
  
  💻 What does using it look like?
&lt;/h2&gt;

&lt;p&gt;The pull request includes a usage example following Cognee's API.&lt;/p&gt;

&lt;p&gt;After installing and configuring the connector and providing the required Brex API credentials, the basic ingestion pattern looks like this:&lt;br&gt;
&lt;/p&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_brex&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;brex_source&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="n"&gt;source&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;brex_source&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;token&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;BREX_API_TOKEN&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="n"&gt;include&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;expenses&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;memos&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;budgets&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="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="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;brex_spend&lt;/span&gt;&lt;span class="sh"&gt;"&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="n"&gt;max_rows_per_table&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&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;p&gt;This example illustrates how the connector is configured and passed to Cognee's ingestion API. A complete setup also requires installing the relevant dependencies, configuring valid credentials with appropriate permissions, and checking the compatibility of the project's installed versions.&lt;/p&gt;

&lt;p&gt;Once the data is ingested, it can be used in a Cognee search workflow according to the configured pipeline and supported query types.&lt;/p&gt;

&lt;p&gt;For the full implementation and query example, see the &lt;a href="https://github.com/topoteretes/cognee-community/pull/389" rel="noopener noreferrer"&gt;pull request&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  🧪 Testing is part of the feature
&lt;/h2&gt;

&lt;p&gt;A connector should not be considered reliable just because it works with one successful API response.&lt;/p&gt;

&lt;p&gt;The pull request includes offline unit tests for important paths, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Authentication and API error handling.&lt;/li&gt;
&lt;li&gt;Pagination and data transformation.&lt;/li&gt;
&lt;li&gt;Incremental synchronization state.&lt;/li&gt;
&lt;li&gt;Deletion-marker generation and failure guardrails.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The PR also documents an end-to-end DLT pipeline run using DuckDB.&lt;/p&gt;

&lt;p&gt;These tests matter because connectors operate at a boundary between systems. A mistake can affect not only the data being fetched but also what downstream applications believe is current.&lt;/p&gt;

&lt;p&gt;I came away with a stronger appreciation for testing failure scenarios—not just the happy path.&lt;/p&gt;

&lt;h2&gt;
  
  
  📚 What I learned from this contribution
&lt;/h2&gt;

&lt;p&gt;This project taught me several practical lessons.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Understand the existing architecture before coding.&lt;/strong&gt; Following established connector patterns makes a contribution easier to review and maintain.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Think about synchronization from day one.&lt;/strong&gt; Initial ingestion is only one part of the problem. Updates, deletion handling, and persistent state matter just as much.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Protect data when dependencies fail.&lt;/strong&gt; A partial API response should not automatically be treated as the complete truth.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Treat documentation as part of the implementation.&lt;/strong&gt; Clear setup instructions and realistic examples help other developers use a feature without first having to understand every line of code.&lt;/p&gt;

&lt;p&gt;Most importantly, I learned that a meaningful open-source contribution often involves making many small engineering decisions correctly.&lt;/p&gt;

&lt;h2&gt;
  
  
  🙏 Thank you, Kunal Kushwaha, Cognee, and WeMakeDevs!
&lt;/h2&gt;

&lt;p&gt;A big thank you to &lt;strong&gt;Kunal Kushwaha&lt;/strong&gt; and the &lt;strong&gt;WeMakeDevs team&lt;/strong&gt; for encouraging developers to build in public, learn by contributing, and participate in open-source initiatives like MergeTober.&lt;/p&gt;

&lt;p&gt;Thank you to the &lt;strong&gt;Cognee team and community&lt;/strong&gt; for maintaining the project and creating opportunities to work on real integration challenges.&lt;/p&gt;

&lt;p&gt;I am also grateful to the maintainers and community members who helped with the issue assignment and contribution process.&lt;/p&gt;

&lt;p&gt;Open source is about more than individual pull requests. It is about a community where developers can learn from one another and gradually help improve the tools everyone uses.&lt;/p&gt;

&lt;h2&gt;
  
  
  🔗 Explore the project
&lt;/h2&gt;

&lt;p&gt;If you're interested in AI memory, data engineering, or contributing to open source, these resources are a good starting point:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;My pull request:&lt;/strong&gt; &lt;a href="https://github.com/topoteretes/cognee-community/pull/389" rel="noopener noreferrer"&gt;Brex spend data-source connector&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Original issue:&lt;/strong&gt; &lt;a href="https://github.com/topoteretes/cognee/issues/4797" rel="noopener noreferrer"&gt;Add a Brex data-source connector&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cognee:&lt;/strong&gt; &lt;a href="https://github.com/topoteretes/cognee" rel="noopener noreferrer"&gt;Explore the main repository&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MergeTober:&lt;/strong&gt; &lt;a href="https://www.wemakedevs.org/hackathons/mergetober" rel="noopener noreferrer"&gt;Learn about the initiative&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🚀 Your turn: build something useful
&lt;/h2&gt;

&lt;p&gt;You don't need to start with a groundbreaking idea to contribute to open source.&lt;/p&gt;

&lt;p&gt;Pick a real problem. Read the existing code. Ask questions when you need to. Test your implementation. Document what you learn.&lt;/p&gt;

&lt;p&gt;That is how small contributions become useful improvements to real software.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My MergeTober journey is another step in that direction, and I'm looking forward to learning and contributing more.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Have you built an API integration or contributed to an AI open-source project? Share your experience in the comments. I'd love to learn what challenges you encountered.&lt;/p&gt;




</description>
      <category>ai</category>
      <category>wemakedevs</category>
      <category>cognee</category>
      <category>opensource</category>
    </item>
    <item>
      <title>##I Built SetuBrain: An AI Company Brain That Knows When NOT to Answer</title>
      <dc:creator>Darshan Rajput</dc:creator>
      <pubDate>Sun, 18 Oct 2026 16:44:06 +0000</pubDate>
      <link>https://dev.to/darshan_rajput_3690/i-built-setubrain-an-ai-company-brain-that-knows-when-not-to-answer-1oag</link>
      <guid>https://dev.to/darshan_rajput_3690/i-built-setubrain-an-ai-company-brain-that-knows-when-not-to-answer-1oag</guid>
      <description>&lt;p&gt;What if an AI agent could detect outdated policies, trace answers to evidence, identify conflicting instructions, and admit when it doesn't know the answer?&lt;/p&gt;

&lt;p&gt;That's the problem I explored while building &lt;strong&gt;SetuBrain&lt;/strong&gt; for the &lt;strong&gt;FalkorDB Graph Hackathon 2026&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Inspired by &lt;a href="https://www.ycombinator.com/rfs#company-brain" rel="noopener noreferrer"&gt;Y Combinator's Company Brain Request for Startups&lt;/a&gt;, SetuBrain aims to bridge scattered company knowledge and reliable AI execution.&lt;/p&gt;

&lt;p&gt;🌐 &lt;strong&gt;&lt;a href="https://setu-brain.vercel.app" rel="noopener noreferrer"&gt;Live Demo&lt;/a&gt;&lt;/strong&gt; | 💻 &lt;strong&gt;&lt;a href="https://github.com/Darshan3690/SetuBrain" rel="noopener noreferrer"&gt;GitHub Repository&lt;/a&gt;&lt;/strong&gt; | 🎥 &lt;strong&gt;&lt;a href="https://www.youtube.com/watch?v=ZyC6j9tY-Cs" rel="noopener noreferrer"&gt;Watch the Project Video&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🧩 The Problem with Traditional RAG
&lt;/h2&gt;

&lt;p&gt;Company knowledge is scattered across PDFs, internal wikis, Slack conversations, policies, and approval records.&lt;/p&gt;

&lt;p&gt;A typical Retrieval-Augmented Generation (RAG) system retrieves relevant text, but what happens when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An old policy conflicts with a new one?&lt;/li&gt;
&lt;li&gt;An answer requires connecting multiple departments and approvals?&lt;/li&gt;
&lt;li&gt;Two documents contain contradictory instructions?&lt;/li&gt;
&lt;li&gt;No approved procedure exists?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Retrieving information isn't the same as verifying it.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🧠 Why FalkorDB?
&lt;/h2&gt;

&lt;p&gt;SetuBrain uses &lt;a href="https://github.com/FalkorDB/FalkorDB" rel="noopener noreferrer"&gt;FalkorDB&lt;/a&gt; as its graph data layer to represent company knowledge as connected entities rather than isolated text chunks.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Department → Procedure → Application → Policy → Approver&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Using Cypher queries, the system can traverse relationships, identify superseded policies, detect conflicts, and trace decisions to supporting evidence.&lt;/p&gt;

&lt;p&gt;The goal is to make graph relationships part of the reasoning process—not just a visualization.&lt;/p&gt;

&lt;h2&gt;
  
  
  ⚙️ How SetuBrain Works
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Graph-powered knowledge:&lt;/strong&gt; Represents departments, procedures, applications, policies, contacts, decisions, and evidence as connected nodes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Policy verification:&lt;/strong&gt; Uses graph traversal and supersession relationships to identify authoritative policies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Conflict detection:&lt;/strong&gt; Flags contradictory policies and supports human review before an uncertain instruction is treated as authoritative.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Human-in-the-loop learning:&lt;/strong&gt; Escalates missing knowledge to subject-matter experts and incorporates approved updates into the graph.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Agent integration through MCP:&lt;/strong&gt; Exposes graph-backed tools through a Model Context Protocol endpoint so compatible AI clients can access SetuBrain's capabilities.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Reusable agent skills:&lt;/strong&gt; Compiles verified graph information into structured &lt;code&gt;SKILL.md&lt;/code&gt; specifications.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. Multi-tenant architecture:&lt;/strong&gt; Separates tenant knowledge contexts using graph selection, with access controls required to enforce isolation securely.&lt;/p&gt;

&lt;h2&gt;
  
  
  📊 Testing the Approach
&lt;/h2&gt;

&lt;p&gt;In SetuBrain's documented 15-question enterprise benchmark, the results were:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Approach&lt;/th&gt;
&lt;th&gt;Correct answers&lt;/th&gt;
&lt;th&gt;Accuracy&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Flat vector RAG baseline&lt;/td&gt;
&lt;td&gt;4/15&lt;/td&gt;
&lt;td&gt;26.7%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SetuBrain graph approach&lt;/td&gt;
&lt;td&gt;15/15&lt;/td&gt;
&lt;td&gt;100%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;These results apply to this specific test set, not every RAG or graph-based system. The benchmark explores multi-hop reasoning, outdated policies, contradictions, missing knowledge, and evidence provenance.&lt;/p&gt;

&lt;p&gt;The key takeaway: vector retrieval and graph traversal solve different problems and can complement each other.&lt;/p&gt;

&lt;h2&gt;
  
  
  🛠️ Tech Stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Next.js &amp;amp; TypeScript&lt;/strong&gt; — Application and interface&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;FalkorDB &amp;amp; Cypher&lt;/strong&gt; — Graph storage and relationship traversal&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MCP&lt;/strong&gt; — Integration with compatible AI agents&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Three.js&lt;/strong&gt; — Interactive 3D knowledge graph visualization&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI agent workflows&lt;/strong&gt; — Conflict review, expert escalation, and skill generation&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🔗 Explore SetuBrain
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🌐 &lt;a href="https://setu-brain.vercel.app" rel="noopener noreferrer"&gt;Live Demo&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🖥️ &lt;a href="https://setu-brain.vercel.app/?view=console" rel="noopener noreferrer"&gt;Interactive Console&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;💻 &lt;a href="https://github.com/Darshan3690/SetuBrain" rel="noopener noreferrer"&gt;Source Code on GitHub&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;📚 &lt;a href="https://github.com/Darshan3690/SetuBrain/blob/main/setubrain_full_guide.md" rel="noopener noreferrer"&gt;Full Technical Guide&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🔌 &lt;a href="https://setu-brain.vercel.app/api/mcp" rel="noopener noreferrer"&gt;MCP Endpoint&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🏁 &lt;a href="https://github.com/FalkorDB/FalkorDB" rel="noopener noreferrer"&gt;FalkorDB Graph Hackathon&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;💡 &lt;a href="https://www.ycombinator.com/&lt;br&gt;%0Arfs#company-brain" rel="noopener noreferrer"&gt;Y Combinator: Company Brain RFS&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;🎥 &lt;a href="https://www.youtube.com/watch?v=ZyC6j9tY-Cs" rel="noopener noreferrer"&gt;Watch the Project Video&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  💭 My Biggest Takeaway
&lt;/h2&gt;

&lt;p&gt;Building SetuBrain reinforced one important principle:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A reliable AI system should know what is approved, what is outdated, what conflicts, and when human judgment is needed.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The future of enterprise AI isn't just about generating better answers. It's about building systems that can verify their knowledge and handle uncertainty responsibly.&lt;/p&gt;

&lt;p&gt;💬 &lt;strong&gt;Question for developers:&lt;/strong&gt; Would you trust a graph-powered AI agent to manage company knowledge? What would you build differently?&lt;/p&gt;

&lt;p&gt;Explore the repository, share your feedback, and let's build more reliable AI systems together!&lt;/p&gt;

&lt;h1&gt;
  
  
  AI #GraphRAG #FalkorDB #OpenSource
&lt;/h1&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>opensource</category>
    </item>
    <item>
      <title>I made my contribution to open source with Mergetober!</title>
      <dc:creator>Darshan Rajput</dc:creator>
      <pubDate>Wed, 14 Oct 2026 15:50:11 +0000</pubDate>
      <link>https://dev.to/darshan_rajput_3690/i-made-my-contribution-to-open-source-with-mergetober-2o9p</link>
      <guid>https://dev.to/darshan_rajput_3690/i-made-my-contribution-to-open-source-with-mergetober-2o9p</guid>
      <description>&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%2Fygbw6cqqiclizyfpaf3n.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%2Fygbw6cqqiclizyfpaf3n.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;## Integrating Clay Enterprise with Cognee Using dlt&lt;/p&gt;

&lt;p&gt;For Mergetober, I worked on building a connector that brings Clay Enterprise data into Cognee using &lt;code&gt;dlt&lt;/code&gt;'s REST API source.&lt;/p&gt;

&lt;p&gt;The main goal was to make it easier to bring structured data from Clay tables into Cognee. I worked on configuring the API endpoint, request parameters, and pagination so the connector could fetch data from the API.&lt;/p&gt;

&lt;p&gt;Pagination was an important part of the implementation because the API can return data across multiple pages. The connector needs to handle those pages to retrieve the available records properly. I also worked on preparing the data so it could be used in Cognee's ingestion workflow.&lt;/p&gt;

&lt;p&gt;I tested the implementation with unit tests and a real Clay Enterprise workspace. Working on this connector gave me a chance to contribute to an open-source project and explore how data integrations can connect external sources with AI applications.&lt;/p&gt;

&lt;p&gt;You can check out my contribution here: &lt;a href="https://github.com/topoteretes/cognee-community/pull/313" rel="noopener noreferrer"&gt;Clay Enterprise connector for Cognee — PR #313&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Acknowledgments
&lt;/h3&gt;

&lt;p&gt;A big thank you to &lt;a href="https://www.wemakedevs.org/hackathons/mergetober" rel="noopener noreferrer"&gt;WeMakeDevs&lt;/a&gt; for organizing Mergetober and giving developers a chance to contribute to open source. Thanks to the &lt;a href="https://www.cognee.ai/" rel="noopener noreferrer"&gt;Cognee team&lt;/a&gt; for building the project and making this contribution possible. I'd also like to thank &lt;strong&gt;Kunal Kushwaha&lt;/strong&gt; for encouraging and supporting the developer community.&lt;/p&gt;

&lt;p&gt;I'm glad I got the opportunity to contribute to Cognee through Mergetober. It was a great way to get involved in open source and work on a practical integration.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>🚀 **Building an AI memory integration cognee!**

I’m contributing to the open-source Cognee ecosystem by working on a Salesforce connector that aims to bring CRM data closer to AI-powered knowledge workflows.

🔹 Salesforce data ingestion</title>
      <dc:creator>Darshan Rajput</dc:creator>
      <pubDate>Tue, 13 Oct 2026 04:57:26 +0000</pubDate>
      <link>https://dev.to/darshan_rajput_3690/building-an-ai-memory-integration-cognee-im-contributing-to-the-open-source-cognee-3a8m</link>
      <guid>https://dev.to/darshan_rajput_3690/building-an-ai-memory-integration-cognee-im-contributing-to-the-open-source-cognee-3a8m</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/darshan_rajput_3690/inside-my-mergetober-contribution-integrating-salesforce-with-cognee-1m9j" class="crayons-story__hidden-navigation-link"&gt;Inside My MergeTober Contribution: Integrating Salesforce with Cognee&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/darshan_rajput_3690" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F4180988%2Fcf7a5d1a-b6a1-47b4-8061-d423bf7f0b9e.jpg" alt="darshan_rajput_3690 profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/darshan_rajput_3690" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Darshan Rajput
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Darshan Rajput
                
                
              
              &lt;div id="story-author-preview-content-4841481" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/darshan_rajput_3690" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F4180988%2Fcf7a5d1a-b6a1-47b4-8061-d423bf7f0b9e.jpg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Darshan Rajput&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/darshan_rajput_3690/inside-my-mergetober-contribution-integrating-salesforce-with-cognee-1m9j" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Oct 13&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/darshan_rajput_3690/inside-my-mergetober-contribution-integrating-salesforce-with-cognee-1m9j" id="article-link-4841481"&gt;
          Inside My MergeTober Contribution: Integrating Salesforce with Cognee
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/opensource"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;opensource&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/salesforce"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;salesforce&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/cognee"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;cognee&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/darshan_rajput_3690/inside-my-mergetober-contribution-integrating-salesforce-with-cognee-1m9j" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;6&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/darshan_rajput_3690/inside-my-mergetober-contribution-integrating-salesforce-with-cognee-1m9j#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              &lt;span class="hidden s:inline"&gt;Add&amp;nbsp;Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            3 min read
          &lt;/small&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>ai</category>
      <category>coding</category>
      <category>opensource</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>Inside My MergeTober Contribution: Integrating Salesforce with Cognee</title>
      <dc:creator>Darshan Rajput</dc:creator>
      <pubDate>Tue, 13 Oct 2026 04:53:29 +0000</pubDate>
      <link>https://dev.to/darshan_rajput_3690/inside-my-mergetober-contribution-integrating-salesforce-with-cognee-1m9j</link>
      <guid>https://dev.to/darshan_rajput_3690/inside-my-mergetober-contribution-integrating-salesforce-with-cognee-1m9j</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;Introduction&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;AI agents are only as useful as the information they can access. But business knowledge often lives in separate tools, such as CRM platforms, documents, and communication systems.&lt;/p&gt;

&lt;p&gt;That is why I participated in &lt;strong&gt;MergeTober&lt;/strong&gt;, contributing to the open-source Cognee ecosystem by working on a Salesforce connector.&lt;/p&gt;

&lt;p&gt;Cognee provides a memory layer for AI agents, helping turn data into connected knowledge that can be retrieved by downstream applications. My contribution aims to make Salesforce CRM data available to those workflows.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Why Connect Salesforce with Cognee?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Salesforce contains valuable business information, including customer accounts, sales opportunities, support cases, and Chatter conversations.&lt;/p&gt;

&lt;p&gt;Connecting this data to Cognee could help developers build AI applications that retrieve relevant business context instead of relying only on isolated records.&lt;/p&gt;

&lt;p&gt;The goal of my connector is to support:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Authentication:&lt;/strong&gt; OAuth 2.0 with a Salesforce Connected App.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data ingestion:&lt;/strong&gt; Accounts, Opportunities, Cases, and Chatter records.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Incremental synchronization:&lt;/strong&gt; SOQL queries using &lt;code&gt;LastModifiedDate&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deletion handling:&lt;/strong&gt; Detect deleted source records and support downstream cleanup.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Testing and documentation:&lt;/strong&gt; Unit tests, setup instructions, and a runnable example.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;How It Could Work in the Real World&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Imagine a sales team using a CRM knowledge assistant.&lt;/p&gt;

&lt;p&gt;A representative asks:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;“What open opportunities are associated with this customer, and are there any related support cases?”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;A configured application could retrieve relevant Salesforce records through the connector, process the information with Cognee, and use the resulting knowledge as context for an answer.&lt;/p&gt;

&lt;p&gt;This is an illustrative use case, not a claim that I have tested a complete assistant against a live Salesforce organization.&lt;/p&gt;

&lt;p&gt;Incremental synchronization could help keep the information current, while deletion handling could help prevent outdated source records from remaining in the knowledge system.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Testing My Contribution&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;I tested the connector locally using mocked Salesforce responses and verified that &lt;strong&gt;9 out of 9 mocked unit tests passed&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;These results validate the behavior covered by those tests. They do not independently establish that authentication, synchronization, and knowledge retrieval have all been verified against a live Salesforce environment.&lt;/p&gt;

&lt;p&gt;My pull request is currently open and awaiting review.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/topoteretes/cognee-community/pull/311" rel="noopener noreferrer"&gt;View my Salesforce connector PR on GitHub&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Why MergeTober Matters&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;I appreciate MergeTober's focus on building integrations that solve real problems. Code demonstrates what we build, while a practical blog post helps other developers understand why it matters and how they might use it.&lt;/p&gt;

&lt;p&gt;Contributing to open source is an opportunity to learn, collaborate, and create tools that others can build upon.&lt;/p&gt;

&lt;p&gt;A special &lt;strong&gt;thank you to &lt;a href="https://www.linkedin.com/in/kunalkushwaha/" rel="noopener noreferrer"&gt;Kunal Kushwaha&lt;/a&gt;, Founder of &lt;a href="https://www.wemakedevs.org/" rel="noopener noreferrer"&gt;WeMakeDevs&lt;/a&gt;&lt;/strong&gt;, for creating opportunities that encourage developers to contribute to meaningful open-source projects.&lt;/p&gt;

&lt;p&gt;Thank you also to the &lt;strong&gt;&lt;a href="https://www.linkedin.com/company/cognee-ai/" rel="noopener noreferrer"&gt;Cognee team and community&lt;/a&gt;&lt;/strong&gt; for building an open-source memory layer for AI agents and supporting its growing integration ecosystem.&lt;/p&gt;

&lt;p&gt;Learn more about Cognee at &lt;a href="https://www.cognee.ai/" rel="noopener noreferrer"&gt;cognee.ai&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Conclusion&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;My MergeTober contribution explores how Salesforce CRM data can become part of AI knowledge workflows through authentication, structured ingestion, incremental synchronization, and deletion handling.&lt;/p&gt;

&lt;p&gt;With my local mocked tests passing and the pull request awaiting review, I look forward to continuing to improve the contribution through feedback and validation.&lt;/p&gt;

&lt;p&gt;I'm excited to contribute to open source and explore how connected business knowledge can make AI applications more useful.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>ai</category>
      <category>salesforce</category>
      <category>cognee</category>
    </item>
  </channel>
</rss>
