
University Application Evaluation & Scholarship Automation with GPT-4 & JotForm
Description
Categories
⚙️ Automation
Nodes Used
n8n-nodes-base.ifn8n-nodes-base.ifn8n-nodes-base.setn8n-nodes-base.coden8n-nodes-base.gmailn8n-nodes-base.gmailn8n-nodes-base.gmailn8n-nodes-base.gmailn8n-nodes-base.stickyNoten8n-nodes-base.stickyNote
PriceKostenlos
Views0
Last Updated11/28/2025
workflow.json
{
"meta": {
"instanceId": "277842713620d9f5554de3b1518b865a152c8c4db680008bd8aec536fc18b4a8",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "eeb30437-f977-4fe7-9d93-7b9452c813b3",
"name": "JotForm Application",
"type": "n8n-nodes-base.jotFormTrigger",
"position": [
-944,
304
],
"webhookId": "university-app-001",
"parameters": {
"form": "252853345242456"
},
"credentials": {
"jotFormApi": {
"id": "W7O1b225FpOwkwDT",
"name": "JotForm account-Deepanshi"
}
},
"typeVersion": 1
},
{
"id": "1b3e27e1-2217-4f2a-8b88-1e8bf29b90d3",
"name": "Extract Application Data",
"type": "n8n-nodes-base.set",
"position": [
-688,
304
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "student_name",
"name": "student_name",
"type": "string",
"value": "={{ $json.Name }}"
},
{
"id": "student_email",
"name": "student_email",
"type": "string",
"value": "={{ $json['E-mail'] }}"
},
{
"id": "phone",
"name": "phone",
"type": "string",
"value": "={{ $json['Phone Number'].full }}"
},
{
"id": "gpa",
"name": "gpa",
"type": "number",
"value": "={{ $json.GPA }}"
},
{
"id": "sat_score",
"name": "sat_score",
"type": "number",
"value": "={{ $json['SAT Score'] }}"
},
{
"id": "intended_major",
"name": "intended_major",
"type": "string",
"value": "={{ $json.Major }}"
},
{
"id": "extracurriculars",
"name": "extracurriculars",
"type": "string",
"value": "={{ $json.Extracurriculars }}"
},
{
"id": "essay",
"name": "essay",
"type": "string",
"value": "={{ $json.Essay }}"
},
{
"id": "application_id",
"name": "application_id",
"type": "string",
"value": "=APP-{{ Date.now() }}-{{ Math.random().toString(36).substr(2, 8).toUpperCase() }}"
},
{
"id": "submission_date",
"name": "submission_date",
"type": "string",
"value": "={{ new Date().toISOString() }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "d764d655-ab9d-465e-b61d-d5e34df9338c",
"name": "Parse AI Evaluation",
"type": "n8n-nodes-base.code",
"position": [
-160,
304
],
"parameters": {
"jsCode": "const item = $input.first().json;\n\ntry {\n const response = item.choices[0].message.content;\n let cleanJson = response.replace(/```json\\n?|```\\n?/g, '').trim();\n const jsonMatch = cleanJson.match(/\\{[\\s\\S]*\\}/);\n if (jsonMatch) {\n cleanJson = jsonMatch[0];\n }\n const evaluationData = JSON.parse(cleanJson);\n const originalData = $('Extract Application Data').first().json;\n return [{\n json: {\n ...originalData,\n ...evaluationData\n }\n }];\n} catch (error) {\n const originalData = $('Extract Application Data').first().json;\n const gpa = parseFloat(originalData.gpa) || 0;\n const satScore = parseInt(originalData.sat_score) || 0;\n let score = 0;\n if (gpa >= 3.8) score += 40;\n else if (gpa >= 3.5) score += 30;\n else if (gpa >= 3.0) score += 20;\n else score += 10;\n if (satScore >= 1400) score += 40;\n else if (satScore >= 1200) score += 30;\n else if (satScore >= 1000) score += 20;\n else score += 10;\n score += 20;\n let decision = 'reject';\n if (score >= 90) decision = 'auto_accept';\n else if (score >= 70) decision = 'interview_required';\n return [{\n json: {\n ...originalData,\n eligibility_score: score,\n decision_category: decision,\n academic_strength: gpa >= 3.5 ? 'strong' : 'average',\n scholarship_eligible: score >= 85,\n estimated_scholarship: score >= 85 ? 10000 : 0,\n admission_likelihood: score >= 80 ? 'high' : score >= 60 ? 'medium' : 'low'\n }\n }];\n}"
},
"typeVersion": 2
},
{
"id": "6ea97b97-2016-48c3-98d3-fdf6eef9a95b",
"name": "Auto Accept?",
"type": "n8n-nodes-base.if",
"position": [
48,
240
],
"parameters": {
"options": {},
"conditions": {
"options": {
"caseSensitive": true
},
"conditions": [
{
"id": "auto-accept",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.decision_category }}",
"rightValue": "auto_accept"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "3bdac661-48b1-4f68-87d6-818432004d6d",
"name": "Interview Required?",
"type": "n8n-nodes-base.if",
"position": [
48,
608
],
"parameters": {
"options": {},
"conditions": {
"options": {
"caseSensitive": true
},
"conditions": [
{
"id": "interview-check",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.decision_category }}",
"rightValue": "interview_required"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "162f6466-64d0-44a1-8bf9-f4440a41a1ee",
"name": "Send Acceptance Letter",
"type": "n8n-nodes-base.gmail",
"position": [
288,
80
],
"webhookId": "acceptance-email-001",
"parameters": {
"sendTo": "={{ $json.student_email }}",
"message": "=<!DOCTYPE html>\n<html>\n<body style=\"font-family:Arial;padding:20px;max-width:650px\">\n<div style=\"background:#2E7D32;color:white;padding:30px;text-align:center\">\n<h1>CONGRATULATIONS!</h1>\n<p style=\"font-size:18px\">You've Been Accepted!</p>\n</div>\n<div style=\"padding:30px;border:3px solid #2E7D32\">\n<p>Dear {{ $json.student_name }},</p>\n<p>We are thrilled to inform you that you have been <strong>accepted</strong> to our university for the {{ $json.intended_major }} program!</p>\n<div style=\"background:#E8F5E9;padding:20px;border-radius:8px;margin:20px 0\">\n<h3 style=\"margin-top:0\">Your Academic Profile</h3>\n<p><strong>Eligibility Score:</strong> {{ $json.eligibility_score }}/100<br>\n<strong>Academic Strength:</strong> {{ $json.academic_strength }}</p>\n</div>\n{{ $json.scholarship_eligible ? '<div style=\"background:#FFF3E0;padding:20px;border-radius:8px;margin:20px 0\"><h3 style=\"margin-top:0\">Scholarship Award</h3><p>You are eligible for a merit scholarship of $' + $json.estimated_scholarship + ' per year!</p></div>' : '' }}\n<h3>Next Steps:</h3>\n<ol>\n<li>Accept Your Offer by [deadline]</li>\n<li>Housing Application</li>\n<li>Course Registration</li>\n<li>Orientation Details</li>\n</ol>\n<p><strong>Application ID:</strong> {{ $json.application_id }}</p>\n<p>We look forward to welcoming you!</p>\n<p>Sincerely,<br><strong>Office of Admissions</strong></p>\n</div>\n</body>\n</html>",
"options": {},
"subject": "=Congratulations! Acceptance to Our University"
},
"credentials": {
"gmailOAuth2": {
"id": "PIMDNhXNj8Zyiz3G",
"name": "Gmail account - Deepanshi"
}
},
"typeVersion": 2.1
},
{
"id": "52560021-6b9a-4e3c-a964-b62de318b651",
"name": "Send Interview Invitation",
"type": "n8n-nodes-base.gmail",
"position": [
288,
400
],
"webhookId": "interview-email-001",
"parameters": {
"sendTo": "={{ $json.student_email }}",
"message": "=<!DOCTYPE html>\n<html>\n<body style=\"font-family:Arial;padding:20px;max-width:650px\">\n<div style=\"background:#1976D2;color:white;padding:25px;text-align:center\">\n<h2>Interview Invitation</h2>\n</div>\n<div style=\"padding:30px\">\n<p>Dear {{ $json.student_name }},</p>\n<p>Thank you for your application. We would like to invite you for an <strong>admissions interview</strong>.</p>\n<div style=\"background:#E3F2FD;padding:20px;border-radius:8px;margin:20px 0\">\n<h3 style=\"margin-top:0\">Your Application Status</h3>\n<p><strong>Eligibility Score:</strong> {{ $json.eligibility_score }}/100<br>\n<strong>Program:</strong> {{ $json.intended_major }}</p>\n</div>\n<h3>Schedule Your Interview:</h3>\n<p>Visit: interviews.university.edu<br>\n<strong>Code:</strong> {{ $json.application_id }}</p>\n<p><strong>Application ID:</strong> {{ $json.application_id }}</p>\n<p>We look forward to meeting you!</p>\n<p>Best regards,<br><strong>Admissions Committee</strong></p>\n</div>\n</body>\n</html>",
"options": {},
"subject": "=Interview Invitation - University Admissions"
},
"credentials": {
"gmailOAuth2": {
"id": "PIMDNhXNj8Zyiz3G",
"name": "Gmail account - Deepanshi"
}
},
"typeVersion": 2.1
},
{
"id": "001d3463-0cc7-40b1-a8f8-0c5f3955cc03",
"name": "Send Rejection Letter",
"type": "n8n-nodes-base.gmail",
"position": [
288,
768
],
"webhookId": "rejection-email-001",
"parameters": {
"sendTo": "={{ $json.student_email }}",
"message": "=<!DOCTYPE html>\n<html>\n<body style=\"font-family:Arial;padding:20px;max-width:650px\">\n<div style=\"background:#757575;color:white;padding:25px;text-align:center\">\n<h2>Application Update</h2>\n</div>\n<div style=\"padding:30px\">\n<p>Dear {{ $json.student_name }},</p>\n<p>Thank you for your interest in our university. After careful review, we are unable to offer you admission at this time.</p>\n<div style=\"background:#F5F5F5;padding:20px;border-radius:8px;margin:20px 0\">\n<p><strong>Application ID:</strong> {{ $json.application_id }}</p>\n</div>\n<h3>Moving Forward:</h3>\n<ul>\n<li>You're welcome to reapply next year</li>\n<li>Consider transfer options</li>\n<li>Explore other programs</li>\n</ul>\n<p>We wish you the best in your educational journey.</p>\n<p>Sincerely,<br><strong>Office of Admissions</strong></p>\n</div>\n</body>\n</html>",
"options": {},
"subject": "=Update on Your University Application"
},
"credentials": {
"gmailOAuth2": {
"id": "PIMDNhXNj8Zyiz3G",
"name": "Gmail account - Deepanshi"
}
},
"typeVersion": 2.1
},
{
"id": "6e6ade6a-90fd-4007-b613-e816495a9090",
"name": "Alert Admissions Team",
"type": "n8n-nodes-base.gmail",
"position": [
528,
240
],
"webhookId": "admissions-alert-001",
"parameters": {
"sendTo": "[email protected]",
"message": "=<!DOCTYPE html>\n<html>\n<body style=\"font-family:Arial;padding:20px\">\n<h2>Exceptional Applicant Alert</h2>\n<p><strong>Student:</strong> {{ $json.student_name }}<br>\n<strong>Major:</strong> {{ $json.intended_major }}<br>\n<strong>GPA:</strong> {{ $json.gpa }}<br>\n<strong>SAT:</strong> {{ $json.sat_score }}</p>\n<h3>Evaluation:</h3>\n<p><strong>Score:</strong> {{ $json.eligibility_score }}/100<br>\n<strong>Decision:</strong> {{ $json.decision_category }}<br>\n<strong>Scholarship:</strong> {{ $json.scholarship_eligible ? 'Yes - $' + $json.estimated_scholarship : 'No' }}</p>\n<p><strong>Application ID:</strong> {{ $json.application_id }}</p>\n</body>\n</html>",
"options": {},
"subject": "=High-Score Application: {{ $json.student_name }}"
},
"credentials": {
"gmailOAuth2": {
"id": "PIMDNhXNj8Zyiz3G",
"name": "Gmail account - Deepanshi"
}
},
"typeVersion": 2.1
},
{
"id": "6d0d22f8-bf61-45bd-a360-4df7fa0aa9ac",
"name": "Log to Database",
"type": "n8n-nodes-base.googleSheets",
"position": [
768,
240
],
"parameters": {
"columns": {
"value": {
"id": "={{ $json.id }}",
"GPA": "={{ $('Extract Application Data').item.json.gpa }}",
"Name": "={{ $('Extract Application Data').item.json.student_name }}",
"Essay": "={{ $('Extract Application Data').item.json.essay }}",
"Major": "={{ $('Extract Application Data').item.json.intended_major }}",
"E-mail": "={{ $('Extract Application Data').item.json.student_email }}",
"SAT Score": "={{ $('Extract Application Data').item.json.sat_score }}",
"Phone Number": "={{ $('Extract Application Data').item.json.phone }}",
"Extracurriculars": "={{ $('Extract Application Data').item.json.extracurriculars }}"
},
"schema": [
{
"id": "Name",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "E-mail",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "E-mail",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Phone Number",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Phone Number",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "GPA",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "GPA",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "SAT Score",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "SAT Score",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Major",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Major",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Essay",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Essay",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Extracurriculars",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Extracurriculars",
"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,
"removed": true,
"required": false,
"displayName": "threadId",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "labelIds",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "labelIds",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"id"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1RLedvjitdtKOuYfH7d2Z0Plwpn935fYobFb5jxQIc_M/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1RLedvjitdtKOuYfH7d2Z0Plwpn935fYobFb5jxQIc_M",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1RLedvjitdtKOuYfH7d2Z0Plwpn935fYobFb5jxQIc_M/edit?usp=drivesdk",
"cachedResultName": "Student"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "Kz2DdSp11rxqwlFt",
"name": "Google Sheets account - Deepanshi"
}
},
"typeVersion": 4.5
},
{
"id": "85692260-3391-4ab4-b579-192f6527f582",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1008,
80
],
"parameters": {
"color": 5,
"width": 460,
"height": 424,
"content": "## 📝 Application Form\n- **JotForm** trigger receives application.\nCreate your form for free on [JotForm using this link](https://www.jotform.com/?partner=mediajade)\nCaptures:\n• Student info\n• GPA & test scores\n• Essay\n• Major choice"
},
"typeVersion": 1
},
{
"id": "ab6084fb-7d02-45ac-857b-684d3ccc7d79",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-512,
-16
],
"parameters": {
"color": 6,
"width": 320,
"height": 692,
"content": "## 🤖 AI Evaluation\n\nScores:\n• Academic merit\n• Scholarship\n• Decision\n\nCategories:\n• Auto-accept (95+)\n• Interview (70-94)\n• Reject (<70)"
},
"typeVersion": 1
},
{
"id": "9de9ba70-ab72-45c7-b3f8-8782c134a899",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-32,
0
],
"parameters": {
"color": 3,
"width": 520,
"height": 240,
"content": "## 📧 Smart Routing\n\n**Accept:** Letter + scholarship\n**Interview:** Invitation\n**Reject:** Polite letter\n\n**All:** Alert team + database"
},
"typeVersion": 1
},
{
"id": "84194334-69a4-4c58-b802-c34346ddacf2",
"name": "AI Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-480,
304
],
"parameters": {
"text": "You are an expert university admissions officer with 15+ years of experience evaluating student applications for competitive undergraduate programs.\n\nYour role is to conduct thorough, fair, and holistic evaluations of student applications, considering academic merit, extracurricular achievements, personal qualities, and potential for success.\n\nEVALUATION CRITERIA:\n1. Academic Performance (40% weight)\n - GPA: 3.8+ excellent, 3.5-3.7 strong, 3.0-3.4 average, <3.0 needs improvement\n - Test Scores: SAT 1400+ or ACT 32+ excellent, 1200-1399 or 28-31 strong, 1000-1199 or 24-27 average\n - Course rigor and AP/IB classes\n \n2. Extracurricular Activities (25% weight)\n - Leadership positions and impact\n - Depth vs breadth of involvement\n - Community service and civic engagement\n - Awards and recognitions\n \n3. Essay Quality (20% weight)\n - Authenticity and personal voice\n - Writing quality and clarity\n - Insight and self-reflection\n - Alignment with institutional values\n \n4. Fit and Potential (15% weight)\n - Alignment with intended major\n - Demonstrated passion and curiosity\n - Unique perspectives or experiences\n - Potential for campus contribution\n\nDECISION CATEGORIES:\n- \"auto_accept\": Score 95-100 - Exceptional candidates with outstanding academics, leadership, and fit\n- \"interview_required\": Score 70-94 - Strong candidates who need additional evaluation\n- \"waitlist\": Score 50-69 - Qualified but not competitive in current pool\n- \"reject\": Score <50 - Does not meet minimum standards\n\nSCHOLARSHIP ELIGIBILITY:\n- $20,000+/year: Score 98-100 (Presidential Scholar)\n- $15,000-19,999/year: Score 95-97 (Dean's Scholar)\n- $10,000-14,999/year: Score 90-94 (Merit Scholar)\n- $5,000-9,999/year: Score 85-89 (Achievement Award)\n- $0: Score <85\n\nOUTPUT REQUIREMENTS:\n- Return ONLY valid JSON format\n- No markdown code blocks (no ```)\n- No explanatory text outside JSON\n- Be specific and evidence-based in assessments\n- Consider diversity, equity, and inclusion\n- Identify both strengths and areas for growth\n- Provide actionable interview focus areas\n- Recommend alternative programs if applicable\n\nSCORING PHILOSOPHY:\n- Be consistent and calibrated across applications\n- Consider context (school quality, opportunities available)\n- Value authentic engagement over resume padding\n- Recognize different paths to excellence\n- Balance quantitative metrics with qualitative factors\n\nETHICAL GUIDELINES:\n- Evaluate fairly without bias based on demographics\n- Consider socioeconomic context and access to resources\n- Value diverse experiences and perspectives\n- Focus on potential, not just past achievements\n- Maintain high standards while being inclusive\n\nYour evaluations directly impact students' futures. Be thorough, fair, and thoughtful in every assessment.",
"options": {},
"promptType": "define"
},
"typeVersion": 2.2
},
{
"id": "68045bd2-5f68-4b1e-a1e8-0df093140e3a",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
-480,
480
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"id": "8IkhtT3EbXygnvcr",
"name": "Klinsman OpenAI"
}
},
"typeVersion": 1.2
}
],
"pinData": {
"JotForm Application": [
{
"GPA": "9.9",
"Name": "Deepanshi Singhal",
"Essay": "no",
"Major": "Marketing",
"E-mail": "[email protected]",
"SAT Score": "99",
"Phone Number": {
"full": "(778) 596-9569"
},
"Extracurriculars": "british council"
}
]
},
"connections": {
"AI Agent": {
"main": [
[
{
"node": "Parse AI Evaluation",
"type": "main",
"index": 0
}
]
]
},
"Auto Accept?": {
"main": [
[
{
"node": "Send Acceptance Letter",
"type": "main",
"index": 0
}
],
[
{
"node": "Send Rejection Letter",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Interview Required?": {
"main": [
[
{
"node": "Send Interview Invitation",
"type": "main",
"index": 0
}
]
]
},
"JotForm Application": {
"main": [
[
{
"node": "Extract Application Data",
"type": "main",
"index": 0
}
]
]
},
"Parse AI Evaluation": {
"main": [
[
{
"node": "Auto Accept?",
"type": "main",
"index": 0
},
{
"node": "Interview Required?",
"type": "main",
"index": 0
}
]
]
},
"Alert Admissions Team": {
"main": [
[
{
"node": "Log to Database",
"type": "main",
"index": 0
}
]
]
},
"Send Rejection Letter": {
"main": [
[
{
"node": "Log to Database",
"type": "main",
"index": 0
}
]
]
},
"Send Acceptance Letter": {
"main": [
[
{
"node": "Alert Admissions Team",
"type": "main",
"index": 0
}
]
]
},
"Extract Application Data": {
"main": [
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
},
"Send Interview Invitation": {
"main": [
[
{
"node": "Alert Admissions Team",
"type": "main",
"index": 0
}
]
]
}
}
}