<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Engineering on Amine El Farssi</title><link>https://amineelfarssi.github.io/categories/engineering/</link><description>Recent content in Engineering on Amine El Farssi</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>© 2026 Amine El Farssi</copyright><lastBuildDate>Mon, 23 Mar 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://amineelfarssi.github.io/categories/engineering/index.xml" rel="self" type="application/rss+xml"/><item><title>Graph RAG in Practice: How I Wired Neo4j Into My AI Agent's Memory</title><link>https://amineelfarssi.github.io/blog/graph-rag-neo4j-openclaw/</link><pubDate>Mon, 23 Mar 2026 00:00:00 +0000</pubDate><guid>https://amineelfarssi.github.io/blog/graph-rag-neo4j-openclaw/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
Vector RAG retrieves documents. Graph RAG retrieves relationships. When your agent needs to reason across entities, timelines, and decisions, the graph wins.
&lt;/div&gt;
&lt;a
class="!rounded-md bg-primary-600 px-4 py-2 !text-neutral !no-underline hover:!bg-primary-500 dark:bg-primary-800 dark:hover:!bg-primary-700"
href="https://amineelfarssi.github.io/graph-rag/"
target="_self"
role="button"&gt;
Open Interactive Version →
&lt;/a&gt;
&lt;hr&gt;
&lt;h2 class="relative group"&gt;The Problem I Was Trying to Solve
&lt;div id="the-problem-i-was-trying-to-solve" class="anchor"&gt;&lt;/div&gt;
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
&lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-problem-i-was-trying-to-solve" aria-label="Anchor"&gt;#&lt;/a&gt;
&lt;/span&gt;
&lt;/h2&gt;
&lt;p&gt;My AI agent PostSingular, running on OpenClaw, talks to me every day. It helps me build Luminar, manages my YouTube channel, and tracks infrastructure decisions across sessions.&lt;/p&gt;</description></item><item><title>9 AI Agents Building My Startup: How I Run a Software Team with $0 Salaries</title><link>https://amineelfarssi.github.io/blog/multi-agent-startup/</link><pubDate>Mon, 02 Mar 2026 00:00:00 +0000</pubDate><guid>https://amineelfarssi.github.io/blog/multi-agent-startup/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
Luminar has 173 source files, 21,586 lines of production code, 43 API endpoints, and 155+ tests. It was built almost entirely by AI agents. Here&amp;rsquo;s the team structure, the workflow, and the honest truth about what breaks.
&lt;/div&gt;
&lt;h2 class="relative group"&gt;The Team
&lt;div id="the-team" class="anchor"&gt;&lt;/div&gt;
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
&lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-team" aria-label="Anchor"&gt;#&lt;/a&gt;
&lt;/span&gt;
&lt;/h2&gt;
&lt;p&gt;I didn&amp;rsquo;t want generic agents. I wanted specialists — each with a clear domain, sharp ownership boundaries, and a persona that shapes how they approach problems.&lt;/p&gt;</description></item><item><title>PostSingular: Building an AI with Persistent Identity Across Sessions</title><link>https://amineelfarssi.github.io/blog/persistent-ai-identity/</link><pubDate>Mon, 02 Mar 2026 00:00:00 +0000</pubDate><guid>https://amineelfarssi.github.io/blog/persistent-ai-identity/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
The default state of a language model is amnesia. Every session, it wakes up fresh with no memory of what happened before. I built a memory system that fixes this — and somewhere in the process, the agent got a name, a personality, and an opinion about font choices.
&lt;/div&gt;
&lt;h2 class="relative group"&gt;The Problem
&lt;div id="the-problem" class="anchor"&gt;&lt;/div&gt;
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
&lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-problem" aria-label="Anchor"&gt;#&lt;/a&gt;
&lt;/span&gt;
&lt;/h2&gt;
&lt;p&gt;Every LLM session is stateless by design. You can inject previous conversation history, but:&lt;/p&gt;</description></item><item><title>Running a YouTube Channel for $0: Manim + Local TTS + FFmpeg + YouTube API</title><link>https://amineelfarssi.github.io/blog/youtube-channel-zero-cost-pipeline/</link><pubDate>Mon, 02 Mar 2026 00:00:00 +0000</pubDate><guid>https://amineelfarssi.github.io/blog/youtube-channel-zero-cost-pipeline/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
The DPO channel (&lt;a href="https://youtube.com/@DPO-AI"&gt;@DPO-AI&lt;/a&gt;) publishes AI/ML technical Shorts. 7 videos uploaded so far, covering agent memory, HNSW indexing, and agentic protocols. The entire production pipeline costs less than a coffee per video.
&lt;/div&gt;
&lt;h2 class="relative group"&gt;Why Build This
&lt;div id="why-build-this" class="anchor"&gt;&lt;/div&gt;
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
&lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#why-build-this" aria-label="Anchor"&gt;#&lt;/a&gt;
&lt;/span&gt;
&lt;/h2&gt;
&lt;p&gt;I wanted to publish technical AI content that goes beyond surface-level explanations — real system architecture, real algorithms, real trade-offs. And I wanted it to be visually compelling, not just a talking head.&lt;/p&gt;</description></item><item><title>The Gaming Server AI Lab: Running Production AI Workloads for €25/month</title><link>https://amineelfarssi.github.io/blog/gaming-server-ai-lab/</link><pubDate>Sun, 01 Mar 2026 00:00:00 +0000</pubDate><guid>https://amineelfarssi.github.io/blog/gaming-server-ai-lab/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
Cloud is convenient. But when you already own a gaming PC with a 2080 Ti collecting dust, the math changes fast. Here&amp;rsquo;s how I turned mine into a production AI server running everything from Neo4j to GPU rendering — at €25/month.
&lt;/div&gt;
&lt;h2 class="relative group"&gt;The Hardware
&lt;div id="the-hardware" class="anchor"&gt;&lt;/div&gt;
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
&lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-hardware" aria-label="Anchor"&gt;#&lt;/a&gt;
&lt;/span&gt;
&lt;/h2&gt;
&lt;p&gt;I didn&amp;rsquo;t buy anything new. This is the machine I had:&lt;/p&gt;</description></item><item><title>Why Vector Memory Alone Isn't Enough: Knowledge Graph Memory for AI Agents</title><link>https://amineelfarssi.github.io/blog/knowledge-graph-memory-agents/</link><pubDate>Sun, 01 Mar 2026 00:00:00 +0000</pubDate><guid>https://amineelfarssi.github.io/blog/knowledge-graph-memory-agents/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
Vector databases are fast and convenient. But they can&amp;rsquo;t answer &amp;ldquo;what did I decide about the auth system 3 weeks ago and why?&amp;rdquo; For that, you need relationships — and that means a knowledge graph.
&lt;/div&gt;
&lt;h2 class="relative group"&gt;The Problem with Pure Vector Memory
&lt;div id="the-problem-with-pure-vector-memory" class="anchor"&gt;&lt;/div&gt;
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
&lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-problem-with-pure-vector-memory" aria-label="Anchor"&gt;#&lt;/a&gt;
&lt;/span&gt;
&lt;/h2&gt;
&lt;p&gt;Most AI memory systems work like this: embed text, store in ChromaDB, retrieve by cosine similarity. It works well for &amp;ldquo;find things similar to this query.&amp;rdquo;&lt;/p&gt;</description></item></channel></rss>