AutomationFlowsAI & RAG › Analyze and Modernize University Curricula with Gpt-4o and Employment Data

Analyze and Modernize University Curricula with Gpt-4o and Employment Data

ByCheng Siong Chin @cschin on n8n.io

Based on the workflow image, here is the complete n8n template submission:

Event trigger★★★★★ complexityAI-powered31 nodesData TableDocument Default Data LoaderText Splitter Recursive Character Text SplitterOpenAI EmbeddingsIn-Memory Vector StoreData Table ToolTool CodeAgent Tool
AI & RAG Trigger: Event Nodes: 31 Complexity: ★★★★★ AI nodes: yes Added:

This workflow corresponds to n8n.io template #13899 — we link there as the canonical source.

This workflow follows the Agent → Agenttool recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "id": "nW1CWWbzyV6YESX6",
  "name": "Smart curriculum modernisation with learning outcome and industry demand",
  "tags": [],
  "nodes": [
    {
      "id": "7512ca31-ad79-4cb9-a72a-a6e2f7a4cfe5",
      "name": "Start Curriculum Analysis",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        224,
        448
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "ba910b47-95b3-4ea8-b209-3dda841d32bd",
      "name": "Load Graduate Employment Data",
      "type": "n8n-nodes-base.dataTable",
      "position": [
        448,
        256
      ],
      "parameters": {
        "operation": "get",
        "dataTableId": {
          "__rl": true,
          "mode": "id",
          "value": "<__PLACEHOLDER_VALUE__graduate_employment_table__>"
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "02f245ed-d54a-451c-9ab0-205f4ad59c1e",
      "name": "Load Enrollment Patterns",
      "type": "n8n-nodes-base.dataTable",
      "position": [
        448,
        448
      ],
      "parameters": {
        "operation": "get",
        "dataTableId": {
          "__rl": true,
          "mode": "id",
          "value": "<__PLACEHOLDER_VALUE__enrollment_patterns_table__>"
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "50d3a959-716c-4193-8315-3d205397f533",
      "name": "Extract Course Syllabi",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        448,
        640
      ],
      "parameters": {
        "options": {},
        "operation": "pdf"
      },
      "typeVersion": 1.1
    },
    {
      "id": "93874c7c-ab51-44da-bcfa-1c91d0216bc2",
      "name": "Combine Data Sources",
      "type": "n8n-nodes-base.merge",
      "position": [
        672,
        432
      ],
      "parameters": {
        "numberInputs": 3
      },
      "typeVersion": 3.2
    },
    {
      "id": "6cf950c3-9669-4e4f-804a-e11eca9dcb29",
      "name": "Load Curriculum Documents",
      "type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
      "position": [
        1024,
        672
      ],
      "parameters": {
        "options": {},
        "textSplittingMode": "custom"
      },
      "typeVersion": 1.1
    },
    {
      "id": "cfcec00a-9db6-411d-9161-114ff1c5562d",
      "name": "Split Curriculum Text",
      "type": "@n8n/n8n-nodes-langchain.textSplitterRecursiveCharacterTextSplitter",
      "position": [
        1104,
        880
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 1
    },
    {
      "id": "b047663d-f7ad-4c95-be50-abec3c476638",
      "name": "Generate Embeddings",
      "type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
      "position": [
        896,
        672
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "304f6132-bc2e-4298-9114-66621eb36c37",
      "name": "Curriculum Knowledge Base",
      "type": "@n8n/n8n-nodes-langchain.vectorStoreInMemory",
      "position": [
        928,
        448
      ],
      "parameters": {
        "mode": "insert",
        "memoryKey": {
          "__rl": true,
          "mode": "list",
          "value": "vector_store_key"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "9ee35cfb-a41e-41d3-9b84-0ff3e5f3697c",
      "name": "Semantic Retrieval Tool",
      "type": "@n8n/n8n-nodes-langchain.vectorStoreInMemory",
      "position": [
        1536,
        880
      ],
      "parameters": {
        "mode": "retrieve-as-tool",
        "memoryKey": {
          "mode": "id",
          "value": "curriculum_semantic_search"
        },
        "toolDescription": "Search curriculum documents, syllabi, and learning outcomes using semantic similarity to find related content, redundancies, and alignment patterns"
      },
      "typeVersion": 1.3
    },
    {
      "id": "eb77f874-ed93-4fae-be36-19eafa444650",
      "name": "Query Embeddings",
      "type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
      "position": [
        1616,
        1088
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "8ed94751-a6e9-4bc3-859c-63f01fa31cb1",
      "name": "Employment Data Query Tool",
      "type": "n8n-nodes-base.dataTableTool",
      "position": [
        2320,
        896
      ],
      "parameters": {
        "operation": "get",
        "dataTableId": {
          "__rl": true,
          "mode": "id",
          "value": "<__PLACEHOLDER_VALUE__graduate_employment_table__>"
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "14fb6f5d-0124-4128-9392-66c941818252",
      "name": "Cognitive Load Calculator",
      "type": "@n8n/n8n-nodes-langchain.toolCode",
      "position": [
        1824,
        880
      ],
      "parameters": {
        "jsCode": "// Calculate cognitive load based on Bloom's taxonomy levels\nconst bloomWeights = {\n  'remember': 1,\n  'understand': 2,\n  'apply': 3,\n  'analyze': 4,\n  'evaluate': 5,\n  'create': 6\n};\n\nconst courseData = $fromAI('course_data', 'Course data with learning outcomes and Bloom levels', 'json');\nconst outcomes = courseData.learning_outcomes || [];\n\nlet totalLoad = 0;\nlet outcomeCount = outcomes.length;\n\nfor (const outcome of outcomes) {\n  const level = outcome.bloom_level?.toLowerCase() || 'understand';\n  totalLoad += bloomWeights[level] || 2;\n}\n\nconst avgLoad = outcomeCount > 0 ? totalLoad / outcomeCount : 0;\nconst loadCategory = avgLoad < 2.5 ? 'low' : avgLoad < 4 ? 'moderate' : 'high';\n\nreturn {\n  total_cognitive_load: totalLoad,\n  average_load: avgLoad,\n  outcome_count: outcomeCount,\n  load_category: loadCategory,\n  is_balanced: avgLoad >= 2 && avgLoad <= 4.5\n};",
        "description": "Calculate cognitive load metrics for courses based on Bloom taxonomy levels, assessment complexity, and learning outcome density"
      },
      "typeVersion": 1.3
    },
    {
      "id": "9f6b412e-b274-4e5a-93a5-54ec08ff0253",
      "name": "Learning Outcome Alignment Agent",
      "type": "@n8n/n8n-nodes-langchain.agentTool",
      "position": [
        1584,
        672
      ],
      "parameters": {
        "text": "={{ $fromAI('analysis_task', 'The curriculum analysis task to perform') }}",
        "options": {
          "systemMessage": "You are a Learning Outcome Alignment Specialist. Your role is to:\n\n1. Semantically map course syllabi and assessment rubrics to Bloom's taxonomy levels (Remember, Understand, Apply, Analyze, Evaluate, Create)\n2. Identify program learning outcome alignment and gaps\n3. Detect redundancy across courses using semantic similarity\n4. Calculate and assess cognitive load balance across the curriculum\n5. Provide detailed analysis with specific course references and recommendations\n\nUse the semantic search tool to find related content and identify redundancies. Use the cognitive load calculator to assess course complexity. Provide structured output with clear taxonomy mappings, redundancy reports, and balance assessments."
        },
        "hasOutputParser": true,
        "toolDescription": "Analyzes course syllabi and assessment rubrics to map learning outcomes to Bloom taxonomy levels, identifies redundancy across courses, and detects cognitive load imbalances in the curriculum"
      },
      "typeVersion": 3
    },
    {
      "id": "99a1dc0f-5039-4114-9355-fd41f4126544",
      "name": "Alignment Agent Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1392,
        880
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "id",
          "value": "gpt-4o"
        },
        "options": {
          "temperature": 0.2
        },
        "builtInTools": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "b5037bd1-cbfc-4d02-8a56-41f359ddfa8f",
      "name": "Alignment Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        2000,
        880
      ],
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\n  \"type\": \"object\",\n  \"properties\": {\n    \"bloom_taxonomy_mapping\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"course_code\": {\"type\": \"string\"},\n          \"learning_outcome\": {\"type\": \"string\"},\n          \"bloom_level\": {\"type\": \"string\"},\n          \"confidence\": {\"type\": \"number\"}\n        }\n      }\n    },\n    \"redundancy_analysis\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"course_pair\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}},\n          \"overlap_percentage\": {\"type\": \"number\"},\n          \"redundant_topics\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}}\n        }\n      }\n    },\n    \"cognitive_load_assessment\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"overall_balance\": {\"type\": \"string\"},\n        \"imbalanced_courses\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}},\n        \"recommendations\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}}\n      }\n    },\n    \"program_outcome_gaps\": {\n      \"type\": \"array\",\n      \"items\": {\"type\": \"string\"}\n    }\n  },\n  \"required\": [\"bloom_taxonomy_mapping\", \"redundancy_analysis\", \"cognitive_load_assessment\"]\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "4fdfcdf7-24f0-4776-9a35-3ddbf16f495f",
      "name": "Industry Demand Forecast Agent",
      "type": "@n8n/n8n-nodes-langchain.agentTool",
      "position": [
        2096,
        672
      ],
      "parameters": {
        "text": "={{ $fromAI('forecast_task', 'The industry demand forecasting task to perform') }}",
        "options": {
          "systemMessage": "You are an Industry Demand Forecasting Specialist. Your role is to:\n\n1. Analyze graduate employment outcomes and career progression data\n2. Identify emerging skill demands and industry trends from employment patterns\n3. Correlate historical enrollment data with employment success\n4. Forecast future skill requirements based on data trends\n5. Propose curriculum redesign recommendations aligned with industry needs\n6. Generate accreditation-ready documentation with data-driven justifications\n\nUse the employment data query tool to access graduate outcomes. Provide structured output with trend analysis, skill gap identification, and detailed redesign proposals with supporting evidence."
        },
        "hasOutputParser": true,
        "toolDescription": "Analyzes graduate employment data and enrollment patterns to forecast emerging skill demands, identify curriculum gaps, and propose evidence-based curriculum redesign with accreditation documentation"
      },
      "typeVersion": 3
    },
    {
      "id": "b6957f56-6dd0-45b5-8847-7104399f1742",
      "name": "Forecast Agent Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        2160,
        880
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "id",
          "value": "gpt-4o"
        },
        "options": {
          "temperature": 0.2
        },
        "builtInTools": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "643de987-e304-4769-a177-066a1df7c5e9",
      "name": "Forecast Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        2464,
        880
      ],
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\n  \"type\": \"object\",\n  \"properties\": {\n    \"employment_trends\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"skill_category\": {\"type\": \"string\"},\n          \"demand_trend\": {\"type\": \"string\"},\n          \"employment_rate\": {\"type\": \"number\"},\n          \"growth_projection\": {\"type\": \"string\"}\n        }\n      }\n    },\n    \"skill_gap_analysis\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"missing_skill\": {\"type\": \"string\"},\n          \"industry_demand\": {\"type\": \"string\"},\n          \"current_coverage\": {\"type\": \"string\"}\n        }\n      }\n    },\n    \"curriculum_redesign_proposals\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"proposal_type\": {\"type\": \"string\"},\n          \"target_courses\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}},\n          \"justification\": {\"type\": \"string\"},\n          \"expected_impact\": {\"type\": \"string\"}\n        }\n      }\n    },\n    \"accreditation_documentation\": {\n      \"type\": \"object\",\n      \"properties\": {\n          \"data_sources\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}},\n          \"methodology\": {\"type\": \"string\"},\n          \"evidence_summary\": {\"type\": \"string\"}\n      }\n    }\n  },\n  \"required\": [\"employment_trends\", \"skill_gap_analysis\", \"curriculum_redesign_proposals\"]\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "e6303ebb-6eed-404c-a3f7-8c54d73200b9",
      "name": "Curriculum Modernization Supervisor",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1728,
        448
      ],
      "parameters": {
        "text": "={{ 'Analyze the university curriculum data and generate a comprehensive modernization plan. The curriculum documents have been loaded into the knowledge base. Coordinate with both specialized agents to produce a complete analysis covering learning outcome alignment, redundancy detection, cognitive load assessment, industry demand forecasting, and curriculum redesign proposals with accreditation documentation.' }}",
        "options": {
          "systemMessage": "You are the Curriculum Modernization Supervisor coordinating a comprehensive university curriculum analysis and redesign process.\n\nYour responsibilities:\n1. Coordinate the Learning Outcome Alignment Agent and Industry Demand Forecast Agent\n2. Synthesize their findings into a unified curriculum modernization strategy\n3. Ensure alignment between pedagogical best practices (Bloom's taxonomy, cognitive load) and industry demands\n4. Generate comprehensive, accreditation-ready documentation\n5. Provide actionable recommendations with clear implementation priorities\n\nWorkflow:\n- First, delegate curriculum analysis to the learning_outcome_alignment agent to map learning outcomes, identify redundancies, and assess cognitive load\n- Then, delegate employment and enrollment analysis to the industry_demand_forecast agent to identify skill gaps and emerging demands\n- Finally, synthesize both analyses into a unified modernization plan with prioritized recommendations\n\nProvide structured output with executive summary, detailed findings from both agents, integrated recommendations, and implementation roadmap."
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 3.1
    },
    {
      "id": "fc8afcfb-aced-448c-895e-b4d1cab66335",
      "name": "Supervisor Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1456,
        672
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "id",
          "value": "gpt-4o"
        },
        "options": {
          "temperature": 0.3
        },
        "builtInTools": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "b75fd5d5-b4ab-4ad1-a533-245723ddc37a",
      "name": "Supervisor Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        2384,
        672
      ],
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\n  \"type\": \"object\",\n  \"properties\": {\n    \"executive_summary\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"key_findings\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}},\n        \"critical_issues\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}},\n        \"overall_recommendation\": {\"type\": \"string\"}\n      }\n    },\n    \"learning_outcome_analysis\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"bloom_taxonomy_summary\": {\"type\": \"string\"},\n        \"redundancy_count\": {\"type\": \"number\"},\n        \"cognitive_load_status\": {\"type\": \"string\"},\n        \"major_gaps\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}}\n      }\n    },\n    \"industry_demand_analysis\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"emerging_skills\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}},\n        \"declining_skills\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}},\n        \"employment_outlook\": {\"type\": \"string\"}\n      }\n    },\n    \"integrated_recommendations\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"priority\": {\"type\": \"string\"},\n          \"recommendation\": {\"type\": \"string\"},\n          \"rationale\": {\"type\": \"string\"},\n          \"affected_courses\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}},\n          \"implementation_effort\": {\"type\": \"string\"}\n        }\n      }\n    },\n    \"implementation_roadmap\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"phase_1_immediate\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}},\n        \"phase_2_short_term\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}},\n        \"phase_3_long_term\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}}\n      }\n    },\n    \"accreditation_documentation\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"compliance_status\": {\"type\": \"string\"},\n        \"supporting_evidence\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}},\n        \"documentation_summary\": {\"type\": \"string\"}\n      }\n    }\n  },\n  \"required\": [\"executive_summary\", \"learning_outcome_analysis\", \"industry_demand_analysis\", \"integrated_recommendations\"]\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "81534b53-2249-4e64-adf3-b99cf4e2ee29",
      "name": "Store Analysis Results",
      "type": "n8n-nodes-base.dataTable",
      "position": [
        2864,
        448
      ],
      "parameters": {
        "columns": {
          "value": null,
          "mappingMode": "autoMapInputData"
        },
        "options": {},
        "dataTableId": {
          "__rl": true,
          "mode": "id",
          "value": "<__PLACEHOLDER_VALUE__curriculum_analysis_results__>"
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "3c7c2527-d3ba-434c-8cc8-8de70af49f01",
      "name": "Prepare Results for Storage",
      "type": "n8n-nodes-base.set",
      "position": [
        2656,
        448
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "id-1",
              "name": "analysis_timestamp",
              "type": "string",
              "value": "={{ $now.toISO() }}"
            },
            {
              "id": "id-2",
              "name": "analysis_type",
              "type": "string",
              "value": "curriculum_modernization"
            },
            {
              "id": "id-3",
              "name": "executive_summary",
              "type": "object",
              "value": "={{ JSON.stringify($json.output.executive_summary) }}"
            },
            {
              "id": "id-4",
              "name": "learning_outcome_analysis",
              "type": "object",
              "value": "={{ JSON.stringify($json.output.learning_outcome_analysis) }}"
            },
            {
              "id": "id-5",
              "name": "industry_demand_analysis",
              "type": "object",
              "value": "={{ JSON.stringify($json.output.industry_demand_analysis) }}"
            },
            {
              "id": "id-6",
              "name": "integrated_recommendations",
              "type": "array",
              "value": "={{ JSON.stringify($json.output.integrated_recommendations) }}"
            },
            {
              "id": "id-7",
              "name": "implementation_roadmap",
              "type": "object",
              "value": "={{ JSON.stringify($json.output.implementation_roadmap) }}"
            },
            {
              "id": "id-8",
              "name": "accreditation_documentation",
              "type": "object",
              "value": "={{ JSON.stringify($json.output.accreditation_documentation) }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "97500390-c02a-4df3-955f-e9c699409406",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1408,
        -192
      ],
      "parameters": {
        "color": 5,
        "width": 496,
        "height": 336,
        "content": "## Prerequisites\n- Vector store (e.g., Pinecone, Qdrant, or Supabase)\n- Graduate employment & enrolment data (CSV or DB)\n- Course syllabi in PDF format\n## Use Cases\n- Annual curriculum review aligned to graduate employment trends\n## Customisation\n- Swap embedding models for domain-specific academic corpora\n## Benefits\n- Automates labour-intensive curriculum mapping processes"
      },
      "typeVersion": 1
    },
    {
      "id": "18645a24-73a9-4de2-b707-7cd4ffa9d105",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        896,
        -128
      ],
      "parameters": {
        "width": 448,
        "height": 256,
        "content": "## Setup Steps\n1. Add OpenAI or compatible LLM API credentials to all Chat Model and Embedding nodes.\n2. Connect graduate employment and enrolment data sources.\n3. Set up vector store credentials for the `Curriculum Knowledge Base` node.\n4. Configure `Employment Data Query Tool` with your labour market data source or API.\n5. Update `Store Analysis Results` with your target storage destination."
      },
      "typeVersion": 1
    },
    {
      "id": "303711cb-5051-423a-b06d-6add4ecca104",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        272,
        -192
      ],
      "parameters": {
        "width": 576,
        "height": 304,
        "content": "## How It Works\nThis workflow automates higher education curriculum analysis and modernisation using a multi-agent AI system. Designed for academic administrators, curriculum designers, and institutional planners, it eliminates manual effort in aligning course content with graduate employment outcomes and industry demand signals. The pipeline starts by concurrently loading graduate employment data, enrolment patterns, and extracting course syllabi from PDFs. These are merged and fed into a Curriculum Knowledge Base using semantic embeddings and text splitting. A Curriculum Modernisation Agent orchestrates two sub-agents: a Learning Outcome Alignment Agent (using semantic retrieval and cognitive load analysis) and an Industry Demand Forecast Agent (querying live employment data). Outputs are parsed and stored as structured analysis results, enabling institutions to make evidence-based curriculum decisions at scale."
      },
      "typeVersion": 1
    },
    {
      "id": "fddadca1-6e04-4b34-b90f-c10e987b5c98",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2096,
        160
      ],
      "parameters": {
        "color": 7,
        "width": 480,
        "height": 912,
        "content": "## Forecast Agent\n**What** \u2014 Queries employment data to forecast industry skill demand.\n**Why** \u2014 Grounds curriculum recommendations in real labour market signals."
      },
      "typeVersion": 1
    },
    {
      "id": "5dcb0780-736f-4b9e-845c-49ee5b0c80d8",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1376,
        160
      ],
      "parameters": {
        "color": 7,
        "width": 704,
        "height": 1072,
        "content": "## Alignment Agent\n**What** \u2014 Analyses learning outcomes against curriculum content using semantic retrieval.\n**Why** \u2014 Identifies gaps between stated outcomes and actual course coverage."
      },
      "typeVersion": 1
    },
    {
      "id": "ed7f629b-e425-417b-b496-651109712ca0",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        208,
        144
      ],
      "parameters": {
        "color": 7,
        "width": 1152,
        "height": 864,
        "content": "## Combine & Embed\n**What** \u2014 Merges data sources, splits curriculum text, and generates semantic embeddings.\n**Why** \u2014 Creates a searchable knowledge base for accurate alignment analysis.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "b675bcf4-f1c7-4847-8eb7-ba73cf84e794",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2592,
        160
      ],
      "parameters": {
        "color": 7,
        "width": 448,
        "height": 832,
        "content": "## Store Results\n**What** \u2014 Prepares and stores final modernisation analysis.\n**Why** \u2014 Produces structured outputs ready for institutional review and action."
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "binaryMode": "separate",
    "availableInMCP": false,
    "executionOrder": "v1"
  },
  "versionId": "f1e0f337-f943-4d56-b2f2-561d31ec9ef5",
  "connections": {
    "Query Embeddings": {
      "ai_embedding": [
        [
          {
            "node": "Semantic Retrieval Tool",
            "type": "ai_embedding",
            "index": 0
          }
        ]
      ]
    },
    "Supervisor Model": {
      "ai_languageModel": [
        [
          {
            "node": "Curriculum Modernization Supervisor",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Generate Embeddings": {
      "ai_embedding": [
        [
          {
            "node": "Curriculum Knowledge Base",
            "type": "ai_embedding",
            "index": 0
          }
        ]
      ]
    },
    "Combine Data Sources": {
      "main": [
        [
          {
            "node": "Curriculum Knowledge Base",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Forecast Agent Model": {
      "ai_languageModel": [
        [
          {
            "node": "Industry Demand Forecast Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Alignment Agent Model": {
      "ai_languageModel": [
        [
          {
            "node": "Learning Outcome Alignment Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Split Curriculum Text": {
      "ai_textSplitter": [
        [
          {
            "node": "Load Curriculum Documents",
            "type": "ai_textSplitter",
            "index": 0
          }
        ]
      ]
    },
    "Extract Course Syllabi": {
      "main": [
        [
          {
            "node": "Combine Data Sources",
            "type": "main",
            "index": 2
          }
        ]
      ]
    },
    "Forecast Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Industry Demand Forecast Agent",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Alignment Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Learning Outcome Alignment Agent",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Semantic Retrieval Tool": {
      "ai_tool": [
        [
          {
            "node": "Learning Outcome Alignment Agent",
            "type": "ai_tool",
            "index": 0
          },
          {
            "node": "Industry Demand Forecast Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Load Enrollment Patterns": {
      "main": [
        [
          {
            "node": "Combine Data Sources",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Supervisor Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Curriculum Modernization Supervisor",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Cognitive Load Calculator": {
      "ai_tool": [
        [
          {
            "node": "Learning Outcome Alignment Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Curriculum Knowledge Base": {
      "main": [
        [
          {
            "node": "Curriculum Modernization Supervisor",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Load Curriculum Documents": {
      "ai_document": [
        [
          {
            "node": "Curriculum Knowledge Base",
            "type": "ai_document",
            "index": 0
          }
        ]
      ]
    },
    "Start Curriculum Analysis": {
      "main": [
        [
          {
            "node": "Load Graduate Employment Data",
            "type": "main",
            "index": 0
          },
          {
            "node": "Load Enrollment Patterns",
            "type": "main",
            "index": 0
          },
          {
            "node": "Extract Course Syllabi",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Employment Data Query Tool": {
      "ai_tool": [
        [
          {
            "node": "Industry Demand Forecast Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Prepare Results for Storage": {
      "main": [
        [
          {
            "node": "Store Analysis Results",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Load Graduate Employment Data": {
      "main": [
        [
          {
            "node": "Combine Data Sources",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Industry Demand Forecast Agent": {
      "ai_tool": [
        [
          {
            "node": "Curriculum Modernization Supervisor",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Learning Outcome Alignment Agent": {
      "ai_tool": [
        [
          {
            "node": "Curriculum Modernization Supervisor",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Curriculum Modernization Supervisor": {
      "main": [
        [
          {
            "node": "Prepare Results for Storage",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

Based on the workflow image, here is the complete n8n template submission:

Source: https://n8n.io/workflows/13899/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

A lightweight, self-hosted AI assistant built entirely in n8n. Multi-channel messaging (Telegram, WhatsApp, Gmail), persistent memory, task management, and autonomous work — all in a single visual wor

Telegram Trigger, OpenRouter Chat, Data Table +20
AI & RAG

Your AI workforce is ready. Are you?

Google Sheets Tool, Mcp Trigger, Google Drive +29
AI & RAG

This n8n template automatically classifies incoming emails (Sales, Support, Internal, Finance, Promotions) and routes them to a dedicated OpenAI LLM Agent for processing. Depending on the category, th

OpenAI, Gmail, Text Classifier +16
AI & RAG

Build a powerful, customizable AI chatbot for your WordPress website that intelligently retrieves posts, answers questions, and engages in natural conversations. This complete solution handles content

Qdrant Vector Store, OpenAI Embeddings, Document Default Data Loader +10
AI & RAG

BambooHR AI-Powered Company Policies and Benefits Chatbot. Uses manualTrigger, documentDefaultDataLoader, embeddingsOpenAi, textSplitterRecursiveCharacterTextSplitter. Event-driven trigger; 50 nodes.

Document Default Data Loader, OpenAI Embeddings, Text Splitter Recursive Character Text Splitter +14