This workflow corresponds to n8n.io template #16888 — we link there as the canonical source.
This workflow follows the Agent → Form Trigger 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": "R3ttYEl3vxAMFuKU",
"meta": {
"builderVariant": "mcp",
"aiBuilderAssisted": true,
"templateCredsSetupCompleted": true
},
"name": "Onboarding template",
"tags": [],
"nodes": [
{
"id": "b1a96f1b-3344-4601-a053-088dcded4c0c",
"name": "On form submission",
"type": "n8n-nodes-base.formTrigger",
"position": [
-304,
-528
],
"parameters": {
"options": {},
"formTitle": "Welcome to Nexus (take your first steps)",
"formFields": {
"values": [
{
"fieldLabel": "First name",
"placeholder": "john",
"requiredField": true
},
{
"fieldLabel": "Last name",
"placeholder": "doe",
"requiredField": true
},
{
"fieldLabel": "Email",
"requiredField": true
},
{
"fieldLabel": "Company/where you work ",
"requiredField": true
},
{
"fieldLabel": "Position/role ",
"placeholder": "engineer, business owner, IT guy e.t.c",
"requiredField": true
},
{
"fieldLabel": "Birthday ",
"requiredField": true
},
{
"fieldLabel": "Any other cool secrets you want to share?",
"placeholder": "we promise to keep it between us ",
"requiredField": true
},
{
"fieldLabel": "How do you get to know about us",
"requiredField": true
}
]
},
"formDescription": "This form registers your intent to join the community of AI builders , enthusiasts, engineers and developers"
},
"typeVersion": 2.3
},
{
"id": "51839026-f52d-4099-92b8-b8975ef44d8e",
"name": "Edit Fields",
"type": "n8n-nodes-base.set",
"position": [
-80,
-528
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "c85b0e68-3417-4900-b1ba-b14934571218",
"name": "First name ",
"type": "string",
"value": "={{ $json['First name'] }}"
},
{
"id": "a2ad959b-0b06-4de1-a278-f1687f481a9c",
"name": "Last name",
"type": "string",
"value": "={{ $json['Last name'] }}"
},
{
"id": "bc905f53-832c-4f2d-9bcd-122d80000ef1",
"name": "company name ",
"type": "string",
"value": "={{ $json['Company/where you work '] }}"
},
{
"id": "a9fe868a-5705-4f18-85fb-f76c443ce46e",
"name": "role/position",
"type": "string",
"value": "={{ $json['Position/role '] }}"
},
{
"id": "e4ba2ee7-0953-4f28-a9d0-60b76d2bc3e0",
"name": "birthday ",
"type": "string",
"value": "={{ $json['Birthday '] }}"
},
{
"id": "53fa9165-effd-4813-bca3-65ae3d95a789",
"name": "cool information",
"type": "string",
"value": "={{ $json['Any other cool secrets you want to share?'] }}"
},
{
"id": "0342c471-9d02-4b4f-95d2-1dc1edb2981d",
"name": "time and date submitted",
"type": "string",
"value": "={{ $json.submittedAt }}"
},
{
"id": "6895673d-47a9-4f9c-966d-4c39508cae8f",
"name": "LinkedIn url",
"type": "string",
"value": "={{ $json['LinkedIn url '] }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "5aa600cc-220f-4e0e-8a66-374230072c01",
"name": "Google Gemini Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
352,
-320
],
"parameters": {
"options": {}
},
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "5d37c089-90e3-4883-b51d-17253d17b2e5",
"name": "AI Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
608,
-544
],
"parameters": {
"text": "=you are a helpful assistant",
"options": {
"systemMessage": "=ROLE: You are an expert community vetting assistant for The {Your organization/community name} (A community for AI builders creators, entusaisth and business people). Your goal is to analyze candidate information and LinkedIn profiles to identify strong potential members.\n\nyou have access to a couple of tools:\n\n1. taviy search to search the web for information of thier current compnay and candidate information\n2. Tvaily search tool to get Linkedin profile information about the candidate in this formart (firstname-lastname)\n3.a calculator for any math function you need to carryout.\n4. a simple memory\n\nthe candidates information: \nfirstname:{{ $json['First name '] }}\nlastname:{{ $json['Last name'] }}\nrole:{{ $json['role/position'] }} (if this doesn't exsist use the information form linkedin search tool)\nsomething cool about the candidate {{ $('On form submission').item.json['Any other cool secrets you want to share?'] }}\ncompany name:{{ $json['company name '] }}\n\nthe current time is: {{ $json['time and date submitted'] }}\n\nCOMMUNITY CRITERIA:\nOur community seeks members who:\n- Work in work with AI or are intreasted in useing AI to improve thier businesses or Lives\n- Demonstrate [specific qualities, e.g., \"collaborative spirit, innovative thinking\"]\n- Have experience with [relevant technologies/methodologies or an intrest in AI, e.g., \"AI,strategies, development, open source, Storytelling, Sales and marketing\"]\n- Show [desired traits, e.g., \"continuous learning, community contribution\"]\n\nANALYSIS FRAMEWORK:\n\n1. PROFESSIONAL BACKGROUND ASSESSMENT:\n - Industry relevance to our community\n - Career progression and achievements\n - Technical/skill alignment with our focus areas\n - Notable companies or projects\n\n2. COMMUNITY FIT INDICATORS:\n - Evidence of knowledge sharing (posts, articles, contributions)\n - Participation in relevant groups or organizations\n - Skills that complement existing member base\n - Stated interests that align with community activities\n\n3. POTENTIAL VALUE ADD:\n - Unique expertise or perspective they bring\n - Potential to contribute to discussions/events\n - Ability to mentor or be mentored\n - Network connections that could benefit the community\n\nOUTPUT FORMAT:\n\nCANDIDATE SUMMARY\n\nProfessional Snapshot:\n[2-3 sentence overview of their career and current role]\n\nKey Strengths:\n- [Bullet point 1: Most relevant experience]\n- [Bullet point 2: Notable skills]\n- [Bullet point 3: Unique qualifications]\n\nCommunity Fit Analysis:\n[Explanation of how their background aligns with our community values and needs]\n\nPotential Contributions:\n- [Specific ways they could participate/contribute]\n- [Knowledge areas they could share]\n\nConfidence Rating: [High/Medium/Low] - [Brief justification]\n\nRecommended Next Steps: [Immediate approval/Additional info needed/Interview recommended]\n\nif you have previously provided users data plese display your previous response but add a note in the next steps about it."
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 2.2,
"alwaysOutputData": true
},
{
"id": "74c97ada-f1a7-4da3-b517-8b5de463de32",
"name": "Calculator",
"type": "@n8n/n8n-nodes-langchain.toolCalculator",
"position": [
608,
-320
],
"parameters": {},
"typeVersion": 1
},
{
"id": "a815a6c3-a653-416b-9607-04ec002e49e0",
"name": "Structured Output Parser",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
992,
-320
],
"parameters": {
"jsonSchemaExample": "{\n \"candidate_summary\": {\n \"name\": \"John Martinez\",\n \"current_role\": \"Software Engineer at StartupXYZ\",\n \"professional_snapshot\": \"3 years full-stack development, focused on React and Node.js, open source contributor\"\n },\n \"vetting_decision\": {\n \"status\": \"review\",\n \"confidence\": \"medium\", \n \"reason\": \"Good technical skills but limited senior experience, needs manual review\"\n },\n \"key_qualifications\": [\n \"React development\",\n \"Node.js backend\",\n \"Open source contributions\",\n \"API design\"\n ],\n \"community_fit\": {\n \"score\": 0.75,\n \"strengths\": [\n \"Strong technical skills\",\n \"Active in open source\",\n \"Growth potential\"\n ]\n }\n}"
},
"typeVersion": 1.3
},
{
"id": "31e8b866-1bb5-4b67-aab6-187c29f07d6a",
"name": "Send message and wait for response",
"type": "n8n-nodes-base.telegram",
"position": [
2672,
-1088
],
"parameters": {
"message": "={{ $json.output.candidate_summary.name }}\n{{ $json.output.candidate_summary.current_role }}\n{{ $json.output.candidate_summary.professional_snapshot }}\n\n{{ $json.output.vetting_decision.status }}\n{{ $json.output.vetting_decision.reason }}",
"options": {
"appendAttribution": false
},
"operation": "sendAndWait"
},
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "01ceb5a2-e881-4d16-bf66-6f4ddf4d02bc",
"name": "If",
"type": "n8n-nodes-base.if",
"position": [
2192,
-656
],
"parameters": {
"options": {
"ignoreCase": true
},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": false,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "6a82f919-8c4c-4012-90a3-c599cb981b61",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.output.vetting_decision.status }}",
"rightValue": "Immediate approval"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "2b5a40d7-f1ae-4254-9a3f-a4ac64707369",
"name": "Append row in sheet",
"type": "n8n-nodes-base.googleSheets",
"position": [
3344,
-1024
],
"parameters": {
"columns": {
"value": {
"role": "={{ $('On form submission').item.json['Position/role '] }}",
"Score": "={{ $('AI Agent').item.json.output.community_fit.score }}",
"Emails": "={{ $('On form submission').item.json.Email }}",
"Status": "={{ $('AI Agent').item.json.output.vetting_decision.status }}",
"Company": "={{ $('On form submission').item.json['Company/where you work '] }}",
"Summary": "={{ $('AI Agent').item.json.output.candidate_summary.professional_snapshot }}",
"birthday": "={{ $('On form submission').item.json['Birthday '] }}",
"Member name": "={{ $('AI Agent').item.json.output.candidate_summary.name }}",
"date and time ": "={{ $('On form submission').item.json.submittedAt }}"
},
"schema": [
{
"id": "Member name",
"type": "string",
"display": true,
"required": false,
"displayName": "Member name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Summary",
"type": "string",
"display": true,
"required": false,
"displayName": "Summary",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Company",
"type": "string",
"display": true,
"required": false,
"displayName": "Company",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "role",
"type": "string",
"display": true,
"required": false,
"displayName": "role",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "birthday",
"type": "string",
"display": true,
"required": false,
"displayName": "birthday",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Score",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Score",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "date and time ",
"type": "string",
"display": true,
"required": false,
"displayName": "date and time ",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Status",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Emails",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Emails",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1eoHxkqsRnT0u-kWhEH_elgtCOW0b4M1Zgwi4cNgpSZc/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "url",
"value": "https://docs.google.com/spreadsheets/d/1rO8_GK3hSdV-dWFSkmMMSqCWIumh2N4-WChiHavPli4/edit?gid=1268673786#gid=1268673786"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.7
},
{
"id": "08c95807-9246-4938-ad8e-4689482ef3f9",
"name": "Send message and wait for response1",
"type": "n8n-nodes-base.telegram",
"position": [
2480,
-688
],
"parameters": {
"message": "={{ $json.output.candidate_summary.name }} {{ $json.output.candidate_summary.current_role }} {{ $json.output.candidate_summary.professional_snapshot }} {{ $json.output.vetting_decision.status }} {{ $json.output.vetting_decision.reason }} please respond with a number 1. proceed with invitation 2. send a rejection 3. do nothing ",
"options": {},
"operation": "sendAndWait",
"responseType": "freeText"
},
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "c948d1c2-41ca-4c0f-86cf-cf64a6a5587a",
"name": "Switch",
"type": "n8n-nodes-base.switch",
"position": [
2688,
-752
],
"parameters": {
"rules": {
"values": [
{
"outputKey": "Approve",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "26f123f8-a6d5-438a-9d53-a7bf6b623a40",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.data.text }}",
"rightValue": "1"
}
]
},
"renameOutput": true
},
{
"outputKey": "rejection",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "31b4af3e-697f-40ad-8de9-c72e797a6425",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.data.text }}",
"rightValue": "2"
}
]
},
"renameOutput": true
},
{
"outputKey": "do nothing",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "df7db6f3-b010-4cec-8ba9-7085da0c51d7",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.data.text }}",
"rightValue": "3"
}
]
},
"renameOutput": true
}
]
},
"options": {}
},
"typeVersion": 3.3
},
{
"id": "6384a82f-8bc8-4742-b5b2-04beb3bb0ee3",
"name": "Append row in sheet1",
"type": "n8n-nodes-base.googleSheets",
"position": [
3312,
-768
],
"parameters": {
"columns": {
"value": {
"role": "={{ $('On form submission').item.json['Position/role '] }}",
"Socre": "={{ $('AI Agent').item.json.output.community_fit.score }}",
"Status": "={{ $('AI Agent').item.json.output.vetting_decision.status }}",
"Company": "={{ $('On form submission').item.json['Company/where you work '] }}",
"Summary": "={{ $('AI Agent').item.json.output.candidate_summary.professional_snapshot }}",
"birthday": "={{ $('On form submission').item.json['Birthday '] }}",
"Member name": "={{ $('AI Agent').item.json.output.candidate_summary.name }}",
"date and time ": "={{ $('On form submission').item.json.submittedAt }}"
},
"schema": [
{
"id": "Member name",
"type": "string",
"display": true,
"required": false,
"displayName": "Member name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Summary",
"type": "string",
"display": true,
"required": false,
"displayName": "Summary",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Company",
"type": "string",
"display": true,
"required": false,
"displayName": "Company",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "role",
"type": "string",
"display": true,
"required": false,
"displayName": "role",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "birthday",
"type": "string",
"display": true,
"required": false,
"displayName": "birthday",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Socre",
"type": "string",
"display": true,
"required": false,
"displayName": "Socre",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "date and time ",
"type": "string",
"display": true,
"required": false,
"displayName": "date and time ",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Status",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Status",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1eoHxkqsRnT0u-kWhEH_elgtCOW0b4M1Zgwi4cNgpSZc/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "url",
"value": "https://docs.google.com/spreadsheets/d/1rO8_GK3hSdV-dWFSkmMMSqCWIumh2N4-WChiHavPli4/edit?gid=1268673786#gid=1268673786"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.7
},
{
"id": "ab71d44a-33be-4257-9376-95e69685526c",
"name": "No Operation, do nothing",
"type": "n8n-nodes-base.noOp",
"position": [
2912,
-576
],
"parameters": {},
"typeVersion": 1
},
{
"id": "2f2d70c7-07a7-45a6-9ccf-66e58e7da882",
"name": "Web Search tavily",
"type": "@tavily/n8n-nodes-tavily.tavilyTool",
"position": [
736,
-320
],
"parameters": {
"query": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Query', `search for the company and candidate detias her here`, 'string') }}",
"options": {}
},
"credentials": {
"tavilyApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "88caedb5-8468-4263-a0c9-8fa414f67181",
"name": "Run an Actor in Apify",
"type": "@apify/n8n-nodes-apify.apifyTool",
"position": [
864,
-320
],
"parameters": {
"actorId": {
"__rl": true,
"mode": "list",
"value": "M2FMdjRVeF1HPGFcc",
"cachedResultUrl": "https://console.apify.com/actors/M2FMdjRVeF1HPGFcc/input",
"cachedResultName": "LinkedIn Profile Search Scraper No Cookies \u2705 Find all people \ud83d\udce7 (harvestapi/linkedin-profile-search)"
},
"timeout": {},
"customBody": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Input_JSON', ``, 'json') }}",
"actorSource": "store"
},
"credentials": {
"apifyApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "55ff67f7-b5ca-4819-8445-20ce5e26224e",
"name": "Simple Memory",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"position": [
480,
-320
],
"parameters": {
"contextWindowLength": 10
},
"typeVersion": 1.4
},
{
"id": "2070a275-b182-4cad-b25c-649f317a2b99",
"name": "Trigger - Form Submission",
"type": "n8n-nodes-base.stickyNote",
"position": [
-464,
-960
],
"parameters": {
"color": 7,
"width": 576,
"height": 616,
"content": "# Trigger - Form Submission\n\nThis workflow starts when someone fills out the membership form.\n\nFill in the form at: YOUR_N8N_URL/form/YOUR_FORM_PATH\n\nThe form collects:\n- First name, last name\n- Email address\n- Company name\n- Role / position\n- Birthday\n- How they found the community\n- Any other info they want to share\n\nAfter submission, the data is sanitized (cleaned up) and passed to the AI Agent for vetting."
},
"typeVersion": 1
},
{
"id": "27abb440-0f45-4757-9f5d-2b4345763e0d",
"name": "AI Vetting - Candidate Analysis",
"type": "n8n-nodes-base.stickyNote",
"position": [
432,
-1104
],
"parameters": {
"color": 5,
"width": 656,
"height": 856,
"content": "# AI Vetting - Candidate Analysis\n\nThe AI Agent (Google Gemini) reviews every applicant automatically.\n\nIt has access to:\n- The applicant data from the form\n- Web search (Firecrawl) to research their company\n- LinkedIn profile lookup via Apify (RapidAPI)\n- A calculator for any math needed\n- A memory buffer for context\n\nThe AI checks each candidate against your community criteria and outputs a structured recommendation:\n- Immediate approval\n- Review needed (sends to human)\n- Rejection\n\nEdit the AI Agent system message to set YOUR community criteria (e.g. AI interest, experience level, industry)."
},
"typeVersion": 1
},
{
"id": "c90e2a9f-b244-49f7-b5b5-e10f157ea9ce",
"name": "Human Approval Gate",
"type": "n8n-nodes-base.stickyNote",
"position": [
1936,
-1136
],
"parameters": {
"color": 3,
"width": 1168,
"height": 744,
"content": "# Human Approval Gate\n\nAfter AI vetting, results are sent to your Telegram bot.\n\nYou receive a message showing:\n- Candidate name and current role\n- Professional background summary\n- AI vetting decision and reasoning\n- Community fit score\n\n## Two Paths After Vetting\n**\u2705 Strong candidate** \u2192 sent straight to your Telegram. No waiting.\n\n**\u23f3 Needs approval** \u2192 summary sent to your Telegram with 3 options:\n1 = Approve \u2192 welcome email sent\n2 = Reject \u2192 polite rejection sent\n3 = Skip \u2192 no action taken\n\n"
},
"typeVersion": 1
},
{
"id": "de1ff738-0497-487d-b052-035a340d74f7",
"name": "Template Overview",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1120,
-944
],
"parameters": {
"color": 4,
"width": 508,
"height": 840,
"content": "# Community Onboarding Template\n\n### How it works\n\nThis template automates your membership application process. When someone submits the form, an AI (Google Gemini) vets each candidate using web search and LinkedIn lookup. The AI recommends approve, review, or reject \u2014 then a human (you) makes the final call via Telegram. Approved candidates get a welcome email; all decisions are logged to Google Sheets.\n\n### Setup\n\nBefore enabling, set up these credentials in their respective nodes:\n1. Telegram Bot (chatId + bot token)\n2. Google Gemini (API key)\n3. Tavily (API key \u2014 tavily.com)\n4. Apify (LinkedIn scraper key)\n5. Google Sheets (sheet ID + Drive access)\n\nAlso replace the form URL path, Telegram chat IDs, and sheet ID placeholders in each node.\n\n### Customization\n\nEdit the AI Agent system message to match YOUR community criteria. The Switch node routes based on the AI decision \u2014 adjust the routing logic if your flow differs. you can edit the form to capture more information and route as you see fit. \n\nHave fun with it \ud83d\ude09\ud83d\udc4c"
},
"typeVersion": 1
},
{
"id": "dae56e6a-749f-4d33-a125-8e979354c95e",
"name": "Google Sheets Logging",
"type": "n8n-nodes-base.stickyNote",
"position": [
3216,
-1248
],
"parameters": {
"color": 4,
"width": 340,
"height": 696,
"content": "## Google Sheets Log\n\nEvery decision is recorded automatically: name, email, company, AI vetting result, your decision, and timestamp."
},
"typeVersion": 1
},
{
"id": "196da0a9-5fd3-434d-8fcb-1778edc8ea6c",
"name": "Send a Rejection email",
"type": "n8n-nodes-base.gmail",
"position": [
2944,
-800
],
"parameters": {
"sendTo": "={{ $('On form submission').item.json.Email }}",
"message": "=<!DOCTYPE html>\n<html>\n<head>\n <meta charset=\"UTF-8\">\n <style>\n body { font-family: Arial, sans-serif; line-height: 1.6; color: #333; max-width: 600px; margin: 0 auto; padding: 20px; }\n .header { background: #667eea; color: white; padding: 20px; text-align: center; border-radius: 8px 8px 0 0; }\n .content { background: #f9f9f9; padding: 20px; border-radius: 0 0 8px 8px; }\n .community { color: #667eea; font-weight: bold; }\n </style>\n</head>\n<body>\n <div class=\"header\">\n <h1>{Your organization/community name} Community</h1>\n </div>\n <div class=\"content\">\n <h2>Hello {{ $('Edit Fields').item.json['First name '] }},</h2>\n <p>Thank you for applying to join the <span class=\"community\">{Your organization/community name}</span> community.</p>\n <p>After careful consideration, we won't be moving forward with your application at this time.</p>\n <p><strong>Please don't be discouraged!</strong> Our community needs change regularly, and we'd love for you to apply again in 1-3 months.</p>\n <p>We appreciate your interest and wish you all the best in your professional journey.</p>\n <p>Best regards,<br>The {Your organization/community name} Team</p>\n </div>\n</body>\n</html>",
"options": {}
},
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "a50b2d78-a00c-4f85-b18c-bee67185e26f",
"name": "Send approval/Invite email",
"type": "n8n-nodes-base.gmail",
"position": [
2912,
-1040
],
"parameters": {
"sendTo": "={{ $('On form submission').item.json.Email }}",
"message": "=<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <title>Welcome to {Your organization/community name} Community</title>\n <style>\n /* Reset styles for email clients */\n body, html {\n margin: 0;\n padding: 0;\n font-family: 'Helvetica Neue', Arial, sans-serif;\n line-height: 1.6;\n color: #333333;\n background-color: #f7f9fc;\n }\n \n .email-container {\n max-width: 600px;\n margin: 0 auto;\n background-color: #ffffff;\n border-radius: 8px;\n overflow: hidden;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n }\n \n .email-header {\n background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n padding: 30px 20px;\n text-align: center;\n color: white;\n }\n \n .email-header h1 {\n margin: 0;\n font-size: 28px;\n font-weight: 700;\n }\n \n .email-header p {\n margin: 10px 0 0;\n opacity: 0.9;\n font-size: 16px;\n }\n \n .email-body {\n padding: 30px;\n }\n \n .welcome-section {\n margin-bottom: 25px;\n }\n \n .welcome-section h2 {\n color: #4a5568;\n margin-top: 0;\n font-size: 22px;\n }\n \n .cta-button {\n display: block;\n width: 80%;\n max-width: 300px;\n margin: 30px auto;\n padding: 14px 20px;\n background-color: #25D366;\n color: white;\n text-decoration: none;\n border-radius: 50px;\n font-weight: bold;\n text-align: center;\n font-size: 18px;\n box-shadow: 0 4px 6px rgba(37, 211, 102, 0.3);\n transition: all 0.3s ease;\n }\n \n .cta-button:hover {\n background-color: #128C7E;\n transform: translateY(-2px);\n box-shadow: 0 6px 8px rgba(37, 211, 102, 0.4);\n }\n \n .steps-section {\n background-color: #f8fafc;\n border-radius: 8px;\n padding: 20px;\n margin: 25px 0;\n }\n \n .steps-section h3 {\n color: #4a5568;\n margin-top: 0;\n font-size: 18px;\n }\n \n .steps-section ol {\n padding-left: 20px;\n margin-bottom: 0;\n }\n \n .steps-section li {\n margin-bottom: 10px;\n }\n \n .guidelines-section {\n border-left: 4px solid #667eea;\n padding-left: 15px;\n margin: 25px 0;\n }\n \n .guidelines-section h3 {\n color: #4a5568;\n margin-top: 0;\n }\n \n .guidelines-section ul {\n padding-left: 20px;\n margin-bottom: 0;\n }\n \n .guidelines-section li {\n margin-bottom: 8px;\n }\n \n .personal-note {\n background-color: #fff9e6;\n border-radius: 8px;\n padding: 15px;\n margin: 25px 0;\n border-left: 4px solid #ffcc00;\n }\n \n .email-footer {\n text-align: center;\n padding: 20px;\n background-color: #f1f5f9;\n color: #64748b;\n font-size: 14px;\n }\n \n .community-name {\n color: #667eea;\n font-weight: bold;\n }\n \n @media only screen and (max-width: 600px) {\n .email-body {\n padding: 20px;\n }\n \n .email-header h1 {\n font-size: 24px;\n }\n \n .cta-button {\n width: 90%;\n }\n }\n </style>\n</head>\n<body>\n <div class=\"email-container\">\n <div class=\"email-header\">\n <h1>Welcome to {Your organization/community name}!</h1>\n <p>We're excited to have you join our community</p>\n </div>\n \n <div class=\"email-body\">\n <div class=\"welcome-section\">\n <h2>Hello {{ $('Edit Fields').item.json['First name '] }},</h2>\n <p>Welcome to <span class=\"community-name\">{Your organization/community name}</span>! We're thrilled to have you as part of our growing community of passionate professionals.</p>\n <p>Your application has been approved, and we believe your background in {{ $('Edit Fields').item.json['role/position'] }} will be a valuable addition to our discussions.</p>\n </div>\n \n <div class=\"personal-note\">\n <p><strong>Note from the team:</strong> We're excited to have someone with your experience join us and look forward to your contributions to our community conversations.</p>\n </div>\n \n <a href=\"https://chat.whatsapp.com/DzwjI0QRF9PKrX5As3UzrX?mode=wwt\" class=\"cta-button\">\n Join WhatsApp Group\n </a>\n \n <div class=\"steps-section\">\n <h3>To get started:</h3>\n <ol>\n <li><strong>Join our WhatsApp group</strong> using the button above</li>\n <li><strong>Introduce yourself</strong> - share who you are and what you do</li>\n <li><strong>Explore ongoing conversations</strong> and jump into topics that interest you</li>\n <li><strong>Connect with other members</strong> who share your interests</li>\n </ol>\n </div>\n \n <div class=\"guidelines-section\">\n <h3>Community Guidelines:</h3>\n <ul>\n <li>Be respectful and inclusive in all interactions</li>\n <li>Share knowledge and experiences generously</li>\n <li>No spam or excessive self-promotion</li>\n <li>Help maintain a positive and supportive environment</li>\n <li>Keep discussions professional and constructive</li>\n </ul>\n </div>\n \n <p>We're looking forward to connecting with you and seeing you actively participate in our community!</p>\n \n <p>Best regards,<br>\n The <span class=\"community-name\">{Your organization/community name}</span> Team</p>\n </div>\n \n <div class=\"email-footer\">\n <p>You're receiving this email because you applied to join {Your organization/community name} Community.</p>\n <p>© 2024 {Your organization/community name} Community. All rights reserved.</p>\n </div>\n </div>\n</body>\n</html>",
"options": {
"appendAttribution": false
}
},
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
}
],
"active": false,
"settings": {
"timezone": "Africa/Lagos",
"binaryMode": "separate",
"callerPolicy": "workflowsFromSameOwner",
"errorWorkflow": "jHjkAYdK5vMFsIrx",
"timeSavedMode": "fixed",
"availableInMCP": true,
"executionOrder": "v1",
"timeSavedPerExecution": 10
},
"versionId": "42c99b89-e5da-4974-a59a-a304a2ae021b",
"nodeGroups": [],
"connections": {
"If": {
"main": [
[
{
"node": "Send message and wait for response",
"type": "main",
"index": 0
}
],
[
{
"node": "Send message and wait for response1",
"type": "main",
"index": 0
}
]
]
},
"Switch": {
"main": [
[
{
"node": "Send approval/Invite email",
"type": "main",
"index": 0
}
],
[
{
"node": "Send a Rejection email",
"type": "main",
"index": 0
}
],
[
{
"node": "No Operation, do nothing",
"type": "main",
"index": 0
}
]
]
},
"AI Agent": {
"main": [
[
{
"node": "If",
"type": "main",
"index": 0
}
]
]
},
"Calculator": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Edit Fields": {
"main": [
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
},
"Simple Memory": {
"ai_memory": [
[
{
"node": "AI Agent",
"type": "ai_memory",
"index": 0
}
]
]
},
"Web Search tavily": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"On form submission": {
"main": [
[
{
"node": "Edit Fields",
"type": "main",
"index": 0
}
]
]
},
"Run an Actor in Apify": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Send a Rejection email": {
"main": [
[
{
"node": "Append row in sheet1",
"type": "main",
"index": 0
}
]
]
},
"Google Gemini Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Structured Output Parser": {
"ai_outputParser": [
[
{
"node": "AI Agent",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Send approval/Invite email": {
"main": [
[
{
"node": "Append row in sheet",
"type": "main",
"index": 0
}
]
]
},
"Send message and wait for response": {
"main": [
[
{
"node": "Send approval/Invite email",
"type": "main",
"index": 0
}
]
]
},
"Send message and wait for response1": {
"main": [
[
{
"node": "Switch",
"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.
apifyApigmailOAuth2googlePalmApigoogleSheetsOAuth2ApitavilyApitelegramApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow collects community membership applications via an n8n Form, vets each candidate with Google Gemini using Tavily web search and an Apify LinkedIn lookup, requests human approval in Telegram when needed, sends invite or rejection emails via Gmail, and logs outcomes…
Source: https://n8n.io/workflows/16888/ — 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.
Arvifund - Supabase (Fixed v5). Uses httpRequest, telegram, googleSheets, telegramTrigger. Event-driven trigger; 91 nodes.
Arvifund - Supabase. Uses httpRequest, telegram, googleSheets, telegramTrigger. Event-driven trigger; 90 nodes.
Arvifund - Supabase (Fixed v2). Uses httpRequest, telegram, googleSheets, telegramTrigger. Event-driven trigger; 90 nodes.
Arvifund - Supabase (Fixed v4). Uses httpRequest, telegram, googleSheets, telegramTrigger. Event-driven trigger; 90 nodes.
Arvifund - Supabase (Fixed v3). Uses httpRequest, telegram, googleSheets, telegramTrigger. Event-driven trigger; 90 nodes.