<?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 (@mostafafathy).</description>
    <link>https://dev.to/mostafafathy</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/mostafafathy</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mostafafathy"/>
    <language>en</language>
    <item>
      <title>The Course Production Pipeline: How I Combine Instructional Design and AI Without Losing Quality</title>
      <dc:creator>Mostafa Fathy</dc:creator>
      <pubDate>Sun, 12 Jul 2026 10:46:24 +0000</pubDate>
      <link>https://dev.to/mostafafathy/the-course-production-pipeline-how-i-combine-instructional-design-and-ai-without-losing-quality-5dp2</link>
      <guid>https://dev.to/mostafafathy/the-course-production-pipeline-how-i-combine-instructional-design-and-ai-without-losing-quality-5dp2</guid>
      <description>&lt;p&gt;Most conversations about AI in education are stuck on the wrong question: &lt;em&gt;"Can AI create a course?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Yes, it can. In about twenty minutes. And that's exactly the problem — because what it creates in twenty minutes is content, not learning. The real question worth answering is: &lt;strong&gt;where does AI belong inside a serious course production process, and where does it not?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After building AI-assisted production pipelines for learning content, I've landed on an answer that I'll lay out in full here. It comes down to a hard boundary: &lt;strong&gt;humans design the architecture, AI produces inside it.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why "AI-generated courses" fail
&lt;/h2&gt;

&lt;p&gt;When you ask a language model to create a course on any topic, it produces something that looks remarkably like a course: modules, lessons, quizzes, even learning objectives. The structure is grammatical, so to speak.&lt;/p&gt;

&lt;p&gt;But look closer and you'll find three failures, every time:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Objectives that describe topics, not behaviors.&lt;/strong&gt; "Understand the fundamentals of marketing" is not a learning outcome — it's a table of contents entry. You can't observe "understanding," you can't practice it, and you can't verify it happened.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. No designed forgetting-resistance.&lt;/strong&gt; Human memory doesn't respond to exposure; it responds to retrieval, spacing, and application. Generic AI output arranges information logically — but logical arrangement is for reference material, not for learning. A well-designed course sequences &lt;em&gt;practice&lt;/em&gt;, not just information.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Uniform difficulty.&lt;/strong&gt; Real learners arrive with uneven prior knowledge and get stuck at specific, predictable points. Designing for those friction points is the craft of instructional design. AI can't predict them because they aren't in the text — they're in the learners.&lt;/p&gt;

&lt;p&gt;None of this means AI doesn't belong in course production. It means AI can't be the &lt;em&gt;architect&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The pipeline: five stages, one boundary
&lt;/h2&gt;

&lt;p&gt;Here's the structure I use. The boundary between human and machine work sits between stages 2 and 3.&lt;/p&gt;

&lt;h3&gt;
  
  
  Stage 1 — Outcome mapping (human)
&lt;/h3&gt;

&lt;p&gt;Before anything else, decompose the course into atomic units, where each unit maps to exactly one behavioral outcome. The test I use: &lt;em&gt;the outcome must fit in one sentence with one verb, and it must describe something the learner does, not knows.&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Weak: "Learn about pricing strategies"&lt;/li&gt;
&lt;li&gt;Strong: "Price a new product using value-based anchoring"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This stage is slow, and it should be. It's where all the quality lives.&lt;/p&gt;

&lt;h3&gt;
  
  
  Stage 2 — Constraint specification (human)
&lt;/h3&gt;

&lt;p&gt;Turn each atomic unit into a production spec: the outcome, the audience and their prior knowledge, the one practice activity that exercises the outcome, the checkpoint that evidences it, tone, length, and format constraints.&lt;/p&gt;

&lt;p&gt;This is the step almost everyone skips, and it's the step that changes everything. A language model given a topic will invent a structure. A language model given a spec will &lt;em&gt;fill&lt;/em&gt; a structure. The difference in output quality is not incremental — it's categorical.&lt;/p&gt;

&lt;h3&gt;
  
  
  Stage 3 — Constrained generation (AI)
&lt;/h3&gt;

&lt;p&gt;Now, and only now, AI enters — and it's genuinely excellent here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Drafting explanations against the spec&lt;/li&gt;
&lt;li&gt;Generating scenario variations (the same negotiation exercise set in healthcare, retail, SaaS)&lt;/li&gt;
&lt;li&gt;Producing distractor options for assessments that reflect real misconceptions&lt;/li&gt;
&lt;li&gt;Adapting reading level and tone for different audiences&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For larger projects I run this as a multi-agent system: separate agents for drafting, for reviewing against the spec, and for consistency checking across units. Each agent has one job and a narrow definition of success — which is, not coincidentally, the same atomic principle the course itself is built on.&lt;/p&gt;

&lt;h3&gt;
  
  
  Stage 4 — Human review at the friction points (human)
&lt;/h3&gt;

&lt;p&gt;Not a full rewrite — a targeted review. I check the three places AI output reliably fails: the practice activities (are they actually doable and actually aligned to the outcome?), the transitions between units (does the sequence build?), and the examples (are they real-world plausible or plausible-sounding?).&lt;/p&gt;

&lt;h3&gt;
  
  
  Stage 5 — Instrument and iterate (human + data)
&lt;/h3&gt;

&lt;p&gt;Ship, then watch where learners stall, quit, or fail checkpoints. Those friction points feed back into Stage 1 of the next revision. The pipeline is a loop, not a line.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this changes in practice
&lt;/h2&gt;

&lt;p&gt;The honest pitch for this approach isn't "AI makes courses cheaper." It's this: &lt;strong&gt;the pipeline moves human effort to where it's irreplaceable.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In a traditional process, a designer spends most of their time on production mechanics — writing, formatting, generating variations. Architecture gets whatever hours are left. This pipeline inverts that: production is largely automated, so the designer's time concentrates on outcome mapping, constraint design, and friction-point review — the work that actually determines whether anyone learns anything.&lt;/p&gt;

&lt;p&gt;Faster production is real (in my experience, dramatically so). But speed is the side effect. The point is that quality stops depending on heroic effort and starts depending on system design — which means it survives scale, team changes, and deadline pressure.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where to start
&lt;/h2&gt;

&lt;p&gt;If you're building learning products and want to move toward this model, don't start by buying AI tools. Start here:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Take one existing course and rewrite every module objective as a one-verb behavioral outcome. Most won't survive the rewrite. That's the finding.&lt;/li&gt;
&lt;li&gt;Pick the three units where learners struggle most and write full constraint specs for them.&lt;/li&gt;
&lt;li&gt;Regenerate just those three units with AI working inside your specs. Compare against the originals — not for polish, but for whether the practice activities changed.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That comparison will tell you more about AI's real role in learning design than any tool demo.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;I design learning systems and AI-assisted course production pipelines. If you're building courses or educational products and wrestling with where AI fits, my messages are open — I'm always happy to talk shop.&lt;/em&gt;&lt;/p&gt;

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

</description>
      <category>ai</category>
      <category>learning</category>
      <category>edtech</category>
      <category>productivity</category>
    </item>
    <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/mostafafathy/the-multi-agent-architecture-for-education-5272</link>
      <guid>https://dev.to/mostafafathy/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/mostafafathy/why-i-treat-the-curriculum-like-a-software-architecture-dfn</link>
      <guid>https://dev.to/mostafafathy/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/mostafafathy/why-nobody-finishes-your-1-hour-video-2269</link>
      <guid>https://dev.to/mostafafathy/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/mostafafathy/the-information-dump-problem-3ej0</link>
      <guid>https://dev.to/mostafafathy/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>
