{
  "workflow": {
    "id": 9731,
    "name": "Automated corporate training requests with GPT-4, Jotform & Google Sheets",
    "views": 37,
    "recentViews": 0,
    "totalViews": 37,
    "createdAt": "2025-10-15T18:31:22.039Z",
    "description": "Transform chaotic training requests into strategic skill development - achieving 100% completion tracking, 30% cost reduction through intelligent planning, and data-driven L&D decisions.\n## What This Workflow Does\nRevolutionizes corporate training management with AI-driven course recommendations and automated approval workflows:\n\n📝 Training Request Capture - Jotform collects skill gaps, business justification, and training needs\n💰 Budget Intelligence - Real-time department budget checking and utilization tracking\n🤖 AI Course Recommendations - Matches requests to training catalog with 0-100% scoring\n📊 ROI Analysis - AI assesses business impact, urgency, and return on investment\n✅ Smart Approval Routing - Auto-approves within budget or routes to manager with AI insights\n🎯 Skill Development Paths - Creates personalized learning journeys from current to desired levels\n👥 Team Impact Assessment - Identifies knowledge sharing opportunities and additional attendees\n⚠️ Risk Analysis - Evaluates delays risks and over-investment concerns\n📧 Automated Notifications - Sends detailed approvals to managers and confirmations to employees\n📈 Complete Tracking - Logs all requests with AI insights for L&D analytics\n\n## Key Features\n\n1. AI Training Advisor: GPT-4 analyzes requests across 10+ dimensions including needs assessment, ROI, and implementation planning\n2. Course Catalog Matching: AI scores courses 0-100% based on skill level, topic relevance, and outcomes alignment\n3. Budget Management: Real-time tracking of department budgets with utilization percentages\n4. Preventability Scoring: Identifies skill gaps that could have been addressed earlier\n5. Alternative Options: AI suggests cost-effective alternatives (online courses, mentoring, job shadowing)\n6. Skill Development Pathways: Maps progression from current to desired skill level with timeframes\n7. Team Multiplier Effect: Identifies how training one person benefits entire team\n8. Manager Guidance: Provides key considerations, questions to ask, and approval criteria\n9. Implementation Planning: Suggests timeline, preparation needed, and post-training actions\n10. Success Metrics: Defines measurable outcomes for training effectiveness\n11. Risk Assessment: Flags delay risks and over-investment concerns\n12. Cost Optimization: Recommends ways to reduce costs while maintaining quality\n\n## Perfect For\n\n1. Growing Tech Companies: 50-500 employees with high skill development needs\n2. Enterprise Organizations: Large corporations managing 1000+ training requests annually\n3. Professional Services: Consulting, legal, accounting firms requiring continuous upskilling\n4. Healthcare Systems: Medical organizations with compliance and clinical training requirements\n5. Manufacturing Companies: Technical skills training for operations and quality teams\n6. Sales Organizations: Sales enablement and product training at scale\n7. Financial Services: Compliance training and professional certification tracking\n\n## What You'll Need\nRequired Integrations\n\n1. Jotform - Training request form (free tier works)\nCreate your form for free on [Jotform using this link](https://www.jotform.com/?partner=mediajade)\n2. OpenAI API - GPT-4 for AI training analysis (~$0.30-0.60 per request)\n3. Gmail - Automated notifications to employees, managers, and HR\n4. Google Sheets - Training request database and L&D analytics\n\n## Quick Start\n\n1. Import Template - Copy JSON and import into n8n\n2. Add OpenAI Credentials - Set up OpenAI API key (GPT-4 recommended)\n3. Create Jotform Training Request \n4. Configure Gmail - Add Gmail OAuth2 credentials\nSetup Google Sheets:\nCreate spreadsheet with \"Training_Requests\" sheet\nReplace YOUR_GOOGLE_SHEET_ID in workflow\nColumns auto-populate on first submission\n\n\nCustomize Training Catalog:\n\nEdit \"Check Training Budget\" node\nUpdate training catalog with your actual courses, providers, and costs\nAdd your company's preferred vendors\n\n## Customization Options\n\n1. Custom Training Catalog: Replace sample catalog with your company's actual training offerings\n2. Budget Rules: Adjust approval thresholds (e.g., auto-approve under $500)\n3. AI Prompt Tuning: Customize analysis criteria for your industry and culture\n4. Multi-Level Approvals: Add VP or director approval for high-cost training\n5. Compliance Training: Flag required certifications and regulatory training\n6. Vendor Management: Track preferred training vendors and volume discounts\n7. Learning Paths: Create role-specific career development tracks\n8. Certification Tracking: Monitor professional certifications and renewal dates\n9. Training Calendar: Integrate with company calendar for session visibility\n10. Waitlist Management: Queue employees when sessions are full\n11. Pre/Post Assessments: Add skill testing before and after training\n12. Knowledge Sharing: Schedule lunch-and-learns for employees to share learnings\n\n## Expected Results\n\n1. 100% completion tracking - Digital trail from request to certificate\n2. 30% cost reduction - Strategic planning prevents redundant/unnecessary training\n3. 95% manager response rate - Automated reminders and clear AI guidance\n4. 50% faster approvals - AI pre-analysis speeds manager decisions\n5. 40% better course matching - AI recommendations vs manual course selection\n6. 60% reduction in budget overruns - Real-time budget visibility\n7. 3x increase in skill development velocity - Streamlined process removes friction\n8. 85% employee satisfaction - Clear process and fast responses\n9. Data-driven L&D strategy - Analytics identify trending skill gaps\n10. 25% increase in training ROI - Better targeting and follow-through\n\n## Use Cases\n1. Tech Startup (150 Engineers)\nEngineer requests \"Advanced Kubernetes\" training. AI identifies skill gap as \"high severity\" due to upcoming cloud migration project. Checks department budget ($22K remaining of $50K), recommends $1,800 4-day course with 92% match score. Auto-routes to engineering manager with business impact analysis. Manager approves in 2 hours. Training scheduled for next month. Post-training, engineer leads internal workshop, multiplying impact across 10-person team. Migration completes 3 weeks early, saving $50K.\n2. Enterprise Sales Org (500 Reps)\nSales rep requests \"Negotiation Mastery\" after losing 3 deals. AI assesses urgency as \"justified\" based on revenue impact. Recommends $1,100 2-day course but also suggests lower-cost alternative: internal mentoring from top performer ($0). Manager sees both options, chooses mentoring first. Rep closes next deal with new techniques. Training budget preserved for broader team enablement. ROI: $200K deal closed with $0 training spend.\n3. Healthcare System (2,000 Nurses)\nNurse requests ACLS recertification. AI flags as \"compliance-critical\" with \"immediate\" urgency (expiring in 30 days). Checks budget, finds sufficient funds. Auto-approves and schedules next available session. Sends pre-training materials 1 week before. Tracks attendance, generates certificate upon completion. Updates nurse's credential profile in HRIS. Compliance maintained, no manual intervention needed.\n4. Financial Services Firm\nAnalyst requests CFA Level 1 prep course ($2,500). AI assesses as \"high ROI\" but identifies budget constraint (department at 95% utilization). Recommends deferring to next quarter when new budget allocated. Suggests free Khan Academy courses as interim solution. Manager sees complete analysis, approves deferral, adds analyst to Q2 priority list. Transparent communication maintains morale despite delay.\n5. Manufacturing Company\nMaintenance tech requests PLC programming training. AI identifies 5 other techs with same skill gap. Recommends group training session ($1,200 per person vs $2,000 individual). Calculates team multiplier effect: 6 techs trained = reduced downtime across 3 shifts. Manager approves group session, saving $4,800. All 6 techs complete training together, creating peer support network. Equipment downtime reduced 40%.\n\n## Pro Tips\n\n1. Quarterly Planning: Use Google Sheets data to identify trending skill gaps and plan group training\n2. Budget Forecasting: Track monthly utilization to predict Q4 budget needs\n3. Course Ratings: Add post-training feedback to improve AI recommendations over time\n4. Internal Experts: Build database of employees who can provide mentoring (free alternative)\n5. Learning Paths: Create role-based tracks (e.g., \"Junior Dev → Senior Dev\" pathway)\n6. Compliance Flagging: Auto-identify regulatory/certification requirements\n7. Vendor Relationships: Track volume with vendors to negotiate discounts\n8. Knowledge Retention: Require post-training presentations to reinforce learning\n9. Manager Training: Educate managers on how to evaluate AI recommendations\n10. Budget Reallocation: Monthly reviews to move unused budget between departments\n11. Early Bird Discounts: AI can suggest booking 60+ days out for savings\n12. Continuous Learning: Supplement formal training with Udemy/LinkedIn Learning subscriptions\n\n## Learning Resources\nThis workflow demonstrates advanced automation:\n\n1. AI Agents with complex analysis across multiple decision dimensions\n2. Budget management algorithms with real-time calculations\n3. Course recommendation engines with scoring and matching\n4. Multi-criteria approval routing based on AI confidence\n5. Skill progression modeling from current to desired states\n6. ROI analysis balancing cost, impact, and urgency\n7. Alternative suggestion algorithms for cost optimization\n8. Team impact modeling for knowledge multiplication\n9. Risk assessment frameworks for training decisions\n10. Real-Time Budget Tracking: Live department budget visibility prevents overspending\nAudit Trail: Complete history for finance audits and compliance reviews\nApproval Documentation: Timestamped manager approvals for governance\nCost Allocation: Track training costs by department, employee, category\nROI Measurement: Compare training investment to business outcomes\nCompliance Monitoring: Flag required certifications and regulatory training\nVendor Management: Track spending with training providers\n\n\n\nReady to transform your corporate training? Import this template and turn training chaos into strategic skill development with AI-powered insights and automation! 📚✨\nQuestions or customization? The workflow includes detailed sticky notes explaining each AI analysis component.",
    "workflow": {
      "meta": {
        "instanceId": "277842713620d9f5554de3b1518b865a152c8c4db680008bd8aec536fc18b4a8",
        "templateCredsSetupCompleted": true
      },
      "nodes": [
        {
          "id": "e39f08f2-f12e-4b84-93b9-cf264a43c6d7",
          "name": "Parse Training Request",
          "type": "n8n-nodes-base.code",
          "position": [
            704,
            0
          ],
          "parameters": {
            "jsCode": "const formData = $input.first().json;\n\nreturn {\n  json: {\n    requestId: formData.submissionID || 'TRN-' + Date.now(),\n    submissionDate: new Date().toISOString(),\n    employeeName: formData.employeeName || formData.q3_employeeName,\n    employeeEmail: formData.employeeEmail || formData.q4_employeeEmail,\n    employeeId: formData.employeeId || formData.q5_employeeId,\n    department: formData.department || formData.q6_department,\n    position: formData.position || formData.q7_position,\n    manager: formData.manager || formData.q8_manager,\n    managerEmail: formData.managerEmail || formData.q9_managerEmail,\n    trainingTopic: formData.trainingTopic || formData.q10_trainingTopic,\n    trainingCategory: formData.trainingCategory || formData.q11_trainingCategory || 'Technical',\n    skillGap: formData.skillGap || formData.q12_skillGap || '',\n    currentSkillLevel: formData.currentSkillLevel || formData.q13_currentSkillLevel || 'Beginner',\n    desiredSkillLevel: formData.desiredSkillLevel || formData.q14_desiredSkillLevel || 'Intermediate',\n    urgency: formData.urgency || formData.q15_urgency || 'Normal',\n    businessJustification: formData.businessJustification || formData.q16_businessJustification || '',\n    projectImpact: formData.projectImpact || formData.q17_projectImpact || '',\n    preferredFormat: formData.preferredFormat || formData.q18_preferredFormat || 'In-Person',\n    preferredDates: formData.preferredDates || formData.q19_preferredDates || '',\n    numberOfAttendees: parseInt(formData.numberOfAttendees || formData.q20_numberOfAttendees || '1'),\n    estimatedBudget: parseFloat(formData.estimatedBudget || formData.q21_estimatedBudget || '0'),\n    additionalNotes: formData.additionalNotes || formData.q22_additionalNotes || '',\n    status: 'pending_review'\n  }\n};"
          },
          "typeVersion": 2
        },
        {
          "id": "b1dd4dc8-c71c-48e9-862f-4cf623af5954",
          "name": "Check Training Budget",
          "type": "n8n-nodes-base.code",
          "position": [
            960,
            0
          ],
          "parameters": {
            "jsCode": "const data = $input.first().json;\n\n// Training budget database per department (annual)\nconst departmentBudgets = {\n  'Engineering': { total: 50000, spent: 28000, remaining: 22000 },\n  'Sales': { total: 30000, spent: 18000, remaining: 12000 },\n  'Marketing': { total: 25000, spent: 15000, remaining: 10000 },\n  'HR': { total: 15000, spent: 8000, remaining: 7000 },\n  'Finance': { total: 20000, spent: 12000, remaining: 8000 },\n  'Operations': { total: 18000, spent: 10000, remaining: 8000 },\n  'Customer Support': { total: 12000, spent: 6000, remaining: 6000 },\n  'Product': { total: 35000, spent: 20000, remaining: 15000 }\n};\n\n// Training catalog with costs\nconst trainingCatalog = {\n  'Technical': [\n    { name: 'Python Programming Fundamentals', duration: '3 days', cost: 1200, level: 'Beginner', provider: 'TechAcademy' },\n    { name: 'Advanced JavaScript & React', duration: '5 days', cost: 2000, level: 'Intermediate', provider: 'CodeSchool' },\n    { name: 'AWS Cloud Practitioner', duration: '2 days', cost: 800, level: 'Beginner', provider: 'CloudExperts' },\n    { name: 'Docker & Kubernetes', duration: '4 days', cost: 1800, level: 'Advanced', provider: 'DevOpsInstitute' },\n    { name: 'Cybersecurity Essentials', duration: '3 days', cost: 1500, level: 'Intermediate', provider: 'SecureLearn' }\n  ],\n  'Leadership': [\n    { name: 'Leadership Fundamentals', duration: '2 days', cost: 1000, level: 'Beginner', provider: 'LeadershipPro' },\n    { name: 'Strategic Management', duration: '3 days', cost: 1800, level: 'Advanced', provider: 'ExecutiveEd' },\n    { name: 'Team Building & Motivation', duration: '1 day', cost: 600, level: 'Intermediate', provider: 'TeamSuccess' }\n  ],\n  'Sales': [\n    { name: 'Consultative Selling', duration: '2 days', cost: 900, level: 'Intermediate', provider: 'SalesForce Academy' },\n    { name: 'Negotiation Mastery', duration: '2 days', cost: 1100, level: 'Advanced', provider: 'DealMakers' },\n    { name: 'Sales Fundamentals', duration: '1 day', cost: 500, level: 'Beginner', provider: 'SalesPro' }\n  ],\n  'Communication': [\n    { name: 'Effective Communication', duration: '1 day', cost: 400, level: 'Beginner', provider: 'CommSkills' },\n    { name: 'Public Speaking Mastery', duration: '2 days', cost: 800, level: 'Intermediate', provider: 'SpeakWell' },\n    { name: 'Presentation Skills', duration: '1 day', cost: 500, level: 'Intermediate', provider: 'PresenterPro' }\n  ],\n  'Project Management': [\n    { name: 'PMP Certification Prep', duration: '5 days', cost: 2500, level: 'Advanced', provider: 'PMI Institute' },\n    { name: 'Agile & Scrum Fundamentals', duration: '2 days', cost: 900, level: 'Beginner', provider: 'AgileExperts' },\n    { name: 'Project Planning & Execution', duration: '3 days', cost: 1200, level: 'Intermediate', provider: 'ProjectSuccess' }\n  ],\n  'Data & Analytics': [\n    { name: 'Data Analysis with Excel', duration: '2 days', cost: 700, level: 'Beginner', provider: 'DataSkills' },\n    { name: 'Power BI Advanced', duration: '3 days', cost: 1400, level: 'Advanced', provider: 'BIExperts' },\n    { name: 'SQL for Business', duration: '2 days', cost: 900, level: 'Intermediate', provider: 'DataAcademy' }\n  ]\n};\n\nconst department = data.department;\nconst budget = departmentBudgets[department] || { total: 10000, spent: 5000, remaining: 5000 };\nconst estimatedCost = data.estimatedBudget || 1000;\n\nconst budgetAvailable = budget.remaining >= estimatedCost;\nconst budgetUtilization = ((budget.spent / budget.total) * 100).toFixed(1);\n\nreturn {\n  json: {\n    ...data,\n    departmentBudgetTotal: budget.total,\n    departmentBudgetSpent: budget.spent,\n    departmentBudgetRemaining: budget.remaining,\n    budgetAvailable: budgetAvailable,\n    budgetUtilization: budgetUtilization,\n    trainingCatalog: trainingCatalog\n  }\n};"
          },
          "typeVersion": 2
        },
        {
          "id": "94a80dc3-7d19-4ed8-a79d-db40bd326baa",
          "name": "AI Training Analysis",
          "type": "@n8n/n8n-nodes-langchain.agent",
          "position": [
            1200,
            0
          ],
          "parameters": {
            "text": "=You are an expert corporate training advisor with 15+ years in L&D. Analyze this training request and provide recommendations.\n\n**Employee Information:**\n- Name: {{ $json.employeeName }}\n- Position: {{ $json.position }}\n- Department: {{ $json.department }}\n- Current Skill Level: {{ $json.currentSkillLevel }}\n- Desired Skill Level: {{ $json.desiredSkillLevel }}\n\n**Training Request:**\n- Topic: {{ $json.trainingTopic }}\n- Category: {{ $json.trainingCategory }}\n- Skill Gap: {{ $json.skillGap }}\n- Business Justification: {{ $json.businessJustification }}\n- Project Impact: {{ $json.projectImpact }}\n- Urgency: {{ $json.urgency }}\n- Format Preference: {{ $json.preferredFormat }}\n- Attendees: {{ $json.numberOfAttendees }}\n- Estimated Budget: ${{ $json.estimatedBudget }}\n\n**Budget Context:**\n- Department Total Budget: ${{ $json.departmentBudgetTotal }}\n- Already Spent: ${{ $json.departmentBudgetSpent }}\n- Remaining: ${{ $json.departmentBudgetRemaining }}\n- Budget Available: {{ $json.budgetAvailable }}\n- Utilization: {{ $json.budgetUtilization }}%\n\n**Available Training Catalog:**\n{{ JSON.stringify($json.trainingCatalog, null, 2) }}\n\nProvide comprehensive analysis in JSON:\n{\n  \"needsAnalysis\": {\n    \"skillGapSeverity\": \"critical|high|medium|low\",\n    \"businessImpact\": \"high|medium|low\",\n    \"urgencyJustified\": true|false,\n    \"alignment\": \"strongly_aligned|aligned|partially_aligned|misaligned\",\n    \"roiPotential\": \"high|medium|low\",\n    \"analysis\": \"detailed assessment of training need\"\n  },\n  \"recommendedCourses\": [\n    {\n      \"courseName\": \"course from catalog\",\n      \"provider\": \"provider name\",\n      \"duration\": \"duration\",\n      \"cost\": number,\n      \"matchScore\": 0-100,\n      \"reasoning\": \"why this course fits\",\n      \"prerequisites\": [],\n      \"outcomes\": [\"expected outcome 1\", \"outcome 2\"]\n    }\n  ],\n  \"alternativeOptions\": [\n    {\n      \"option\": \"alternative approach\",\n      \"cost\": number,\n      \"pros\": [],\n      \"cons\": []\n    }\n  ],\n  \"budgetAnalysis\": {\n    \"requestWithinBudget\": true|false,\n    \"costEffective\": true|false,\n    \"budgetRecommendation\": \"approve|defer|reduce_scope|seek_alternatives\",\n    \"costOptimization\": [\"suggestion 1\", \"suggestion 2\"]\n  },\n  \"approvalRecommendation\": {\n    \"recommend\": \"strongly_approve|approve|conditional_approve|defer|reject\",\n    \"confidence\": 0-100,\n    \"reasoning\": \"detailed justification\",\n    \"conditions\": [\"condition 1 if applicable\"]\n  },\n  \"implementationPlan\": {\n    \"suggestedTimeline\": \"when to schedule\",\n    \"preparationNeeded\": [\"prep step 1\", \"prep step 2\"],\n    \"postTrainingActions\": [\"follow-up 1\", \"follow-up 2\"],\n    \"successMetrics\": [\"metric 1\", \"metric 2\"]\n  },\n  \"skillDevelopmentPath\": {\n    \"currentToDesired\": \"path description\",\n    \"estimatedTimeframe\": \"time to reach desired level\",\n    \"additionalTraining\": [\"future training 1\", \"future training 2\"],\n    \"onTheJobLearning\": [\"practical application 1\"]\n  },\n  \"teamImpact\": {\n    \"teamBenefit\": \"high|medium|low\",\n    \"knowledgeSharingPotential\": true|false,\n    \"multiplierEffect\": \"how this helps team\",\n    \"suggestAdditionalAttendees\": [\"name/role if applicable\"]\n  },\n  \"riskAssessment\": {\n    \"delayRisks\": [\"risk if not trained\"],\n    \"overInvestmentRisk\": \"low|medium|high\",\n    \"alternativeResources\": [\"internal mentoring\", \"online courses\"],\n    \"mitigation\": [\"how to mitigate risks\"]\n  },\n  \"managerGuidance\": {\n    \"keyConsiderations\": [\"point 1\", \"point 2\"],\n    \"questionsToAsk\": [\"question 1\", \"question 2\"],\n    \"approvalCriteria\": [\"criterion 1\", \"criterion 2\"]\n  }\n}",
            "options": {
              "systemMessage": "You are an expert corporate training advisor specializing in learning & development, ROI analysis, and skill development pathways."
            },
            "promptType": "define",
            "hasOutputParser": true
          },
          "typeVersion": 1.6
        },
        {
          "id": "ba7ef4b8-9b63-4d63-88ca-18d39838ce5b",
          "name": "Extract AI Analysis",
          "type": "n8n-nodes-base.set",
          "position": [
            1552,
            0
          ],
          "parameters": {
            "options": {},
            "assignments": {
              "assignments": [
                {
                  "id": "aiAnalysis",
                  "name": "aiAnalysis",
                  "type": "string",
                  "value": "={{ $json.output }}"
                }
              ]
            }
          },
          "typeVersion": 3.3
        },
        {
          "id": "ba552a4e-b4c6-456b-af96-446155e5d625",
          "name": "Merge Training Analysis",
          "type": "n8n-nodes-base.code",
          "position": [
            1808,
            -160
          ],
          "parameters": {
            "jsCode": "const trainingData = $input.first().json;\nconst aiAnalysisRaw = trainingData.aiAnalysis;\n\nlet aiAnalysis;\ntry {\n  aiAnalysis = JSON.parse(aiAnalysisRaw);\n} catch (e) {\n  aiAnalysis = {\n    needsAnalysis: {skillGapSeverity: 'medium', businessImpact: 'medium', urgencyJustified: true, alignment: 'aligned', roiPotential: 'medium', analysis: 'Training needed'},\n    recommendedCourses: [{courseName: 'General Training', provider: 'TBD', duration: '2 days', cost: 1000, matchScore: 70, reasoning: 'Relevant training', prerequisites: [], outcomes: ['Skill improvement']}],\n    alternativeOptions: [],\n    budgetAnalysis: {requestWithinBudget: true, costEffective: true, budgetRecommendation: 'approve', costOptimization: []},\n    approvalRecommendation: {recommend: 'approve', confidence: 75, reasoning: 'Valid training request', conditions: []},\n    implementationPlan: {suggestedTimeline: 'Within 30 days', preparationNeeded: [], postTrainingActions: [], successMetrics: []},\n    skillDevelopmentPath: {currentToDesired: 'Standard progression', estimatedTimeframe: '3-6 months', additionalTraining: [], onTheJobLearning: []},\n    teamImpact: {teamBenefit: 'medium', knowledgeSharingPotential: true, multiplierEffect: 'Team skill improvement', suggestAdditionalAttendees: []},\n    riskAssessment: {delayRisks: [], overInvestmentRisk: 'low', alternativeResources: [], mitigation: []},\n    managerGuidance: {keyConsiderations: [], questionsToAsk: [], approvalCriteria: []}\n  };\n}\n\nconst topCourse = aiAnalysis.recommendedCourses[0];\nconst approvalNeeded = aiAnalysis.budgetAnalysis.requestWithinBudget && \n                       (aiAnalysis.approvalRecommendation.recommend === 'approve' || \n                        aiAnalysis.approvalRecommendation.recommend === 'strongly_approve');\n\nreturn {\n  json: {\n    ...trainingData,\n    skillGapSeverity: aiAnalysis.needsAnalysis.skillGapSeverity,\n    businessImpact: aiAnalysis.needsAnalysis.businessImpact,\n    urgencyJustified: aiAnalysis.needsAnalysis.urgencyJustified,\n    alignment: aiAnalysis.needsAnalysis.alignment,\n    roiPotential: aiAnalysis.needsAnalysis.roiPotential,\n    needsAnalysisDetail: aiAnalysis.needsAnalysis.analysis,\n    recommendedCourses: aiAnalysis.recommendedCourses,\n    topRecommendedCourse: topCourse.courseName,\n    topCourseProvider: topCourse.provider,\n    topCourseDuration: topCourse.duration,\n    topCourseCost: topCourse.cost,\n    courseMatchScore: topCourse.matchScore,\n    courseReasoning: topCourse.reasoning,\n    coursePrerequisites: topCourse.prerequisites,\n    courseOutcomes: topCourse.outcomes,\n    alternativeOptions: aiAnalysis.alternativeOptions,\n    requestWithinBudget: aiAnalysis.budgetAnalysis.requestWithinBudget,\n    costEffective: aiAnalysis.budgetAnalysis.costEffective,\n    budgetRecommendation: aiAnalysis.budgetAnalysis.budgetRecommendation,\n    costOptimization: aiAnalysis.budgetAnalysis.costOptimization,\n    aiRecommendation: aiAnalysis.approvalRecommendation.recommend,\n    recommendationConfidence: aiAnalysis.approvalRecommendation.confidence,\n    recommendationReasoning: aiAnalysis.approvalRecommendation.reasoning,\n    approvalConditions: aiAnalysis.approvalRecommendation.conditions,\n    suggestedTimeline: aiAnalysis.implementationPlan.suggestedTimeline,\n    preparationNeeded: aiAnalysis.implementationPlan.preparationNeeded,\n    postTrainingActions: aiAnalysis.implementationPlan.postTrainingActions,\n    successMetrics: aiAnalysis.implementationPlan.successMetrics,\n    skillPath: aiAnalysis.skillDevelopmentPath.currentToDesired,\n    estimatedTimeframe: aiAnalysis.skillDevelopmentPath.estimatedTimeframe,\n    additionalTraining: aiAnalysis.skillDevelopmentPath.additionalTraining,\n    onTheJobLearning: aiAnalysis.skillDevelopmentPath.onTheJobLearning,\n    teamBenefit: aiAnalysis.teamImpact.teamBenefit,\n    knowledgeSharing: aiAnalysis.teamImpact.knowledgeSharingPotential,\n    multiplierEffect: aiAnalysis.teamImpact.multiplierEffect,\n    suggestedAttendees: aiAnalysis.teamImpact.suggestAdditionalAttendees,\n    delayRisks: aiAnalysis.riskAssessment.delayRisks,\n    overInvestmentRisk: aiAnalysis.riskAssessment.overInvestmentRisk,\n    alternativeResources: aiAnalysis.riskAssessment.alternativeResources,\n    riskMitigation: aiAnalysis.riskAssessment.mitigation,\n    managerConsiderations: aiAnalysis.managerGuidance.keyConsiderations,\n    managerQuestions: aiAnalysis.managerGuidance.questionsToAsk,\n    approvalCriteria: aiAnalysis.managerGuidance.approvalCriteria,\n    requiresApproval: approvalNeeded\n  }\n};"
          },
          "typeVersion": 2
        },
        {
          "id": "8083f98b-ab59-464d-930f-1bd4f8d6dad8",
          "name": "Requires Approval?",
          "type": "n8n-nodes-base.if",
          "position": [
            2016,
            0
          ],
          "parameters": {
            "options": {},
            "conditions": {
              "options": {
                "version": 1,
                "leftValue": "",
                "caseSensitive": true,
                "typeValidation": "strict"
              },
              "combinator": "and",
              "conditions": [
                {
                  "id": "condition1",
                  "operator": {
                    "type": "boolean",
                    "operation": "true"
                  },
                  "leftValue": "={{ $json.requiresApproval }}",
                  "rightValue": true
                }
              ]
            }
          },
          "typeVersion": 2
        },
        {
          "id": "8f382f2a-cfce-4106-96fa-f9c99bfc7a46",
          "name": "Send Manager Approval",
          "type": "n8n-nodes-base.gmail",
          "position": [
            2336,
            -32
          ],
          "webhookId": "f5fdae09-daec-4399-906a-85a27b3e0cac",
          "parameters": {
            "sendTo": "={{ $json.managerEmail }}",
            "message": "=Hi {{ $json.manager }},\n\n{{ $json.employeeName }} has requested training approval.\n\n📋 **TRAINING REQUEST DETAILS:**\n\n**Employee:** {{ $json.employeeName }} ({{ $json.position }})\n**Department:** {{ $json.department }}\n**Topic:** {{ $json.trainingTopic }}\n**Category:** {{ $json.trainingCategory }}\n**Urgency:** {{ $json.urgency }}\n\n**Skill Development:**\nCurrent Level: {{ $json.currentSkillLevel }}\nDesired Level: {{ $json.desiredSkillLevel }}\nSkill Gap: {{ $json.skillGap }}\n\n**Business Justification:**\n{{ $json.businessJustification }}\n\n**Project Impact:**\n{{ $json.projectImpact }}\n\n🤖 **AI TRAINING ANALYSIS:**\n\n**Needs Assessment:**\n• Skill Gap Severity: {{ $json.skillGapSeverity.toUpperCase() }}\n• Business Impact: {{ $json.businessImpact.toUpperCase() }}\n• Urgency Justified: {{ $json.urgencyJustified ? 'YES' : 'NO' }}\n• Strategic Alignment: {{ $json.alignment }}\n• ROI Potential: {{ $json.roiPotential.toUpperCase() }}\n\n{{ $json.needsAnalysisDetail }}\n\n**AI Recommendation:** {{ $json.aiRecommendation.replace('_', ' ').toUpperCase() }}\nConfidence: {{ $json.recommendationConfidence }}%\n\n**Reasoning:**\n{{ $json.recommendationReasoning }}\n\n{{ $json.approvalConditions.length > 0 ? '**Conditions:**\\n' + $json.approvalConditions.map((c, i) => `${i + 1}. ${c}`).join('\\n') + '\\n\\n' : '' }}\n\n💡 **RECOMMENDED TRAINING:**\n\n**Top Match:** {{ $json.topRecommendedCourse }}\n• Provider: {{ $json.topCourseProvider }}\n• Duration: {{ $json.topCourseDuration }}\n• Cost: ${{ $json.topCourseCost }}\n• Match Score: {{ $json.courseMatchScore }}%\n\n**Why This Course:**\n{{ $json.courseReasoning }}\n\n**Expected Outcomes:**\n{{ $json.courseOutcomes.map((outcome, i) => `${i + 1}. ${outcome}`).join('\\n') }}\n\n{{ $json.coursePrerequisites.length > 0 ? '**Prerequisites:**\\n' + $json.coursePrerequisites.map((p, i) => `${i + 1}. ${p}`).join('\\n') + '\\n\\n' : '' }}\n\n💰 **BUDGET ANALYSIS:**\n\n**Department Training Budget:**\n• Total Annual: ${{ $json.departmentBudgetTotal.toLocaleString() }}\n• Already Spent: ${{ $json.departmentBudgetSpent.toLocaleString() }}\n• Remaining: ${{ $json.departmentBudgetRemaining.toLocaleString() }}\n• Utilization: {{ $json.budgetUtilization }}%\n\n**This Request:**\n• Estimated Cost: ${{ $json.topCourseCost.toLocaleString() }}\n• Within Budget: {{ $json.requestWithinBudget ? '✅ YES' : '❌ NO' }}\n• Cost Effective: {{ $json.costEffective ? 'YES' : 'NO' }}\n• Recommendation: {{ $json.budgetRecommendation.toUpperCase() }}\n\n{{ $json.costOptimization.length > 0 ? '**Cost Optimization Ideas:**\\n' + $json.costOptimization.map((opt, i) => `${i + 1}. ${opt}`).join('\\n') + '\\n\\n' : '' }}\n\n📅 **IMPLEMENTATION PLAN:**\n\n**Suggested Timeline:** {{ $json.suggestedTimeline }}\n**Attendees:** {{ $json.numberOfAttendees }}\n**Format:** {{ $json.preferredFormat }}\n{{ $json.preferredDates ? 'Preferred Dates: ' + $json.preferredDates : '' }}\n\n**Preparation Needed:**\n{{ $json.preparationNeeded.map((prep, i) => `${i + 1}. ${prep}`).join('\\n') }}\n\n**Post-Training Actions:**\n{{ $json.postTrainingActions.map((action, i) => `${i + 1}. ${action}`).join('\\n') }}\n\n**Success Metrics:**\n{{ $json.successMetrics.map((metric, i) => `${i + 1}. ${metric}`).join('\\n') }}\n\n🎯 **SKILL DEVELOPMENT PATH:**\n\n{{ $json.skillPath }}\n\n**Estimated Timeframe:** {{ $json.estimatedTimeframe }}\n\n**Additional Future Training:**\n{{ $json.additionalTraining.map((training, i) => `${i + 1}. ${training}`).join('\\n') }}\n\n**On-the-Job Learning:**\n{{ $json.onTheJobLearning.map((learn, i) => `${i + 1}. ${learn}`).join('\\n') }}\n\n👥 **TEAM IMPACT:**\n\n• Team Benefit Level: {{ $json.teamBenefit.toUpperCase() }}\n• Knowledge Sharing Potential: {{ $json.knowledgeSharing ? 'YES' : 'NO' }}\n• Multiplier Effect: {{ $json.multiplierEffect }}\n\n{{ $json.suggestedAttendees.length > 0 ? '**Suggested Additional Attendees:**\\n' + $json.suggestedAttendees.map((att, i) => `${i + 1}. ${att}`).join('\\n') + '\\n\\n' : '' }}\n\n⚠️ **RISK ASSESSMENT:**\n\n{{ $json.delayRisks.length > 0 ? '**Risks if Training Delayed:**\\n' + $json.delayRisks.map((risk, i) => `${i + 1}. ${risk}`).join('\\n') + '\\n\\n' : '' }}\n\n**Over-Investment Risk:** {{ $json.overInvestmentRisk.toUpperCase() }}\n\n{{ $json.alternativeResources.length > 0 ? '**Alternative Resources:**\\n' + $json.alternativeResources.map((alt, i) => `${i + 1}. ${alt}`).join('\\n') + '\\n\\n' : '' }}\n\n{{ $json.alternativeOptions.length > 0 ? '**Alternative Training Options:**\\n' + $json.alternativeOptions.map((opt, i) => `${i + 1}. ${opt.option} - $${opt.cost}\\n   Pros: ${opt.pros.join(', ')}\\n   Cons: ${opt.cons.join(', ')}`).join('\\n\\n') + '\\n\\n' : '' }}\n\n📝 **YOUR CONSIDERATIONS:**\n\n{{ $json.managerConsiderations.map((consider, i) => `${i + 1}. ${consider}`).join('\\n') }}\n\n**Questions to Discuss with {{ $json.employeeName }}:**\n{{ $json.managerQuestions.map((q, i) => `${i + 1}. ${q}`).join('\\n') }}\n\n**Approval Criteria:**\n{{ $json.approvalCriteria.map((criteria, i) => `${i + 1}. ${criteria}`).join('\\n') }}\n\n---\n\n**APPROVAL OPTIONS:**\n\n✅ **APPROVE** - Proceed with recommended training\n❌ **REJECT** - Decline training request\n⏸️ **DEFER** - Postpone to next quarter\n\nReply to this email with your decision or contact HR for discussion.\n\nRequest ID: {{ $json.requestId }}\n\n---\nAI-Powered Training Management System",
            "options": {},
            "subject": "=Training Approval Required: {{ $json.employeeName }} - {{ $json.trainingTopic }}"
          },
          "credentials": {
            "gmailOAuth2": {
              "id": "credential-id",
              "name": "gmailOAuth2 Credential"
            }
          },
          "typeVersion": 2.1
        },
        {
          "id": "d7fcf67b-d1e5-4155-98c6-3e267a8b8f1f",
          "name": "Send Rejection Email",
          "type": "n8n-nodes-base.gmail",
          "position": [
            2336,
            192
          ],
          "webhookId": "3fdf4066-4a62-4208-a4eb-2e82824a7d4e",
          "parameters": {
            "sendTo": "={{ $('Jotform Trigger').item.json['Employee Email'] }}",
            "message": "=Hi {{ $('Jotform Trigger').item.json['Employee Name'].first }},\n\nYour training request has been reviewed but cannot be approved at this time.\n\n**Training Requested:** {{ $('Jotform Trigger').item.json.trainingTopic }}\n**Request ID:** {{ $('Parse Training Request').item.json.requestId }}\n\n**AI Analysis Result:**\nRecommendation: {{ $json.aiRecommendation.replace('_', ' ').toUpperCase() }}\n\n**Reason:**\n{{ $json.recommendationReasoning }}\n**Alternative Options:**\n{{ $json.alternativeResources.map((alt, i) => `${i + 1}. ${alt}`).join('\\n') }}\n\n{{ $json.alternativeOptions.map((opt, i) => `${i + 1}. ${opt.option} - ${opt.cost}`).join('\\n') }}\n\nPlease discuss with your manager or contact HR for alternatives.\n\nHR Training Team",
            "options": {},
            "subject": "=Training Request Auto-Rejected: {{ $('Jotform Trigger').item.json.trainingTopic }}"
          },
          "credentials": {
            "gmailOAuth2": {
              "id": "credential-id",
              "name": "gmailOAuth2 Credential"
            }
          },
          "typeVersion": 2.1
        },
        {
          "id": "8069beb1-5bc1-4361-a7d1-5f4e68c81770",
          "name": "Send Employee Confirmation",
          "type": "n8n-nodes-base.gmail",
          "position": [
            2496,
            32
          ],
          "webhookId": "963ba631-0c4c-4678-a99f-7aec756746e0",
          "parameters": {
            "sendTo": "={{ $('Jotform Trigger').item.json['Employee Email'] }}",
            "message": "=Hi {{ $('Jotform Trigger').item.json['Employee Name'].first }},\n\nWe've received your training request and it's under review.\n\n**Request Details:**\n• Topic: {{ $('Jotform Trigger').item.json.trainingTopic }}\n• Category: {{ $('Jotform Trigger').item.json.trainingCategory }}\n• Urgency: {{ $('Jotform Trigger').item.json.urgency }}\n• Request ID: {{ $('Parse Training Request').item.json.requestId }}\n\n🤖 **AI Preliminary Analysis:**\n\n**Recommended Training:**{{ $('Merge Training Analysis').item.json.topRecommendedCourse }}\n\n• Provider: {{ $('Merge Training Analysis').item.json.topCourseProvider }}\n• Duration: {{ $('Merge Training Analysis').item.json.topCourseDuration }}\n• Cost: ${{ $('Merge Training Analysis').item.json.topCourseCost }}\n• Match Score: {{ $('Merge Training Analysis').item.json.courseMatchScore }}%\n\n**Why This Course Fits:**\n{{ $('Merge Training Analysis').item.json.courseReasoning }}\n\n**Expected Outcom\n\n**Skill Development Path:**\n{{ $('Merge Training Analysis').item.json.skillPath }}\nEstimated Timeframe: {{ $('Merge Training Analysis').item.json.estimatedTimeframe }}\n\n\n\nQuestions? Contact training@company.com\n\nHR Training Team\n\n---\nAI-Powered Training System",
            "options": {},
            "subject": "=Training Request Received: {{ $('Jotform Trigger').item.json.trainingTopic }}"
          },
          "credentials": {
            "gmailOAuth2": {
              "id": "credential-id",
              "name": "gmailOAuth2 Credential"
            }
          },
          "typeVersion": 2.1
        },
        {
          "id": "b16541ba-fbd7-4588-a96f-f0d97c08af78",
          "name": "Log to Google Sheets",
          "type": "n8n-nodes-base.googleSheets",
          "position": [
            2720,
            32
          ],
          "parameters": {
            "columns": {
              "value": {},
              "schema": [
                {
                  "id": "Employee Name",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Employee Name",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Employee Email",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Employee Email",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Address",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Address",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Start Date",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Start Date",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Position",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Position",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Department",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Department",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Manager Email",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Manager Email",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Employee Type",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Employee Type",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Laptop Type",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Laptop Type",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Software Access",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Software Access",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Phone Needed",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Phone Needed",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Experience Level",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Experience Level",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Emergency Contact",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Emergency Contact",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Shirt Size",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Shirt Size",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Dietary Restrictions",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Dietary Restrictions",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "id",
                  "type": "string",
                  "display": true,
                  "removed": false,
                  "required": false,
                  "displayName": "id",
                  "defaultMatch": true,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "threadId",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "threadId",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "labelIds",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "labelIds",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                }
              ],
              "mappingMode": "autoMapInputData",
              "matchingColumns": [
                "id"
              ],
              "attemptToConvertTypes": false,
              "convertFieldsToString": false
            },
            "options": {},
            "operation": "appendOrUpdate",
            "sheetName": {
              "__rl": true,
              "mode": "list",
              "value": "gid=0",
              "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1pwrTx5GXB7mAg5eJQ9q0I9tsgSI9keZ2W4iuTZi7wF8/edit#gid=0",
              "cachedResultName": "Sheet1"
            },
            "documentId": {
              "__rl": true,
              "mode": "list",
              "value": "1pwrTx5GXB7mAg5eJQ9q0I9tsgSI9keZ2W4iuTZi7wF8",
              "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1pwrTx5GXB7mAg5eJQ9q0I9tsgSI9keZ2W4iuTZi7wF8/edit?usp=drivesdk",
              "cachedResultName": "Employee Onboarding"
            }
          },
          "credentials": {
            "googleSheetsOAuth2Api": {
              "id": "credential-id",
              "name": "googleSheetsOAuth2Api Credential"
            }
          },
          "typeVersion": 4.4
        },
        {
          "id": "8b95bf15-1249-42b8-aa53-693818899488",
          "name": "Sticky Note",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            400,
            -128
          ],
          "parameters": {
            "height": 240,
            "content": "📩 **TRIGGER**\nCaptures training requests\nvia Jotform with skill gaps\nand business justification\nCreate your form for free on [Jotform using this link](https://www.jotform.com/?partner=mediajade)"
          },
          "typeVersion": 1
        },
        {
          "id": "8da00a85-b44f-4454-ae6a-02f6aef216e8",
          "name": "Sticky Note1",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            656,
            -128
          ],
          "parameters": {
            "height": 240,
            "content": "🧾 **PARSE**\nNormalizes training\nrequest data"
          },
          "typeVersion": 1
        },
        {
          "id": "cb7fa984-c720-4471-87ab-76045dbc9bc7",
          "name": "Sticky Note2",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            928,
            -128
          ],
          "parameters": {
            "height": 240,
            "content": "💰 **BUDGET CHECK**\nRetrieves department\ntraining budget and\nchecks availability"
          },
          "typeVersion": 1
        },
        {
          "id": "913df66f-a72d-458f-a691-8c342f03b2ea",
          "name": "Sticky Note3",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            1200,
            -128
          ],
          "parameters": {
            "height": 240,
            "content": "🤖 **AI ANALYSIS**\nAnalyzes training need,\nrecommends courses,\nassesses ROI and risks"
          },
          "typeVersion": 1
        },
        {
          "id": "7480bc0c-023a-45a2-996e-9d1a807f1877",
          "name": "Sticky Note4",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            1472,
            -128
          ],
          "parameters": {
            "height": 240,
            "content": "🔗 **EXTRACT**\nExtracts structured\nAI recommendations"
          },
          "typeVersion": 1
        },
        {
          "id": "ca8ec47d-82ca-4966-a956-9ec822c41725",
          "name": "Sticky Note5",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            1712,
            -272
          ],
          "parameters": {
            "height": 240,
            "content": "🧩 **MERGE**\nCombines AI analysis\nwith training data and\nbudget information"
          },
          "typeVersion": 1
        },
        {
          "id": "217b46bc-5540-4a70-88cd-220cee1db83d",
          "name": "Sticky Note6",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            1952,
            -128
          ],
          "parameters": {
            "height": 240,
            "content": "✅ **APPROVAL ROUTING**\nRoutes to manager if needed\nor auto-approves based\non AI recommendation"
          },
          "typeVersion": 1
        },
        {
          "id": "9d253c9a-927c-49d6-be92-247956293121",
          "name": "Sticky Note7",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            2208,
            -160
          ],
          "parameters": {
            "width": 416,
            "height": 512,
            "content": "📧 **NOTIFICATIONS**\nSends comprehensive emails:\n• Manager (approval request)\n• Employee (confirmation)\n• Rejection (if not approved)"
          },
          "typeVersion": 1
        },
        {
          "id": "8bc5f928-08bc-4c1d-9d63-1adc186a79eb",
          "name": "Sticky Note8",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            2640,
            -128
          ],
          "parameters": {
            "height": 240,
            "content": "📊 **LOGGING**\nComplete training request\nhistory with AI insights\nfor analytics and reporting"
          },
          "typeVersion": 1
        },
        {
          "id": "bd9f4e47-74d5-4200-8b8f-00cf4d807e62",
          "name": "OpenAI Chat Model",
          "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
          "position": [
            1200,
            192
          ],
          "parameters": {
            "model": {
              "__rl": true,
              "mode": "list",
              "value": "gpt-4.1-mini"
            },
            "options": {}
          },
          "credentials": {
            "openAiApi": {
              "id": "credential-id",
              "name": "openAiApi Credential"
            }
          },
          "typeVersion": 1.2
        },
        {
          "id": "adf39cf1-4c03-4516-be90-d0db7d774019",
          "name": "Jotform Trigger",
          "type": "n8n-nodes-base.jotFormTrigger",
          "position": [
            432,
            0
          ],
          "webhookId": "training-request",
          "parameters": {
            "form": "252852702090453"
          },
          "credentials": {
            "jotFormApi": {
              "id": "credential-id",
              "name": "jotFormApi Credential"
            }
          },
          "typeVersion": 1
        }
      ],
      "pinData": {
        "Jotform Trigger": [
          {
            "Manager": "me",
            "urgency": "normal",
            "Position": "manager",
            "skillGap": "very much",
            "Department": "IT",
            "employee Id": "223",
            "Employee Name": {
              "last": "Singhal",
              "first": "Deepanshi"
            },
            "Manager Email": "Deep@gmail.com",
            "projectImpact": "yes",
            "trainingTopic": "sql",
            "Employee Email": "deepashirig@gmail.com",
            "preferredDates": "2025-11-10",
            "additionalNotes": "",
            "estimatedBudget": "100000",
            "preferredFormat": "in person",
            "trainingCategory": "it",
            "currentSkillLevel": "beginner",
            "desiredSkillLevel": "advanced",
            "numberOfAttendees": "50",
            "businessJustification": "yes"
          }
        ]
      },
      "connections": {
        "Jotform Trigger": {
          "main": [
            [
              {
                "node": "Parse Training Request",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "OpenAI Chat Model": {
          "ai_languageModel": [
            [
              {
                "node": "AI Training Analysis",
                "type": "ai_languageModel",
                "index": 0
              }
            ]
          ]
        },
        "Requires Approval?": {
          "main": [
            [
              {
                "node": "Send Manager Approval",
                "type": "main",
                "index": 0
              }
            ],
            [
              {
                "node": "Send Rejection Email",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Extract AI Analysis": {
          "main": [
            [
              {
                "node": "Merge Training Analysis",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "AI Training Analysis": {
          "main": [
            [
              {
                "node": "Extract AI Analysis",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Send Rejection Email": {
          "main": [
            [
              {
                "node": "Send Employee Confirmation",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Check Training Budget": {
          "main": [
            [
              {
                "node": "AI Training Analysis",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Send Manager Approval": {
          "main": [
            [
              {
                "node": "Send Employee Confirmation",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Parse Training Request": {
          "main": [
            [
              {
                "node": "Check Training Budget",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Merge Training Analysis": {
          "main": [
            [
              {
                "node": "Requires Approval?",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Send Employee Confirmation": {
          "main": [
            [
              {
                "node": "Log to Google Sheets",
                "type": "main",
                "index": 0
              }
            ]
          ]
        }
      }
    },
    "lastUpdatedBy": 29,
    "workflowInfo": {
      "nodeCount": 21,
      "nodeTypes": {
        "n8n-nodes-base.if": {
          "count": 1
        },
        "n8n-nodes-base.set": {
          "count": 1
        },
        "n8n-nodes-base.code": {
          "count": 3
        },
        "n8n-nodes-base.gmail": {
          "count": 3
        },
        "n8n-nodes-base.stickyNote": {
          "count": 9
        },
        "n8n-nodes-base.googleSheets": {
          "count": 1
        },
        "n8n-nodes-base.jotFormTrigger": {
          "count": 1
        },
        "@n8n/n8n-nodes-langchain.agent": {
          "count": 1
        },
        "@n8n/n8n-nodes-langchain.lmChatOpenAi": {
          "count": 1
        }
      }
    },
    "status": "published",
    "user": {
      "name": "Jitesh Dugar",
      "username": "jiteshdugar",
      "bio": "AI Automation Specialist - OpenAI, CRM & Automation Expert with a solid understanding of various tools that include Zapier, Make, Zoho CRM, Hubspot, Google Sheets, Airtable, Pipedrive, Google Analytics, and more.",
      "verified": true,
      "links": [
        "https://www.linkedin.com/in/jiteshdugar"
      ],
      "avatar": "https://gravatar.com/avatar/edaa3abb99806b0586dced559d0a5417f24a507e7c4464a63960f0638a4b1b90?r=pg&d=retro&size=200"
    },
    "nodes": [
      {
        "id": 18,
        "icon": "file:googleSheets.svg",
        "name": "n8n-nodes-base.googleSheets",
        "codex": {
          "data": {
            "alias": [
              "CSV",
              "Sheet",
              "Spreadsheet",
              "GS"
            ],
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/love-at-first-sight-ricardos-n8n-journey/",
                  "icon": "❤️",
                  "label": "Love at first sight: Ricardo’s n8n journey"
                },
                {
                  "url": "https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/",
                  "icon": "🧬",
                  "label": "Why business process automation with n8n can change your daily life"
                },
                {
                  "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/supercharging-your-conference-registration-process-with-n8n/",
                  "icon": "🎫",
                  "label": "Supercharging your conference registration process with n8n"
                },
                {
                  "url": "https://n8n.io/blog/creating-triggers-for-n8n-workflows-using-polling/",
                  "icon": "⏲",
                  "label": "Creating triggers for n8n workflows using polling"
                },
                {
                  "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/migrating-community-metrics-to-orbit-using-n8n/",
                  "icon": "📈",
                  "label": "Migrating Community Metrics to Orbit using n8n"
                },
                {
                  "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/your-business-doesnt-need-you-to-operate/",
                  "icon": " 🖥️",
                  "label": "Hey founders! Your business doesn't need you to operate"
                },
                {
                  "url": "https://n8n.io/blog/how-honest-burgers-use-automation-to-save-100k-per-year/",
                  "icon": "🍔",
                  "label": "How Honest Burgers Use Automation to Save $100k per year"
                },
                {
                  "url": "https://n8n.io/blog/how-a-digital-strategist-uses-n8n-for-online-marketing/",
                  "icon": "💻",
                  "label": "How a digital strategist uses n8n for online marketing"
                },
                {
                  "url": "https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/",
                  "icon": "🧠",
                  "label": "Why this Product Manager loves workflow automation with n8n"
                },
                {
                  "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/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/aws-workflow-automation/",
                  "label": "7 no-code workflow automations for Amazon Web Services"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googlesheets/"
                }
              ],
              "credentialDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"
                }
              ]
            },
            "categories": [
              "Data & Storage",
              "Productivity"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0"
          }
        },
        "group": "[\"input\",\"output\"]",
        "defaults": {
          "name": "Google Sheets"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNS42OSAxIDUyIDE3LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0OC4yOTMgNjBIMTIuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDkgNTYuMzEyVjQuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTIuNzA3IDF6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM1LjY5IDEgNTIgMTcuMjI1SDM5LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzkuMjExIDE3LjIyNSA1MiAyMi40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTIwLjEyIDMxLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMS42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzEuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNC42OSAwIDUxIDE2LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0Ny4yOTMgNTlIMTEuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDggNTUuMzEyVjMuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTEuNzA3IDB6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM0LjY5IDAgNTEgMTYuMjI1SDM4LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzguMjExIDE2LjIyNSA1MSAyMS40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTE5LjEyIDMwLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMC42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzAuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjwvZz48L3N2Zz4="
        },
        "displayName": "Google Sheets",
        "typeVersion": 5,
        "nodeCategories": [
          {
            "id": 3,
            "name": "Data & Storage"
          },
          {
            "id": 4,
            "name": "Productivity"
          }
        ]
      },
      {
        "id": 20,
        "icon": "fa:map-signs",
        "name": "n8n-nodes-base.if",
        "codex": {
          "data": {
            "alias": [
              "Router",
              "Filter",
              "Condition",
              "Logic",
              "Boolean",
              "Branch"
            ],
            "details": "The IF node can be used to implement binary conditional logic in your workflow. You can set up one-to-many conditions to evaluate each item of data being inputted into the node. That data will either evaluate to TRUE or FALSE and route out of the node accordingly.\n\nThis node has multiple types of conditions: Bool, String, Number, and Date & Time.",
            "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/why-business-process-automation-with-n8n-can-change-your-daily-life/",
                  "icon": "🧬",
                  "label": "Why business process automation with n8n can change your daily life"
                },
                {
                  "url": "https://n8n.io/blog/create-a-toxic-language-detector-for-telegram/",
                  "icon": "🤬",
                  "label": "Create a toxic language detector for Telegram in 4 step"
                },
                {
                  "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/automation-for-maintainers-of-open-source-projects/",
                  "icon": "🏷️",
                  "label": "How to automatically manage contributions to open-source projects"
                },
                {
                  "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/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/why-this-product-manager-loves-workflow-automation-with-n8n/",
                  "icon": "🧠",
                  "label": "Why this Product Manager loves workflow automation with n8n"
                },
                {
                  "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/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/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.if/"
                }
              ]
            },
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Flow"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "If",
          "color": "#408000"
        },
        "iconData": {
          "icon": "map-signs",
          "type": "icon"
        },
        "displayName": "If",
        "typeVersion": 2,
        "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": 227,
        "icon": "file:jotform.svg",
        "name": "n8n-nodes-base.jotFormTrigger",
        "codex": {
          "data": {
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.jotformtrigger/"
                }
              ],
              "credentialDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/credentials/jotform/"
                }
              ]
            },
            "categories": [
              "Communication"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0"
          }
        },
        "group": "[\"trigger\"]",
        "defaults": {
          "name": "Jotform Trigger"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCAyNSAyOCI+PHBhdGggaWQ9ImpvdGZvcm0tbG9nb21hcmstZmlyc3QiIGZpbGw9IiNGRjYxMDAiIGQ9Ik0xOS4yOTQgMy45MzRhMy4zNDEgMy4zNDEgMCAwIDEgNC43MjcgMCAzLjM0NCAzLjM0NCAwIDAgMSAwIDQuNzI4bC0xMS44MTcgMTEuODJhMy4zNDEgMy4zNDEgMCAwIDEtNC43MjYgMCAzLjM0NCAzLjM0NCAwIDAgMSAwLTQuNzI3bDExLjgxNi0xMS44MloiPjwvcGF0aD48cGF0aCBpZD0iam90Zm9ybS1sb2dvbWFyay1zZWNvbmQiIGZpbGw9IiMwMDk5RkYiIGQ9Ik05LjI1Ljk4YTMuMzQ0IDMuMzQ0IDAgMCAxIDQuNzI3IDQuNzI4bC04LjI3MSA4LjI3NGEzLjM0MiAzLjM0MiAwIDAgMS00LjcyNyAwIDMuMzQ0IDMuMzQ0IDAgMCAxIDAtNC43MjlMOS4yNS45OFoiPjwvcGF0aD48cGF0aCBpZD0iam90Zm9ybS1sb2dvbWFyay10aGlyZCIgZmlsbD0iI0ZGQjYyOSIgZD0iTTE4LjcwNCAxNy41MjdhMy4zNDQgMy4zNDQgMCAwIDEgNC43MjYgNC43MjhsLTQuNzI2IDQuNzI5YTMuMzQyIDMuMzQyIDAgMSAxLTQuNzI3LTQuNzI4bDQuNzI3LTQuNzI5WiI+PC9wYXRoPjxwYXRoIGlkPSJqb3Rmb3JtLWxvZ29tYXJrLWZvdXJ0aCIgZmlsbD0iIzBBMTU1MSIgZD0iTTEuNjcxIDI4aDQuNjY3Yy43NDUgMCAxLjExOC0uOS41OTEtMS40MjdMMS40MjYgMjEuMDdDLjkgMjAuNTQyIDAgMjAuOTE1IDAgMjEuNjU5djQuNjdDMCAyNy4yNTEuNzQ4IDI4IDEuNjcxIDI4WiI+PC9wYXRoPjwvc3ZnPg=="
        },
        "displayName": "Jotform Trigger",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 6,
            "name": "Communication"
          }
        ]
      },
      {
        "id": 356,
        "icon": "file:gmail.svg",
        "name": "n8n-nodes-base.gmail",
        "codex": {
          "data": {
            "alias": [
              "email",
              "human",
              "form",
              "wait",
              "hitl",
              "approval"
            ],
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/",
                  "icon": "🧬",
                  "label": "Why business process automation with n8n can change your daily life"
                },
                {
                  "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/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-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/automate-google-apps-for-productivity/",
                  "icon": "💡",
                  "label": "15 Google apps you can combine and automate to increase productivity"
                },
                {
                  "url": "https://n8n.io/blog/your-business-doesnt-need-you-to-operate/",
                  "icon": " 🖥️",
                  "label": "Hey founders! Your business doesn't need you to operate"
                },
                {
                  "url": "https://n8n.io/blog/using-automation-to-boost-productivity-in-the-workplace/",
                  "icon": "💪",
                  "label": "Using Automation to Boost Productivity in the Workplace"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.gmail/"
                }
              ],
              "credentialDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"
                }
              ]
            },
            "categories": [
              "Communication",
              "HITL"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "HITL": [
                "Human in the Loop"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "Gmail"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNTYiIGhlaWdodD0iMTkzIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+PHBhdGggZmlsbD0iIzQyODVGNCIgZD0iTTU4LjE4MiAxOTIuMDVWOTMuMTRMMjcuNTA3IDY1LjA3NyAwIDQ5LjUwNHYxMjUuMDkxYzAgOS42NTggNy44MjUgMTcuNDU1IDE3LjQ1NSAxNy40NTV6Ii8+PHBhdGggZmlsbD0iIzM0QTg1MyIgZD0iTTE5Ny44MTggMTkyLjA1aDQwLjcyN2M5LjY1OSAwIDE3LjQ1NS03LjgyNiAxNy40NTUtMTcuNDU1VjQ5LjUwNWwtMzEuMTU2IDE3LjgzNy0yNy4wMjYgMjUuNzk4eiIvPjxwYXRoIGZpbGw9IiNFQTQzMzUiIGQ9Im01OC4xODIgOTMuMTQtNC4xNzQtMzguNjQ3IDQuMTc0LTM2Ljk4OUwxMjggNjkuODY4bDY5LjgxOC01Mi4zNjQgNC42NyAzNC45OTItNC42NyA0MC42NDRMMTI4IDE0NS41MDR6Ii8+PHBhdGggZmlsbD0iI0ZCQkMwNCIgZD0iTTE5Ny44MTggMTcuNTA0VjkzLjE0TDI1NiA0OS41MDRWMjYuMjMxYzAtMjEuNTg1LTI0LjY0LTMzLjg5LTQxLjg5LTIwLjk0NXoiLz48cGF0aCBmaWxsPSIjQzUyMjFGIiBkPSJtMCA0OS41MDQgMjYuNzU5IDIwLjA3TDU4LjE4MiA5My4xNFYxNy41MDRMNDEuODkgNS4yODZDMjQuNjEtNy42NiAwIDQuNjQ2IDAgMjYuMjN6Ii8+PC9zdmc+"
        },
        "displayName": "Gmail",
        "typeVersion": 2,
        "nodeCategories": [
          {
            "id": 6,
            "name": "Communication"
          },
          {
            "id": 28,
            "name": "HITL"
          }
        ]
      },
      {
        "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": 834,
        "icon": "file:code.svg",
        "name": "n8n-nodes-base.code",
        "codex": {
          "data": {
            "alias": [
              "cpde",
              "Javascript",
              "JS",
              "Python",
              "Script",
              "Custom Code",
              "Function"
            ],
            "details": "The Code node allows you to execute JavaScript in your workflow.",
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/"
                }
              ]
            },
            "categories": [
              "Development",
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Helpers",
                "Data Transformation"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "Code"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTcxXzQ0MSkiPgo8cGF0aCBkPSJNMTcwLjI4MyA0OEgxOTYuNUMyMDMuMTI3IDQ4IDIwOC41IDQyLjYyNzQgMjA4LjUgMzZWMTJDMjA4LjUgNS4zNzI1OCAyMDMuMTI3IDAgMTk2LjUgMEgxNzAuMjgzQzEyNi4xIDAgOTAuMjgzIDM1LjgxNzIgOTAuMjgzIDgwVjE3NkM5MC4yODMgMjA2LjkyOCA2NS4yMTA5IDIzMiAzNC4yODMgMjMySDIzQzE2LjM3MjYgMjMyIDExIDIzNy4zNzIgMTEgMjQ0VjI2OEMxMSAyNzQuNjI3IDE2LjM3MjQgMjgwIDIyLjk5OTYgMjgwTDM0LjI4MyAyODBDNjUuMjEwOSAyODAgOTAuMjgzIDMwNS4wNzIgOTAuMjgzIDMzNlY0NDBDOTAuMjgzIDQ3OS43NjQgMTIyLjUxOCA1MTIgMTYyLjI4MyA1MTJIMTk2LjVDMjAzLjEyNyA1MTIgMjA4LjUgNTA2LjYyNyAyMDguNSA1MDBWNDc2QzIwOC41IDQ2OS4zNzMgMjAzLjEyNyA0NjQgMTk2LjUgNDY0SDE2Mi4yODNDMTQ5LjAyOCA0NjQgMTM4LjI4MyA0NTMuMjU1IDEzOC4yODMgNDQwVjMzNkMxMzguMjgzIDMwOS4wMjIgMTI4LjAxMSAyODQuNDQzIDExMS4xNjQgMjY1Ljk2MUMxMDYuMTA5IDI2MC40MTYgMTA2LjEwOSAyNTEuNTg0IDExMS4xNjQgMjQ2LjAzOUMxMjguMDExIDIyNy41NTcgMTM4LjI4MyAyMDIuOTc4IDEzOC4yODMgMTc2VjgwQzEzOC4yODMgNjIuMzI2OSAxNTIuNjEgNDggMTcwLjI4MyA0OFoiIGZpbGw9IiNGRjk5MjIiLz4KPHBhdGggZD0iTTMwNSAzNkMzMDUgNDIuNjI3NCAzMTAuMzczIDQ4IDMxNyA0OEgzNDIuOTc5QzM2MC42NTIgNDggMzc0Ljk3OCA2Mi4zMjY5IDM3NC45NzggODBWMTc2QzM3NC45NzggMjAyLjk3OCAzODUuMjUxIDIyNy41NTcgNDAyLjA5OCAyNDYuMDM5QzQwNy4xNTMgMjUxLjU4NCA0MDcuMTUzIDI2MC40MTYgNDAyLjA5OCAyNjUuOTYxQzM4NS4yNTEgMjg0LjQ0MyAzNzQuOTc4IDMwOS4wMjIgMzc0Ljk3OCAzMzZWNDMyQzM3NC45NzggNDQ5LjY3MyAzNjAuNjUyIDQ2NCAzNDIuOTc5IDQ2NEgzMTdDMzEwLjM3MyA0NjQgMzA1IDQ2OS4zNzMgMzA1IDQ3NlY1MDBDMzA1IDUwNi42MjcgMzEwLjM3MyA1MTIgMzE3IDUxMkgzNDIuOTc5QzM4Ny4xNjEgNTEyIDQyMi45NzggNDc2LjE4MyA0MjIuOTc4IDQzMlYzMzZDNDIyLjk3OCAzMDUuMDcyIDQ0OC4wNTEgMjgwIDQ3OC45NzkgMjgwSDQ5MEM0OTYuNjI3IDI4MCA1MDIgMjc0LjYyOCA1MDIgMjY4VjI0NEM1MDIgMjM3LjM3MyA0OTYuNjI4IDIzMiA0OTAgMjMyTDQ3OC45NzkgMjMyQzQ0OC4wNTEgMjMyIDQyMi45NzggMjA2LjkyOCA0MjIuOTc4IDE3NlY4MEM0MjIuOTc4IDM1LjgxNzIgMzg3LjE2MSAwIDM0Mi45NzkgMEgzMTdDMzEwLjM3MyAwIDMwNSA1LjM3MjU4IDMwNSAxMlYzNloiIGZpbGw9IiNGRjk5MjIiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTcxXzQ0MSI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="
        },
        "displayName": "Code",
        "typeVersion": 2,
        "nodeCategories": [
          {
            "id": 5,
            "name": "Development"
          },
          {
            "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": 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"
          }
        ]
      }
    ],
    "categories": [
      {
        "id": 17,
        "name": "HR"
      },
      {
        "id": 47,
        "name": "AI Chatbot"
      }
    ],
    "image": []
  }
}