Skip to content

Commit c91fd47

Browse files
committed
Add new workflows for student application processing: AI analysis and confirmation email.
1 parent c9bd17e commit c91fd47

2 files changed

Lines changed: 414 additions & 0 deletions

File tree

Lines changed: 236 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,236 @@
1+
{
2+
"name": "Devcon Student Application AI Analysis",
3+
"nodes": [
4+
{
5+
"parameters": {
6+
"httpMethod": "POST",
7+
"path": "student-application-analyze",
8+
"authentication": "headerAuth",
9+
"responseMode": "responseNode",
10+
"options": {}
11+
},
12+
"type": "n8n-nodes-base.webhook",
13+
"typeVersion": 2,
14+
"position": [-1184, 1008],
15+
"id": "b2c3d4e5-2222-4333-9444-bbbb00000001",
16+
"name": "NocoDB Webhook",
17+
"webhookId": "student-application-analyze",
18+
"credentials": {
19+
"httpHeaderAuth": {
20+
"id": "PoTiB7uaIdDbC49L",
21+
"name": "Header Auth account"
22+
}
23+
}
24+
},
25+
{
26+
"parameters": {
27+
"rules": {
28+
"values": [
29+
{
30+
"conditions": {
31+
"options": { "caseSensitive": true, "leftValue": "", "typeValidation": "strict" },
32+
"combinator": "and",
33+
"conditions": [
34+
{
35+
"leftValue": "={{ $json.body.type }}",
36+
"rightValue": "records.after.insert",
37+
"operator": { "type": "string", "operation": "equals" }
38+
},
39+
{
40+
"leftValue": "={{ !!($json.body.data.rows[0].Email) }}",
41+
"rightValue": true,
42+
"operator": { "type": "boolean", "operation": "true", "singleValue": true }
43+
}
44+
]
45+
},
46+
"renameOutput": true,
47+
"outputKey": "Submitted"
48+
}
49+
]
50+
},
51+
"options": {
52+
"fallbackOutput": "extra",
53+
"renameFallbackOutput": "Skip"
54+
}
55+
},
56+
"type": "n8n-nodes-base.switch",
57+
"typeVersion": 3,
58+
"position": [-880, 1008],
59+
"id": "b2c3d4e5-2222-4333-9444-bbbb00000002",
60+
"name": "Check Submission"
61+
},
62+
{
63+
"parameters": {
64+
"promptType": "define",
65+
"text": "=Please analyze this Devcon 8 student ticket application and produce concise reviewer notes (2–4 sentences). Highlight: (1) relevance of background and proof of work to Ethereum/Devcon, (2) credibility signals (institution, year, specificity of PoW), (3) any red flags (vague answers, off-topic content, likely spam). Be neutral and factual. Do NOT include a recommendation or decision.\n\nApplication:\n- Full Name: {{ $('NocoDB Webhook').item.json.body.data.rows[0]['Full Name'] }}\n- University / Organization: {{ $('NocoDB Webhook').item.json.body.data.rows[0]['University / Organization'] }}\n- Year of Study: {{ $('NocoDB Webhook').item.json.body.data.rows[0]['Year of Study'] }}\n- Country: {{ $('NocoDB Webhook').item.json.body.data.rows[0]['Country'] }}\n- Email: {{ $('NocoDB Webhook').item.json.body.data.rows[0]['Email'] }}\n- Proof of Work: {{ $('NocoDB Webhook').item.json.body.data.rows[0]['Why do you want to attend Devcon? (Proof of Work)'] }}"
66+
},
67+
"type": "@n8n/n8n-nodes-langchain.chainLlm",
68+
"typeVersion": 1.9,
69+
"position": [-560, 944],
70+
"id": "b2c3d4e5-2222-4333-9444-bbbb00000003",
71+
"name": "Analyze Application"
72+
},
73+
{
74+
"parameters": {
75+
"model": {
76+
"__rl": true,
77+
"mode": "list",
78+
"value": "openai/gpt-oss-120b",
79+
"cachedResultName": "openai/gpt-oss-120b"
80+
},
81+
"responsesApiEnabled": false,
82+
"options": {
83+
"maxTokens": 400,
84+
"temperature": 0.3
85+
}
86+
},
87+
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
88+
"typeVersion": 1.3,
89+
"position": [-560, 1168],
90+
"id": "b2c3d4e5-2222-4333-9444-bbbb00000007",
91+
"name": "OpenAI Chat Model",
92+
"credentials": {
93+
"openAiApi": {
94+
"id": "UKT4dfo0RcghxBmi",
95+
"name": "OpenAI account"
96+
}
97+
}
98+
},
99+
{
100+
"parameters": {
101+
"resource": "row",
102+
"operation": "update",
103+
"authentication": "nocoDbApiToken",
104+
"version": 2,
105+
"projectId": "={{ $('NocoDB Webhook').item.json.body.base_id }}",
106+
"table": "={{ $('NocoDB Webhook').item.json.body.data.table_id }}",
107+
"primaryKey": "id",
108+
"id": "={{ $('NocoDB Webhook').item.json.body.data.rows[0].Id }}",
109+
"dataToSend": "defineBelow",
110+
"fieldsUi": {
111+
"fieldValues": [
112+
{
113+
"fieldName": "Notes",
114+
"fieldValue": "={{ $json.text || $json.response?.text || $json.output || '' }}"
115+
}
116+
]
117+
}
118+
},
119+
"type": "n8n-nodes-base.nocoDb",
120+
"typeVersion": 3,
121+
"position": [-304, 944],
122+
"id": "b2c3d4e5-2222-4333-9444-bbbb00000004",
123+
"name": "Update Notes",
124+
"credentials": {
125+
"nocoDbApiToken": {
126+
"id": "OtGv4def4du8PRxd",
127+
"name": "NocoDB account"
128+
}
129+
}
130+
},
131+
{
132+
"parameters": {
133+
"respondWith": "json",
134+
"responseBody": "={{ { success: true, status: 'Analyzed' } }}",
135+
"options": {}
136+
},
137+
"type": "n8n-nodes-base.respondToWebhook",
138+
"typeVersion": 1.1,
139+
"position": [-48, 944],
140+
"id": "b2c3d4e5-2222-4333-9444-bbbb00000005",
141+
"name": "Respond Analyzed"
142+
},
143+
{
144+
"parameters": {
145+
"respondWith": "json",
146+
"responseBody": "={{ { success: true, skipped: true } }}",
147+
"options": {}
148+
},
149+
"type": "n8n-nodes-base.respondToWebhook",
150+
"typeVersion": 1.1,
151+
"position": [-272, 1360],
152+
"id": "b2c3d4e5-2222-4333-9444-bbbb00000006",
153+
"name": "Respond Skipped"
154+
}
155+
],
156+
"pinData": {
157+
"NocoDB Webhook": [
158+
{
159+
"json": {
160+
"headers": {
161+
"content-type": "application/json",
162+
"x-webhook-key": "test-secret"
163+
},
164+
"body": {
165+
"type": "records.after.insert",
166+
"id": "mock-test-003",
167+
"base_id": "p964xl4nowbllvq",
168+
"version": "v3",
169+
"data": {
170+
"table_id": "m3bqjjne9mqgnue",
171+
"table_name": "Student Application",
172+
"rows": [
173+
{
174+
"Id": 1,
175+
"CreatedAt": "2026-04-16 19:15:53+00:00",
176+
"UpdatedAt": null,
177+
"Full Name": "Didier",
178+
"University / Organization": "ETH Zurich",
179+
"Year of Study": "3rd Year",
180+
"Country": "France",
181+
"Why do you want to attend Devcon? (Proof of Work)": "I've been contributing to EIP-4844 research and building rollup infrastructure.",
182+
"Status": "To review",
183+
"Email": "didier.krux@ethereum.org",
184+
"Email Classification": null,
185+
"Rating": null,
186+
"Notes": null,
187+
"Submission Date": null
188+
}
189+
]
190+
}
191+
}
192+
}
193+
}
194+
]
195+
},
196+
"connections": {
197+
"NocoDB Webhook": {
198+
"main": [
199+
[{ "node": "Check Submission", "type": "main", "index": 0 }]
200+
]
201+
},
202+
"Check Submission": {
203+
"main": [
204+
[{ "node": "Analyze Application", "type": "main", "index": 0 }],
205+
[{ "node": "Respond Skipped", "type": "main", "index": 0 }]
206+
]
207+
},
208+
"OpenAI Chat Model": {
209+
"ai_languageModel": [
210+
[{ "node": "Analyze Application", "type": "ai_languageModel", "index": 0 }]
211+
]
212+
},
213+
"Analyze Application": {
214+
"main": [
215+
[{ "node": "Update Notes", "type": "main", "index": 0 }]
216+
]
217+
},
218+
"Update Notes": {
219+
"main": [
220+
[{ "node": "Respond Analyzed", "type": "main", "index": 0 }]
221+
]
222+
}
223+
},
224+
"active": true,
225+
"settings": {
226+
"executionOrder": "v1",
227+
"binaryMode": "separate"
228+
},
229+
"versionId": "b2c3d4e5-2222-4333-9444-cccc00000002",
230+
"meta": {
231+
"templateCredsSetupCompleted": true,
232+
"instanceId": "3960a2463a75a85b31cb3db12639be3d0681722b12e96a1eafac4819449813e5"
233+
},
234+
"id": "wOAlFGT45KS96zwA",
235+
"tags": []
236+
}

0 commit comments

Comments
 (0)