AutomationFlowsAI & RAG › Match Users with Financial Aid Programs Using Gpt 5-nano with Automatic…

Match Users with Financial Aid Programs Using Gpt 5-nano with Automatic…

Original n8n title: Match Users with Financial Aid Programs Using Gpt 5-nano with Automatic Letters & Emails

ByCheng Siong Chin @cschin on n8n.io

The webhook receives incoming profiles and extracts relevant demographic, financial, and credential data. The workflow then queries the programs database to identify suitable options, while the AI generates personalized recommendations based on eligibility and preferences. A…

Webhook trigger★★★★☆ complexityAI-powered27 nodesOpenAI ChatAgentOutput Parser StructuredSlack
AI & RAG Trigger: Webhook Nodes: 27 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow corresponds to n8n.io template #10627 — we link there as the canonical source.

This workflow follows the Agent → OpenAI Chat 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 →

Download .json
{
  "id": "XxXeOYCFGRYXivmJ",
  "name": "GPT 5-Nano Financial Aid Matcher with Automated Letter and Email Generation",
  "tags": [],
  "nodes": [
    {
      "id": "55a90004-e1ec-46f3-ab96-654c481d9f25",
      "name": "Webhook - User Profile Input",
      "type": "n8n-nodes-base.webhook",
      "position": [
        432,
        128
      ],
      "parameters": {
        "path": "financial-assistance",
        "options": {},
        "httpMethod": "POST",
        "responseMode": "responseNode"
      },
      "typeVersion": 2
    },
    {
      "id": "6852890a-c096-422e-ba1b-8e19d506c120",
      "name": "Extract User Profile",
      "type": "n8n-nodes-base.set",
      "position": [
        656,
        128
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "income",
              "name": "income",
              "type": "number",
              "value": "={{ $json.body.income }}"
            },
            {
              "id": "employment_status",
              "name": "employment_status",
              "type": "string",
              "value": "={{ $json.body.employment_status }}"
            },
            {
              "id": "household_size",
              "name": "household_size",
              "type": "number",
              "value": "={{ $json.body.household_size }}"
            },
            {
              "id": "needs",
              "name": "needs",
              "type": "string",
              "value": "={{ $json.body.needs }}"
            },
            {
              "id": "age",
              "name": "age",
              "type": "number",
              "value": "={{ $json.body.age }}"
            },
            {
              "id": "user_name",
              "name": "user_name",
              "type": "string",
              "value": "={{ $json.body.user_name }}"
            },
            {
              "id": "user_email",
              "name": "user_email",
              "type": "string",
              "value": "={{ $json.body.user_email }}"
            },
            {
              "id": "contact_number",
              "name": "contact_number",
              "type": "string",
              "value": "={{ $json.body.contact_number }}"
            },
            {
              "id": "address",
              "name": "address",
              "type": "string",
              "value": "={{ $json.body.address }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "f81dc7d7-81da-4250-87a6-42671b7ae916",
      "name": "Financial Programs Database",
      "type": "n8n-nodes-base.set",
      "position": [
        880,
        128
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "programs_data",
              "name": "programs_data",
              "type": "string",
              "value": "=[\n  {\n    \"program_name\": \"ComCare Short-to-Medium Term Assistance\",\n    \"authority\": \"Ministry of Social and Family Development (MSF)\",\n    \"type\": \"Government Grant\",\n    \"eligibility\": \"Singapore Citizens or PRs with household income \u2264 $2,600 or per capita income \u2264 $800\",\n    \"benefits\": \"Cash assistance, childcare subsidies, student care subsidies\",\n    \"website\": \"https://www.msf.gov.sg/assistance/Pages/ComCare-Short-to-Medium-Term-Assistance.aspx\",\n    \"contact_email\": \"msf_feedback@msf.gov.sg\",\n    \"income_threshold\": 2600,\n    \"categories\": [\"low-income\", \"family support\", \"childcare\", \"education\"]\n  },\n  {\n    \"program_name\": \"Workfare Income Supplement (WIS)\",\n    \"authority\": \"Central Provident Fund Board (CPF)\",\n    \"type\": \"Government Grant\",\n    \"eligibility\": \"Singapore Citizens aged 35+ earning \u2264 $2,500/month\",\n    \"benefits\": \"Cash payments and CPF contributions\",\n    \"website\": \"https://www.cpf.gov.sg/member/infohub/educational-resources/understanding-workfare-income-supplement\",\n    \"contact_email\": \"cpf_feedback@cpf.gov.sg\",\n    \"income_threshold\": 2500,\n    \"categories\": [\"employment\", \"low-income\", \"senior support\"]\n  },\n  {\n    \"program_name\": \"Silver Support Scheme\",\n    \"authority\": \"Ministry of Social and Family Development (MSF)\",\n    \"type\": \"Government Grant\",\n    \"eligibility\": \"Singapore Citizens aged 65+ with low income in early years\",\n    \"benefits\": \"Quarterly cash payouts\",\n    \"website\": \"https://www.msf.gov.sg/assistance/Pages/Silver-Support-Scheme.aspx\",\n    \"contact_email\": \"msf_feedback@msf.gov.sg\",\n    \"income_threshold\": 1500,\n    \"categories\": [\"senior support\", \"retirement\", \"low-income\"]\n  },\n  {\n    \"program_name\": \"GST Voucher Scheme\",\n    \"authority\": \"Inland Revenue Authority of Singapore (IRAS)\",\n    \"type\": \"Government Grant\",\n    \"eligibility\": \"Singapore Citizens aged 21+ with income \u2264 $34,000\",\n    \"benefits\": \"Cash, MediSave, and U-Save rebates\",\n    \"website\": \"https://www.gstvoucher.gov.sg\",\n    \"contact_email\": \"gstv@iras.gov.sg\",\n    \"income_threshold\": 34000,\n    \"categories\": [\"utilities\", \"healthcare\", \"cost of living\"]\n  },\n  {\n    \"program_name\": \"ElderCare Fund\",\n    \"authority\": \"Agency for Integrated Care (AIC)\",\n    \"type\": \"Government Grant\",\n    \"eligibility\": \"Singapore Citizens and PRs needing eldercare services\",\n    \"benefits\": \"Subsidies for nursing homes, day care, home care\",\n    \"website\": \"https://www.aic.sg/financial-assistance\",\n    \"contact_email\": \"enquiries@aic.sg\",\n    \"income_threshold\": 3000,\n    \"categories\": [\"senior support\", \"healthcare\", \"caregiving\"]\n  },\n  {\n    \"program_name\": \"Community Health Assist Scheme (CHAS)\",\n    \"authority\": \"Ministry of Health (MOH)\",\n    \"type\": \"Government Grant\",\n    \"eligibility\": \"Singapore Citizens with household income \u2264 $2,300 per capita\",\n    \"benefits\": \"Subsidised medical and dental care\",\n    \"website\": \"https://www.chas.gov.sg\",\n    \"contact_email\": \"chas@moh.gov.sg\",\n    \"income_threshold\": 2300,\n    \"categories\": [\"healthcare\", \"medical\", \"dental\"]\n  },\n  {\n    \"program_name\": \"SkillsFuture Credit\",\n    \"authority\": \"SkillsFuture Singapore (SSG)\",\n    \"type\": \"Government Grant\",\n    \"eligibility\": \"Singapore Citizens aged 25+\",\n    \"benefits\": \"$500 credit for skills training and courses\",\n    \"website\": \"https://www.skillsfuture.gov.sg/credit\",\n    \"contact_email\": \"skillsfuture_credit@ssg.gov.sg\",\n    \"income_threshold\": 999999,\n    \"categories\": [\"education\", \"training\", \"employment\"]\n  },\n  {\n    \"program_name\": \"CDC Vouchers Scheme\",\n    \"authority\": \"Community Development Councils\",\n    \"type\": \"Community Support\",\n    \"eligibility\": \"All Singapore households\",\n    \"benefits\": \"Vouchers for groceries and essentials\",\n    \"website\": \"https://www.cdc.gov.sg/cdcvouchers\",\n    \"contact_email\": \"cdc_vouchers@pa.gov.sg\",\n    \"income_threshold\": 999999,\n    \"categories\": [\"cost of living\", \"groceries\", \"community\"]\n  },\n  {\n    \"program_name\": \"MOE Financial Assistance Scheme (FAS)\",\n    \"authority\": \"Ministry of Education (MOE)\",\n    \"type\": \"Government Grant\",\n    \"eligibility\": \"Families with gross household income \u2264 $3,000 or per capita income \u2264 $750\",\n    \"benefits\": \"School fees, meals, transport, uniforms subsidies\",\n    \"website\": \"https://www.moe.gov.sg/financial-matters/financial-assistance\",\n    \"contact_email\": \"moe_fas@moe.gov.sg\",\n    \"income_threshold\": 3000,\n    \"categories\": [\"education\", \"children\", \"family support\"]\n  },\n  {\n    \"program_name\": \"Rental and Utilities Assistance\",\n    \"authority\": \"Housing & Development Board (HDB)\",\n    \"type\": \"Government Grant\",\n    \"eligibility\": \"Singapore Citizens in financial difficulty\",\n    \"benefits\": \"Rental and utility bill subsidies\",\n    \"website\": \"https://www.hdb.gov.sg/cs/infoweb/residential/living-in-an-hdb-flat/for-our-seniors/rental-and-utilities-assistance\",\n    \"contact_email\": \"hdb_feedback@hdb.gov.sg\",\n    \"income_threshold\": 2000,\n    \"categories\": [\"housing\", \"utilities\", \"low-income\"]\n  },\n  {\n    \"program_name\": \"Baby Bonus Scheme\",\n    \"authority\": \"Ministry of Social and Family Development (MSF)\",\n    \"type\": \"Government Grant\",\n    \"eligibility\": \"Singapore Citizen newborns\",\n    \"benefits\": \"Cash gift and co-savings in Child Development Account\",\n    \"website\": \"https://www.babybonus.msf.gov.sg\",\n    \"contact_email\": \"babybonus@msf.gov.sg\",\n    \"income_threshold\": 999999,\n    \"categories\": [\"family support\", \"children\", \"childcare\"]\n  },\n  {\n    \"program_name\": \"Community Care Endowment Fund (ComCare)\",\n    \"authority\": \"Ministry of Social and Family Development (MSF)\",\n    \"type\": \"Government Grant\",\n    \"eligibility\": \"Low-income individuals and families\",\n    \"benefits\": \"Emergency financial assistance\",\n    \"website\": \"https://www.msf.gov.sg/assistance\",\n    \"contact_email\": \"msf_feedback@msf.gov.sg\",\n    \"income_threshold\": 2200,\n    \"categories\": [\"emergency\", \"low-income\", \"family support\"]\n  },\n  {\n    \"program_name\": \"Merdeka Generation Package\",\n    \"authority\": \"Ministry of Health (MOH)\",\n    \"type\": \"Government Grant\",\n    \"eligibility\": \"Singapore Citizens born 1950-1959\",\n    \"benefits\": \"MediSave top-ups, outpatient subsidies, long-term care support\",\n    \"website\": \"https://www.merdekagen.sg\",\n    \"contact_email\": \"merdekagen@moh.gov.sg\",\n    \"income_threshold\": 999999,\n    \"categories\": [\"senior support\", \"healthcare\", \"medical\"]\n  },\n  {\n    \"program_name\": \"Self-Help Groups Financial Aid\",\n    \"authority\": \"MENDAKI, SINDA, CDAC, ECF\",\n    \"type\": \"Community Support\",\n    \"eligibility\": \"Community-specific (Malay, Indian, Chinese, Eurasian)\",\n    \"benefits\": \"Education bursaries, tuition assistance\",\n    \"website\": \"https://www.mendaki.org.sg\",\n    \"contact_email\": \"mendaki@mendaki.org.sg\",\n    \"income_threshold\": 3500,\n    \"categories\": [\"education\", \"community\", \"family support\"]\n  },\n  {\n    \"program_name\": \"Families for Life Council Support\",\n    \"authority\": \"Families for Life Council\",\n    \"type\": \"NGO Aid\",\n    \"eligibility\": \"Families facing challenges\",\n    \"benefits\": \"Counseling, family support programs\",\n    \"website\": \"https://www.familiesforlife.sg\",\n    \"contact_email\": \"ffl@msf.gov.sg\",\n    \"income_threshold\": 4000,\n    \"categories\": [\"family support\", \"counseling\", \"community\"]\n  },\n  {\n    \"program_name\": \"Community Foundation of Singapore Grants\",\n    \"authority\": \"Community Foundation of Singapore\",\n    \"type\": \"NGO Aid\",\n    \"eligibility\": \"Vulnerable individuals and families\",\n    \"benefits\": \"Various assistance programs\",\n    \"website\": \"https://www.cf.org.sg\",\n    \"contact_email\": \"enquiry@cf.org.sg\",\n    \"income_threshold\": 3000,\n    \"categories\": [\"emergency\", \"low-income\", \"community\"]\n  },\n  {\n    \"program_name\": \"Singapore Red Cross Assistance\",\n    \"authority\": \"Singapore Red Cross\",\n    \"type\": \"NGO Aid\",\n    \"eligibility\": \"Individuals in crisis or hardship\",\n    \"benefits\": \"Emergency aid, medical equipment loan\",\n    \"website\": \"https://www.redcross.sg\",\n    \"contact_email\": \"feedback@redcross.sg\",\n    \"income_threshold\": 2500,\n    \"categories\": [\"emergency\", \"medical\", \"healthcare\"]\n  },\n  {\n    \"program_name\": \"Salvation Army Financial Assistance\",\n    \"authority\": \"The Salvation Army Singapore\",\n    \"type\": \"NGO Aid\",\n    \"eligibility\": \"Low-income families and individuals\",\n    \"benefits\": \"Food, clothing, temporary shelter\",\n    \"website\": \"https://www.salvationarmy.org.sg\",\n    \"contact_email\": \"info@smm.salvationarmy.org\",\n    \"income_threshold\": 2000,\n    \"categories\": [\"emergency\", \"food\", \"housing\", \"low-income\"]\n  }\n]"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "153d6a11-8b28-43c1-a8c8-808ece52e481",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1088,
        320
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "71a2c690-0252-4761-9264-dcf5ef0463aa",
      "name": "AI Agent - Program Matcher",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1104,
        128
      ],
      "parameters": {
        "text": "=You are an expert financial assistance advisor specializing in Singapore's welfare system.\n\nUser Profile:\n- Name: {{ $('Extract User Profile').item.json.user_name }}\n- Income: ${{ $('Extract User Profile').item.json.income }}\n- Employment Status: {{ $('Extract User Profile').item.json.employment_status }}\n- Household Size: {{ $('Extract User Profile').item.json.household_size }}\n- Age: {{ $('Extract User Profile').item.json.age }}\n- Needs: {{ $('Extract User Profile').item.json.needs }}\n\nAvailable Financial Assistance Programs:\n{{ $('Financial Programs Database').item.json.programs_data }}\n\nTask: Analyze the user's profile against all available programs and identify ALL suitable programs they are eligible for.\n\nFor each suitable program, consider:\n1. Income eligibility (check if user's income meets thresholds)\n2. Age requirements\n3. Citizenship/residency status\n4. Specific needs match (education, healthcare, housing, etc.)\n5. Employment status relevance\n\nProvide your analysis in the following JSON format:\n{\n  \"eligible_programs\": [\n    {\n      \"program_name\": \"Program Name\",\n      \"authority\": \"Authority Name\",\n      \"type\": \"Grant/Support/Aid type\",\n      \"match_score\": 95,\n      \"eligibility_reasons\": [\"Reason 1\", \"Reason 2\"],\n      \"benefits\": \"Description of benefits\",\n      \"contact_email\": \"email@authority.sg\",\n      \"website\": \"URL\"\n    }\n  ],\n  \"total_eligible_programs\": 5,\n  \"priority_recommendations\": [\"Top recommendation 1\", \"Top recommendation 2\"],\n  \"additional_notes\": \"Any important guidance for the user\"\n}\n\nBe thorough and include ALL programs the user qualifies for, sorted by match score (highest first).",
        "options": {
          "systemMessage": "You are a Singapore financial assistance expert. Always respond with valid JSON only. Be comprehensive and accurate in matching user profiles to assistance programs."
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.7
    },
    {
      "id": "1e44852b-906c-4b8e-8d40-05801e86e67f",
      "name": "JSON Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        1248,
        352
      ],
      "parameters": {},
      "typeVersion": 1.3
    },
    {
      "id": "3a4b5dfc-2ccf-4e95-9214-f7fe1d6f4c03",
      "name": "Parse AI Response",
      "type": "n8n-nodes-base.code",
      "position": [
        1456,
        128
      ],
      "parameters": {
        "jsCode": "const agentOutput = $input.first().json.output;\nlet eligiblePrograms;\n\nif (typeof agentOutput === 'string') {\n  eligiblePrograms = JSON.parse(agentOutput);\n} else {\n  eligiblePrograms = agentOutput;\n}\n\nreturn { json: eligiblePrograms };"
      },
      "typeVersion": 2
    },
    {
      "id": "12560d33-abaf-4fa6-8567-8dd188d0840b",
      "name": "OpenAI Letter Generator",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1760,
        352
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "6c37d714-2dc1-4188-b2f9-49b86777c067",
      "name": "AI Agent - Letter Writer",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1680,
        128
      ],
      "parameters": {
        "text": "=You are an expert letter writer specializing in formal assistance request letters for Singapore government and NGO applications.\n\nUser Information:\n- Name: {{ $('Extract User Profile').item.json.user_name }}\n- Email: {{ $('Extract User Profile').item.json.user_email }}\n- Contact: {{ $('Extract User Profile').item.json.contact_number }}\n- Address: {{ $('Extract User Profile').item.json.address }}\n- Income: ${{ $('Extract User Profile').item.json.income }}\n- Employment Status: {{ $('Extract User Profile').item.json.employment_status }}\n- Household Size: {{ $('Extract User Profile').item.json.household_size }}\n- Age: {{ $('Extract User Profile').item.json.age }}\n- Needs: {{ $('Extract User Profile').item.json.needs }}\n\nEligible Programs Analysis:\n{{ $('Parse AI Response').item.json }}\n\nTask: Generate a comprehensive, professional assistance request letter that:\n1. Addresses the TOP priority program from the eligible list\n2. Follows formal Singapore government correspondence style\n3. Clearly explains the user's situation and financial need\n4. References specific eligibility criteria that the user meets\n5. Requests consideration for the assistance program\n6. Includes all necessary contact information\n7. Is respectful, concise, and compelling\n\nFormat the letter with:\n- Proper date\n- Recipient address (use the authority from the top program)\n- Formal salutation\n- Introduction paragraph\n- Body paragraphs explaining situation and eligibility\n- Closing paragraph with request\n- Formal closing and signature block\n\nProvide the letter in plain text format, ready to be sent.",
        "options": {
          "systemMessage": "You are a professional letter writer for Singapore assistance applications. Write clear, respectful, and effective request letters following Singapore's formal correspondence standards."
        },
        "promptType": "define"
      },
      "typeVersion": 1.7
    },
    {
      "id": "6281d8ad-a30c-4476-9b92-9c31f3282dd7",
      "name": "Extract Letter",
      "type": "n8n-nodes-base.set",
      "position": [
        2032,
        128
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "assistance_letter",
              "name": "assistance_letter",
              "type": "string",
              "value": "={{ $json.output }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "2649ded5-6ac0-4d2b-bdfd-466aa962abf6",
      "name": "OpenAI Email Generator",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        2272,
        352
      ],
      "parameters": {
        "model": "gpt-5-nano",
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "8949db80-70ff-4b30-8179-110f0edd6b39",
      "name": "AI Agent - Email Drafter",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        2256,
        128
      ],
      "parameters": {
        "text": "=You are an expert email composer for formal government and organizational correspondence in Singapore.\n\nUser Information:\n- Name: {{ $('Extract User Profile').item.json.user_name }}\n- Email: {{ $('Extract User Profile').item.json.user_email }}\n\nTop Priority Program:\n{{ $('Parse AI Response').item.json.eligible_programs[0] }}\n\nAssistance Request Letter:\n{{ $('Extract Letter').item.json.assistance_letter }}\n\nTask: Draft a professional email to be sent to the relevant authority that:\n1. Has a clear, professional subject line\n2. Includes a brief, courteous opening\n3. States the purpose (application for the specific assistance program)\n4. Mentions that the formal letter is attached/included below\n5. Provides contact information\n6. Has a professional closing\n\nProvide the email in the following JSON format:\n{\n  \"to\": \"recipient_email@authority.sg\",\n  \"subject\": \"Application for [Program Name] - [User Name]\",\n  \"body\": \"Full email body text here\",\n  \"cc\": \"\",\n  \"priority\": \"normal\"\n}\n\nMake the email concise but complete, suitable for government/NGO communication.",
        "options": {
          "systemMessage": "You are an expert in Singapore formal email correspondence. Create professional, respectful emails for assistance program applications. Always respond with valid JSON only."
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.7
    },
    {
      "id": "4db82fd8-4b55-437c-96b2-89ed42e333a0",
      "name": "JSON Email Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        2400,
        352
      ],
      "parameters": {},
      "typeVersion": 1.3
    },
    {
      "id": "48c7586f-b65d-4eae-a543-ed2df2e26eb3",
      "name": "Parse Email Data",
      "type": "n8n-nodes-base.code",
      "position": [
        2608,
        128
      ],
      "parameters": {
        "jsCode": "const emailOutput = $input.first().json.output;\nlet emailData;\n\nif (typeof emailOutput === 'string') {\n  emailData = JSON.parse(emailOutput);\n} else {\n  emailData = emailOutput;\n}\n\nreturn { json: emailData };"
      },
      "typeVersion": 2
    },
    {
      "id": "eff17c61-33ff-4aec-adaa-f89017642623",
      "name": "Prepare Slack Summary",
      "type": "n8n-nodes-base.set",
      "position": [
        2832,
        128
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "summary",
              "name": "summary",
              "type": "string",
              "value": "=\u2705 *Financial Assistance Application Package Generated*\n\n*User:* {{ $('Extract User Profile').item.json.user_name }}\n*Email:* {{ $('Extract User Profile').item.json.user_email }}\n\n*Eligible Programs Found:* {{ $('Parse AI Response').item.json.total_eligible_programs }}\n\n*Top Recommended Program:*\n{{ $('Parse AI Response').item.json.eligible_programs[0].program_name }}\n_Authority:_ {{ $('Parse AI Response').item.json.eligible_programs[0].authority }}\n_Match Score:_ {{ $('Parse AI Response').item.json.eligible_programs[0].match_score }}%\n\n*Documents Generated:*\n\u2709\ufe0f Personalized assistance request letter\n\ud83d\udce7 Draft email to {{ $('Parse Email Data').item.json.to }}\n\n*Next Steps:*\n1. Review the generated letter and email\n2. Submit to the relevant authority\n3. Follow up within 2-3 weeks\n\n_All documents are ready for submission._"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "3f44a270-74bf-4079-9cf1-c5a4d5e188c4",
      "name": "Send Slack Notification",
      "type": "n8n-nodes-base.slack",
      "position": [
        3056,
        160
      ],
      "parameters": {
        "text": "={{ $json.summary }}",
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "list",
          "value": "C12345678",
          "cachedResultName": "general"
        },
        "otherOptions": {},
        "authentication": "oAuth2"
      },
      "typeVersion": 2.2
    },
    {
      "id": "91a146a3-d62e-4368-9b1b-00b9647f539c",
      "name": "Respond to Webhook",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        3072,
        352
      ],
      "parameters": {
        "options": {},
        "respondWith": "json",
        "responseBody": "={{ {\n  \"success\": true,\n  \"user_profile\": $('Extract User Profile').item.json,\n  \"analysis\": $('Parse AI Response').item.json,\n  \"assistance_letter\": $('Extract Letter').item.json.assistance_letter,\n  \"email_draft\": $('Parse Email Data').item.json,\n  \"message\": \"Financial assistance application package generated successfully\"\n} }}"
      },
      "typeVersion": 1.1
    },
    {
      "id": "00306dc7-b187-4a4c-917c-45814e267fd0",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        928,
        -272
      ],
      "parameters": {
        "width": 720,
        "height": 224,
        "content": "## Setup Steps\n1. Configure AI agents by adding OpenAI credentials and setting prompts for the Program Matcher, Letter Writer, and Email Drafter.\n2. Connect the programs database (Airtable or PostgreSQL) and configure queries to retrieve matching program data.\n3. Set up the webhook by defining the trigger endpoint and payload structure for incoming profiles.\n4. Configure JSON parsers to extract relevant information from profiles, letters, and emails.\n5. Add the Slack webhook URL and define the summary format for generated communications.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "790e13fe-6ac4-48fd-8798-34b17da82d04",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1664,
        -272
      ],
      "parameters": {
        "color": 5,
        "width": 448,
        "content": "## Prerequisites\n- OpenAI API key\n- Financial programs database\n- Slack workspace with webhook\n- User profile structure (income, GPA, demographics)"
      },
      "typeVersion": 1
    },
    {
      "id": "2ac077cb-3ee7-43b5-b7e7-6ba42e8f7c83",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2144,
        -272
      ],
      "parameters": {
        "color": 6,
        "width": 512,
        "content": "\n## Use Cases\n- Universities automating 500+ annual applicant communications\n- Scholarship foundations personalizing outreach at scale\n"
      },
      "typeVersion": 1
    },
    {
      "id": "fa9ced85-479b-4dcb-b338-eca248792dde",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        368,
        -272
      ],
      "parameters": {
        "width": 544,
        "height": 224,
        "content": "## How It Works\nThe webhook receives incoming profiles and extracts relevant demographic, financial, and credential data. The workflow then queries the programs database to identify suitable options, while the AI generates personalized recommendations based on eligibility and preferences. A formal recommendation letter is created, followed by a drafted outreach email tailored to coordinators. Parsers extract structured data from the letters and emails, a Slack summary is prepared for internal visibility, and the final response is sent to the appropriate recipients."
      },
      "typeVersion": 1
    },
    {
      "id": "6ac4a870-e443-4c94-a8bb-ba224e5c0460",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        368,
        -32
      ],
      "parameters": {
        "color": 7,
        "width": 464,
        "height": 448,
        "content": "## Input & Data Extraction\nWebhook triggers the workflow when a user profile is submitted. The system extracts user information \n\n**Why**: Establishes the foundation for personalized communications by capturing all necessary user "
      },
      "typeVersion": 1
    },
    {
      "id": "afe6a031-b8d4-4b99-b02d-0836a87ac392",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        848,
        -32
      ],
      "parameters": {
        "color": 7,
        "width": 560,
        "height": 496,
        "content": "## Program Analysis\nAn AI Agent analyzes programs using a chat model and structures the data as JSON.\n\n**Why**: Preprocessing ensures consistent, machine-readable data for downstream AI tasks, reducing manual parsing errors and standardizing inputs."
      },
      "typeVersion": 1
    },
    {
      "id": "57b026ba-67cd-4613-a164-9c3ee5782159",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1424,
        -32
      ],
      "parameters": {
        "color": 7,
        "width": 576,
        "height": 544,
        "content": "## Letter Generation Pipeline\n AI Letter Writer generates formal correspondence while AI Email Drafter produces email variants.  \n\n**Why**: Parallel processing reduces latency, dual AI models improve quality through comparison"
      },
      "typeVersion": 1
    },
    {
      "id": "30bfad78-4113-4077-8007-fbc3a2281d5b",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2016,
        -48
      ],
      "parameters": {
        "color": 7,
        "width": 544,
        "height": 560,
        "content": "## Output Processing\nJSON and email parsers extract structured data from AI responses. The workflow prepares a Slack summary consolidating key information.\n\n**Why**: Clean formatting ensures data integrity, structured outputs enable both human review and downstream system integration "
      },
      "typeVersion": 1
    },
    {
      "id": "dac25cff-b318-434b-bbed-a855cc6edcff",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2688,
        -272
      ],
      "parameters": {
        "color": 4,
        "width": 512,
        "height": 208,
        "content": "## Customization\n- Add multilingual support for international applicants\n- Include PDF letter generation with signatures\n\n## Benefits\nReduces communication time from 30 to 2 minutes per applicant, ensures consistent professional quality "
      },
      "typeVersion": 1
    },
    {
      "id": "6c7270d9-92d3-471e-9a92-f043e65bb640",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2576,
        -48
      ],
      "parameters": {
        "color": 7,
        "width": 720,
        "height": 560,
        "content": "## Response\nThe system sends a webhook response back to the originating application, completing the user request cycle.\n\n**Why**: Enables real-time feedback to users and closes the communication loop with the source system."
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "aee8ced3-7ffc-42a8-b0d3-aa4c7a3e1848",
  "connections": {
    "Extract Letter": {
      "main": [
        [
          {
            "node": "AI Agent - Email Drafter",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse Email Data": {
      "main": [
        [
          {
            "node": "Prepare Slack Summary",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "JSON Email Parser": {
      "ai_outputParser": [
        [
          {
            "node": "AI Agent - Email Drafter",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent - Program Matcher",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Parse AI Response": {
      "main": [
        [
          {
            "node": "AI Agent - Letter Writer",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "JSON Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "AI Agent - Program Matcher",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Extract User Profile": {
      "main": [
        [
          {
            "node": "Financial Programs Database",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Prepare Slack Summary": {
      "main": [
        [
          {
            "node": "Send Slack Notification",
            "type": "main",
            "index": 0
          },
          {
            "node": "Respond to Webhook",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Email Generator": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent - Email Drafter",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Letter Generator": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent - Letter Writer",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "AI Agent - Email Drafter": {
      "main": [
        [
          {
            "node": "Parse Email Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Agent - Letter Writer": {
      "main": [
        [
          {
            "node": "Extract Letter",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Agent - Program Matcher": {
      "main": [
        [
          {
            "node": "Parse AI Response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Financial Programs Database": {
      "main": [
        [
          {
            "node": "AI Agent - Program Matcher",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Webhook - User Profile Input": {
      "main": [
        [
          {
            "node": "Extract User Profile",
            "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.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

The webhook receives incoming profiles and extracts relevant demographic, financial, and credential data. The workflow then queries the programs database to identify suitable options, while the AI generates personalized recommendations based on eligibility and preferences. A…

Source: https://n8n.io/workflows/10627/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

Enhance your support, onboarding, and internal knowledge workflows with an intelligent RAG-powered chatbot that responds using live data stored in Google Sheets. 🤖📚 Built for teams that rely on struct

Chat Trigger, Output Parser Structured, Memory Buffer Window +6
AI & RAG

This workflow automatically processes new free-trial / lead sign-ups in real time: Catches a webhook from any source (Webflow form, Intercom, custom agent, etc.) Filters out personal / disposable / .e

Output Parser Structured, Agent, HTTP Request +7
AI & RAG

Public-facing professionals (developer advocates, founders, marketers, content creators) who get bombarded with LinkedIn messages that aren't actually for them - support requests when you're in market

Slack, HTTP Request, Agent +4
AI & RAG

This workflow automates enterprise resource planning (ERP) operations across Engineering, Finance, HR, and Admin departments for operations managers, ERP administrators, and business process owners wh

Agent, Gmail, Slack +6
AI & RAG

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

Redis, Agent, Output Parser Structured +7