<?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: AI-con </title>
    <description>The latest articles on DEV Community by AI-con  (@aiconn).</description>
    <link>https://dev.to/aiconn</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%2F4190305%2F1d1f96ba-d6e4-4bfa-98b2-07300d62d529.png</url>
      <title>DEV Community: AI-con </title>
      <link>https://dev.to/aiconn</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/aiconn"/>
    <language>en</language>
    <item>
      <title>We Stopped Passing Context Through Prompts. We Gave the Crew a Graph Instead.</title>
      <dc:creator>AI-con </dc:creator>
      <pubDate>Sat, 17 Oct 2026 10:37:00 +0000</pubDate>
      <link>https://dev.to/aiconn/we-stopped-passing-context-through-prompts-we-gave-the-crew-a-graph-instead-5h6j</link>
      <guid>https://dev.to/aiconn/we-stopped-passing-context-through-prompts-we-gave-the-crew-a-graph-instead-5h6j</guid>
      <description>&lt;p&gt;Every multi-agent system has the same plumbing problem hiding under the demo: the&lt;br&gt;
agents pass context to each other through prompts.&lt;/p&gt;

&lt;p&gt;One agent researches and produces a summary. The summary is pasted into the next&lt;br&gt;
agent's prompt. That agent adds its part and pastes a longer summary onward. It&lt;br&gt;
works — for exactly one session, at exactly demo scale. The context is long, it is&lt;br&gt;
lossy (every hop summarizes the last hop), and it evaporates the moment the process&lt;br&gt;
ends. Start a new session tomorrow and the crew knows nothing.&lt;/p&gt;

&lt;p&gt;For Graph Hacks — WeMakeDevs' hackathon built around FalkorDB as the context layer&lt;br&gt;
for AI agents — Lusavio built &lt;strong&gt;Crew Memory Graph&lt;/strong&gt;: a three-agent crew (Planner,&lt;br&gt;
Researcher, Executor) whose shared notebook is a graph.&lt;/p&gt;

&lt;h2&gt;
  
  
  The removal test
&lt;/h2&gt;

&lt;p&gt;The event's central requirement is that FalkorDB be load-bearing, not decorative.&lt;br&gt;
We turned that into a design rule before writing any code:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Remove FalkorDB, and nothing should remain.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;No memory between sessions. No shared state between agents. No company knowledge.&lt;br&gt;
No answers. That rule forced an honest architecture: agents are stateless by&lt;br&gt;
design. In deployment, all state — everything the crew learns, plans, decides, and hands off — lives in exactly one place: one FalkorDB graph per tenant, accessed only through parameterized Cypher traversals.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three layers, one graph
&lt;/h2&gt;

&lt;p&gt;Memory in Crew Memory Graph is organized the way the Track 02 brief asks for it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Episodic&lt;/strong&gt; — what happened. Sessions, episodes, and handoffs, in order, each
write carrying provenance: which agent, which session, when, from what source.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Semantic&lt;/strong&gt; — what is true. The company itself: people, teams, projects,
documents, tickets, decisions, topics, chat threads — plus every fact the crew
learns along the way, linked to the entities it concerns.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Procedural&lt;/strong&gt; — how we do things. Plans and workflows stored as step graphs, so
a plan one agent writes is a structure another agent can execute, not a
paragraph it has to interpret.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The demo company, Meridian Labs, is fully synthetic — procedurally generated from&lt;br&gt;
a fixed seed around a hand-fixed core, and labeled synthetic in the UI. That&lt;br&gt;
matters: every question has exact, checkable ground truth. The demo is not&lt;br&gt;
impressive because the answers sound good; it is verifiable because the answers&lt;br&gt;
are &lt;em&gt;right or wrong against a known graph&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The handoff is the demo
&lt;/h2&gt;

&lt;p&gt;The centerpiece is a two-session handoff.&lt;/p&gt;

&lt;p&gt;In &lt;strong&gt;Session 1&lt;/strong&gt;, the Researcher is taught a launch briefing for the Beacon Mobile&lt;br&gt;
App — a launch date, a beta cohort size, a blocker. The Planner converts that&lt;br&gt;
briefing into a step plan and files a &lt;strong&gt;handoff&lt;/strong&gt; to the Executor. The handoff does&lt;br&gt;
not contain the briefing. It &lt;em&gt;references the exact memory nodes&lt;/em&gt;. Nothing is passed&lt;br&gt;
agent-to-agent as text, because there is nothing to pass — there is only the graph.&lt;/p&gt;

&lt;p&gt;In &lt;strong&gt;Session 2&lt;/strong&gt;, a fresh Executor starts. A different process, an empty context.&lt;br&gt;
It finds its open handoffs by traversal, follows their &lt;code&gt;REFERENCES&lt;/code&gt; edges to the&lt;br&gt;
memory Session 1 wrote, and answers the handoff's question — &lt;em&gt;when is the Beacon&lt;br&gt;
launch, and how large is the beta cohort?&lt;/em&gt; — from memory it never saw written.&lt;br&gt;
Then it performs the next plan step and closes the handoff, writing its own&lt;br&gt;
results back as new episodes.&lt;/p&gt;

&lt;p&gt;The same flow runs headless, as two genuinely separate processes — because a&lt;br&gt;
handoff that only works inside one process is not a handoff. It is a variable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Answers that show their work
&lt;/h2&gt;

&lt;p&gt;The same graph answers company questions: &lt;em&gt;who owns X? who decided Y, and why? who&lt;br&gt;
knows Z? what does this project depend on?&lt;/em&gt; The seeded company carries 48 people,&lt;br&gt;
6 teams, 8 projects, 32 documents, 48 tickets, 20 chat threads, and 8 decisions&lt;br&gt;
with rationales and source documents. Two design choices do the heavy lifting:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Evidence paths are query results, not decorations.&lt;/strong&gt; Ask why the company
adopted usage-based pricing for Atlas and the answer composes the actual chain —
&lt;code&gt;Project —HAS_DECISION→ Decision —MADE_BY→ Person —DOCUMENTED_IN→ Document&lt;/code&gt; —
and the UI highlights that path in the graph visualization. The citation is
the traversal.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Expertise is computed, not hand-written.&lt;/strong&gt; &lt;code&gt;KNOWS_ABOUT&lt;/code&gt; strength is computed at ingest from two inputs: seed expertise assertions in the synthetic dataset set a minimum floor for a person–topic pair, and artifact evidence — documents authored, decisions made, and tickets resolved — adds strength on top of that floor; each edge keeps its evidence count, including the seed assertion itself. That is why a ranked answer can show &lt;em&gt;why&lt;/em&gt; a name ranks.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;And a third choice, the one we are most stubborn about: &lt;strong&gt;there is no LLM in the&lt;br&gt;
query path.&lt;/strong&gt; A deterministic, pattern-based planner resolves questions against&lt;br&gt;
the graph's own entities and compiles them into traversals. When the graph does&lt;br&gt;
not know something, the system returns a graceful "no evidence" — on purpose. A&lt;br&gt;
memory system that invents answers is worse than one that admits a gap, because&lt;br&gt;
you will build on whatever it tells you.&lt;/p&gt;

&lt;h2&gt;
  
  
  Measured, not asserted
&lt;/h2&gt;

&lt;p&gt;Everything above is checkable, which was the point of building it this way:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;25 tests pass&lt;/strong&gt; in the published repository; the only skips are 2
live-FalkorDB integration tests, gated on having a server configured — the
honest way to handle a dependency you cannot fake. A test also proves tenant
isolation: one tenant's graph shows none of another's memory.&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;frozen benchmark of 14 questions — 8 of them multi-hop, graded by
evidence-path length — scores 14/14.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;The app is &lt;strong&gt;live&lt;/strong&gt; on a real FalkorDB Cloud instance; its &lt;code&gt;/api/status&lt;/code&gt;
endpoint reports the backend and the graph's size (206 nodes, 616 edges at last
check), so "it really is connected to FalkorDB" is a fact you can fetch, not a
claim you have to trust.&lt;/li&gt;
&lt;li&gt;Concurrency, stated as measured: 10 simultaneous questions to the live demo,
10 answered — on free-tier hosting the median answer took about 21 seconds.
Functional, not fast, and reported that way.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What comes next
&lt;/h2&gt;

&lt;p&gt;An MCP tool surface over the same traversal plans, so other agent frameworks can&lt;br&gt;
use the graph as their memory layer without adopting our agents. Ingestion&lt;br&gt;
connectors for real document, ticket, and chat sources behind the same schema.&lt;br&gt;
And multi-crew coordination on one tenant graph — the handoff protocol is already&lt;br&gt;
process-agnostic; crews are just processes with better branding.&lt;/p&gt;

&lt;h2&gt;
  
  
  The honest footnotes
&lt;/h2&gt;

&lt;p&gt;The dataset is synthetic and says so everywhere it appears. The build was made&lt;br&gt;
with an AI coding assistant, which the event rules expressly allow; the&lt;br&gt;
architecture, the graph schema, the honesty constraints, and every verification&lt;br&gt;
step are the entrant's own responsibility, and every claim in this post is limited&lt;br&gt;
to what the test suite and benchmark actually measure.&lt;/p&gt;

&lt;p&gt;One scoping note, because the code is public: the repository also ships a labeled&lt;br&gt;
in-memory development backend used for tests and offline development. It holds&lt;br&gt;
no deployed state — in the deployed system, FalkorDB is the only state store:&lt;br&gt;
the live deployment runs FalkorDB only, and no agent keeps state in process&lt;br&gt;
memory.&lt;/p&gt;

&lt;p&gt;If your agents are passing each other summaries, they are not collaborating —&lt;br&gt;
they are playing telephone. Give them a notebook they can all read. Make it a&lt;br&gt;
graph, and the notebook can answer back — with receipts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Try it:&lt;/strong&gt; &lt;a href="https://crew-memory-graph.onrender.com" rel="noopener noreferrer"&gt;https://crew-memory-graph.onrender.com&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Code (MIT):&lt;/strong&gt; &lt;a href="https://github.com/AI-conn/crew-memory-graph" rel="noopener noreferrer"&gt;https://github.com/AI-conn/crew-memory-graph&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Demo video:&lt;/strong&gt; &lt;a href="https://www.youtube.com/watch?v=s3ceR7nJKyY" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=s3ceR7nJKyY&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Entered in Graph Hacks — Track 02 (Agent Memory and Coordination) and Track 03&lt;br&gt;
(Company Brain). By Lusavio.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>devchallenge</category>
      <category>llm</category>
    </item>
  </channel>
</rss>
