<?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: Javier Ramírez</title>
    <description>The latest articles on DEV Community by Javier Ramírez (@javier_ramrez_e2b4bb54fb).</description>
    <link>https://dev.to/javier_ramrez_e2b4bb54fb</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%2F3822608%2Fae12f471-1ca0-487c-af85-0f438c57590d.jpg</url>
      <title>DEV Community: Javier Ramírez</title>
      <link>https://dev.to/javier_ramrez_e2b4bb54fb</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/javier_ramrez_e2b4bb54fb"/>
    <language>en</language>
    <item>
      <title>Can I have my entire CRM setup in Markdown?</title>
      <dc:creator>Javier Ramírez</dc:creator>
      <pubDate>Mon, 29 Jun 2026 01:04:24 +0000</pubDate>
      <link>https://dev.to/javier_ramrez_e2b4bb54fb/can-i-have-my-entire-crm-setup-in-crm-4op6</link>
      <guid>https://dev.to/javier_ramrez_e2b4bb54fb/can-i-have-my-entire-crm-setup-in-crm-4op6</guid>
      <description>&lt;h1&gt;
  
  
  Can You Build a CRM Entirely in Markdown?
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;Short answer?&lt;/em&gt; Yes.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Long answer?&lt;/em&gt; Yes...but only if you stop thinking about Markdown as documents and start thinking about it as data.&lt;/p&gt;




&lt;p&gt;For years I've accepted that CRM software has to look a "certain way".&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A database.&lt;/li&gt;
&lt;li&gt;A web application.&lt;/li&gt;
&lt;li&gt;A backend.&lt;/li&gt;
&lt;li&gt;Authentication.&lt;/li&gt;
&lt;li&gt;A cloud subscription.&lt;/li&gt;
&lt;li&gt;Probably another tab that's permanently open in your favorite browser. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Contacts live in tables. Companies live in tables. Meetings live in tables.Tasks live in tables.&lt;/p&gt;

&lt;p&gt;Everything eventually becomes another row in another SQL database.&lt;/p&gt;

&lt;p&gt;I know, this is not really 100% the case nowadays, but I'm pretty sure we can agree that, at a higher corporate level, this has been the case nine times out of ten.&lt;/p&gt;

&lt;p&gt;But here's my question.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What if every one of those rows was just...a Markdown file?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For many, that sounds ridiculous at first... until you realize that databases and Markdown aren't actually solving different problems.&lt;/p&gt;

&lt;p&gt;They're storing structured information. The difference is that databases hide the structure. And Markdown lets you own it.&lt;/p&gt;




&lt;h1&gt;
  
  
  Markdown isn't the limitation.
&lt;/h1&gt;

&lt;p&gt;Treating Markdown like text files is.&lt;/p&gt;

&lt;p&gt;A CRM isn't a collection of paragraphs. It's a collection of entities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;People&lt;/li&gt;
&lt;li&gt;Accounts&lt;/li&gt;
&lt;li&gt;Meetings&lt;/li&gt;
&lt;li&gt;Deals&lt;/li&gt;
&lt;li&gt;Projects&lt;/li&gt;
&lt;li&gt;Tasks&lt;/li&gt;
&lt;li&gt;Emails&lt;/li&gt;
&lt;li&gt;Documents&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each entity simply has properties and relationships. That's it.&lt;/p&gt;

&lt;p&gt;Take a contact:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;victoria-smith&lt;/span&gt;
&lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;contact&lt;/span&gt;
&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Victoria Smith&lt;/span&gt;
&lt;span class="na"&gt;company&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[[&lt;/span&gt;&lt;span class="nv"&gt;globex&lt;/span&gt;&lt;span class="pi"&gt;]]&lt;/span&gt;
&lt;span class="na"&gt;owner&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[[&lt;/span&gt;&lt;span class="nv"&gt;me&lt;/span&gt;&lt;span class="pi"&gt;]]&lt;/span&gt;
&lt;span class="na"&gt;status&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;active&lt;/span&gt;
&lt;span class="na"&gt;email&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;victoria@globex.com&lt;/span&gt;
&lt;span class="na"&gt;phone&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;+1 555 123 &lt;/span&gt;&lt;span class="m"&gt;4567&lt;/span&gt;
&lt;span class="na"&gt;last-contact&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;2026-06-28&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's already a database row. Bang.&lt;/p&gt;

&lt;p&gt;Except... it's also a perfectly readable document. Double bang.&lt;/p&gt;




&lt;h1&gt;
  
  
  Relationships become links
&lt;/h1&gt;

&lt;p&gt;Traditional CRMs store foreign keys.&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="n"&gt;company_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;42&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Nobody enjoys reading that.&lt;/p&gt;

&lt;p&gt;Markdown gives you something humans can actually understand.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;company&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[[&lt;/span&gt;&lt;span class="nv"&gt;globex&lt;/span&gt;&lt;span class="pi"&gt;]]&lt;/span&gt;
&lt;span class="na"&gt;owner&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[[&lt;/span&gt;&lt;span class="nv"&gt;me&lt;/span&gt;&lt;span class="pi"&gt;]]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Those aren't just pretty links. They're relationships.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;Yamlink graph&lt;/strong&gt; can traverse them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Queries&lt;/strong&gt; can use them.&lt;/p&gt;

&lt;p&gt;Visual graphs can render them.&lt;/p&gt;

&lt;p&gt;Exactly the same information.&lt;/p&gt;

&lt;p&gt;Far nicer representation.&lt;/p&gt;




&lt;h1&gt;
  
  
  Your filesystem becomes the database
&lt;/h1&gt;

&lt;p&gt;Imagine opening your CRM.&lt;/p&gt;

&lt;p&gt;Except your CRM is...&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CRM/

accounts/
contacts/
meetings/
projects/
deals/
tasks/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every file can be opened in VS Code.&lt;/p&gt;

&lt;p&gt;Every file works in Git.&lt;/p&gt;

&lt;p&gt;Every file survives twenty years.&lt;/p&gt;

&lt;p&gt;No vendor lock-in. No export button. No proprietary binary format. No "contact limit." No "premium tier."&lt;/p&gt;

&lt;p&gt;It's just files.&lt;/p&gt;




&lt;h1&gt;
  
  
  "But where are the tables?"
&lt;/h1&gt;

&lt;p&gt;Everyone asks me this.&lt;/p&gt;

&lt;p&gt;Ironically, the tables are the easiest part.&lt;/p&gt;

&lt;p&gt;Once every note follows a schema (any schema), tables become generated views.&lt;/p&gt;

&lt;p&gt;Show all active contacts.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;!view contact
where status = active
sort company
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Show every meeting with Globex.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;!view meeting
where account = [[globex]]
sort date desc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Show deals closing this month.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;!view deal
where close-date &amp;lt;= end-of-month()
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You never manually build the table.&lt;/p&gt;

&lt;p&gt;The table is simply another projection of the vault.&lt;/p&gt;




&lt;h1&gt;
  
  
  A CRM is mostly relationships
&lt;/h1&gt;

&lt;p&gt;Here's where things become interesting.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Victoria belongs to Globex.&lt;/li&gt;
&lt;li&gt;Victoria attended Meeting A.&lt;/li&gt;
&lt;li&gt;Meeting A produced Opportunity X.&lt;/li&gt;
&lt;li&gt;Opportunity X generated Proposal B.&lt;/li&gt;
&lt;li&gt;Proposal B became Project C.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Traditional CRMs hide that chain behind different screens. A graph doesn't.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Victoria

↓

Globex

↓

Quarterly Review

↓

Migration Project

↓

Implementation
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can literally traverse your business.&lt;/p&gt;




&lt;h1&gt;
  
  
  Frontmatter is your schema
&lt;/h1&gt;

&lt;p&gt;This is the part people underestimate.&lt;/p&gt;

&lt;p&gt;Consistency matters more than complexity.&lt;/p&gt;

&lt;p&gt;A contact always has:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;contact&lt;/span&gt;
&lt;span class="na"&gt;company&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="na"&gt;owner&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="na"&gt;status&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="na"&gt;email&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="na"&gt;phone&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;An account always has:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;account&lt;/span&gt;
&lt;span class="na"&gt;industry&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="na"&gt;owner&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="na"&gt;size&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="na"&gt;website&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A meeting always has:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;meeting&lt;/span&gt;
&lt;span class="na"&gt;date&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="na"&gt;participants&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="na"&gt;account&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="na"&gt;outcome&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's your schema.&lt;/p&gt;

&lt;p&gt;Nothing magical.&lt;/p&gt;

&lt;p&gt;Just disciplined.&lt;/p&gt;




&lt;h1&gt;
  
  
  Intelligence doesn't require AI
&lt;/h1&gt;

&lt;p&gt;One misconception today is that "smart" software needs large language models.&lt;/p&gt;

&lt;p&gt;It doesn't.&lt;/p&gt;

&lt;p&gt;Once hundreds of notes share the same structure, software starts recognizing patterns.&lt;/p&gt;

&lt;p&gt;If every contact has:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;company
status
owner
email
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;...then a new contact probably should too.&lt;/p&gt;

&lt;p&gt;If every project links to an account...&lt;/p&gt;

&lt;p&gt;...missing that relationship becomes obvious.&lt;/p&gt;

&lt;p&gt;If opportunities usually become projects...&lt;/p&gt;

&lt;p&gt;...the software can suggest what probably comes next.&lt;/p&gt;

&lt;p&gt;That's not AI. That's good, old fashioned, statistics.&lt;/p&gt;




&lt;h1&gt;
  
  
  Queries become your reports
&lt;/h1&gt;

&lt;p&gt;Traditional CRM:&lt;/p&gt;

&lt;p&gt;"Can someone build me a report?"&lt;/p&gt;

&lt;p&gt;Markdown CRM:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Show active customers
without meetings
during the last 90 days.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The report doesn't need to exist beforehand. It's generated.&lt;/p&gt;

&lt;p&gt;Tomorrow you ask a different question. Tomorrow you get a different report.&lt;/p&gt;

&lt;p&gt;The underlying notes never changed.&lt;/p&gt;




&lt;h1&gt;
  
  
  Your CRM starts behaving like Git
&lt;/h1&gt;

&lt;p&gt;This is one of my favorite parts.&lt;/p&gt;

&lt;p&gt;Every change is text.&lt;/p&gt;

&lt;p&gt;Git shows exactly what changed.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt;&lt;span class="gd"&gt;-status: prospect
&lt;/span&gt;&lt;span class="gi"&gt;+status: customer
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or...&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt;&lt;span class="gd"&gt;-company: [[acme]]
&lt;/span&gt;&lt;span class="gi"&gt;+company: [[globex]]
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No opaque database updates. No audit log locked behind an Enterprise subscription. Just version control.&lt;/p&gt;




&lt;h1&gt;
  
  
  The biggest surprise
&lt;/h1&gt;

&lt;p&gt;The biggest surprise isn't that this works.&lt;/p&gt;

&lt;p&gt;It's that it scales better than people think.&lt;/p&gt;

&lt;p&gt;Not because Markdown is magical.&lt;/p&gt;

&lt;p&gt;Because structured knowledge scales surprisingly well.&lt;/p&gt;

&lt;p&gt;When every entity has:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a stable identity&lt;/li&gt;
&lt;li&gt;consistent fields&lt;/li&gt;
&lt;li&gt;explicit relationships&lt;/li&gt;
&lt;li&gt;queryable metadata&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;...you've recreated most of what makes a CRM valuable.&lt;/p&gt;

&lt;p&gt;Without needing SQL.&lt;/p&gt;

&lt;p&gt;Without needing PostgreSQL.&lt;/p&gt;

&lt;p&gt;Without needing Docker.&lt;/p&gt;

&lt;p&gt;Without needing a browser.&lt;/p&gt;




&lt;h1&gt;
  
  
  Now, is this for everyone?
&lt;/h1&gt;

&lt;p&gt;Absolutely not.&lt;/p&gt;

&lt;p&gt;If your sales team needs Salesforce automation, marketing campaigns, AI lead scoring, an ecosystem of integrations, and enterprise workflows, buy Salesforce (I know, I know), or Pipedrive. Or about 20 other great platforms out there.&lt;/p&gt;

&lt;p&gt;But if you're someone that likes owning their data, or establishing your own structure and have the data cater to your tendencies, then Markdown becomes surprisingly compelling.&lt;/p&gt;

&lt;p&gt;Especially when software understands the structure hiding inside those files.&lt;/p&gt;




&lt;h1&gt;
  
  
  The real shift
&lt;/h1&gt;

&lt;p&gt;The interesting question isn't whether Markdown can replace a CRM.&lt;/p&gt;

&lt;p&gt;It's whether we should still think of Markdown as documentation at all.&lt;/p&gt;

&lt;p&gt;Because once notes become structured entities, documents become databases.&lt;/p&gt;

&lt;p&gt;Relationships become graphs. Queries become reports.&lt;/p&gt;

&lt;p&gt;And suddenly, your knowledge base starts behaving less like a notebook and more like an operating system.&lt;/p&gt;




&lt;p&gt;I'd argue that's a far more interesting future than yet another cloud CRM.&lt;/p&gt;

&lt;p&gt;Maybe the next CRM isn't another SaaS product.&lt;/p&gt;

&lt;p&gt;Maybe it's just a folder.&lt;/p&gt;

&lt;p&gt;That's exactly why I built &lt;a href="https://github.com/Yamlink-Labs/yamlink" rel="noopener noreferrer"&gt;Yamlink&lt;/a&gt;. Because my contacts deserve better.&lt;/p&gt;

</description>
      <category>markdown</category>
      <category>productivity</category>
      <category>database</category>
      <category>git</category>
    </item>
    <item>
      <title>Turning Markdown Files into a Queryable Knowledge Graph</title>
      <dc:creator>Javier Ramírez</dc:creator>
      <pubDate>Fri, 13 Mar 2026 15:57:51 +0000</pubDate>
      <link>https://dev.to/javier_ramrez_e2b4bb54fb/turning-markdown-files-into-a-queryable-knowledge-graph-4aho</link>
      <guid>https://dev.to/javier_ramrez_e2b4bb54fb/turning-markdown-files-into-a-queryable-knowledge-graph-4aho</guid>
      <description>&lt;p&gt;Markdown files often contain more structure than we give them credit for.&lt;/p&gt;

&lt;p&gt;With YAML frontmatter and consistent links, a collection of Markdown files can behave like a small knowledge graph.&lt;/p&gt;

&lt;p&gt;Many people already use YAML frontmatter to store metadata:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;mission-klendathu&lt;/span&gt;
&lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;mission&lt;/span&gt;
&lt;span class="na"&gt;commander&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[[&lt;/span&gt;&lt;span class="nv"&gt;johnny-rico&lt;/span&gt;&lt;span class="pi"&gt;]]&lt;/span&gt;
&lt;span class="na"&gt;date&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;2297-08-01&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once files have consistent IDs and links between them, something interesting happens:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;files become nodes&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;[[links]] become relations&lt;/li&gt;
&lt;li&gt;the collection of files becomes a graph&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Querying Markdown
&lt;/h2&gt;

&lt;p&gt;One approach is to define queries directly inside Markdown files.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If you can query that graph, Markdown stops being just documents — it becomes &lt;strong&gt;structured data&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;p&gt;!view mission where commander = [[johnny-rico]]&lt;br&gt;
select date, outcome&lt;br&gt;
sort date desc&lt;/p&gt;

&lt;p&gt;The query runs over all Markdown files and returns matching nodes.&lt;/p&gt;

&lt;p&gt;In my case, I tried building a VS Code extension to explore this idea.&lt;/p&gt;

&lt;h2&gt;
  
  
  Live Query Results
&lt;/h2&gt;

&lt;p&gt;!view queries render results as tables inside the editor.&lt;/p&gt;

&lt;p&gt;You can edit values directly in the table, and the changes write back to the YAML frontmatter of the source file.&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%2F699ctpyjcswy1pxkndgn.gif" 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%2F699ctpyjcswy1pxkndgn.gif" alt="Live query table in VS Code with inline editing of YAML frontmatter" width="760" height="488"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Markdown?
&lt;/h2&gt;

&lt;p&gt;Yamlink&lt;/p&gt;

&lt;p&gt;The goal is to keep everything:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;local-first&lt;/li&gt;
&lt;li&gt;Git-native&lt;/li&gt;
&lt;li&gt;plain Markdown&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No database, no lock-in — just structured files.&lt;/p&gt;




&lt;h2&gt;
  
  
  Yamlink
&lt;/h2&gt;

&lt;p&gt;To explore this idea, I built a VS Code extension called &lt;strong&gt;Yamlink&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you're curious:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/javierigaciorm/yamlink" rel="noopener noreferrer"&gt;https://github.com/javierigaciorm/yamlink&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;VS Code Marketplace: &lt;a href="https://marketplace.visualstudio.com/items?itemName=yamlink.yamlink" rel="noopener noreferrer"&gt;https://marketplace.visualstudio.com/items?itemName=yamlink.yamlink&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'm especially interested in hearing how others are working with structured data in Markdown.&lt;/p&gt;

</description>
      <category>markdown</category>
      <category>vscode</category>
      <category>productivity</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
