This workflow corresponds to n8n.io template #10626 — we link there as the canonical source.
This workflow follows the Agent → Emailsend recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"id": "dfKZfBTRshRdGNim",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "GPT-4o-Mini-Powered University Admission Finder with Eligibility Matching",
"tags": [],
"nodes": [
{
"id": "0c9f9f20-1d1c-417f-9763-8307be9eb953",
"name": "Webhook",
"type": "n8n-nodes-base.webhook",
"position": [
1024,
512
],
"parameters": {
"path": "university-eligibility",
"options": {},
"httpMethod": "POST"
},
"typeVersion": 2
},
{
"id": "e2b80453-bdee-4d14-859e-cab2865d0a6f",
"name": "Scrape NUS Requirements",
"type": "n8n-nodes-base.httpRequest",
"position": [
1248,
128
],
"parameters": {
"url": "https://www.nus.edu.sg/oam/apply-to-nus/A-levels-admissions-requirements",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "8a5891dd-74cc-4c87-b7fc-fba01c527d37",
"name": "Scrape NTU Requirements",
"type": "n8n-nodes-base.httpRequest",
"position": [
1248,
320
],
"parameters": {
"url": "https://www.ntu.edu.sg/admissions/undergraduate/admission-requirements",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "b1de2511-0ce5-4a12-8611-91705d1f1a4c",
"name": "Scrape SIT Requirements",
"type": "n8n-nodes-base.httpRequest",
"position": [
1248,
512
],
"parameters": {
"url": "https://www.singaporetech.edu.sg/admissions/undergraduate/local-applicants",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "ca0d0ea3-5b59-4c1f-ac46-adf2167b6bc5",
"name": "Scrape SUTD Requirements",
"type": "n8n-nodes-base.httpRequest",
"position": [
1248,
704
],
"parameters": {
"url": "https://www.sutd.edu.YOUR_AWS_SECRET_KEY_HERE",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "5b3e0e96-75df-4d5b-ba6d-bb2b2f83ef5d",
"name": "Scrape SMU Requirements",
"type": "n8n-nodes-base.httpRequest",
"position": [
1248,
896
],
"parameters": {
"url": "https://www.smu.edu.sg/admissions/undergraduate/admissions-requirements",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "5dd2fe72-c357-42ba-9bc3-26f654f64913",
"name": "Merge University Data",
"type": "n8n-nodes-base.merge",
"position": [
1520,
576
],
"parameters": {
"mode": "combine",
"options": {}
},
"typeVersion": 3
},
{
"id": "56a0c19d-92b1-431d-b341-35891f7c4841",
"name": "Prepare Data for AI",
"type": "n8n-nodes-base.code",
"position": [
1744,
576
],
"parameters": {
"jsCode": "const universities = [\n { name: 'NUS', data: $('Scrape NUS Requirements').item.json.data },\n { name: 'NTU', data: $('Scrape NTU Requirements').item.json.data },\n { name: 'SIT', data: $('Scrape SIT Requirements').item.json.data },\n { name: 'SUTD', data: $('Scrape SUTD Requirements').item.json.data },\n { name: 'SMU', data: $('Scrape SMU Requirements').item.json.data }\n];\n\nconst userInput = $('Webhook').item.json.body;\n\nreturn universities.map(uni => ({\n json: {\n university: uni.name,\n htmlContent: uni.data,\n userGrades: userInput.grades || '',\n userSubjects: userInput.subjects || '',\n userQualifications: userInput.qualifications || ''\n }\n}));"
},
"typeVersion": 2
},
{
"id": "7ba8b1ce-938f-4aa8-9266-e53144180ae1",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
1984,
800
],
"parameters": {
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "36778946-5a7c-47e8-a105-beba641ac41f",
"name": "AI Agent - Eligibility Analyzer",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
1968,
576
],
"parameters": {
"text": "=You are an expert university admissions advisor for Singapore universities.\n\nAnalyze the following admission requirements from {{ $json.university }} engineering programs:\n\n{{ $json.htmlContent }}\n\nUser Profile:\n- Academic Grades: {{ $json.userGrades }}\n- Subjects Taken: {{ $json.userSubjects }}\n- Qualifications: {{ $json.userQualifications }}\n\nYour task:\n1. Extract the key admission requirements for engineering programs (minimum grades, required subjects, qualifications)\n2. Compare the user's profile against these requirements\n3. Determine eligibility status: ELIGIBLE, NOT ELIGIBLE, or BORDERLINE\n4. Provide specific reasoning for your determination\n\nReturn your analysis in this JSON format:\n{\n \"university\": \"{{ $json.university }}\",\n \"eligibilityStatus\": \"ELIGIBLE/NOT ELIGIBLE/BORDERLINE\",\n \"minimumRequirements\": \"extracted requirements\",\n \"userMeetsRequirements\": true/false,\n \"reasoning\": \"detailed explanation\",\n \"recommendations\": \"advice for the applicant\"\n}",
"options": {
"systemMessage": "You are a precise university admissions analyzer. Always return valid JSON output and be thorough in your eligibility assessment."
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 1.7
},
{
"id": "1e08cab2-a5ba-45c9-ae79-9e3c15ef555e",
"name": "Structured Output Parser",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
2112,
800
],
"parameters": {},
"typeVersion": 1.2
},
{
"id": "b46ba7a2-8562-4fb2-ae15-8f1cce4a1014",
"name": "Aggregate Results",
"type": "n8n-nodes-base.aggregate",
"position": [
2320,
576
],
"parameters": {
"options": {},
"aggregate": "aggregateAllItemData"
},
"typeVersion": 1
},
{
"id": "6f0e47fc-a4d5-42a7-86a0-536464ae33c3",
"name": "Generate Summary",
"type": "n8n-nodes-base.code",
"position": [
2544,
576
],
"parameters": {
"jsCode": "const analyses = $input.all().map(item => item.json);\n\nconst eligible = analyses.filter(a => a.eligibilityStatus === 'ELIGIBLE');\nconst borderline = analyses.filter(a => a.eligibilityStatus === 'BORDERLINE');\nconst notEligible = analyses.filter(a => a.eligibilityStatus === 'NOT ELIGIBLE');\n\n// Determine if appeals are needed\nconst needsAppeal = (borderline.length > 0 || notEligible.length > 0) && eligible.length === 0;\n\nconst summary = {\n totalUniversitiesAnalyzed: analyses.length,\n eligibleUniversities: eligible.map(u => u.university),\n borderlineUniversities: borderline.map(u => u.university),\n notEligibleUniversities: notEligible.map(u => u.university),\n detailedAnalysis: analyses,\n needsAppeal: needsAppeal,\n overallRecommendation: eligible.length > 0 \n ? `You are eligible for ${eligible.length} university/universities. Focus your applications there.`\n : borderline.length > 0\n ? `You have borderline eligibility for ${borderline.length} university/universities. Consider improving your profile or applying with strong supporting documents. Appeal letters will be generated.`\n : `Unfortunately, you may not meet the minimum requirements for these universities. Appeal letters will be generated to request reconsideration.`\n};\n\nreturn [{ json: summary }];"
},
"typeVersion": 2
},
{
"id": "47b15f9c-816a-47bf-a632-acf0c684fe8e",
"name": "Send Slack Summary",
"type": "n8n-nodes-base.slack",
"position": [
2768,
288
],
"parameters": {
"text": "=\ud83c\udf93 *Singapore University Eligibility Report*\n\n*Universities Analyzed:* {{ $json.totalUniversitiesAnalyzed }}\n\n\u2705 *Eligible Universities:*\n{{ $json.eligibleUniversities.length > 0 ? $json.eligibleUniversities.join(', ') : 'None' }}\n\n\u26a0\ufe0f *Borderline Eligibility:*\n{{ $json.borderlineUniversities.length > 0 ? $json.borderlineUniversities.join(', ') : 'None' }}\n\n\u274c *Not Eligible:*\n{{ $json.notEligibleUniversities.length > 0 ? $json.notEligibleUniversities.join(', ') : 'None' }}\n\n*Overall Recommendation:*\n{{ $json.overallRecommendation }}\n\n_View detailed analysis in the workflow output._",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "list",
"value": "C12345678",
"cachedResultName": "admissions"
},
"otherOptions": {},
"authentication": "oAuth2"
},
"typeVersion": 2.2
},
{
"id": "e17d4ac1-fdf2-4b85-933a-9099ca6e9964",
"name": "Publish to WordPress",
"type": "n8n-nodes-base.wordpress",
"position": [
2768,
480
],
"parameters": {
"title": "=University Eligibility Report - {{ $now.format('YYYY-MM-DD') }}",
"additionalFields": {
"status": "publish"
}
},
"typeVersion": 1
},
{
"id": "69d636af-8c21-4cf7-aac1-7bc3d954d0ac",
"name": "Respond to Webhook",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
2768,
672
],
"parameters": {
"options": {},
"respondWith": "json",
"responseBody": "={{ { success: true, eligibilityReport: $('Generate Summary').item.json, message: 'Analysis complete. Check detailed results.' } }}"
},
"typeVersion": 1.1
},
{
"id": "c25de84b-d7a8-4824-ba7c-3fc4ebca8314",
"name": "Check Eligibility Status",
"type": "n8n-nodes-base.if",
"position": [
2752,
816
],
"parameters": {
"options": {},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "c1a497e7-2fca-4bd8-babc-4f8b07632ee1",
"operator": {
"type": "number",
"operation": "equals",
"rightType": "number"
},
"leftValue": "={{ $json.eligibleUniversities.length }}",
"rightValue": 0
}
]
}
},
"typeVersion": 2
},
{
"id": "9d03058f-42d6-4c9e-8bfe-3ee34e0f5d8e",
"name": "OpenAI Appeal Writer",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
2992,
944
],
"parameters": {
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "31895a1f-8a0d-45f8-9996-81bb2903c908",
"name": "AI Agent - Appeal Letter Generator",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
2976,
720
],
"parameters": {
"text": "=You are an expert admissions appeal letter writer for Singapore universities.\n\nUser Profile:\n- Academic Grades: {{ $('Webhook').item.json.body.grades }}\n- Subjects Taken: {{ $('Webhook').item.json.body.subjects }}\n- Qualifications: {{ $('Webhook').item.json.body.qualifications }}\n\nEligibility Analysis:\n{{ JSON.stringify($('Generate Summary').item.json.detailedAnalysis) }}\n\nYour task:\n1. Craft a professional, compelling appeal letter for each university where the user was deemed NOT ELIGIBLE or BORDERLINE\n2. Highlight the user's strengths and potential\n3. Address any weaknesses with constructive framing\n4. Demonstrate genuine interest in the engineering program\n5. Request reconsideration of the admission decision\n\nFor each university, generate:\n- A personalized subject line\n- A complete appeal letter (300-500 words)\n- Key points to emphasize\n- Supporting documents to attach (recommendations)\n\nReturn your output as a JSON array:\n[\n {\n \"university\": \"University Name\",\n \"subject\": \"Appeal for Reconsideration - Engineering Program Application\",\n \"letterBody\": \"Full letter text...\",\n \"keyStrengths\": [\"strength 1\", \"strength 2\"],\n \"recommendedAttachments\": [\"document 1\", \"document 2\"]\n }\n]",
"options": {
"systemMessage": "You are a professional admissions consultant. Write persuasive, authentic appeal letters that maintain appropriate tone and respect while advocating strongly for the applicant."
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 1.7
},
{
"id": "1ae41d8a-e00f-4544-9239-091104e08560",
"name": "Appeal Output Parser",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
3120,
944
],
"parameters": {
"jsonSchemaExample": "[\n {\n \"university\": \"NUS\",\n \"subject\": \"Appeal Subject\",\n \"letterBody\": \"Letter content\",\n \"keyStrengths\": [\"strength1\"],\n \"recommendedAttachments\": [\"doc1\"]\n }\n]"
},
"typeVersion": 1.2
},
{
"id": "3210365d-e816-42cf-b51d-34af3fa114b0",
"name": "Format Appeal Emails",
"type": "n8n-nodes-base.code",
"position": [
3328,
816
],
"parameters": {
"jsCode": "const appeals = $input.first().json;\nconst userEmail = $('Webhook').item.json.body.email || 'user@example.com';\nconst userName = $('Webhook').item.json.body.name || 'Applicant';\n\nreturn appeals.map(appeal => ({\n json: {\n university: appeal.university,\n to: getUniversityEmail(appeal.university),\n from: userEmail,\n subject: appeal.subject,\n body: appeal.letterBody,\n keyStrengths: appeal.keyStrengths,\n attachments: appeal.recommendedAttachments,\n applicantName: userName,\n fullAppealPackage: `To: Admissions Office, ${appeal.university}\\nFrom: ${userName} (${userEmail})\\n\\nSubject: ${appeal.subject}\\n\\n${appeal.letterBody}\\n\\nKey Strengths to Highlight:\\n${appeal.keyStrengths.map((s, i) => `${i + 1}. ${s}`).join('\\n')}\\n\\nRecommended Supporting Documents:\\n${appeal.recommendedAttachments.map((a, i) => `${i + 1}. ${a}`).join('\\n')}`\n }\n}));\n\nfunction getUniversityEmail(uni) {\n const emails = {\n 'NUS': 'user@example.com',\n 'NTU': 'user@example.com',\n 'SIT': 'user@example.com',\n 'SUTD': 'user@example.com',\n 'SMU': 'user@example.com'\n };\n return emails[uni] || 'user@example.com';\n}"
},
"typeVersion": 2
},
{
"id": "75aba26c-bf23-45af-9fd6-528aa341edcb",
"name": "Send Appeal Email",
"type": "n8n-nodes-base.emailSend",
"position": [
3552,
768
],
"parameters": {
"options": {},
"subject": "={{ $json.subject }}",
"toEmail": "={{ $json.to }}",
"fromEmail": "={{ $json.from }}"
},
"typeVersion": 2
},
{
"id": "c199d51e-49dd-469f-8c76-f2f4722d3873",
"name": "Save Appeal to WordPress",
"type": "n8n-nodes-base.wordpress",
"position": [
3552,
960
],
"parameters": {
"title": "=Appeal Letter - {{ $json.university }} - {{ $now.format('YYYY-MM-DD') }}",
"additionalFields": {
"status": "draft",
"categories": [
"Appeals"
]
}
},
"typeVersion": 1
},
{
"id": "df62327a-1da2-445d-9da3-981a6e9bd62e",
"name": "Notify via Slack - Appeals",
"type": "n8n-nodes-base.slack",
"position": [
3776,
768
],
"parameters": {
"text": "=\ud83d\udce7 *Appeal Letters Generated*\\n\\n*Applicant:* {{ $('Format Appeal Emails').first().json.applicantName }}\\n*Universities:* {{ $('Format Appeal Emails').all().map(i => i.json.university).join(', ') }}\\n\\n*Action Required:*\\n\u2705 Review appeal letters in WordPress (drafts)\\n\u2705 User should attach supporting documents\\n\u2705 Send appeals before deadline\\n\\n_Appeals are ready for review and sending._",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "list",
"value": "C12345678",
"cachedResultName": "admissions"
},
"otherOptions": {},
"authentication": "oAuth2"
},
"typeVersion": 2.2
},
{
"id": "77586205-0af9-4872-877c-28eeb9a3396d",
"name": "Appeal Success Response",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
4000,
768
],
"parameters": {
"options": {},
"respondWith": "json",
"responseBody": "={{ { success: true, message: 'Appeal letters generated successfully', appeals: $('Format Appeal Emails').all().map(i => ({ university: i.json.university, subject: i.json.subject, to: i.json.to })), nextSteps: ['Review the appeal letters', 'Attach supporting documents (transcripts, recommendation letters)', 'Send appeals to universities', 'Follow up after 2-3 weeks'] } }}"
},
"typeVersion": 1.1
},
{
"id": "5dc97131-7df9-4375-a22b-12fa65b3d094",
"name": "No Appeals Needed",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
3040,
1104
],
"parameters": {
"options": {},
"respondWith": "json",
"responseBody": "={{ { success: true, message: 'Congratulations! You are eligible for universities. No appeals needed.', eligibleUniversities: $('Generate Summary').item.json.eligibleUniversities } }}"
},
"typeVersion": 1.1
},
{
"id": "e5e32255-b7cb-4253-8d3c-42a2f2ea20fb",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
1472,
112
],
"parameters": {
"width": 672,
"height": 432,
"content": "## Introduction\nAutomates scholarship tracking by scraping university sites, assessing eligibility via AI, and publishing results to WordPress or Slack. Eliminates manual searches for students, counselors, and education platforms, enabling scalable curation and timely notifications.\n\n## How it Works\nWebhook triggers parallel scraping of NUS, NTU, SIT, SUTD \u2192 merge data \u2192 AI evaluates eligibility \u2192 aggregate qualified scholarships \u2192 generate summaries \u2192 post to WordPress/Slack \u2192 send email notifications with appeal options.\n\n## Setup Steps\n1. Configure OpenAI credentials and eligibility prompt template\n2. Update HTTP requests with university URLs and selectors\n3. Add WordPress site URL and API credentials\n4. Create Slack webhook and notification channel\n5. Configure Gmail/SMTP for email notifications\n\n"
},
"typeVersion": 1
},
{
"id": "1abae18e-0d26-43b4-8ab9-fc61e29bc3ff",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
3360,
128
],
"parameters": {
"color": 6,
"width": 480,
"height": 224,
"content": "## Customization\nAdd universities (SMU, SUSS, international institutions), include government schemes (MOE, Edusave, Mendaki)\n\n## Benefits\nSaves 10+ hours weekly per counselor, monitors 50+ scholarships automatically, provides AI eligibility matching (85%+ accuracy)\n"
},
"typeVersion": 1
},
{
"id": "879f2cdc-74cf-48c8-a9bb-af5d7bf05ec8",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
2192,
112
],
"parameters": {
"color": 4,
"width": 416,
"height": 304,
"content": "## Workflow Steps\n1. Scraping: Fetch scholarship pages from four universities simultaneously\n2. Merge: Combine data into a unified dataset\n3. AI Processing: Analyze eligibility criteria, deadlines against student profile\n4. Aggregation: Consolidate qualified scholarships with match scores\n5. Publishing: Post to WordPress, send Slack/email with results\n6. Appeals: Webhook handles rejection appeals with AI review\n\n"
},
"typeVersion": 1
},
{
"id": "1a11c64c-a4e3-4e65-a50c-3abcc70b2c05",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
2992,
128
],
"parameters": {
"color": 5,
"width": 320,
"height": 272,
"content": "## Prerequisites\nOpenAI API key, WordPress site with REST API, Slack workspace with webhook, Gmail/SMTP credentials, student profile data (GPA, citizenship, major)\n\n## Use Cases\nCounselors automating recommendations for 100+ students, financial aid offices aggregating departmental opportunities\n"
},
"typeVersion": 1
},
{
"id": "90754c99-515e-409a-a595-6e00afc0f9e3",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
1520,
944
],
"parameters": {
"color": 5,
"width": 1136,
"height": 112,
"content": "## Workflow\nWebhook \u2192 Scrape 4 Universities (Parallel) \u2192 Merge Data \u2192 Prepare Context \u2192 AI Eligibility Check \u2192 Aggregate Results \u2192 Generate Summary \u2192 Check Status \u2192 Publish Slack/Email/WordPress \u2192 Handle Appeals\n"
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "10c464ea-7cbb-4b8f-8b93-b9b29a0e9a43",
"connections": {
"Webhook": {
"main": [
[
{
"node": "Scrape NUS Requirements",
"type": "main",
"index": 0
},
{
"node": "Scrape NTU Requirements",
"type": "main",
"index": 0
},
{
"node": "Scrape SIT Requirements",
"type": "main",
"index": 0
},
{
"node": "Scrape SUTD Requirements",
"type": "main",
"index": 0
},
{
"node": "Scrape SMU Requirements",
"type": "main",
"index": 0
}
]
]
},
"Generate Summary": {
"main": [
[
{
"node": "Send Slack Summary",
"type": "main",
"index": 0
},
{
"node": "Publish to WordPress",
"type": "main",
"index": 0
},
{
"node": "Respond to Webhook",
"type": "main",
"index": 0
},
{
"node": "Check Eligibility Status",
"type": "main",
"index": 0
}
]
]
},
"Aggregate Results": {
"main": [
[
{
"node": "Generate Summary",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent - Eligibility Analyzer",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Send Appeal Email": {
"main": [
[
{
"node": "Notify via Slack - Appeals",
"type": "main",
"index": 0
}
]
]
},
"Prepare Data for AI": {
"main": [
[
{
"node": "AI Agent - Eligibility Analyzer",
"type": "main",
"index": 0
}
]
]
},
"Appeal Output Parser": {
"ai_outputParser": [
[
{
"node": "AI Agent - Appeal Letter Generator",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Format Appeal Emails": {
"main": [
[
{
"node": "Send Appeal Email",
"type": "main",
"index": 0
},
{
"node": "Save Appeal to WordPress",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Appeal Writer": {
"ai_languageModel": [
[
{
"node": "AI Agent - Appeal Letter Generator",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Merge University Data": {
"main": [
[
{
"node": "Prepare Data for AI",
"type": "main",
"index": 0
}
]
]
},
"Scrape NTU Requirements": {
"main": [
[
{
"node": "Merge University Data",
"type": "main",
"index": 1
}
]
]
},
"Scrape NUS Requirements": {
"main": [
[
{
"node": "Merge University Data",
"type": "main",
"index": 0
}
]
]
},
"Check Eligibility Status": {
"main": [
[
{
"node": "AI Agent - Appeal Letter Generator",
"type": "main",
"index": 0
}
],
[
{
"node": "No Appeals Needed",
"type": "main",
"index": 0
}
]
]
},
"Structured Output Parser": {
"ai_outputParser": [
[
{
"node": "AI Agent - Eligibility Analyzer",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Notify via Slack - Appeals": {
"main": [
[
{
"node": "Appeal Success Response",
"type": "main",
"index": 0
}
]
]
},
"AI Agent - Eligibility Analyzer": {
"main": [
[
{
"node": "Aggregate Results",
"type": "main",
"index": 0
}
]
]
},
"AI Agent - Appeal Letter Generator": {
"main": [
[
{
"node": "Format Appeal Emails",
"type": "main",
"index": 0
}
]
]
}
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
openAiApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Automates scholarship tracking by scraping university sites, assessing eligibility via AI, and publishing results to WordPress or Slack. Eliminates manual searches for students, counselors, and education platforms, enabling scalable curation and timely notifications.
Source: https://n8n.io/workflows/10626/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
This workflow transforms natural language queries into research reports through a five-stage AI pipeline. When triggered via webhook (typically from Google Sheets using the companion [](https://gist.g
This workflow automates veterinary clinic operations and client communications for animal hospitals and veterinary practices managing appointments, inventory, and patient care. It solves the dual chal
Automate peer review assignment and grading with AI-powered evaluation. Designed for educators managing collaborative assessments efficiently.
Automate candidate evaluation from CV submission to interview booking. Perfect for HR teams and recruiters.
Law firms in corporate, litigation, or family law needing streamlined case and contract management.