This workflow corresponds to n8n.io template #9611 — we link there as the canonical source.
This workflow follows the Agent → HTTP Request 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 →
{
"nodes": [
{
"id": "5260b56b-4cf1-4b6e-a510-a171f7fe6eb0",
"name": "JotForm Trigger",
"type": "n8n-nodes-base.jotFormTrigger",
"position": [
0,
288
],
"parameters": {
"form": "252861492721056",
"onlyAnswers": false
},
"credentials": {
"jotFormApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "ba08e42e-b16c-428f-bb7b-3b24c5323331",
"name": "AI Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
1024,
288
],
"parameters": {
"text": "=You are an expert contract analyst. Review the project contract below and protect the client\u2019s interests. Output must be under 1000 chars and Telegram-compatible (no markdown links or code blocks).\n\nContract:{{ $json.text }}\n\nAnalyze and respond in this exact format:\nCONTRACT ANALYSIS REPORT\n\ud83d\udea9 MAJOR RED FLAGS:\u2022 Quote risky lines and briefly say why they\u2019re unfair (e.g., payment delays, one-sided termination).\n\ud83d\udd0d HIDDEN & UNFAIR CLAUSES:\u2022 Mention vague terms or auto-renewal traps. Explain how they harm the client and what to question the other party about.\n\u2705 SUMMARY & RECOMMENDATION:\u2022 Give a short risk rating (Low / Medium / High) and 1-line advice (e.g., \u201cNeeds negotiation before signing\u201d).\nKeep tone formal, concise, and Telegram-safe (no markdown tables, long code, or bullets over 5).",
"options": {},
"promptType": "define"
},
"typeVersion": 2.2
},
{
"id": "64dcd5ca-0e47-4c7b-817c-04705f8d64c2",
"name": "Google Gemini Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
1024,
464
],
"parameters": {
"options": {}
},
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "b9fc554f-a00c-4955-98aa-272881c4f43c",
"name": "Send a text message",
"type": "n8n-nodes-base.telegram",
"position": [
1424,
288
],
"parameters": {
"text": "={{ $json.output }}",
"chatId": "enter-your-chat-id",
"additionalFields": {
"appendAttribution": false
}
},
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "b7f4495d-6080-479d-8969-e86c86a8ffc3",
"name": "Grab Attachment Details",
"type": "n8n-nodes-base.httpRequest",
"position": [
272,
288
],
"parameters": {
"url": "=https://api.jotform.com/submission/{{ $json.submissionID }}?apiKey=enter-your-jotfrom-api",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "9eed2517-78c3-4992-bc11-b1bb31379576",
"name": "Grab the attached Contract",
"type": "n8n-nodes-base.httpRequest",
"position": [
512,
288
],
"parameters": {
"url": "={{ $json.content.answers['4'].answer[0] }}",
"options": {
"response": {
"response": {
"responseFormat": "file"
}
}
},
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "APIKEY",
"value": "enter-your-jotfrom-api"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "feaf55e1-536c-4164-8ddb-648914438b94",
"name": "Extract Text from PDF File",
"type": "n8n-nodes-base.extractFromFile",
"position": [
736,
288
],
"parameters": {
"options": {},
"operation": "pdf"
},
"typeVersion": 1
},
{
"id": "ee21fb55-64a2-446d-b3a2-1ff6927b23b4",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-96,
112
],
"parameters": {
"width": 288,
"height": 320,
"content": "### Jotform Trigger\n- Triggers when user submitted our preferred jotform\n- When triggered it will get the form data like user submitted details, form submission id, time etc"
},
"typeVersion": 1
},
{
"id": "7fd85bf0-d8b8-45a6-bb28-cf59daf4c700",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
208,
112
],
"parameters": {
"width": 224,
"height": 320,
"content": "### HTTP NODE\n- We use the http node and make an custom jotform api request to get the form submitted documents link"
},
"typeVersion": 1
},
{
"id": "57af5b74-ac54-4443-b847-e7db8e6be2e0",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
448,
112
],
"parameters": {
"width": 224,
"height": 320,
"content": "### HTTP NODE 1\n- Download the attached document as binary but the response is in file"
},
"typeVersion": 1
},
{
"id": "d7aae65a-68de-43d5-b235-ac4a0712a8cf",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
688,
112
],
"parameters": {
"width": 224,
"height": 320,
"content": "### Extract From PDF Node\n- Simply extracts the text content from the pdf that we downloaded in previous HTTP node"
},
"typeVersion": 1
},
{
"id": "8a15f8f4-e3f2-4597-bac6-9a773803f1f0",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
1344,
112
],
"parameters": {
"width": 224,
"height": 320,
"content": "### Telegram Send message Node\n- Sends a message which consists of the previous contract analysis provided by AI to our preffered chat or channel"
},
"typeVersion": 1
},
{
"id": "d23c1ad5-fe0f-410e-85a8-521ffcdb6e09",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
928,
112
],
"parameters": {
"width": 400,
"height": 320,
"content": "### AI Agent Node\n- AI analyses the complete contract text and then gives output the hidden clauses and red flags within the contract automatically"
},
"typeVersion": 1
}
],
"connections": {
"AI Agent": {
"main": [
[
{
"node": "Send a text message",
"type": "main",
"index": 0
}
]
]
},
"JotForm Trigger": {
"main": [
[
{
"node": "Grab Attachment Details",
"type": "main",
"index": 0
}
]
]
},
"Grab Attachment Details": {
"main": [
[
{
"node": "Grab the attached Contract",
"type": "main",
"index": 0
}
]
]
},
"Google Gemini Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Extract Text from PDF File": {
"main": [
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
},
"Grab the attached Contract": {
"main": [
[
{
"node": "Extract Text from PDF File",
"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.
googlePalmApijotFormApitelegramApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow automates the process of analyzing a contract submitted via a web form. It extracts the text from an uploaded PDF, uses AI to identify potential red flags, and sends a summary report to a Telegram chat. Before you can use this workflow, you'll need a few things set…
Source: https://n8n.io/workflows/9611/ — 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.
Automatically classify and manage contact form submissions using AI-powered lead scoring. This workflow analyzes JotForm submissions in real-time, categorizes them as hot leads, cold leads, or spam, a
This workflow creates a multi-talented AI assistant named Simran that interacts with users via Telegram. It can handle text and voice messages, understand the user's intent, and perform various tasks.
This project is a template for building a complete academic virtual assistant using n8n. It connects to Telegram, answers frequently asked questions by querying MongoDB, keeps the community informed a
Creators, marketers, and brands that want to turn a single product photo into premium motion clips, then optionally publish to Instagram/TikTok/YouTube via LATE. No editing skills required.
Product to Social Video (xCodeWraith Edition). Uses telegram, agentTool, telegramTrigger, httpRequest. Event-driven trigger; 83 nodes.