{
  "id": "K3mSyjQj3x80Idgz",
  "meta": {
    "instanceId": "b91e510ebae4127f953fd2f5f8d40d58ca1e71c746d4500c12ae86aad04c1502"
  },
  "name": "GPT-4.1 mini-Powered Learning Management Automation",
  "tags": [],
  "nodes": [
    {
      "id": "33713b4d-4820-4a34-939d-563c5c50ff7c",
      "name": "Daily Learning Check",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -1648,
        80
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "triggerAtHour": 9
            }
          ]
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "22c04729-0b3e-45f0-8a66-c3ffbe0eaff5",
      "name": "Workflow Configuration",
      "type": "n8n-nodes-base.set",
      "position": [
        -1424,
        80
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "id-1",
              "name": "employeeApiUrl",
              "type": "string",
              "value": "<__PLACEHOLDER_VALUE__Employee API endpoint URL__>"
            },
            {
              "id": "id-2",
              "name": "progressApiUrl",
              "type": "string",
              "value": "<__PLACEHOLDER_VALUE__Progress tracking API endpoint__>"
            },
            {
              "id": "id-3",
              "name": "quizApiUrl",
              "type": "string",
              "value": "<__PLACEHOLDER_VALUE__Quiz submissions API endpoint__>"
            },
            {
              "id": "id-4",
              "name": "learningPathApiUrl",
              "type": "string",
              "value": "<__PLACEHOLDER_VALUE__Learning path storage API endpoint__>"
            },
            {
              "id": "id-5",
              "name": "managerEmail",
              "type": "string",
              "value": "<__PLACEHOLDER_VALUE__Manager email address__>"
            }
          ]
        },
        "includeOtherFields": true
      },
      "typeVersion": 3.4
    },
    {
      "id": "ae45f1a9-785a-45ae-9e49-cd1f1367e904",
      "name": "Get Employee Data",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -1200,
        80
      ],
      "parameters": {
        "url": "={{ $('Workflow Configuration').first().json.employeeApiUrl }}",
        "options": {}
      },
      "typeVersion": 4.3
    },
    {
      "id": "85948847-51b5-43ab-96c9-e2913c0b8dd1",
      "name": "Assign Training Modules",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -976,
        80
      ],
      "parameters": {
        "text": "=Employee data: {{ $json }}",
        "options": {
          "systemMessage": "You are a learning management AI assistant that assigns training modules to employees.\n\nYour task is to:\n1. Analyze the employee data including job role, performance metrics, and compliance requirements\n2. Assign appropriate training modules based on:\n   - Job role requirements\n   - Performance gaps identified\n   - Mandatory compliance training needs\n   - Career development opportunities\n3. Return structured assignments with module IDs, priorities, and deadlines\n\nConsider both mandatory and recommended training paths."
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 3
    },
    {
      "id": "e96a9a24-4a99-4c2e-8402-0cc46a1b44b1",
      "name": "Training Assignment Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        -848,
        304
      ],
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"employeeId\": {\n\t\t\t\"type\": \"string\"\n\t\t},\n\t\t\"assignedModules\": {\n\t\t\t\"type\": \"array\",\n\t\t\t\"items\": {\n\t\t\t\t\"type\": \"object\",\n\t\t\t\t\"properties\": {\n\t\t\t\t\t\"moduleId\": {\n\t\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t\t},\n\t\t\t\t\t\"moduleName\": {\n\t\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t\t},\n\t\t\t\t\t\"priority\": {\n\t\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t\t},\n\t\t\t\t\t\"dueDate\": {\n\t\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t\t},\n\t\t\t\t\t\"reason\": {\n\t\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "620706ad-68e0-4b6a-9074-cf068ed4e49b",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -976,
        304
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {},
        "builtInTools": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "credential-id",
          "name": "openAiApi Credential"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "7a8d18fd-e179-4bc4-949b-f9f6341d906e",
      "name": "Save Training Assignments",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -624,
        80
      ],
      "parameters": {
        "url": "={{ $('Workflow Configuration').first().json.employeeApiUrl }}/assignments",
        "method": "POST",
        "options": {},
        "jsonBody": "={{ $json }}",
        "sendBody": true,
        "specifyBody": "json"
      },
      "typeVersion": 4.3
    },
    {
      "id": "fff86a2a-045e-40cd-ac42-9c69459aa834",
      "name": "Get Progress Data",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -400,
        80
      ],
      "parameters": {
        "url": "={{ $('Workflow Configuration').first().json.progressApiUrl }}",
        "options": {}
      },
      "typeVersion": 4.3
    },
    {
      "id": "8869f697-4a67-4d39-86be-044095bf5e3a",
      "name": "Analyze Progress",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -176,
        80
      ],
      "parameters": {
        "text": "=Progress data: {{ $json }}",
        "options": {
          "systemMessage": "You are a learning progress analysis AI assistant.\n\nYour task is to:\n1. Analyze employee learning progress data\n2. Identify employees who are:\n   - Behind schedule on training modules\n   - Not engaging with assigned content\n   - At risk of missing compliance deadlines\n3. Determine who needs reminder notifications\n4. Calculate completion rates and engagement metrics\n\nReturn structured analysis with reminder flags and progress metrics."
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 3
    },
    {
      "id": "ed65d594-f2fe-453a-aa90-41f6359f833c",
      "name": "Progress Analysis Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        16,
        304
      ],
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"employeeId\": {\n\t\t\t\"type\": \"string\"\n\t\t},\n\t\t\"needsReminder\": {\n\t\t\t\"type\": \"boolean\"\n\t\t},\n\t\t\"completionRate\": {\n\t\t\t\"type\": \"number\"\n\t\t},\n\t\t\"daysOverdue\": {\n\t\t\t\"type\": \"number\"\n\t\t},\n\t\t\"riskLevel\": {\n\t\t\t\"type\": \"string\"\n\t\t}\n\t}\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "8c24dda3-d8a0-43b5-84fd-900d6b4737a3",
      "name": "OpenAI Chat Model1",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -176,
        304
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {},
        "builtInTools": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "credential-id",
          "name": "openAiApi Credential"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "8404a854-a6a5-4226-bc87-d29bef4926ef",
      "name": "Check If Reminder Needed",
      "type": "n8n-nodes-base.if",
      "position": [
        176,
        80
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "leftValue": "",
            "caseSensitive": false,
            "typeValidation": "loose"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "id-1",
              "operator": {
                "type": "boolean",
                "operation": "equals"
              },
              "leftValue": "={{ $('Analyze Progress').item.json.needsReminder }}",
              "rightValue": "true"
            }
          ]
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "cee69204-0ab3-4129-bda5-dba31ba01520",
      "name": "Send Reminder Email",
      "type": "n8n-nodes-base.gmail",
      "position": [
        400,
        288
      ],
      "webhookId": "ec4edc21-dcad-4042-a7ea-62b9f629999c",
      "parameters": {
        "sendTo": "={{ $json.employeeEmail }}",
        "message": "=Hi {{ $json.employeeName }},\n\nThis is a friendly reminder to complete your assigned training modules. You currently have {{ $json.daysOverdue }} days overdue.\n\nYour completion rate: {{ $json.completionRate }}%\n\nPlease log in to the learning platform to continue your training.\n\nBest regards,\nLearning Management System",
        "options": {},
        "subject": "Training Reminder: Complete Your Assigned Modules"
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "credential-id",
          "name": "gmailOAuth2 Credential"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "63d7c191-b5e4-4002-8455-450676ac7d3c",
      "name": "Get Quiz Submissions",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        656,
        96
      ],
      "parameters": {
        "url": "={{ $('Workflow Configuration').first().json.quizApiUrl }}",
        "options": {}
      },
      "typeVersion": 4.3
    },
    {
      "id": "d082ff9d-cd86-4900-a367-a27a9bfe8e17",
      "name": "Evaluate Quiz Submissions",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        880,
        96
      ],
      "parameters": {
        "text": "=Quiz submissions: {{ $json }}",
        "options": {
          "systemMessage": "You are a quiz evaluation AI assistant.\n\nYour task is to:\n1. Evaluate quiz submissions from employees\n2. Grade answers based on correctness and completeness\n3. Provide constructive feedback on incorrect answers\n4. Calculate overall scores and pass/fail status\n5. Identify knowledge gaps for follow-up training\n\nReturn structured evaluation results with scores, feedback, and recommendations."
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 3
    },
    {
      "id": "4b695d1f-7438-4ff1-b8d7-901457986b8d",
      "name": "Quiz Evaluation Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        1056,
        320
      ],
      "parameters": {
        "jsonSchemaExample": "{\n\t\"employeeId\": \"string\",\n\t\"quizId\": \"string\",\n\t\"score\": 0,\n\t\"passed\": false,\n\t\"feedback\": \"string\",\n\t\"knowledgeGaps\": [\"string\"]\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "8d8b3f92-98d5-41bd-868f-3a13e3141ae6",
      "name": "OpenAI Chat Model2",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        880,
        320
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {},
        "builtInTools": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "credential-id",
          "name": "openAiApi Credential"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "7b4d04e9-c4b1-42ec-8da7-f91da1b837e3",
      "name": "Save Quiz Results",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1232,
        96
      ],
      "parameters": {
        "url": "={{ $('Workflow Configuration').first().json.quizApiUrl }}/results",
        "method": "POST",
        "options": {},
        "jsonBody": "={{ $json }}",
        "sendBody": true,
        "specifyBody": "json"
      },
      "typeVersion": 4.3
    },
    {
      "id": "a9b6ad1d-bc67-4891-983d-ca5e896f22ef",
      "name": "Generate Learning Paths",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1456,
        96
      ],
      "parameters": {
        "text": "=Quiz results and employee data: {{ $json }}",
        "options": {
          "systemMessage": "You are a personalized learning path generation AI assistant.\n\nYour task is to:\n1. Analyze quiz results and knowledge gaps\n2. Review employee performance and career goals\n3. Generate personalized learning paths that:\n   - Address identified knowledge gaps\n   - Build on existing strengths\n   - Align with career development objectives\n   - Include progressive difficulty levels\n4. Recommend specific modules, courses, and resources\n5. Set realistic timelines and milestones\n\nReturn structured learning paths with clear progression steps."
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 3
    },
    {
      "id": "e8e29124-378d-4b1e-a6cc-7b3cefb80bae",
      "name": "Learning Path Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        1616,
        320
      ],
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"employeeId\": {\n\t\t\t\"type\": \"string\"\n\t\t},\n\t\t\"learningPath\": {\n\t\t\t\"type\": \"array\",\n\t\t\t\"items\": {\n\t\t\t\t\"type\": \"object\",\n\t\t\t\t\"properties\": {\n\t\t\t\t\t\"step\": {\n\t\t\t\t\t\t\"type\": \"number\"\n\t\t\t\t\t},\n\t\t\t\t\t\"moduleName\": {\n\t\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t\t},\n\t\t\t\t\t\"estimatedDuration\": {\n\t\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t\t},\n\t\t\t\t\t\"prerequisites\": {\n\t\t\t\t\t\t\"type\": \"array\",\n\t\t\t\t\t\t\"items\": {\n\t\t\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"objectives\": {\n\t\t\t\t\t\t\"type\": \"array\",\n\t\t\t\t\t\t\"items\": {\n\t\t\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"totalDuration\": {\n\t\t\t\"type\": \"string\"\n\t\t},\n\t\t\"milestones\": {\n\t\t\t\"type\": \"array\",\n\t\t\t\"items\": {\n\t\t\t\t\"type\": \"string\"\n\t\t\t}\n\t\t}\n\t}\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "bf9a1476-150c-4f75-963b-f2955a80f0bd",
      "name": "OpenAI Chat Model3",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1408,
        320
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {},
        "builtInTools": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "credential-id",
          "name": "openAiApi Credential"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "016dbd38-b60e-49cc-951d-58d240339a68",
      "name": "Save Learning Paths",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1808,
        96
      ],
      "parameters": {
        "url": "={{ $('Workflow Configuration').first().json.learningPathApiUrl }}",
        "method": "POST",
        "options": {},
        "jsonBody": "={{ $json }}",
        "sendBody": true,
        "specifyBody": "json"
      },
      "typeVersion": 4.3
    },
    {
      "id": "8502e66c-6b68-4251-9acb-3fc2abfb6cc7",
      "name": "Notify Manager",
      "type": "n8n-nodes-base.gmail",
      "position": [
        2224,
        96
      ],
      "webhookId": "6615b44c-de9f-4222-84ba-1e21f016f393",
      "parameters": {
        "sendTo": "={{ $('Workflow Configuration').first().json.managerEmail }}",
        "message": "={{ $json.reportHtml }}",
        "options": {},
        "subject": "Daily Learning Management Report"
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "credential-id",
          "name": "gmailOAuth2 Credential"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "01955e21-2189-4419-a790-b33d805c52e3",
      "name": "Prepare Manager Report",
      "type": "n8n-nodes-base.code",
      "position": [
        2032,
        96
      ],
      "parameters": {
        "jsCode": "// Aggregate all learning data and create comprehensive manager report\nconst items = $input.all();\n\n// Initialize statistics\nconst stats = {\n  totalEmployees: 0,\n  trainingAssignments: {\n    total: 0,\n    byModule: {}\n  },\n  completionRates: {\n    completed: 0,\n    inProgress: 0,\n    notStarted: 0,\n    averageCompletionRate: 0\n  },\n  quizPerformance: {\n    totalQuizzes: 0,\n    averageScore: 0,\n    passRate: 0,\n    scores: []\n  },\n  learningPaths: {\n    total: 0,\n    byType: {}\n  }\n};\n\nconst employeeDetails = [];\n\n// Process each item\nfor (const item of items) {\n  const data = item.json;\n  \n  // Count employees\n  if (data.employeeId) {\n    stats.totalEmployees++;\n    \n    // Collect employee details\n    employeeDetails.push({\n      employeeId: data.employeeId,\n      name: data.employeeName || 'Unknown',\n      trainingModules: data.trainingModules || [],\n      completionStatus: data.completionStatus || 'not_started',\n      quizScore: data.quizScore || 0,\n      learningPath: data.learningPath || 'Not assigned'\n    });\n  }\n  \n  // Training assignments\n  if (data.trainingModules && Array.isArray(data.trainingModules)) {\n    stats.trainingAssignments.total += data.trainingModules.length;\n    data.trainingModules.forEach(module => {\n      stats.trainingAssignments.byModule[module] = (stats.trainingAssignments.byModule[module] || 0) + 1;\n    });\n  }\n  \n  // Completion rates\n  if (data.completionStatus) {\n    if (data.completionStatus === 'completed') {\n      stats.completionRates.completed++;\n    } else if (data.completionStatus === 'in_progress') {\n      stats.completionRates.inProgress++;\n    } else {\n      stats.completionRates.notStarted++;\n    }\n  }\n  \n  // Quiz performance\n  if (data.quizScore !== undefined) {\n    stats.quizPerformance.totalQuizzes++;\n    stats.quizPerformance.scores.push(data.quizScore);\n  }\n  \n  // Learning paths\n  if (data.learningPath) {\n    stats.learningPaths.total++;\n    stats.learningPaths.byType[data.learningPath] = (stats.learningPaths.byType[data.learningPath] || 0) + 1;\n  }\n}\n\n// Calculate averages\nif (stats.totalEmployees > 0) {\n  stats.completionRates.averageCompletionRate = Math.round((stats.completionRates.completed / stats.totalEmployees) * 100);\n}\n\nif (stats.quizPerformance.scores.length > 0) {\n  const totalScore = stats.quizPerformance.scores.reduce((sum, score) => sum + score, 0);\n  stats.quizPerformance.averageScore = Math.round(totalScore / stats.quizPerformance.scores.length);\n  stats.quizPerformance.passRate = Math.round((stats.quizPerformance.scores.filter(score => score >= 70).length / stats.quizPerformance.scores.length) * 100);\n}\n\n// Generate report summary\nconst reportSummary = `\n=== LEARNING MANAGEMENT REPORT ===\nGenerated: ${new Date().toISOString()}\n\nOVERVIEW:\n- Total Employees: ${stats.totalEmployees}\n- Total Training Assignments: ${stats.trainingAssignments.total}\n- Total Learning Paths Created: ${stats.learningPaths.total}\n\nCOMPLETION STATUS:\n- Completed: ${stats.completionRates.completed} (${stats.completionRates.averageCompletionRate}%)\n- In Progress: ${stats.completionRates.inProgress}\n- Not Started: ${stats.completionRates.notStarted}\n\nQUIZ PERFORMANCE:\n- Total Quizzes Taken: ${stats.quizPerformance.totalQuizzes}\n- Average Score: ${stats.quizPerformance.averageScore}%\n- Pass Rate (≥70%): ${stats.quizPerformance.passRate}%\n\nTRAINING MODULES DISTRIBUTION:\n${Object.entries(stats.trainingAssignments.byModule).map(([module, count]) => `- ${module}: ${count} assignments`).join('\\n')}\n\nLEARNING PATHS DISTRIBUTION:\n${Object.entries(stats.learningPaths.byType).map(([path, count]) => `- ${path}: ${count} employees`).join('\\n')}\n`;\n\n// Return comprehensive report\nreturn [\n  {\n    json: {\n      reportDate: new Date().toISOString(),\n      summary: reportSummary,\n      statistics: stats,\n      employeeDetails: employeeDetails,\n      recommendations: [\n        stats.completionRates.averageCompletionRate < 50 ? 'Low completion rate - consider sending additional reminders' : null,\n        stats.quizPerformance.averageScore < 70 ? 'Average quiz score below passing - review training material quality' : null,\n        stats.completionRates.notStarted > stats.totalEmployees * 0.3 ? 'High number of employees not started - increase engagement efforts' : null\n      ].filter(r => r !== null)\n    }\n  }\n];"
      },
      "typeVersion": 2
    },
    {
      "id": "6c0446f5-e235-4899-b591-ab8826d045c8",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        240,
        -320
      ],
      "parameters": {
        "color": 6,
        "width": 432,
        "height": 224,
        "content": "## Customization\nAdjust AI analysis criteria for your curriculum. Integrate Slack for instructor alerts.  \n\n## Benefits\nReduces instructor workload by 70%, identifies at-risk learners 2 weeks early "
      },
      "typeVersion": 1
    },
    {
      "id": "8e884427-e372-4b5a-81fd-64ff8d425542",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -336,
        -320
      ],
      "parameters": {
        "color": 5,
        "width": 544,
        "height": 224,
        "content": "## Prerequisites\nLMS platform credentials, OpenAI API key, learner database, email service for notifications, manager contact lists.\n\n## Use Cases\nCorporate onboarding programs tracking employee progress, online learning platforms identifying struggling students \n"
      },
      "typeVersion": 1
    },
    {
      "id": "7b93b09a-110d-4a3e-957d-1b4d08d62016",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -800,
        -304
      ],
      "parameters": {
        "color": 4,
        "width": 448,
        "height": 192,
        "content": "## Setup Steps\n1. Configure daily schedule trigger. \n2. Connect learning management system APIs (LMS). \n3. Set OpenAI keys for progress analysis. \n4. Enable Gmail for multi-recipient notifications. \n5. Map learner risk thresholds and escalation rules."
      },
      "typeVersion": 1
    },
    {
      "id": "4f2ecafd-e15b-4518-a780-0d8bd3e78e14",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1728,
        -320
      ],
      "parameters": {
        "width": 928,
        "height": 208,
        "content": "## How It Works\nAutomates daily learner engagement monitoring, progress analysis, and personalized feedback delivery for training programs. Target audience: learning and development teams, corporate training managers, and online education platforms scaling instructor workload. Problem solved: manual progress tracking consumes instructor time; AI analysis identifies struggling learners early for intervention. Workflow runs daily checks on learner activity, retrieves course data and progress, analyzes engagement with OpenAI models, evaluates quiz scores, generates performance summaries, sends progress reports to learners, emails instructors on at-risk cases, generates learning paths, and triggers manager notifications."
      },
      "typeVersion": 1
    },
    {
      "id": "ba23a743-8322-40b4-a8b9-153e52b7bc7c",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1744,
        -64
      ],
      "parameters": {
        "color": 7,
        "width": 688,
        "height": 352,
        "content": "## Data Collection\n**What:** Daily triggers fetch learner profiles, course progress, quiz results, and engagement metrics.\n**Why:** Real-time snapshots enable early identification of performance issues "
      },
      "typeVersion": 1
    },
    {
      "id": "a8b94240-4279-4181-8a96-1a06055f0834",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1760,
        -64
      ],
      "parameters": {
        "color": 7,
        "width": 672,
        "height": 688,
        "content": "## Multi-Channel Notifications\n**What:** Send progress reports to learners via email, notify instructors of at-risk cases, alert managers via summary reports.\n**Why:** Timely interventions prevent disengagement; stakeholder visibility enables proactive support."
      },
      "typeVersion": 1
    },
    {
      "id": "2f7ec9e6-0b05-4ed3-a902-f49675cbf54d",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1024,
        -64
      ],
      "parameters": {
        "color": 7,
        "width": 2368,
        "height": 528,
        "content": "\n## AI-Powered Analysis\n**What:** OpenAI models evaluate learning patterns, identify at-risk learners, and calculate performance scores.\n**Why:** Automated analysis detects subtle patterns humans miss; "
      },
      "typeVersion": 1
    },
    {
      "id": "652afc5f-9e08-4520-a078-ffd69b4bf3c3",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1360,
        -64
      ],
      "parameters": {
        "color": 7,
        "width": 368,
        "height": 688,
        "content": "## Personalized Interventions\n**What:** Generate customized learning paths for struggling learners\n**Why:** Tailored recommendations improve retention and progression."
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "49a08057-b1ab-4d70-a9c8-3e8e85afac37",
  "connections": {
    "Analyze Progress": {
      "main": [
        [
          {
            "node": "Check If Reminder Needed",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Employee Data": {
      "main": [
        [
          {
            "node": "Assign Training Modules",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Progress Data": {
      "main": [
        [
          {
            "node": "Analyze Progress",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Assign Training Modules",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Save Quiz Results": {
      "main": [
        [
          {
            "node": "Generate Learning Paths",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model1": {
      "ai_languageModel": [
        [
          {
            "node": "Analyze Progress",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model2": {
      "ai_languageModel": [
        [
          {
            "node": "Evaluate Quiz Submissions",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model3": {
      "ai_languageModel": [
        [
          {
            "node": "Generate Learning Paths",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Save Learning Paths": {
      "main": [
        [
          {
            "node": "Prepare Manager Report",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send Reminder Email": {
      "main": [
        [
          {
            "node": "Get Quiz Submissions",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Daily Learning Check": {
      "main": [
        [
          {
            "node": "Workflow Configuration",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Quiz Submissions": {
      "main": [
        [
          {
            "node": "Evaluate Quiz Submissions",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Learning Path Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Generate Learning Paths",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Prepare Manager Report": {
      "main": [
        [
          {
            "node": "Notify Manager",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Quiz Evaluation Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Evaluate Quiz Submissions",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Workflow Configuration": {
      "main": [
        [
          {
            "node": "Get Employee Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Assign Training Modules": {
      "main": [
        [
          {
            "node": "Save Training Assignments",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate Learning Paths": {
      "main": [
        [
          {
            "node": "Save Learning Paths",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check If Reminder Needed": {
      "main": [
        [
          {
            "node": "Send Reminder Email",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Get Quiz Submissions",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Progress Analysis Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Analyze Progress",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Evaluate Quiz Submissions": {
      "main": [
        [
          {
            "node": "Save Quiz Results",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Save Training Assignments": {
      "main": [
        [
          {
            "node": "Get Progress Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Training Assignment Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Assign Training Modules",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    }
  }
}