{"workflow":{"id":13899,"name":"Analyze and modernize university curricula with GPT-4o and employment data","views":112,"recentViews":1,"totalViews":112,"createdAt":"2026-03-05T16:32:44.319Z","description":" Based on the workflow image, here is the complete n8n template submission:\n\n---\n\n**Title:**\n`ai curriculum modernisation with learning outcome and industry demand alignment`\n\n---\n\n## 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.\n\n## 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.\n\n## 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\n\n","workflow":{"id":"nW1CWWbzyV6YESX6","meta":{"instanceId":"b91e510ebae4127f953fd2f5f8d40d58ca1e71c746d4500c12ae86aad04c1502"},"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":{"id":"mv2ECvRtbAK63G2g","name":"OpenAi account"}},"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":{"id":"mv2ECvRtbAK63G2g","name":"OpenAi account"}},"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":{"id":"mv2ECvRtbAK63G2g","name":"OpenAi account"}},"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":{"id":"mv2ECvRtbAK63G2g","name":"OpenAi account"}},"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":{"id":"mv2ECvRtbAK63G2g","name":"OpenAi account"}},"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** — Queries employment data to forecast industry skill demand.\n**Why** — 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** — Analyses learning outcomes against curriculum content using semantic retrieval.\n**Why** — 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** — Merges data sources, splits curriculum text, and generates semantic embeddings.\n**Why** — 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** — Prepares and stores final modernisation analysis.\n**Why** — Produces structured outputs ready for institutional review and action."},"typeVersion":1}],"active":false,"pinData":{},"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}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":31,"nodeTypes":{"n8n-nodes-base.set":{"count":1},"n8n-nodes-base.merge":{"count":1},"n8n-nodes-base.dataTable":{"count":3},"n8n-nodes-base.stickyNote":{"count":7},"n8n-nodes-base.dataTableTool":{"count":1},"n8n-nodes-base.manualTrigger":{"count":1},"@n8n/n8n-nodes-langchain.agent":{"count":1},"n8n-nodes-base.extractFromFile":{"count":1},"@n8n/n8n-nodes-langchain.toolCode":{"count":1},"@n8n/n8n-nodes-langchain.agentTool":{"count":2},"@n8n/n8n-nodes-langchain.lmChatOpenAi":{"count":3},"@n8n/n8n-nodes-langchain.embeddingsOpenAi":{"count":2},"@n8n/n8n-nodes-langchain.vectorStoreInMemory":{"count":2},"@n8n/n8n-nodes-langchain.outputParserStructured":{"count":3},"@n8n/n8n-nodes-langchain.documentDefaultDataLoader":{"count":1},"@n8n/n8n-nodes-langchain.textSplitterRecursiveCharacterTextSplitter":{"count":1}}},"status":"published","readyToDemo":null,"user":{"name":"Cheng Siong Chin","username":"cschin","bio":"Dr. Cheng Siong CHIN is an n8n workflow creator specializing in AI-powered automation, agent orchestration, and intelligent system integrations. He designs and builds end-to-end workflows that combine LLMs, APIs, and data pipelines to streamline complex processes and deliver production-ready automation solutions. Contact me to discuss custom AI workflows and agent architectures.\n","verified":true,"links":["https://gravatar.com/mysticluminary9fa255f7f5"],"avatar":"https://gravatar.com/avatar/54544f98e839bb9dd9a764ad1e6823eeddb6db5138d201e42f291a7b0a73303f?r=pg&d=retro&size=200"},"nodes":[{"id":24,"icon":"file:merge.svg","name":"n8n-nodes-base.merge","codex":{"data":{"alias":["Join","Concatenate","Wait"],"resources":{"generic":[{"url":"https://n8n.io/blog/how-to-sync-data-between-two-systems/","icon":"🏬","label":"How to synchronize data between two systems (one-way vs. two-way sync"},{"url":"https://n8n.io/blog/supercharging-your-conference-registration-process-with-n8n/","icon":"🎫","label":"Supercharging your conference registration process with n8n"},{"url":"https://n8n.io/blog/migrating-community-metrics-to-orbit-using-n8n/","icon":"📈","label":"Migrating Community Metrics to Orbit using n8n"},{"url":"https://n8n.io/blog/build-your-own-virtual-assistant-with-n8n-a-step-by-step-guide/","icon":"👦","label":"Build your own virtual assistant with n8n: A step by step guide"},{"url":"https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/","icon":"🙌","label":"Sending Automated Congratulations with Google Sheets, Twilio, and n8n "},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.merge/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow","Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Merge"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTc3XzUxOCkiPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTAgNDhDMCAyMS40OTAzIDIxLjQ5MDMgMCA0OCAwSDExMkMxMzguNTEgMCAxNjAgMjEuNDkwMyAxNjAgNDhWNTZIMTk2LjI1MkMyNDAuNDM1IDU2IDI3Ni4yNTIgOTEuODE3MiAyNzYuMjUyIDEzNlYxOTJDMjc2LjI1MiAyMTQuMDkxIDI5NC4xNjEgMjMyIDMxNi4yNTIgMjMySDM1MlYyMjRDMzUyIDE5Ny40OSAzNzMuNDkgMTc2IDQwMCAxNzZINDY0QzQ5MC41MSAxNzYgNTEyIDE5Ny40OSA1MTIgMjI0VjI4OEM1MTIgMzE0LjUxIDQ5MC41MSAzMzYgNDY0IDMzNkg0MDBDMzczLjQ5IDMzNiAzNTIgMzE0LjUxIDM1MiAyODhWMjgwSDMxNi4yNTJDMjk0LjE2MSAyODAgMjc2LjI1MiAyOTcuOTA5IDI3Ni4yNTIgMzIwVjM3NkMyNzYuMjUyIDQyMC4xODMgMjQwLjQzNSA0NTYgMTk2LjI1MiA0NTZIMTYwVjQ2NEMxNjAgNDkwLjUxIDEzOC41MSA1MTIgMTEyIDUxMkg0OEMyMS40OTAzIDUxMiAwIDQ5MC41MSAwIDQ2NFY0MDBDMCAzNzMuNDkgMjEuNDkwMyAzNTIgNDggMzUySDExMkMxMzguNTEgMzUyIDE2MCAzNzMuNDkgMTYwIDQwMFY0MDhIMTk2LjI1MkMyMTMuOTI1IDQwOCAyMjguMjUyIDM5My42NzMgMjI4LjI1MiAzNzZWMzIwQzIyOC4yNTIgMjk0Ljc4NCAyMzguODU5IDI3Mi4wNDQgMjU1Ljg1MyAyNTZDMjM4Ljg1OSAyMzkuOTU2IDIyOC4yNTIgMjE3LjIxNiAyMjguMjUyIDE5MlYxMzZDMjI4LjI1MiAxMTguMzI3IDIxMy45MjUgMTA0IDE5Ni4yNTIgMTA0SDE2MFYxMTJDMTYwIDEzOC41MSAxMzguNTEgMTYwIDExMiAxNjBINDhDMjEuNDkwMyAxNjAgMCAxMzguNTEgMCAxMTJWNDhaTTEwNCA0OEMxMDguNDE4IDQ4IDExMiA1MS41ODE3IDExMiA1NlYxMDRDMTEyIDEwOC40MTggMTA4LjQxOCAxMTIgMTA0IDExMkg1NkM1MS41ODE3IDExMiA0OCAxMDguNDE4IDQ4IDEwNFY1NkM0OCA1MS41ODE3IDUxLjU4MTcgNDggNTYgNDhIMTA0Wk00NTYgMjI0QzQ2MC40MTggMjI0IDQ2NCAyMjcuNTgyIDQ2NCAyMzJWMjgwQzQ2NCAyODQuNDE4IDQ2MC40MTggMjg4IDQ1NiAyODhINDA4QzQwMy41ODIgMjg4IDQwMCAyODQuNDE4IDQwMCAyODBWMjMyQzQwMCAyMjcuNTgyIDQwMy41ODIgMjI0IDQwOCAyMjRINDU2Wk0xMTIgNDA4QzExMiA0MDMuNTgyIDEwOC40MTggNDAwIDEwNCA0MDBINTZDNTEuNTgxNyA0MDAgNDggNDAzLjU4MiA0OCA0MDhWNDU2QzQ4IDQ2MC40MTggNTEuNTgxNyA0NjQgNTYgNDY0SDEwNEMxMDguNDE4IDQ2NCAxMTIgNDYwLjQxOCAxMTIgNDU2VjQwOFoiIGZpbGw9IiM1NEI4QzkiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTc3XzUxOCI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="},"displayName":"Merge","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":38,"icon":"fa:pen","name":"n8n-nodes-base.set","codex":{"data":{"alias":["Set","JS","JSON","Filter","Transform","Map"],"resources":{"generic":[{"url":"https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/","icon":"🏭","label":"Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"},{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/","icon":"📈","label":"Automatically pulling and visualizing data with n8n"},{"url":"https://n8n.io/blog/database-monitoring-and-alerting-with-n8n/","icon":"📡","label":"Database Monitoring and Alerting with n8n"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/building-an-expense-tracking-app-in-10-minutes/","icon":"📱","label":"Building an expense tracking app in 10 minutes"},{"url":"https://n8n.io/blog/the-ultimate-guide-to-automate-your-video-collaboration-with-whereby-mattermost-and-n8n/","icon":"📹","label":"The ultimate guide to automate your video collaboration with Whereby, Mattermost, and n8n"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/learn-to-build-powerful-api-endpoints-using-webhooks/","icon":"🧰","label":"Learn to Build Powerful API Endpoints Using Webhooks"},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/","icon":"📈","label":"A low-code bitcoin ticker built with QuestDB and n8n.io"},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.set/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Data Transformation"]}}},"group":"[\"input\"]","defaults":{"name":"Edit Fields"},"iconData":{"icon":"pen","type":"icon"},"displayName":"Edit Fields (Set)","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":565,"icon":"fa:sticky-note","name":"n8n-nodes-base.stickyNote","codex":{"data":{"alias":["Comments","Notes","Sticky"],"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"input\"]","defaults":{"name":"Sticky Note","color":"#FFD233"},"iconData":{"icon":"sticky-note","type":"icon"},"displayName":"Sticky Note","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":838,"icon":"fa:mouse-pointer","name":"n8n-nodes-base.manualTrigger","codex":{"data":{"resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.manualworkflowtrigger/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"trigger\"]","defaults":{"name":"When clicking ‘Execute workflow’","color":"#909298"},"iconData":{"icon":"mouse-pointer","type":"icon"},"displayName":"Manual Trigger","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":1119,"icon":"fa:robot","name":"@n8n/n8n-nodes-langchain.agent","codex":{"data":{"alias":["LangChain","Chat","Conversational","Plan and Execute","ReAct","Tools"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Agents","Root Nodes"]}}},"group":"[\"transform\"]","defaults":{"name":"AI Agent","color":"#404040"},"iconData":{"icon":"robot","type":"icon"},"displayName":"AI Agent","typeVersion":3,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1141,"icon":"file:openAiLight.svg","name":"@n8n/n8n-nodes-langchain.embeddingsOpenAi","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.embeddingsopenai/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Embeddings"]}}},"group":"[\"transform\"]","defaults":{"name":"Embeddings OpenAI"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTM2Ljg2NzEgMTYuMzcxOEMzNy43NzQ2IDEzLjY0OCAzNy40NjIxIDEwLjY2NDIgMzYuMDEwOCA4LjE4NjYxQzMzLjgyODIgNC4zODY1MyAyOS40NDA3IDIuNDMxNDkgMjUuMTU1NiAzLjM1MTUxQzIzLjI0OTMgMS4yMDM5NiAyMC41MTA1IC0wLjAxNzMxNDggMTcuNjM5MiAwLjAwMDE4NTUzM0MxMy4yNTkxIC0wLjAwOTgxNDY4IDkuMzcyNzMgMi44MTAyNSA4LjAyNTIgNi45Nzc4M0M1LjIxMTM5IDcuNTU0MSAyLjc4MjU4IDkuMzE1MzggMS4zNjEzIDExLjgxMTdDLTAuODM3NDkzIDE1LjYwMTggLTAuMzM2MjMyIDIwLjM3OTQgMi42MDEzMyAyMy42Mjk0QzEuNjkzODEgMjYuMzUzMiAyLjAwNjMyIDI5LjMzNzEgMy40NTc2IDMxLjgxNDZDNS42NDAxNSAzNS42MTQ3IDEwLjAyNzcgMzcuNTY5NyAxNC4zMTI4IDM2LjY0OTdDMTYuMjE3OSAzOC43OTczIDE4Ljk1NzkgNDAuMDE4NSAyMS44MjkyIDM5Ljk5OThDMjYuMjExOCA0MC4wMTEgMzAuMDk5NCAzNy4xODg1IDMxLjQ0NjkgMzMuMDE3MUMzNC4yNjA4IDMyLjQ0MDkgMzYuNjg5NiAzMC42Nzk2IDM4LjExMDggMjguMTgzM0M0MC4zMDcxIDI0LjM5MzIgMzkuODA0NiAxOS42MTk0IDM2Ljg2ODMgMTYuMzY5M0wzNi44NjcxIDE2LjM3MThaTTIxLjgzMTcgMzcuMzg2QzIwLjA3OCAzNy4zODg1IDE4LjM3OTIgMzYuNzc0NyAxNy4wMzI5IDM1LjY1MDlDMTcuMDk0MSAzNS42MTg0IDE3LjIwMDQgMzUuNTU5NyAxNy4yNjkxIDM1LjUxNzJMMjUuMjM0MyAzMC45MTcxQzI1LjY0MTggMzAuNjg1OCAyNS44OTE4IDMwLjI1MjEgMjUuODg5MyAyOS43ODMzVjE4LjU1NDNMMjkuMjU1NyAyMC40OTgxQzI5LjI5MTkgMjAuNTE1NiAyOS4zMTU3IDIwLjU1MDYgMjkuMzIwNyAyMC41OTA2VjI5Ljg4OTZDMjkuMzE1NyAzNC4wMjQ3IDI1Ljk2NjggMzcuMzc3MiAyMS44MzE3IDM3LjM4NlpNNS43MjY0IDMwLjUwNzFDNC44NDc2MyAyOC45ODk2IDQuNTMxMzcgMjcuMjEwOCA0LjgzMjYzIDI1LjQ4NDVDNC44OTEzOCAyNS41MTk1IDQuOTk1MTMgMjUuNTgzMiA1LjA2ODg4IDI1LjYyNTdMMTMuMDM0MSAzMC4yMjU4QzEzLjQzNzggMzAuNDYyMSAxMy45Mzc4IDMwLjQ2MjEgMTQuMzQyOCAzMC4yMjU4TDI0LjA2NjggMjQuNjEwN1YyOC40OTgzQzI0LjA2OTMgMjguNTM4MyAyNC4wNTA1IDI4LjU3NyAyNC4wMTkzIDI4LjYwMkwxNS45Njc5IDMzLjI1MDlDMTIuMzgxNSAzNS4zMTU5IDcuODAxNDQgMzQuMDg4NCA1LjcyNzY1IDMwLjUwNzFINS43MjY0Wk0zLjYzMDEgMTMuMTIwNUM0LjUwNTEyIDExLjYwMDQgNS44ODY0IDEwLjQzNzkgNy41MzE0NCA5LjgzNDE1QzcuNTMxNDQgOS45MDI5IDcuNTI3NjkgMTAuMDI0MiA3LjUyNzY5IDEwLjEwOTJWMTkuMzEwNkM3LjUyNTE5IDE5Ljc3ODEgNy43NzUxOSAyMC4yMTE5IDguMTgxNDUgMjAuNDQzMUwxNy45MDU0IDI2LjA1N0wxNC41MzkxIDI4LjAwMDhDMTQuNTA1MyAyOC4wMjMzIDE0LjQ2MjggMjguMDI3IDE0LjQyNTMgMjguMDEwOEw2LjM3MjY2IDIzLjM1ODJDMi43OTM4MyAyMS4yODU2IDEuNTY2MzEgMTYuNzA2OCAzLjYyODg1IDEzLjEyMTdMMy42MzAxIDEzLjEyMDVaTTMxLjI4ODIgMTkuNTU2OUwyMS41NjQyIDEzLjk0MTdMMjQuOTMwNiAxMS45OTkyQzI0Ljk2NDMgMTEuOTc2NyAyNS4wMDY4IDExLjk3MjkgMjUuMDQ0MyAxMS45ODkyTDMzLjA5NyAxNi42MzhDMzYuNjgyMSAxOC43MDkzIDM3LjkxMDggMjMuMjk1NyAzNS44Mzk1IDI2Ljg4MDhDMzQuOTYzMyAyOC4zOTgzIDMzLjU4MzIgMjkuNTYwOCAzMS45Mzk1IDMwLjE2NThWMjAuNjg5NEMzMS45NDMyIDIwLjIyMTkgMzEuNjk0NSAxOS43ODk0IDMxLjI4OTQgMTkuNTU2OUgzMS4yODgyWk0zNC42MzgzIDE0LjUxNDJDMzQuNTc5NSAxNC40NzggMzQuNDc1OCAxNC40MTU1IDM0LjQwMiAxNC4zNzNMMjYuNDM2OCA5Ljc3Mjg5QzI2LjAzMzEgOS41MzY2NCAyNS41MzMxIDkuNTM2NjQgMjUuMTI4MSA5Ljc3Mjg5TDE1LjQwNDEgMTUuMzg4VjExLjUwMDRDMTUuNDAxNiAxMS40NjA0IDE1LjQyMDQgMTEuNDIxNyAxNS40NTE2IDExLjM5NjdMMjMuNTAzIDYuNzUxNThDMjcuMDg5NCA0LjY4Mjc5IDMxLjY3NDUgNS45MTQwNiAzMy43NDIgOS41MDE2NEMzNC42MTU4IDExLjAxNjcgMzQuOTMyIDEyLjc5MDUgMzQuNjM1OCAxNC41MTQySDM0LjYzODNaTTEzLjU3NDEgMjEuNDQzMUwxMC4yMDY1IDE5LjQ5OTRDMTAuMTcwMiAxOS40ODE5IDEwLjE0NjUgMTkuNDQ2OCAxMC4xNDE1IDE5LjQwNjhWMTAuMTA3OUMxMC4xNDQgNS45Njc4MSAxMy41MDI4IDIuNjEyNzQgMTcuNjQyOSAyLjYxNTI0QzE5LjM5NDIgMi42MTUyNCAyMS4wODkyIDMuMjMwMjUgMjIuNDM1NSA0LjM1MDI4QzIyLjM3NDMgNC4zODI3OCAyMi4yNjkzIDQuNDQxNTMgMjIuMTk5MiA0LjQ4NDAzTDE0LjIzNDEgOS4wODQxM0MxMy44MjY2IDkuMzE1MzggMTMuNTc2NiA5Ljc0Nzg5IDEzLjU3OTEgMTAuMjE2N0wxMy41NzQxIDIxLjQ0MDZWMjEuNDQzMVpNMTUuNDAyOSAxNy41MDA2TDE5LjczNDIgMTQuOTk5M0wyNC4wNjU1IDE3LjQ5OTNWMjIuNTAwN0wxOS43MzQyIDI1LjAwMDdMMTUuNDAyOSAyMi41MDA3VjE3LjUwMDZaIiBmaWxsPSIjN0Q3RDg3Ii8+Cjwvc3ZnPgo="},"displayName":"Embeddings OpenAI","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1153,"icon":"file:openAiLight.svg","name":"@n8n/n8n-nodes-langchain.lmChatOpenAi","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatopenai/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Language Models","Root Nodes"],"Language Models":["Chat Models (Recommended)"]}}},"group":"[\"transform\"]","defaults":{"name":"OpenAI Chat Model"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTM2Ljg2NzEgMTYuMzcxOEMzNy43NzQ2IDEzLjY0OCAzNy40NjIxIDEwLjY2NDIgMzYuMDEwOCA4LjE4NjYxQzMzLjgyODIgNC4zODY1MyAyOS40NDA3IDIuNDMxNDkgMjUuMTU1NiAzLjM1MTUxQzIzLjI0OTMgMS4yMDM5NiAyMC41MTA1IC0wLjAxNzMxNDggMTcuNjM5MiAwLjAwMDE4NTUzM0MxMy4yNTkxIC0wLjAwOTgxNDY4IDkuMzcyNzMgMi44MTAyNSA4LjAyNTIgNi45Nzc4M0M1LjIxMTM5IDcuNTU0MSAyLjc4MjU4IDkuMzE1MzggMS4zNjEzIDExLjgxMTdDLTAuODM3NDkzIDE1LjYwMTggLTAuMzM2MjMyIDIwLjM3OTQgMi42MDEzMyAyMy42Mjk0QzEuNjkzODEgMjYuMzUzMiAyLjAwNjMyIDI5LjMzNzEgMy40NTc2IDMxLjgxNDZDNS42NDAxNSAzNS42MTQ3IDEwLjAyNzcgMzcuNTY5NyAxNC4zMTI4IDM2LjY0OTdDMTYuMjE3OSAzOC43OTczIDE4Ljk1NzkgNDAuMDE4NSAyMS44MjkyIDM5Ljk5OThDMjYuMjExOCA0MC4wMTEgMzAuMDk5NCAzNy4xODg1IDMxLjQ0NjkgMzMuMDE3MUMzNC4yNjA4IDMyLjQ0MDkgMzYuNjg5NiAzMC42Nzk2IDM4LjExMDggMjguMTgzM0M0MC4zMDcxIDI0LjM5MzIgMzkuODA0NiAxOS42MTk0IDM2Ljg2ODMgMTYuMzY5M0wzNi44NjcxIDE2LjM3MThaTTIxLjgzMTcgMzcuMzg2QzIwLjA3OCAzNy4zODg1IDE4LjM3OTIgMzYuNzc0NyAxNy4wMzI5IDM1LjY1MDlDMTcuMDk0MSAzNS42MTg0IDE3LjIwMDQgMzUuNTU5NyAxNy4yNjkxIDM1LjUxNzJMMjUuMjM0MyAzMC45MTcxQzI1LjY0MTggMzAuNjg1OCAyNS44OTE4IDMwLjI1MjEgMjUuODg5MyAyOS43ODMzVjE4LjU1NDNMMjkuMjU1NyAyMC40OTgxQzI5LjI5MTkgMjAuNTE1NiAyOS4zMTU3IDIwLjU1MDYgMjkuMzIwNyAyMC41OTA2VjI5Ljg4OTZDMjkuMzE1NyAzNC4wMjQ3IDI1Ljk2NjggMzcuMzc3MiAyMS44MzE3IDM3LjM4NlpNNS43MjY0IDMwLjUwNzFDNC44NDc2MyAyOC45ODk2IDQuNTMxMzcgMjcuMjEwOCA0LjgzMjYzIDI1LjQ4NDVDNC44OTEzOCAyNS41MTk1IDQuOTk1MTMgMjUuNTgzMiA1LjA2ODg4IDI1LjYyNTdMMTMuMDM0MSAzMC4yMjU4QzEzLjQzNzggMzAuNDYyMSAxMy45Mzc4IDMwLjQ2MjEgMTQuMzQyOCAzMC4yMjU4TDI0LjA2NjggMjQuNjEwN1YyOC40OTgzQzI0LjA2OTMgMjguNTM4MyAyNC4wNTA1IDI4LjU3NyAyNC4wMTkzIDI4LjYwMkwxNS45Njc5IDMzLjI1MDlDMTIuMzgxNSAzNS4zMTU5IDcuODAxNDQgMzQuMDg4NCA1LjcyNzY1IDMwLjUwNzFINS43MjY0Wk0zLjYzMDEgMTMuMTIwNUM0LjUwNTEyIDExLjYwMDQgNS44ODY0IDEwLjQzNzkgNy41MzE0NCA5LjgzNDE1QzcuNTMxNDQgOS45MDI5IDcuNTI3NjkgMTAuMDI0MiA3LjUyNzY5IDEwLjEwOTJWMTkuMzEwNkM3LjUyNTE5IDE5Ljc3ODEgNy43NzUxOSAyMC4yMTE5IDguMTgxNDUgMjAuNDQzMUwxNy45MDU0IDI2LjA1N0wxNC41MzkxIDI4LjAwMDhDMTQuNTA1MyAyOC4wMjMzIDE0LjQ2MjggMjguMDI3IDE0LjQyNTMgMjguMDEwOEw2LjM3MjY2IDIzLjM1ODJDMi43OTM4MyAyMS4yODU2IDEuNTY2MzEgMTYuNzA2OCAzLjYyODg1IDEzLjEyMTdMMy42MzAxIDEzLjEyMDVaTTMxLjI4ODIgMTkuNTU2OUwyMS41NjQyIDEzLjk0MTdMMjQuOTMwNiAxMS45OTkyQzI0Ljk2NDMgMTEuOTc2NyAyNS4wMDY4IDExLjk3MjkgMjUuMDQ0MyAxMS45ODkyTDMzLjA5NyAxNi42MzhDMzYuNjgyMSAxOC43MDkzIDM3LjkxMDggMjMuMjk1NyAzNS44Mzk1IDI2Ljg4MDhDMzQuOTYzMyAyOC4zOTgzIDMzLjU4MzIgMjkuNTYwOCAzMS45Mzk1IDMwLjE2NThWMjAuNjg5NEMzMS45NDMyIDIwLjIyMTkgMzEuNjk0NSAxOS43ODk0IDMxLjI4OTQgMTkuNTU2OUgzMS4yODgyWk0zNC42MzgzIDE0LjUxNDJDMzQuNTc5NSAxNC40NzggMzQuNDc1OCAxNC40MTU1IDM0LjQwMiAxNC4zNzNMMjYuNDM2OCA5Ljc3Mjg5QzI2LjAzMzEgOS41MzY2NCAyNS41MzMxIDkuNTM2NjQgMjUuMTI4MSA5Ljc3Mjg5TDE1LjQwNDEgMTUuMzg4VjExLjUwMDRDMTUuNDAxNiAxMS40NjA0IDE1LjQyMDQgMTEuNDIxNyAxNS40NTE2IDExLjM5NjdMMjMuNTAzIDYuNzUxNThDMjcuMDg5NCA0LjY4Mjc5IDMxLjY3NDUgNS45MTQwNiAzMy43NDIgOS41MDE2NEMzNC42MTU4IDExLjAxNjcgMzQuOTMyIDEyLjc5MDUgMzQuNjM1OCAxNC41MTQySDM0LjYzODNaTTEzLjU3NDEgMjEuNDQzMUwxMC4yMDY1IDE5LjQ5OTRDMTAuMTcwMiAxOS40ODE5IDEwLjE0NjUgMTkuNDQ2OCAxMC4xNDE1IDE5LjQwNjhWMTAuMTA3OUMxMC4xNDQgNS45Njc4MSAxMy41MDI4IDIuNjEyNzQgMTcuNjQyOSAyLjYxNTI0QzE5LjM5NDIgMi42MTUyNCAyMS4wODkyIDMuMjMwMjUgMjIuNDM1NSA0LjM1MDI4QzIyLjM3NDMgNC4zODI3OCAyMi4yNjkzIDQuNDQxNTMgMjIuMTk5MiA0LjQ4NDAzTDE0LjIzNDEgOS4wODQxM0MxMy44MjY2IDkuMzE1MzggMTMuNTc2NiA5Ljc0Nzg5IDEzLjU3OTEgMTAuMjE2N0wxMy41NzQxIDIxLjQ0MDZWMjEuNDQzMVpNMTUuNDAyOSAxNy41MDA2TDE5LjczNDIgMTQuOTk5M0wyNC4wNjU1IDE3LjQ5OTNWMjIuNTAwN0wxOS43MzQyIDI1LjAwMDdMMTUuNDAyOSAyMi41MDA3VjE3LjUwMDZaIiBmaWxsPSIjN0Q3RDg3Ii8+Cjwvc3ZnPgo="},"displayName":"OpenAI Chat Model","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1179,"icon":"fa:code","name":"@n8n/n8n-nodes-langchain.outputParserStructured","codex":{"data":{"alias":["json","zod"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.outputparserstructured/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Output Parsers"]}}},"group":"[\"transform\"]","defaults":{"name":"Structured Output Parser"},"iconData":{"icon":"code","type":"icon"},"displayName":"Structured Output Parser","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1191,"icon":"fa:grip-lines-vertical","name":"@n8n/n8n-nodes-langchain.textSplitterRecursiveCharacterTextSplitter","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.textsplitterrecursivecharactertextsplitter/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Text Splitters"]}}},"group":"[\"transform\"]","defaults":{"name":"Recursive Character Text Splitter"},"iconData":{"icon":"grip-lines-vertical","type":"icon"},"displayName":"Recursive Character Text Splitter","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1197,"icon":"fa:code","name":"@n8n/n8n-nodes-langchain.toolCode","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolcode/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Tools"],"Tools":["Recommended Tools"]}}},"group":"[\"transform\"]","defaults":{"name":"Code Tool"},"iconData":{"icon":"code","type":"icon"},"displayName":"Code Tool","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1209,"icon":"fa:database","name":"@n8n/n8n-nodes-langchain.vectorStoreInMemory","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.vectorstoreinmemory/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Vector Stores","Tools","Root Nodes"],"Tools":["Other Tools"],"Vector Stores":["For Beginners"]}}},"group":"[\"transform\"]","defaults":{"name":"Simple Vector Store"},"iconData":{"icon":"database","type":"icon"},"displayName":"Simple Vector Store","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1235,"icon":"file:extractFromFile.svg","name":"n8n-nodes-base.extractFromFile","codex":{"data":{"alias":["CSV","Spreadsheet","Excel","xls","xlsx","ods","tabular","decode","decoding","Move Binary Data","Binary","File","PDF","JSON","HTML","ICS","iCal","txt","Text","RTF","XML","64","Base64","Convert"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.extractfromfile/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Files","Data Transformation"]}}},"group":"[\"input\"]","defaults":{"name":"Extract from File"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTAuOTM3NSAyQzAuNDE5NzMzIDIgMCAyLjQxOTczIDAgMi45Mzc1VjM3LjMyMjFDMCAzNy44Mzk5IDAuNDE5NzMzIDM4LjI1OTYgMC45Mzc1IDM4LjI1OTZIMjYuMjE1NEMyNi43MzMyIDM4LjI1OTYgMjcuMTUyOSAzNy44Mzk5IDI3LjE1MjkgMzcuMzIyMUwyNy4xNTI5IDMwLjY3MTlMMTYuNzk2OSAzMC42NzE5QzE0Ljg5ODQgMzAuNjcxOSAxMy4zNTk0IDI5LjEzMjkgMTMuMzU5NCAyNy4yMzQ0VjI1LjM1OTRDMTMuMzU5NCAyMy40NjA5IDE0Ljg5ODQgMjEuOTIxOSAxNi43OTY5IDIxLjkyMTlIMjcuMTUyOUwyNy4xNTI5IDE1Ljc4MjFIMTQuMzA4M0MxMy43OTA2IDE1Ljc4MjEgMTMuMzcwOCAxNS4zNjI0IDEzLjM3MDggMTQuODQ0NlYySDAuOTM3NVoiIGZpbGw9IiMzNTNGNkUiLz4KPHBhdGggZD0iTTE2LjAyNzEgMkMxNS45NDA4IDIgMTUuODcwOCAyLjA2OTk2IDE1Ljg3MDggMi4xNTYyNVYxMi44MTM0QzE1Ljg3MDggMTMuMDcyMyAxNi4wODA3IDEzLjI4MjEgMTYuMzM5NiAxMy4yODIxSDI2Ljk5NjdDMjcuMDgzIDEzLjI4MjEgMjcuMTUyOSAxMy4yMTIyIDI3LjE1MjkgMTMuMTI1OUwyNy4xNTI5IDEyLjYxNzFDMjcuMTUyOSAxMi4zNjg4IDI3LjA1NDUgMTIuMTMwNyAyNi44NzkxIDExLjk1NUwxNy4yMjI1IDIuMjc1MzhDMTcuMDQ2NiAyLjA5OTA4IDE2LjgwNzkgMiAxNi41NTg4IDJIMTYuMDI3MVoiIGZpbGw9IiMzNTNGNkUiLz4KPHBhdGggZD0iTTI5Ljc2NDIgMzQuNjUwM0MyOS4wMzQgMzMuOTE2IDI5LjAzNzQgMzIuNzI4OCAyOS43NzE2IDMxLjk5ODZMMzMuNjE5NyAyOC4xNzE5TDE2Ljc5NjkgMjguMTcxOUMxNi4yNzkxIDI4LjE3MTkgMTUuODU5NCAyNy43NTIxIDE1Ljg1OTQgMjcuMjM0NFYyNS4zNTk0QzE1Ljg1OTQgMjQuODQxNiAxNi4yNzkxIDI0LjQyMTkgMTYuNzk2OSAyNC40MjE5TDMzLjU0MTIgMjQuNDIxOUwyOS43NzE2IDIwLjY3MzNDMjkuMDM3NCAxOS45NDMxIDI5LjAzNCAxOC43NTU5IDI5Ljc2NDIgMTguMDIxNkMzMC40OTQ0IDE3LjI4NzQgMzEuNjgxNiAxNy4yODQgMzIuNDE1OSAxOC4wMTQyTDM5LjQ0NzEgMjUuMDA2NEMzOS44MDEgMjUuMzU4MyA0MCAyNS44MzY4IDQwIDI2LjMzNTlDNDAgMjYuODM1IDM5LjgwMSAyNy4zMTM1IDM5LjQ0NzEgMjcuNjY1NUwzMi40MTU5IDM0LjY1NzZDMzEuNjgxNiAzNS4zODc4IDMwLjQ5NDQgMzUuMzg0NSAyOS43NjQyIDM0LjY1MDNaIiBmaWxsPSIjMzUzRjZFIi8+Cjwvc3ZnPgo="},"displayName":"Extract from File","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":1243,"icon":"file:binary.svg","name":"@n8n/n8n-nodes-langchain.documentDefaultDataLoader","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.documentdefaultdataloader/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Document Loaders"]}}},"group":"[\"transform\"]","defaults":{"name":"Default Data Loader"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI3NjgiIGhlaWdodD0iMTAyNCI+PHBhdGggZmlsbD0iIzdEN0Q4NyIgZD0iTTAgOTYwVjY0aDU3NmwxOTIgMTkydjcwNHptNzA0LTY0MEw1MTIgMTI4SDY0djc2OGg2NDB6TTMyMCA1MTJIMTI4VjI1NmgxOTJ6bS02NC0xOTJoLTY0djEyOGg2NHptMCA0NDhoNjR2NjRIMTI4di02NGg2NFY2NDBoLTY0di02NGgxMjh6bTI1Ni0zMjBoNjR2NjRIMzg0di02NGg2NFYzMjBoLTY0di02NGgxMjh6bTY0IDM4NEgzODRWNTc2aDE5MnptLTY0LTE5MmgtNjR2MTI4aDY0eiIvPjwvc3ZnPg=="},"displayName":"Default Data Loader","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1310,"icon":"fa:robot","name":"@n8n/n8n-nodes-langchain.agentTool","codex":{"data":{"alias":["LangChain","Chat","Conversational","Plan and Execute","ReAct","Tools"],"categories":["AI","Langchain"],"subcategories":{"AI":["Tools"],"Tools":["Recommended Tools"]}}},"group":"[\"transform\"]","defaults":{"name":"AI Agent Tool","color":"#404040"},"iconData":{"icon":"robot","type":"icon"},"displayName":"AI Agent Tool","typeVersion":3,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1315,"icon":"fa:table","name":"n8n-nodes-base.dataTable","codex":{"data":{"alias":["data","table","knowledge","data table","table","sheet","database","data base","mysql","postgres","postgresql","airtable","supabase","noco","notion"],"details":"Data table","resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datatable/"}]},"categories":["Core Nodes","Development"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"input\",\"transform\"]","defaults":{"name":"Data table"},"iconData":{"icon":"table","type":"icon"},"displayName":"Data table","typeVersion":1,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]}],"categories":[{"id":32,"name":"Market Research"},{"id":48,"name":"AI RAG"}],"image":[]}}