<?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: Sofia</title>
    <description>The latest articles on DEV Community by Sofia (@coph1a).</description>
    <link>https://dev.to/coph1a</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%2F3327117%2F08e540ed-da14-4c86-8169-cc2b1f1a2015.jpg</url>
      <title>DEV Community: Sofia</title>
      <link>https://dev.to/coph1a</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/coph1a"/>
    <language>en</language>
    <item>
      <title>NexusTriage: Turning Notion into an Autonomous, Self-Healing System 🧠</title>
      <dc:creator>Sofia</dc:creator>
      <pubDate>Mon, 30 Mar 2026 05:25:07 +0000</pubDate>
      <link>https://dev.to/coph1a/nexustriage-turning-notion-into-an-autonomous-self-healing-system-5a3c</link>
      <guid>https://dev.to/coph1a/nexustriage-turning-notion-into-an-autonomous-self-healing-system-5a3c</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/notion-2026-03-04"&gt;Notion MCP Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem: The Notion Graveyard 🪦
&lt;/h2&gt;

&lt;p&gt;We all love Notion. But let’s be honest: over time, every workspace falls victim to Workspace Decay. Quick ideas dumped into the "Inbox" stay there forever. Projects get abandoned. Duplicate pages multiply. Before you know it, your perfectly structured workspace becomes a messy graveyard of information where it’s impossible to separate the signal from the noise.&lt;/p&gt;

&lt;p&gt;To fix this, we usually dedicate hours of manual "cleanup time." But what if your workspace could clean, organize, and triage itself?&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built 🚀
&lt;/h2&gt;

&lt;p&gt;I built NexusTriage: a custom Model Context Protocol (MCP) server that transforms Notion from a passive data repository into an active, self-healing system managed by AI.&lt;/p&gt;

&lt;p&gt;NexusTriage acts as a proactive "Human-in-the-Loop" workspace manager. Built from the ground up using TypeScript and the official MCP SDK, it doesn't just read and write pages. It orchestrates the entire workspace by:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Autonomously Triaging Inbox Tasks: Reading raw thoughts and routing them to the correct active projects.&lt;/li&gt;
&lt;li&gt;Generating Executive Summaries: Scraping project progress and injecting visual AI summaries at the very top of project pages.&lt;/li&gt;
&lt;li&gt;Preventing Workspace Decay: Identifying duplicates, empty pages, and stale tasks, and proposing soft-deletion cleanups.&lt;/li&gt;
&lt;li&gt;Providing Visual Cues: Dynamically changing page icons (🚨, 🟢, 🛑) and covers based on real-time project health.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Video Demo 🎥
&lt;/h2&gt;

&lt;h2&gt;
  
  
  💻
&lt;/h2&gt;

&lt;p&gt;I've open-sourced the entire MCP server. It's built cleanly with a modular tool architecture, meaning anyone can add new capabilities in minutes.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/sofiianowak" rel="noopener noreferrer"&gt;
        sofiianowak
      &lt;/a&gt; / &lt;a href="https://github.com/sofiianowak/nexustriage" rel="noopener noreferrer"&gt;
        nexustriage
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;🧠 NexusTriage — Autonomous Semantic Workspace Orchestrator&lt;/h1&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Transform Notion from a passive data repository into an active, context-aware system.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;NexusTriage&lt;/strong&gt; is a custom MCP (Model Context Protocol) server that gives AI assistants deep, structured access to your Notion workspace — enabling autonomous task triaging, executive summary generation, and workspace decay prevention.&lt;/p&gt;
&lt;p&gt;Built for the &lt;a href="https://dev.to/challenges/notion-2026-03-04" rel="nofollow"&gt;Notion MCP Challenge&lt;/a&gt; on DEV.to.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;✨ Features&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;🔍 Context Readers (6 tools)&lt;/h3&gt;
&lt;/div&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;list_databases&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Discover all databases in the workspace&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;search_pages&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Find pages by text query&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;get_page_content&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Read full block content of any page (with pagination)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;get_inbox_items&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Query inbox for untriaged items&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;get_active_projects&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Fetch projects with active status&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;get_database_schema&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Inspect database structure (properties, types, options)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;✏️ Context Mutators (6 tools)&lt;/h3&gt;

&lt;/div&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;create_page&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Create new pages in any database&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;update_page&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Update page properties via flexible JSON&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;link_task_to_project&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Link tasks to projects via Relation property&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;inject_executive_summary&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;🌟 Insert callout at page START (new API feature!)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;move_to_trash&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;…&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/sofiianowak/nexustriage" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  How I Used Notion MCP (The Deep Dive) 🛠️
&lt;/h2&gt;

&lt;p&gt;To build a system capable of semantic reasoning, my MCP server does far more than simple CRUD (Create, Read, Update, Delete) operations. I utilized the full potential of the Model Context Protocol paired with the bleeding-edge Notion API (Version: 2026-03-11).&lt;/p&gt;

&lt;p&gt;Here is how the magic happens under the hood.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. The Full MCP Triad: Tools, Prompts, and Resources
&lt;/h2&gt;

&lt;p&gt;Most MCP implementations stop at simply providing "Tools". NexusTriage implements the entire triad to give the AI context, capability, and autonomy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;14 Context Tools (Readers &amp;amp; Mutators):&lt;/strong&gt; I built 14 incredibly specific tools. For example, &lt;code&gt;get_database_schema&lt;/code&gt;allows the AI to dynamically reverse-engineer any unknown database's structure (properties, types, select options) without hardcoded mappings. &lt;code&gt;link_task_to_project&lt;/code&gt;handles complex Notion Relations. &lt;code&gt;get_page_comments&lt;/code&gt;allows the AI to read human replies inside Notion, maintaining contextual chat history.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3 Semantic Orchestrations (Prompts):&lt;/strong&gt; Instead of forcing the user to type complex instructions, I built MCP Prompts (&lt;code&gt;triage_inbox&lt;/code&gt;, &lt;code&gt;weekly_report&lt;/code&gt;, &lt;code&gt;cleanup_workspace&lt;/code&gt;). These act as pre-defined logical workflows. By invoking the weekly_report prompt, the AI is automatically instructed on exactly how to fetch active projects, analyze blockers, and where to put the results.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Global Guidelines (Resources):&lt;/strong&gt; I exposed a static &lt;code&gt;workspace_guidelines&lt;/code&gt;URI using MCP Resources. This acts as the "Rules of Engagement" for the AI—teaching it ground rules like "never permanently delete a page, use in_trash: true", and "always leave an audit-trail comment when moving a task."&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Utilizing Unreleased &amp;amp; Brand New Notion Capabilities
&lt;/h2&gt;

&lt;p&gt;To make NexusTriage feel like native magic, I had to use features that standard integrations don't touch:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;✨ The &lt;code&gt;position: start&lt;/code&gt; Callout Injector&lt;/strong&gt;&lt;br&gt;
When the AI generates a weekly status report, nobody wants it buried at the bottom of a 50-block project brief. Using the newly introduced &lt;code&gt;position: { type: "start" }&lt;/code&gt; feature in the Notion API, the &lt;code&gt;inject_executive_summary&lt;/code&gt;tool forces the AI's callout block to appear at the absolute top of the page. The moment a team member opens the project, they see the AI's health summary instantly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🎨 The update_page_style Tool&lt;/strong&gt;&lt;br&gt;
AI shouldn't just write text; it should manipulate UI. This tool allows the AI to dynamically change page emojis and covers based on its findings. If the AI detects a project is blocked, it changes the project icon to 🚨. If a task is successfully triaged, it gets a ✨.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🗣️ True Human-in-the-Loop Dialogues&lt;/strong&gt;&lt;br&gt;
Triage isn't always black and white. If the AI finds an ambiguous task, it uses the &lt;code&gt;add_comment&lt;/code&gt;tool to ping the human: "I can't tell if this is marketing or dev. Leaving it here for review." The user can literally reply to that comment inside Notion, and the next time the AI scans, it will use the &lt;code&gt;get_page_comments&lt;/code&gt;tool to read the human's instruction and execute it.&lt;/p&gt;

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

&lt;p&gt;NexusTriage proves that with MCP, AI doesn't just need to "read and write" your notes as a passive chatbot. It can be an active, localized agent that manages, triages, and curates your organization's workflow while you sleep.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>notionchallenge</category>
      <category>mcp</category>
      <category>ai</category>
    </item>
    <item>
      <title>🌸 Agent Garden: Rose of Freedom</title>
      <dc:creator>Sofia</dc:creator>
      <pubDate>Mon, 10 Nov 2025 07:58:19 +0000</pubDate>
      <link>https://dev.to/coph1a/agent-garden-rose-of-freedom-4eg1</link>
      <guid>https://dev.to/coph1a/agent-garden-rose-of-freedom-4eg1</guid>
      <description>&lt;p&gt;🎯 &lt;strong&gt;Idea&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;“Agent Garden” is a metaphor for collaboration and care. Each agent in the database is a gardener, singer, or pollinator who interacts with flowers. Flowers symbolize values: freedom, friendship, hope. In this experiment, we show how repeated actions of the agent “Aurora” lead to the flowering of the Rose of Freedom. This is a combination of Postgres technical logic with poetic symbolism.&lt;/p&gt;

&lt;p&gt;🛠️ &lt;strong&gt;Technical Implementation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Database Structure&lt;/p&gt;

&lt;p&gt;Query examples&lt;/p&gt;

&lt;p&gt;🖥️ &lt;strong&gt;Visualization&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🎤 &lt;strong&gt;Poetic layer&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;📋 &lt;strong&gt;Instructions&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Run the SQL schema:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;psql -h &amp;lt;host&amp;gt; -U &amp;lt;user&amp;gt; -d &amp;lt;db&amp;gt; -f schema.sql

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

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Add an agent and a flower.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Perform some interactions via &lt;code&gt;INSERT INTO interactions&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Run the Bash script to visualize:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bash garden_demo.sh

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

&lt;/div&gt;



&lt;p&gt;✨ &lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This experiment shows how Agentic Postgres can become a “garden” for agents, where every interaction counts. We combined simple technical logic with poetic metaphor to demonstrate that even basic SQL queries can blossom into symbolic stories.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>agenticpostgreschallenge</category>
      <category>ai</category>
      <category>postgres</category>
    </item>
    <item>
      <title>Intelligent real-time recommendation system</title>
      <dc:creator>Sofia</dc:creator>
      <pubDate>Mon, 11 Aug 2025 06:22:34 +0000</pubDate>
      <link>https://dev.to/coph1a/intelligent-real-time-recommendation-system-2i58</link>
      <guid>https://dev.to/coph1a/intelligent-real-time-recommendation-system-2i58</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/redis-2025-07-23"&gt;Redis AI Challenge&lt;/a&gt;: Real-Time AI Innovators&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;This project demonstrates the use of Redis as the foundation for an intelligent recommendation system that operates in real time. The project uses Redis vector search, semantic caching, and streaming data processing to generate personalized recommendations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Project features
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Redis Vector Search&lt;/strong&gt;: Using Redis Vector Search for semantic search and recommendations based on vector embeddings.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Semantic Caching&lt;/strong&gt;: Optimizing LLM performance by caching semantically similar queries.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Streaming data processing&lt;/strong&gt;: Using Redis Streams for real-time data processing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Personalized recommendations&lt;/strong&gt;: Generating personalized recommendations based on user interaction history.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Real-time analytics&lt;/strong&gt;: Tracking and analyzing user interactions in real time.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Technical stack
&lt;/h2&gt;

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

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;h2&gt;
  
  
  How I Used Redis 8
&lt;/h2&gt;

</description>
      <category>redischallenge</category>
      <category>devchallenge</category>
      <category>database</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
