<?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>Forem: Daniel Yarmoluk</title>
    <description>The latest articles on Forem by Daniel Yarmoluk (@daniel_yarmoluk_79a9d0364).</description>
    <link>https://forem.com/daniel_yarmoluk_79a9d0364</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%2F3834735%2F90e3ec95-9989-450b-9224-c2fbd95a921f.png</url>
      <title>Forem: Daniel Yarmoluk</title>
      <link>https://forem.com/daniel_yarmoluk_79a9d0364</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/daniel_yarmoluk_79a9d0364"/>
    <language>en</language>
    <item>
      <title>I mapped LangChain Core as a knowledge graph — here's what the structure reveals</title>
      <dc:creator>Daniel Yarmoluk</dc:creator>
      <pubDate>Fri, 01 May 2026 20:17:10 +0000</pubDate>
      <link>https://forem.com/daniel_yarmoluk_79a9d0364/i-mapped-langchain-core-as-a-knowledge-graph-heres-what-the-structure-reveals-16a9</link>
      <guid>https://forem.com/daniel_yarmoluk_79a9d0364/i-mapped-langchain-core-as-a-knowledge-graph-heres-what-the-structure-reveals-16a9</guid>
      <description>&lt;p&gt;I mapped LangChain Core as a knowledge graph. 180 modules, 650 dependency edges. Here's what the structure reveals that the docs never tell you.&lt;/p&gt;

&lt;p&gt;Finding 1: The messages module has a 70% blast radius.&lt;/p&gt;

&lt;p&gt;Change it and 126 of 180 modules break — directly or transitively. Every callback, every agent, every retriever, every embedding module traces a dependency path back to messages. It is the load-bearing wall of the entire framework. Nothing in the documentation flags this.&lt;/p&gt;

&lt;p&gt;Finding 2: runnables.base requires 147 other modules to fully function.&lt;/p&gt;

&lt;p&gt;That is 82% of the codebase as a prerequisite chain. Before an agent touches runnables.base, it needs ground-truth awareness of almost everything else. Without that map, it is guessing.&lt;/p&gt;

&lt;p&gt;Finding 3: Exactly 7 modules are completely safe to modify without any downstream risk.&lt;/p&gt;

&lt;p&gt;cross_encoders, structured_query, sys_info, version, utils.html, utils.image, utils.mustache. Seven. Out of 180.&lt;/p&gt;

&lt;p&gt;Why this matters for agents:&lt;/p&gt;

&lt;p&gt;A coding agent dispatched to modify LangChain without this map will grep for context, retrieve similar-looking docs, and make a confident, structurally wrong change. The blast radius is invisible to similarity search. It is only visible to graph traversal.&lt;/p&gt;

&lt;p&gt;This is the difference between retrieval and spatial intelligence. RAG finds text that looks relevant. A knowledge graph tells you what actually breaks.&lt;/p&gt;

&lt;p&gt;The dataset is live. The same query interface that works on GLP-1 pharmacology and ICD-10 classification works on a codebase. The domain doesn't matter. The structure does.&lt;/p&gt;

&lt;p&gt;LangChain Core CKG (180 modules, 650 edges): &lt;a href="https://huggingface.co/datasets/danyarm/ckg-benchmark" rel="noopener noreferrer"&gt;https://huggingface.co/datasets/danyarm/ckg-benchmark&lt;/a&gt;&lt;br&gt;
MCP server — query it directly: &lt;a href="https://github.com/Yarmoluk/ckg-mcp" rel="noopener noreferrer"&gt;https://github.com/Yarmoluk/ckg-mcp&lt;/a&gt;&lt;br&gt;
Full benchmark (RAG vs CKG across 54 domains): &lt;a href="https://graphifymd.com/paper.html" rel="noopener noreferrer"&gt;https://graphifymd.com/paper.html&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>knowledgegraph</category>
      <category>agents</category>
    </item>
    <item>
      <title>Beyond RAG: Why I replaced similarity search with graph traversal for AI agent context</title>
      <dc:creator>Daniel Yarmoluk</dc:creator>
      <pubDate>Fri, 01 May 2026 19:57:56 +0000</pubDate>
      <link>https://forem.com/daniel_yarmoluk_79a9d0364/beyond-rag-why-i-replaced-similarity-search-with-graph-traversal-for-ai-agent-context-2p7b</link>
      <guid>https://forem.com/daniel_yarmoluk_79a9d0364/beyond-rag-why-i-replaced-similarity-search-with-graph-traversal-for-ai-agent-context-2p7b</guid>
      <description>&lt;h2&gt;
  
  
  The problem RAG doesn't solve
&lt;/h2&gt;

&lt;p&gt;RAG is good for question answering. It's bad for tasks that require knowing dependencies before you act.&lt;/p&gt;

&lt;p&gt;When an AI coding agent asks "what breaks if I change RunnableSequence?" — RAG retrieves text chunks that mention RunnableSequence. Approximate. Probabilistic. It might miss the 23 modules that directly import it.&lt;/p&gt;

&lt;p&gt;Same problem in life sciences. A PM asks an agent to draft a payer brief for GLP-1 coverage. The agent doesn't know that Insulin Resistance flows upstream to Metabolic Syndrome — which gates Prior Authorization — which determines formulary position. It retrieves similar text and approximates.&lt;/p&gt;

&lt;p&gt;The wrong answer in both cases sounds right. That's the risk.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I built
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;ckg-mcp&lt;/code&gt; — an open-source Model Context Protocol server that delivers compact knowledge graphs (CKGs) to any MCP-compatible agent orchestrator as pre-action structural context.&lt;br&gt;
&lt;/p&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;ckg-mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;MCP config:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"ckg"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ckg-mcp"&lt;/span&gt;&lt;span class="p"&gt;}}}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The orchestrator calls tools before dispatching any worker agent:&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="nf"&gt;trace_upstream&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;RunnableSequence&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;    &lt;span class="c1"&gt;# exact blast radius
&lt;/span&gt;&lt;span class="nf"&gt;trace_downstream&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;BaseRunnable&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;      &lt;span class="c1"&gt;# everything that depends on this
&lt;/span&gt;&lt;span class="nf"&gt;find_path&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Insulin Resistance&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;Prior Authorization&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;# causal chain
&lt;/span&gt;&lt;span class="nf"&gt;get_domain_summary&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;                  &lt;span class="c1"&gt;# full domain stats
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Two demos
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Codebase:&lt;/strong&gt; Mapped LangChain Core — 180 modules, 650 dependency edges. Before a coding agent edits any module, it calls &lt;code&gt;trace_upstream(module)&lt;/code&gt;. Gets back the exact dependency subgraph. Then &lt;code&gt;trace_downstream(module)&lt;/code&gt; for blast radius. Every hop is a real edge. No guessing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Clinical:&lt;/strong&gt; The GLP-1 Clinical Pathway is a 146-node graph with 200+ typed dependency edges: mechanism, market, regulatory, clinical. An agent drafting a payer brief queries the graph first and gets the causal chain from mechanism of action through prior authorization to formulary position. Then it writes.&lt;/p&gt;

&lt;p&gt;Both use the same MCP interface. Swap the CSV file, everything else stays the same.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why it's more efficient
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;System&lt;/th&gt;
&lt;th&gt;BERT F1&lt;/th&gt;
&lt;th&gt;Cost/Correct Answer&lt;/th&gt;
&lt;th&gt;Tokens/Query&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;CKG&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.857&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$0.000506&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;274&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RAG&lt;/td&gt;
&lt;td&gt;0.817&lt;/td&gt;
&lt;td&gt;$0.013046&lt;/td&gt;
&lt;td&gt;~3,100&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GraphRAG&lt;/td&gt;
&lt;td&gt;0.825&lt;/td&gt;
&lt;td&gt;$0.020098&lt;/td&gt;
&lt;td&gt;~10,000&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;65x more token-efficient than RAG. 40x cheaper per correct answer than Microsoft GraphRAG. Higher BERT F1 than both.&lt;/p&gt;

&lt;p&gt;The token difference is structural: CKG retrieves exactly what was asked for. RAG passes large text chunks that need synthesis. The model cost difference follows directly.&lt;/p&gt;

&lt;p&gt;Tested across 8,121 queries, 47 domains, BERTScore (roberta-large).&lt;/p&gt;

&lt;h2&gt;
  
  
  Domain-agnostic
&lt;/h2&gt;

&lt;p&gt;The same MCP tools work for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Software codebases&lt;/strong&gt; — blast radius before any edit&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clinical pathways&lt;/strong&gt; — causal chain before any payer document&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Regulatory frameworks&lt;/strong&gt; — dependency chain before any compliance draft&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Financial instruments&lt;/strong&gt; — prerequisite structure before any analysis&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Educational curricula&lt;/strong&gt; — learning graph before any content generation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;52 domains live. Switch by swapping the CSV file.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Live demo: &lt;a href="https://huggingface.co/spaces/danyarm/ckg-demo" rel="noopener noreferrer"&gt;huggingface.co/spaces/danyarm/ckg-demo&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/Yarmoluk/ckg-mcp" rel="noopener noreferrer"&gt;github.com/Yarmoluk/ckg-mcp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Benchmark: &lt;a href="https://github.com/Yarmoluk/ckg-benchmark" rel="noopener noreferrer"&gt;github.com/Yarmoluk/ckg-benchmark&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Site (mapped by persona): &lt;a href="https://graphifymd.com" rel="noopener noreferrer"&gt;graphifymd.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Questions: &lt;a href="mailto:graphifymd@protonmail.com"&gt;graphifymd@protonmail.com&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>knowledgegraph</category>
      <category>agents</category>
    </item>
    <item>
      <title>I benchmarked RAG vs GraphRAG vs pre-structured knowledge graphs across 45 domains — here's what happened</title>
      <dc:creator>Daniel Yarmoluk</dc:creator>
      <pubDate>Mon, 27 Apr 2026 23:59:13 +0000</pubDate>
      <link>https://forem.com/daniel_yarmoluk_79a9d0364/i-benchmarked-rag-vs-graphrag-vs-pre-structured-knowledge-graphs-across-45-domains-heres-what-51g5</link>
      <guid>https://forem.com/daniel_yarmoluk_79a9d0364/i-benchmarked-rag-vs-graphrag-vs-pre-structured-knowledge-graphs-across-45-domains-heres-what-51g5</guid>
      <description>&lt;p&gt;Three retrieval architectures. Same LLM. Same 7,928 queries across 45 domains. Different structure going in.&lt;/p&gt;

&lt;p&gt;Here are the results:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;System&lt;/th&gt;
&lt;th&gt;F1 Score&lt;/th&gt;
&lt;th&gt;Tokens/query&lt;/th&gt;
&lt;th&gt;Cost/query&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;RAG (FAISS + Claude)&lt;/td&gt;
&lt;td&gt;0.123&lt;/td&gt;
&lt;td&gt;2,982&lt;/td&gt;
&lt;td&gt;~$0.009&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GraphRAG (Microsoft)&lt;/td&gt;
&lt;td&gt;0.120&lt;/td&gt;
&lt;td&gt;3,450&lt;/td&gt;
&lt;td&gt;~$0.013&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;CKG (pre-structured DAG)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.471&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;269&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;~$0.001&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;CKG is 4x more accurate and uses 11x fewer tokens than RAG.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is a CKG?
&lt;/h2&gt;

&lt;p&gt;A Compact Knowledge Graph (CKG) pre-structures domain knowledge as a directed acyclic graph (DAG). Concepts are nodes. Dependencies are edges. A CSV file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csvs"&gt;&lt;code&gt;&lt;span class="k"&gt;ConceptID&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="k"&gt;ConceptLabel&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="k"&gt;Dependencies&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="k"&gt;TaxonomyID&lt;/span&gt;
&lt;span class="mf"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="k"&gt;Calculus&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mf"&gt;2&lt;/span&gt;&lt;span class="err"&gt;|&lt;/span&gt;&lt;span class="mf"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="k"&gt;CORE&lt;/span&gt;
&lt;span class="mf"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="k"&gt;Algebra&lt;/span&gt;&lt;span class="p"&gt;,,&lt;/span&gt;&lt;span class="k"&gt;FOUND&lt;/span&gt;
&lt;span class="mf"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="k"&gt;Trigonometry&lt;/span&gt;&lt;span class="p"&gt;,,&lt;/span&gt;&lt;span class="k"&gt;FOUND&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When an agent asks "what do I need to know before Calculus?", CKG traverses edges. No embedding. No similarity search. No hallucination by construction.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why RAG fails on multi-hop queries
&lt;/h2&gt;

&lt;p&gt;RAG retrieves the most &lt;em&gt;similar&lt;/em&gt; text chunk to a query. For simple lookups, this works. For multi-hop questions — prerequisites, dependency chains, drug interactions, regulatory trees — it fragments the answer across chunks that contradict each other.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;F1 by hop depth:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Hop depth&lt;/th&gt;
&lt;th&gt;CKG&lt;/th&gt;
&lt;th&gt;RAG&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;0.374&lt;/td&gt;
&lt;td&gt;0.312&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;0.512&lt;/td&gt;
&lt;td&gt;0.298&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;0.631&lt;/td&gt;
&lt;td&gt;0.241&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;0.714&lt;/td&gt;
&lt;td&gt;0.198&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;5&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.772&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;0.187&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;CKG improves continuously with depth. RAG plateaus at hop=2 and degrades. The deeper the question, the larger the gap.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where CKG dominates by query type
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Query type&lt;/th&gt;
&lt;th&gt;CKG&lt;/th&gt;
&lt;th&gt;RAG&lt;/th&gt;
&lt;th&gt;Advantage&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Aggregate (T4)&lt;/td&gt;
&lt;td&gt;0.964&lt;/td&gt;
&lt;td&gt;0.286&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;3.4x&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Path traversal (T3)&lt;/td&gt;
&lt;td&gt;0.660&lt;/td&gt;
&lt;td&gt;0.201&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;3.3x&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dependency (T2)&lt;/td&gt;
&lt;td&gt;0.634&lt;/td&gt;
&lt;td&gt;0.078&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;8.1x&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cross-concept (T5)&lt;/td&gt;
&lt;td&gt;0.323&lt;/td&gt;
&lt;td&gt;0.115&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;2.8x&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Entity lookup (T1)&lt;/td&gt;
&lt;td&gt;0.207&lt;/td&gt;
&lt;td&gt;0.094&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;2.2x&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The biggest win (8.1x) is on dependency queries — the exact query type that matters in clinical, legal, financial, and regulatory domains.&lt;/p&gt;

&lt;h2&gt;
  
  
  Structure is the signal — not curation effort
&lt;/h2&gt;

&lt;p&gt;Track 2: I built a GLP-1/pharma domain from the ClinicalTrials.gov API in a single session. No expert curation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;F1 = 0.530&lt;/strong&gt; — higher than the 45-domain average.&lt;/p&gt;

&lt;p&gt;If a domain has knowable dependencies, it can be CKG-ified. The structure drives accuracy, not the effort.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;MCP server&lt;/strong&gt; — works in Claude Code and any MCP-compatible agent:&lt;br&gt;
&lt;/p&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;ckg-mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your agent gets 4 tools: &lt;code&gt;list_domains&lt;/code&gt;, &lt;code&gt;query_ckg&lt;/code&gt;, &lt;code&gt;get_prerequisites&lt;/code&gt;, &lt;code&gt;search_concepts&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Live demo:&lt;/strong&gt; &lt;a href="https://huggingface.co/spaces/danyarm/ckg-demo" rel="noopener noreferrer"&gt;https://huggingface.co/spaces/danyarm/ckg-demo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Full dataset&lt;/strong&gt; (45 domain CSVs + 7,928 query JSONL + results):&lt;br&gt;
&lt;a href="https://huggingface.co/datasets/danyarm/ckg-benchmark" rel="noopener noreferrer"&gt;https://huggingface.co/datasets/danyarm/ckg-benchmark&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Paper + benchmark code:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://github.com/Yarmoluk/ckg-benchmark" rel="noopener noreferrer"&gt;https://github.com/Yarmoluk/ckg-benchmark&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One-page summary:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://github.com/Yarmoluk/ckg-benchmark/blob/main/SUMMARY.md" rel="noopener noreferrer"&gt;https://github.com/Yarmoluk/ckg-benchmark/blob/main/SUMMARY.md&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Custom domains
&lt;/h2&gt;

&lt;p&gt;The benchmark covers 45 general domains. For clinical, legal, financial, or regulatory domains where dependency structure is critical: &lt;a href="https://graphifymd.com" rel="noopener noreferrer"&gt;graphifymd.com&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;All code MIT licensed. Data CC BY 4.0. Questions welcome in the comments.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>python</category>
      <category>opensource</category>
    </item>
    <item>
      <title>.md is the universal AI interface</title>
      <dc:creator>Daniel Yarmoluk</dc:creator>
      <pubDate>Fri, 20 Mar 2026 10:24:28 +0000</pubDate>
      <link>https://forem.com/daniel_yarmoluk_79a9d0364/md-is-the-universal-ai-interface-1mo7</link>
      <guid>https://forem.com/daniel_yarmoluk_79a9d0364/md-is-the-universal-ai-interface-1mo7</guid>
      <description>&lt;p&gt;I built an interactive healthcare knowledge graph — conditions, medications, drug interactions, diagnostics, billing codes, care pathways — and structured it as a compressed markdown file that any AI model can reason over.&lt;/p&gt;

&lt;p&gt;Not a summary. Not a document. &lt;strong&gt;A traversable knowledge graph in .md format.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;~3,000 tokens instead of ~500,000. Same reasoning quality. 170x more efficient.&lt;/p&gt;

&lt;p&gt;Here's the live interactive demo: &lt;a href="https://graphifymd.com/healthcare-kg-demo.html" rel="noopener noreferrer"&gt;graphifymd.com/healthcare-kg-demo.html&lt;/a&gt;&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.amazonaws.com%2Fuploads%2Farticles%2Fdf2o0n068i89dh4w1q9b.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%2Fdf2o0n068i89dh4w1q9b.png" alt="Healthcare Knowledge Graph — interactive D3 visualization"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters
&lt;/h2&gt;

&lt;p&gt;85% of enterprise AI pilots fail to scale. Not because the models are bad. Because the &lt;strong&gt;context&lt;/strong&gt; is.&lt;/p&gt;

&lt;p&gt;An LLM can't reason about drug interactions if it doesn't know that metformin relates to renal function relates to GFR thresholds relates to dosing adjustments. That's not a retrieval problem. That's a relationship problem.&lt;/p&gt;

&lt;p&gt;RAG retrieves text chunks. Knowledge graphs traverse relationships. The difference is the difference between searching a library index and having a librarian who knows which books reference each other — and why.&lt;/p&gt;

&lt;h2&gt;
  
  
  The pipeline
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Raw clinical data (~2MB)
    ↓
Knowledge graph extraction (200 entities, 500+ relationships)
    ↓
Graph distillation (typed relationships + traversal rules)
    ↓
Compressed .md (~12KB, ~3,000 tokens)
    ↓
Deploy anywhere
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What the .md looks like
&lt;/h2&gt;

&lt;p&gt;Here's a fragment of the cardiology domain graph compressed to markdown:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## Entities&lt;/span&gt;

&lt;span class="gu"&gt;### Conditions&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Atrial Fibrillation | ICD: I48 | prevalence: 2.7M US
&lt;span class="p"&gt;-&lt;/span&gt; Heart Failure | ICD: I50 | prevalence: 6.2M US
&lt;span class="p"&gt;  -&lt;/span&gt; subtypes: HFrEF (EF≤40%), HFpEF (EF≥50%)

&lt;span class="gu"&gt;### Medications&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Apixaban | class: DOAC | no INR monitoring
&lt;span class="p"&gt;-&lt;/span&gt; Warfarin | class: anticoagulant | INR target: 2-3
&lt;span class="p"&gt;-&lt;/span&gt; Amiodarone | class: antiarrhythmic | ⚠️ toxicity

&lt;span class="gu"&gt;## Relationships&lt;/span&gt;

AFib → TREATED_BY → Apixaban (first-line DOAC)
AFib → RISK_FACTOR_FOR → Stroke (5x risk)
HFrEF → TREATED_BY → Metoprolol (mortality ↓35%)
Warfarin → INTERACTS_WITH → Amiodarone ⚠️
  ↳ RULE: ↑INR 50-70%. Reduce warfarin dose 30-50%.
Apixaban → REQUIRES → CrCl assessment
  ↳ RULE: Reduce dose if CrCl 15-29, avoid if &amp;lt;15

&lt;span class="gu"&gt;## Traversal Examples&lt;/span&gt;

Q: Patient with AFib + CKD Stage 4. Anticoagulation?
AFib → TREATED_BY → Apixaban
Apixaban → REQUIRES → CrCl
CKD Stage 4 → CrCl 15-29 → DOSE_ADJUST Apixaban
→ Answer: Apixaban 2.5mg BID (reduced dose)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The model doesn't guess. It follows the chain. Multi-hop reasoning with an audit trail.&lt;/p&gt;

&lt;h2&gt;
  
  
  The numbers
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Raw Data&lt;/th&gt;
&lt;th&gt;Knowledge Graph .md&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Size&lt;/td&gt;
&lt;td&gt;~2MB&lt;/td&gt;
&lt;td&gt;~12KB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tokens&lt;/td&gt;
&lt;td&gt;~500,000&lt;/td&gt;
&lt;td&gt;~3,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Density&lt;/td&gt;
&lt;td&gt;1x&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;170x&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Compression&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;93%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CO₂ per query&lt;/td&gt;
&lt;td&gt;~0.34 kg&lt;/td&gt;
&lt;td&gt;~0.002 kg&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;That last line matters. Fewer tokens = less compute = lower energy. 99.4% carbon reduction per query. Structured intelligence is greener intelligence.&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.amazonaws.com%2Fuploads%2Farticles%2Fomc9cdooucot6wc8rboh.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%2Fomc9cdooucot6wc8rboh.png" alt="Graphify.md — the intelligence is the product"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;March Madness knowledge graph — 68 teams, built live with graduate software engineers&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  It works everywhere
&lt;/h2&gt;

&lt;p&gt;The same .md file works across every AI environment without modification:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Claude Projects&lt;/strong&gt; — upload as project knowledge&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Claude Code&lt;/strong&gt; — CLAUDE.md project context&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ChatGPT&lt;/strong&gt; — custom GPT instructions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cursor / Windsurf&lt;/strong&gt; — context file&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Codex CLI&lt;/strong&gt; — AGENTS.md&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MCP Server&lt;/strong&gt; — serve as tool context&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API&lt;/strong&gt; — system prompt injection&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Email&lt;/strong&gt; — it's just text. Paste it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No vendor lock-in. No format conversion. No special tooling. Markdown is the universal interface.&lt;/p&gt;
&lt;h2&gt;
  
  
  Why not just use RAG?
&lt;/h2&gt;

&lt;p&gt;RAG retrieves the top-k text chunks that match your query. It's single-hop — find the most similar text, return it.&lt;/p&gt;

&lt;p&gt;A knowledge graph traverses relationships. When you ask about a patient with AFib and kidney disease, the graph follows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AFib → treatment options → Apixaban → renal requirements →
CrCl thresholds → CKD staging → dose adjustment rules
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's 5 hops. RAG would need to independently retrieve and stitch together 5 separate chunks and hope the model connects them. The graph has already connected them.&lt;/p&gt;

&lt;p&gt;Microsoft's 2024 research showed knowledge graphs achieve an 83% win rate vs vector RAG. HopRAG (ACL 2025) showed 77% higher accuracy on multi-hop questions.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I'm building
&lt;/h2&gt;

&lt;p&gt;I run &lt;a href="https://graphifymd.com" rel="noopener noreferrer"&gt;Graphify.md&lt;/a&gt; — we build domain knowledge graphs and compress them to portable .md for any industry. Healthcare is one vertical. We've also built graphs for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://graphifymd.com/march-madness.html" rel="noopener noreferrer"&gt;March Madness tournament&lt;/a&gt; — 68 teams, real-time scores, built live with grad students&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://graphifymd.com/linkedin-groups-kg.html" rel="noopener noreferrer"&gt;LinkedIn Groups ecosystem&lt;/a&gt; — 200+ groups, 15 verticals, relationship edges&lt;/li&gt;
&lt;li&gt;Defense, legal, construction, supply chain, GovTech, education — &lt;a href="https://graphifymd.com/verticals.html" rel="noopener noreferrer"&gt;12 verticals mapped&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The methodology works on any domain. If your data has entities and relationships — and all data does — it can be graphed, compressed, and deployed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;The interactive demo is live. Hover over nodes to see relationship chains light up:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://graphifymd.com/healthcare-kg-demo.html" rel="noopener noreferrer"&gt;graphifymd.com/healthcare-kg-demo.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Built entirely with Claude Code. The whole thing — knowledge graph extraction, D3 visualization, .md compression, the site — solo, in days not months.&lt;/p&gt;

&lt;p&gt;If you're working on a domain where AI keeps hallucinating or RAG keeps missing context, the problem might not be the model. It might be the structure.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Daniel Yarmoluk — &lt;a href="https://graphifymd.com" rel="noopener noreferrer"&gt;Graphify.md&lt;/a&gt; — &lt;a href="https://calendly.com/daniel-yarmoluk/30min" rel="noopener noreferrer"&gt;Book a call&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>knowledgegraph</category>
      <category>claude</category>
      <category>graphrag</category>
    </item>
    <item>
      <title>Tired of being on the RAG? Try GraphRAG</title>
      <dc:creator>Daniel Yarmoluk</dc:creator>
      <pubDate>Fri, 20 Mar 2026 09:17:34 +0000</pubDate>
      <link>https://forem.com/daniel_yarmoluk_79a9d0364/tired-of-being-on-the-rag-try-graphrag-2dh8</link>
      <guid>https://forem.com/daniel_yarmoluk_79a9d0364/tired-of-being-on-the-rag-try-graphrag-2dh8</guid>
      <description>&lt;p&gt;Are you tired of the aches and pains of Vector search guessing...There's gotta be a better way to endure the toil. &lt;/p&gt;

&lt;p&gt;Maybe just try a knowledge graph at the .md level to fit more through the context pipeline?  There's gotta be a better way...&lt;/p&gt;

</description>
      <category>ai</category>
    </item>
    <item>
      <title>Knowledge Graph Creation</title>
      <dc:creator>Daniel Yarmoluk</dc:creator>
      <pubDate>Fri, 20 Mar 2026 08:20:22 +0000</pubDate>
      <link>https://forem.com/daniel_yarmoluk_79a9d0364/knowledge-graph-creation-40c3</link>
      <guid>https://forem.com/daniel_yarmoluk_79a9d0364/knowledge-graph-creation-40c3</guid>
      <description>&lt;p&gt;I am looking for co-creators, people that want to solve real problems.  If you have a hairy issue, we can knowledge graph and compress it.  If I'm wrong, block me, who cares right?  &lt;/p&gt;

&lt;p&gt;I need to feed my family.  I have real problems.  I'm trying to do real things with my knowledge graph to the .md file level.  If someone has a really complicated layered value chain or problem that you feel would benefit from a knowledge graph compressed to .md level in which you can layer on more complications, please reach out.  &lt;/p&gt;

</description>
      <category>ai</category>
      <category>graphdatabase</category>
    </item>
    <item>
      <title>Looking for audio/video geeks -- knowledge context architect seeking creativity for applications</title>
      <dc:creator>Daniel Yarmoluk</dc:creator>
      <pubDate>Fri, 20 Mar 2026 08:16:29 +0000</pubDate>
      <link>https://forem.com/daniel_yarmoluk_79a9d0364/looking-for-audiovideo-geeks-knowledge-context-architect-seeking-creativity-for-applications-1gn</link>
      <guid>https://forem.com/daniel_yarmoluk_79a9d0364/looking-for-audiovideo-geeks-knowledge-context-architect-seeking-creativity-for-applications-1gn</guid>
      <description>&lt;p&gt;My post is up there, so many rules, jeez...&lt;/p&gt;

&lt;p&gt;the anti-framework -- problem / solution -- cuts through stuff&lt;/p&gt;

</description>
    </item>
    <item>
      <title>First Post Ever! -- I compressed 2MB of healthcare data into 12KB of markdown - here's the knowledge graph</title>
      <dc:creator>Daniel Yarmoluk</dc:creator>
      <pubDate>Fri, 20 Mar 2026 08:14:09 +0000</pubDate>
      <link>https://forem.com/daniel_yarmoluk_79a9d0364/first-post-ever-i-compressed-2mb-of-healthcare-data-into-12kb-of-markdown-heres-the-52hi</link>
      <guid>https://forem.com/daniel_yarmoluk_79a9d0364/first-post-ever-i-compressed-2mb-of-healthcare-data-into-12kb-of-markdown-heres-the-52hi</guid>
      <description>&lt;p&gt;I built an interactive healthcare knowledge graph — conditions, medications, drug interactions, diagnostics, billing codes, care pathways — and structured it as a compressed markdown file that any AI model can reason over.&lt;/p&gt;

&lt;p&gt;Not a summary. Not a document. &lt;strong&gt;A traversable knowledge graph in .md format.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;~3,000 tokens instead of ~500,000. Same reasoning quality. 170x more efficient.&lt;/p&gt;

&lt;p&gt;Here's the live interactive demo: &lt;a href="https://graphifymd.com/healthcare-kg-demo.html" rel="noopener noreferrer"&gt;graphifymd.com/healthcare-kg-demo.html&lt;/a&gt;&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.amazonaws.com%2Fuploads%2Farticles%2Fdf2o0n068i89dh4w1q9b.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%2Fdf2o0n068i89dh4w1q9b.png" alt="Healthcare Knowledge Graph — interactive D3 visualization"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters
&lt;/h2&gt;

&lt;p&gt;85% of enterprise AI pilots fail to scale. Not because the models are bad. Because the &lt;strong&gt;context&lt;/strong&gt; is.&lt;/p&gt;

&lt;p&gt;An LLM can't reason about drug interactions if it doesn't know that metformin relates to renal function relates to GFR thresholds relates to dosing adjustments. That's not a retrieval problem. That's a relationship problem.&lt;/p&gt;

&lt;p&gt;RAG retrieves text chunks. Knowledge graphs traverse relationships. The difference is the difference between searching a library index and having a librarian who knows which books reference each other — and why.&lt;/p&gt;

&lt;h2&gt;
  
  
  The pipeline
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Raw clinical data (~2MB)
    ↓
Knowledge graph extraction (200 entities, 500+ relationships)
    ↓
Graph distillation (typed relationships + traversal rules)
    ↓
Compressed .md (~12KB, ~3,000 tokens)
    ↓
Deploy anywhere
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What the .md looks like
&lt;/h2&gt;

&lt;p&gt;Here's a fragment of the cardiology domain graph compressed to markdown:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## Entities&lt;/span&gt;

&lt;span class="gu"&gt;### Conditions&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Atrial Fibrillation | ICD: I48 | prevalence: 2.7M US
&lt;span class="p"&gt;-&lt;/span&gt; Heart Failure | ICD: I50 | prevalence: 6.2M US
&lt;span class="p"&gt;  -&lt;/span&gt; subtypes: HFrEF (EF≤40%), HFpEF (EF≥50%)

&lt;span class="gu"&gt;### Medications&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Apixaban | class: DOAC | no INR monitoring
&lt;span class="p"&gt;-&lt;/span&gt; Warfarin | class: anticoagulant | INR target: 2-3
&lt;span class="p"&gt;-&lt;/span&gt; Amiodarone | class: antiarrhythmic | ⚠️ toxicity

&lt;span class="gu"&gt;## Relationships&lt;/span&gt;

AFib → TREATED_BY → Apixaban (first-line DOAC)
AFib → RISK_FACTOR_FOR → Stroke (5x risk)
HFrEF → TREATED_BY → Metoprolol (mortality ↓35%)
Warfarin → INTERACTS_WITH → Amiodarone ⚠️
  ↳ RULE: ↑INR 50-70%. Reduce warfarin dose 30-50%.
Apixaban → REQUIRES → CrCl assessment
  ↳ RULE: Reduce dose if CrCl 15-29, avoid if &amp;lt;15

&lt;span class="gu"&gt;## Traversal Examples&lt;/span&gt;

Q: Patient with AFib + CKD Stage 4. Anticoagulation?
AFib → TREATED_BY → Apixaban
Apixaban → REQUIRES → CrCl
CKD Stage 4 → CrCl 15-29 → DOSE_ADJUST Apixaban
→ Answer: Apixaban 2.5mg BID (reduced dose)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The model doesn't guess. It follows the chain. Multi-hop reasoning with an audit trail.&lt;/p&gt;

&lt;h2&gt;
  
  
  The numbers
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Raw Data&lt;/th&gt;
&lt;th&gt;Knowledge Graph .md&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Size&lt;/td&gt;
&lt;td&gt;~2MB&lt;/td&gt;
&lt;td&gt;~12KB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tokens&lt;/td&gt;
&lt;td&gt;~500,000&lt;/td&gt;
&lt;td&gt;~3,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Density&lt;/td&gt;
&lt;td&gt;1x&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;170x&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Compression&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;93%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CO₂ per query&lt;/td&gt;
&lt;td&gt;~0.34 kg&lt;/td&gt;
&lt;td&gt;~0.002 kg&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;That last line matters. Fewer tokens = less compute = lower energy. 99.4% carbon reduction per query. Structured intelligence is greener intelligence.&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.amazonaws.com%2Fuploads%2Farticles%2Fomc9cdooucot6wc8rboh.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%2Fomc9cdooucot6wc8rboh.png" alt="Graphify.md — the intelligence is the product"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;March Madness knowledge graph — 68 teams, built live with graduate software engineers&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  It works everywhere
&lt;/h2&gt;

&lt;p&gt;The same .md file works across every AI environment without modification:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Claude Projects&lt;/strong&gt; — upload as project knowledge&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Claude Code&lt;/strong&gt; — CLAUDE.md project context&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ChatGPT&lt;/strong&gt; — custom GPT instructions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cursor / Windsurf&lt;/strong&gt; — context file&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Codex CLI&lt;/strong&gt; — AGENTS.md&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MCP Server&lt;/strong&gt; — serve as tool context&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API&lt;/strong&gt; — system prompt injection&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Email&lt;/strong&gt; — it's just text. Paste it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No vendor lock-in. No format conversion. No special tooling. Markdown is the universal interface.&lt;/p&gt;
&lt;h2&gt;
  
  
  Why not just use RAG?
&lt;/h2&gt;

&lt;p&gt;RAG retrieves the top-k text chunks that match your query. It's single-hop — find the most similar text, return it.&lt;/p&gt;

&lt;p&gt;A knowledge graph traverses relationships. When you ask about a patient with AFib and kidney disease, the graph follows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AFib → treatment options → Apixaban → renal requirements →
CrCl thresholds → CKD staging → dose adjustment rules
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's 5 hops. RAG would need to independently retrieve and stitch together 5 separate chunks and hope the model connects them. The graph has already connected them.&lt;/p&gt;

&lt;p&gt;Microsoft's 2024 research showed knowledge graphs achieve an 83% win rate vs vector RAG. HopRAG (ACL 2025) showed 77% higher accuracy on multi-hop questions.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I'm building
&lt;/h2&gt;

&lt;p&gt;I run &lt;a href="https://graphifymd.com" rel="noopener noreferrer"&gt;Graphify.md&lt;/a&gt; — we build domain knowledge graphs and compress them to portable .md for any industry. Healthcare is one vertical. We've also built graphs for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://graphifymd.com/march-madness.html" rel="noopener noreferrer"&gt;March Madness tournament&lt;/a&gt; — 68 teams, real-time scores, built live with grad students&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://graphifymd.com/linkedin-groups-kg.html" rel="noopener noreferrer"&gt;LinkedIn Groups ecosystem&lt;/a&gt; — 200+ groups, 15 verticals, relationship edges&lt;/li&gt;
&lt;li&gt;Defense, legal, construction, supply chain, GovTech, education — &lt;a href="https://graphifymd.com/verticals.html" rel="noopener noreferrer"&gt;12 verticals mapped&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The methodology works on any domain. If your data has entities and relationships — and all data does — it can be graphed, compressed, and deployed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;The interactive demo is live. Hover over nodes to see relationship chains light up:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://graphifymd.com/healthcare-kg-demo.html" rel="noopener noreferrer"&gt;graphifymd.com/healthcare-kg-demo.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Built entirely with Claude Code. The whole thing — knowledge graph extraction, D3 visualization, .md compression, the site — solo, in days not months.&lt;/p&gt;

&lt;p&gt;If you're working on a domain where AI keeps hallucinating or RAG keeps missing context, the problem might not be the model. It might be the structure.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Daniel Yarmoluk — &lt;a href="https://graphifymd.com" rel="noopener noreferrer"&gt;Graphify.md&lt;/a&gt; — &lt;a href="https://calendly.com/daniel-yarmoluk/30min" rel="noopener noreferrer"&gt;Book a call&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>healthtech</category>
      <category>knowledgegraph</category>
      <category>claude</category>
    </item>
    <item>
      <title>I compressed 2MB of healthcare data into 12KB of markdown — here's the knowledge graph -- first time to Dev.to in my life...</title>
      <dc:creator>Daniel Yarmoluk</dc:creator>
      <pubDate>Fri, 20 Mar 2026 06:40:25 +0000</pubDate>
      <link>https://forem.com/daniel_yarmoluk_79a9d0364/i-compressed-2mb-of-healthcare-data-into-12kb-of-markdown-heres-the-knowledge-graph-first-3hcm</link>
      <guid>https://forem.com/daniel_yarmoluk_79a9d0364/i-compressed-2mb-of-healthcare-data-into-12kb-of-markdown-heres-the-knowledge-graph-first-3hcm</guid>
      <description>&lt;p&gt;I built an interactive healthcare knowledge graph — conditions, medications, drug interactions, diagnostics, billing codes, care pathways — and structured it as a compressed markdown file that any AI model can reason over.&lt;/p&gt;

&lt;p&gt;Not a summary. Not a document. &lt;strong&gt;A traversable knowledge graph in .md format.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;~3,000 tokens instead of ~500,000. Same reasoning quality. 170x more efficient.&lt;/p&gt;

&lt;p&gt;Here's the live interactive demo: &lt;a href="https://graphifymd.com/healthcare-kg-demo.html" rel="noopener noreferrer"&gt;graphifymd.com/healthcare-kg-demo.html&lt;/a&gt;&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.amazonaws.com%2Fuploads%2Farticles%2Fdf2o0n068i89dh4w1q9b.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%2Fdf2o0n068i89dh4w1q9b.png" alt="Healthcare Knowledge Graph — interactive D3 visualization" width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters
&lt;/h2&gt;

&lt;p&gt;85% of enterprise AI pilots fail to scale. Not because the models are bad. Because the &lt;strong&gt;context&lt;/strong&gt; is.&lt;/p&gt;

&lt;p&gt;An LLM can't reason about drug interactions if it doesn't know that metformin relates to renal function relates to GFR thresholds relates to dosing adjustments. That's not a retrieval problem. That's a relationship problem.&lt;/p&gt;

&lt;p&gt;RAG retrieves text chunks. Knowledge graphs traverse relationships. The difference is the difference between searching a library index and having a librarian who knows which books reference each other — and why.&lt;/p&gt;

&lt;h2&gt;
  
  
  The pipeline
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Raw clinical data (~2MB)
    ↓
Knowledge graph extraction (200 entities, 500+ relationships)
    ↓
Graph distillation (typed relationships + traversal rules)
    ↓
Compressed .md (~12KB, ~3,000 tokens)
    ↓
Deploy anywhere
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What the .md looks like
&lt;/h2&gt;

&lt;p&gt;Here's a fragment of the cardiology domain graph compressed to markdown:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## Entities&lt;/span&gt;

&lt;span class="gu"&gt;### Conditions&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Atrial Fibrillation | ICD: I48 | prevalence: 2.7M US
&lt;span class="p"&gt;-&lt;/span&gt; Heart Failure | ICD: I50 | prevalence: 6.2M US
&lt;span class="p"&gt;  -&lt;/span&gt; subtypes: HFrEF (EF≤40%), HFpEF (EF≥50%)

&lt;span class="gu"&gt;### Medications&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Apixaban | class: DOAC | no INR monitoring
&lt;span class="p"&gt;-&lt;/span&gt; Warfarin | class: anticoagulant | INR target: 2-3
&lt;span class="p"&gt;-&lt;/span&gt; Amiodarone | class: antiarrhythmic | ⚠️ toxicity

&lt;span class="gu"&gt;## Relationships&lt;/span&gt;

AFib → TREATED_BY → Apixaban (first-line DOAC)
AFib → RISK_FACTOR_FOR → Stroke (5x risk)
HFrEF → TREATED_BY → Metoprolol (mortality ↓35%)
Warfarin → INTERACTS_WITH → Amiodarone ⚠️
  ↳ RULE: ↑INR 50-70%. Reduce warfarin dose 30-50%.
Apixaban → REQUIRES → CrCl assessment
  ↳ RULE: Reduce dose if CrCl 15-29, avoid if &amp;lt;15

&lt;span class="gu"&gt;## Traversal Examples&lt;/span&gt;

Q: Patient with AFib + CKD Stage 4. Anticoagulation?
AFib → TREATED_BY → Apixaban
Apixaban → REQUIRES → CrCl
CKD Stage 4 → CrCl 15-29 → DOSE_ADJUST Apixaban
→ Answer: Apixaban 2.5mg BID (reduced dose)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The model doesn't guess. It follows the chain. Multi-hop reasoning with an audit trail.&lt;/p&gt;

&lt;h2&gt;
  
  
  The numbers
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Raw Data&lt;/th&gt;
&lt;th&gt;Knowledge Graph .md&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Size&lt;/td&gt;
&lt;td&gt;~2MB&lt;/td&gt;
&lt;td&gt;~12KB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tokens&lt;/td&gt;
&lt;td&gt;~500,000&lt;/td&gt;
&lt;td&gt;~3,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Density&lt;/td&gt;
&lt;td&gt;1x&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;170x&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Compression&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;93%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CO₂ per query&lt;/td&gt;
&lt;td&gt;~0.34 kg&lt;/td&gt;
&lt;td&gt;~0.002 kg&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;That last line matters. Fewer tokens = less compute = lower energy. 99.4% carbon reduction per query. Structured intelligence is greener intelligence.&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.amazonaws.com%2Fuploads%2Farticles%2Fomc9cdooucot6wc8rboh.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%2Fomc9cdooucot6wc8rboh.png" alt="Graphify.md — the intelligence is the product" width="800" height="418"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;March Madness knowledge graph — 68 teams, built live with graduate software engineers&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  It works everywhere
&lt;/h2&gt;

&lt;p&gt;The same .md file works across every AI environment without modification:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Claude Projects&lt;/strong&gt; — upload as project knowledge&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Claude Code&lt;/strong&gt; — CLAUDE.md project context&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ChatGPT&lt;/strong&gt; — custom GPT instructions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cursor / Windsurf&lt;/strong&gt; — context file&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Codex CLI&lt;/strong&gt; — AGENTS.md&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MCP Server&lt;/strong&gt; — serve as tool context&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API&lt;/strong&gt; — system prompt injection&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Email&lt;/strong&gt; — it's just text. Paste it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No vendor lock-in. No format conversion. No special tooling. Markdown is the universal interface.&lt;/p&gt;
&lt;h2&gt;
  
  
  Why not just use RAG?
&lt;/h2&gt;

&lt;p&gt;RAG retrieves the top-k text chunks that match your query. It's single-hop — find the most similar text, return it.&lt;/p&gt;

&lt;p&gt;A knowledge graph traverses relationships. When you ask about a patient with AFib and kidney disease, the graph follows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AFib → treatment options → Apixaban → renal requirements →
CrCl thresholds → CKD staging → dose adjustment rules
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's 5 hops. RAG would need to independently retrieve and stitch together 5 separate chunks and hope the model connects them. The graph has already connected them.&lt;/p&gt;

&lt;p&gt;Microsoft's 2024 research showed knowledge graphs achieve an 83% win rate vs vector RAG. HopRAG (ACL 2025) showed 77% higher accuracy on multi-hop questions.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I'm building
&lt;/h2&gt;

&lt;p&gt;I run &lt;a href="https://graphifymd.com" rel="noopener noreferrer"&gt;Graphify.md&lt;/a&gt; — we build domain knowledge graphs and compress them to portable .md for any industry. Healthcare is one vertical. We've also built graphs for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://graphifymd.com/march-madness.html" rel="noopener noreferrer"&gt;March Madness tournament&lt;/a&gt; — 68 teams, real-time scores, built live with grad students&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://graphifymd.com/linkedin-groups-kg.html" rel="noopener noreferrer"&gt;LinkedIn Groups ecosystem&lt;/a&gt; — 200+ groups, 15 verticals, relationship edges&lt;/li&gt;
&lt;li&gt;Defense, legal, construction, supply chain, GovTech, education — &lt;a href="https://graphifymd.com/verticals.html" rel="noopener noreferrer"&gt;12 verticals mapped&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The methodology works on any domain. If your data has entities and relationships — and all data does — it can be graphed, compressed, and deployed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;The interactive demo is live. Hover over nodes to see relationship chains light up:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://graphifymd.com/healthcare-kg-demo.html" rel="noopener noreferrer"&gt;graphifymd.com/healthcare-kg-demo.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Built entirely with Claude Code. The whole thing — knowledge graph extraction, D3 visualization, .md compression, the site — solo, in days not months.&lt;/p&gt;

&lt;p&gt;If you're working on a domain where AI keeps hallucinating or RAG keeps missing context, the problem might not be the model. It might be the structure.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Daniel Yarmoluk — &lt;a href="https://graphifymd.com" rel="noopener noreferrer"&gt;Graphify.md&lt;/a&gt; — &lt;a href="https://calendly.com/daniel-yarmoluk/30min" rel="noopener noreferrer"&gt;Book a call&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>healthtech</category>
      <category>graphdatabase</category>
    </item>
  </channel>
</rss>
