When we first started automating curriculum production at Armstrong Education, the obvious move was to throw a big prompt at an LLM and ask it to produce a full lesson.
It worked — sometimes. The quality was inconsistent. A great lesson on Monday, a mediocre one on Tuesday, and nobody could explain why.
The root issue: one LLM doing everything is like one developer handling design, backend, QA, and deployment simultaneously. You get output, but it's noisy.
We split the pipeline into four specialized agents, each with a narrow job:
1. Planner Agent
Takes the learning objective and breaks it into a structured outline — topics, subtopics, learning outcomes, estimated time per section. No content yet, just architecture.
2. Writer Agent
Receives the outline section by section and writes the actual content. Has no visibility into other sections — this forces consistency through structure, not context.
3. QA Agent
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.
4. Formatter Agent
Takes the approved content and outputs it in the exact format our LMS expects — SCORM metadata, section markers, media placeholders.
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.
This is something you can't do cleanly with a linear LangChain pipeline.
from langgraph.graph import StateGraph
workflow = StateGraph(CurriculumState)
workflow.add_node("planner", planner_agent)
workflow.add_node("writer", writer_agent)
workflow.add_node("qa", qa_agent)
workflow.add_node("formatter", formatter_agent)
workflow.add_conditional_edges("qa", should_revise, {
"revise": "writer",
"approve": "formatter"
})
After switching to this architecture:
The key insight: specialization improves quality even for AI agents. A model doing one focused task outperforms the same model doing five tasks in a single prompt.
A multi-agent AI system for education uses multiple specialized AI agents — each with a narrow role — instead of a single LLM handling all tasks. Common roles include a Planner (structuring content), Writer (generating text), QA (validating against outcomes), and Formatter (producing final output). Specialization improves consistency and quality.
LangGraph enables building stateful AI pipelines where agents pass work conditionally. In content generation, it powers workflows where a QA agent can route content back to a Writer for revision before proceeding to formatting — replacing linear chains with conditional, reviewable loops that improve output quality at each stage.
AI can automate content generation, quality checking, and formatting — but instructional design requires human judgment about what outcomes to target, how to sequence learning, and how to evaluate real-world performance transfer. AI amplifies instructional designers; it replaces the execution layer, not the strategic layer of deciding what to build.
No single tool wins. The most effective approach combines LLMs (Claude, GPT-4) for generation, LangGraph or similar frameworks for workflow orchestration, and human review for outcome alignment. Single-prompt solutions produce inconsistent results; multi-step pipelines with validation produce scalable, quality-consistent content.
A single LLM planning, writing, reviewing, and formatting simultaneously produces inconsistent output because tasks compete for context. Dedicated agents maintain focus: the Writer only writes, the QA agent only reviews. Separation of concerns — a core software principle — significantly improves AI output quality and makes failures easier to diagnose.