<?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: Mostafa Fathy</title>
    <description>The latest articles on DEV Community by Mostafa Fathy (@mostafa_fathy_0fcbd1aea45).</description>
    <link>https://dev.to/mostafa_fathy_0fcbd1aea45</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%2F4011003%2Ffbc001a5-6e13-4741-ae80-88c9820601c7.jpg</url>
      <title>DEV Community: Mostafa Fathy</title>
      <link>https://dev.to/mostafa_fathy_0fcbd1aea45</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mostafa_fathy_0fcbd1aea45"/>
    <language>en</language>
    <item>
      <title>The Multi-Agent Architecture for Education</title>
      <dc:creator>Mostafa Fathy</dc:creator>
      <pubDate>Wed, 01 Jul 2026 14:08:02 +0000</pubDate>
      <link>https://dev.to/mostafa_fathy_0fcbd1aea45/the-multi-agent-architecture-for-education-5272</link>
      <guid>https://dev.to/mostafa_fathy_0fcbd1aea45/the-multi-agent-architecture-for-education-5272</guid>
      <description>&lt;h2&gt;
  
  
  The Problem With One Prompt
&lt;/h2&gt;

&lt;p&gt;When we first started automating curriculum production , the obvious move was to throw a big prompt at Gemini and ask it to produce a full lesson.&lt;/p&gt;

&lt;p&gt;It worked - sometimes. The quality was inconsistent. A great lesson on Monday, a mediocre one on Tuesday, and nobody could explain why.&lt;/p&gt;

&lt;p&gt;The root issue: &lt;strong&gt;one LLM doing everything is like one developer handling design, backend, QA, and deployment simultaneously.&lt;/strong&gt; You get output, but it's noisy.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Multi-Agent Solution
&lt;/h2&gt;

&lt;p&gt;We split the pipeline into four specialized agents, each with a narrow job:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Planner Agent&lt;/strong&gt;&lt;br&gt;
Takes the learning objective and breaks it into a structured outline - topics, subtopics, learning outcomes, estimated time per section. No content yet, just architecture.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Writer Agent&lt;/strong&gt;&lt;br&gt;
Receives the outline section by section and writes the actual content. Has no visibility into other sections - this forces consistency through structure, not context.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. QA Agent&lt;/strong&gt;&lt;br&gt;
Reviews the full draft against the original learning objective. Flags gaps, redundancies, and places where the content drifted from the outcome. Returns a structured diff.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Formatter Agent&lt;/strong&gt;&lt;br&gt;
Takes the approved content and outputs it in the exact format our LMS expects - SCORM metadata, section markers, media placeholders.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why LangGraph
&lt;/h2&gt;

&lt;p&gt;LangGraph lets us define the flow as a state machine - each agent is a node, and we can branch conditionally. If QA flags major issues, the loop goes back to Writer. If it passes, it moves to Formatter.&lt;/p&gt;

&lt;p&gt;This is something you can't do cleanly with a linear LangChain pipeline.&lt;/p&gt;

&lt;p&gt;`python&lt;br&gt;
from langgraph.graph import StateGraph&lt;/p&gt;

&lt;p&gt;workflow = StateGraph(CurriculumState)&lt;br&gt;
workflow.add_node("planner", planner_agent)&lt;br&gt;
workflow.add_node("writer", writer_agent)&lt;br&gt;
workflow.add_node("qa", qa_agent)&lt;br&gt;
workflow.add_node("formatter", formatter_agent)&lt;/p&gt;

&lt;p&gt;workflow.add_conditional_edges("qa", should_revise, {&lt;br&gt;
    "revise": "writer",&lt;br&gt;
    "approve": "formatter"&lt;br&gt;
})&lt;br&gt;
`&lt;/p&gt;

&lt;h2&gt;
  
  
  Results
&lt;/h2&gt;

&lt;p&gt;After switching to this architecture:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Content consistency score went from 6.8/10 to 8.5/10 (internal rubric)&lt;/li&gt;
&lt;li&gt;Average production time per lesson dropped by ~40%&lt;/li&gt;
&lt;li&gt;QA revision loops average 1.2 iterations instead of 3+&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The key insight: &lt;strong&gt;specialization improves quality even for AI agents.&lt;/strong&gt; A model doing one focused task outperforms the same model doing five tasks in a single prompt.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://mostafafathy.com/writing/multi-agent-architecture" rel="noopener noreferrer"&gt;mostafafathy.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>edtech</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Why I Treat the Curriculum Like a Software Architecture</title>
      <dc:creator>Mostafa Fathy</dc:creator>
      <pubDate>Wed, 01 Jul 2026 14:07:22 +0000</pubDate>
      <link>https://dev.to/mostafa_fathy_0fcbd1aea45/why-i-treat-the-curriculum-like-a-software-architecture-dfn</link>
      <guid>https://dev.to/mostafa_fathy_0fcbd1aea45/why-i-treat-the-curriculum-like-a-software-architecture-dfn</guid>
      <description>&lt;h2&gt;
  
  
  The Insight That Changed How I Work
&lt;/h2&gt;

&lt;p&gt;I spent years thinking about curriculum as content â€” topics to cover, videos to produce, exercises to write.&lt;/p&gt;

&lt;p&gt;Then I started building software systems at Armstrong, and something clicked: &lt;strong&gt;a curriculum is an architecture problem, not a content problem.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Both have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Components&lt;/strong&gt; that do one job (a lesson, a microservice)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dependencies&lt;/strong&gt; that must be satisfied in order (prereqs, API contracts)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Failure modes&lt;/strong&gt; that cascade if not handled (a confusing lesson breaks everything after it)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interfaces&lt;/strong&gt; between parts (how a module hands off to the next)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Problems This Reframing Solves
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. The "Zipped" Curriculum Problem
&lt;/h3&gt;

&lt;p&gt;Most curricula are built like a monolith â€” everything is coupled. Change one topic and you have to rewrite three lessons. Add a new module and the learning path breaks.&lt;/p&gt;

&lt;p&gt;Software has solved this with microservices. We applied the same idea: &lt;strong&gt;every lesson is self-contained.&lt;/strong&gt; It has defined inputs (what the learner must know before), defined outputs (what they can do after), and no hidden dependencies.&lt;/p&gt;

&lt;p&gt;Now we can swap, update, or reorder lessons without touching anything else.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. The No-Tests Problem
&lt;/h3&gt;

&lt;p&gt;Software engineers write tests. Instructional designers... review? Hope?&lt;/p&gt;

&lt;p&gt;We introduced &lt;strong&gt;learning outcome validation&lt;/strong&gt; at the unit level â€” every lesson has an exit assessment that maps directly to its stated outcome. If learners fail the assessment, the lesson failed, not the learner.&lt;/p&gt;

&lt;p&gt;This is just unit testing for education.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. The "Who Owns This" Problem
&lt;/h3&gt;

&lt;p&gt;In a big curriculum, nobody knows who's responsible for which part. Bugs (bad content, outdated info) go unfixed for months.&lt;/p&gt;

&lt;p&gt;We use a CODEOWNERS-style assignment. Every module has an owner. Changes require review from the owner. Same as a pull request.&lt;/p&gt;

&lt;h2&gt;
  
  
  What This Looks Like in Practice
&lt;/h2&gt;

&lt;p&gt;Our curriculum now has:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A dependency graph (built in Notion, visualized in Figma)&lt;/li&gt;
&lt;li&gt;Module specs that define inputs/outputs before a single word is written&lt;/li&gt;
&lt;li&gt;An automated QA pipeline (our  AI system) that checks new content against the spec&lt;/li&gt;
&lt;li&gt;A versioning system â€” curriculum v2.3, not just "the updated version"&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Result
&lt;/h2&gt;

&lt;p&gt;We went from ad-hoc content production to a system that can onboard a new SME in two days and have them producing spec-compliant content by day three.&lt;/p&gt;

&lt;p&gt;The curriculum is no longer a document. It's a system. And systems can be improved systematically.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://mostafafathy.com/writing/curriculum-as-software" rel="noopener noreferrer"&gt;mostafafathy.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>edtech</category>
      <category>architecture</category>
      <category>education</category>
      <category>systems</category>
    </item>
    <item>
      <title>Why Nobody Finishes Your 1-Hour Video</title>
      <dc:creator>Mostafa Fathy</dc:creator>
      <pubDate>Wed, 01 Jul 2026 14:01:18 +0000</pubDate>
      <link>https://dev.to/mostafa_fathy_0fcbd1aea45/why-nobody-finishes-your-1-hour-video-2269</link>
      <guid>https://dev.to/mostafa_fathy_0fcbd1aea45/why-nobody-finishes-your-1-hour-video-2269</guid>
      <description>&lt;h2&gt;
  
  
  The Attention Problem Is a Design Problem
&lt;/h2&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://mostafafathy.com/writing/atomic-learning-units" rel="noopener noreferrer"&gt;mostafafathy.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>edtech</category>
      <category>elearning</category>
      <category>education</category>
      <category>contentstrategy</category>
    </item>
    <item>
      <title>The Information Dump Problem</title>
      <dc:creator>Mostafa Fathy</dc:creator>
      <pubDate>Wed, 01 Jul 2026 14:01:15 +0000</pubDate>
      <link>https://dev.to/mostafa_fathy_0fcbd1aea45/the-information-dump-problem-3ej0</link>
      <guid>https://dev.to/mostafa_fathy_0fcbd1aea45/the-information-dump-problem-3ej0</guid>
      <description>&lt;h2&gt;
  
  
  The Mistake Every New EdTech Platform Makes
&lt;/h2&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://mostafafathy.com/writing/information-dump" rel="noopener noreferrer"&gt;mostafafathy.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>edtech</category>
      <category>instructionaldesign</category>
      <category>education</category>
      <category>learning</category>
    </item>
  </channel>
</rss>
