使用OpenAI和Google Docs从JotForm潜在客户生成AI驱动的销售提案
中级
这是一个Document Extraction, Multimodal AI领域的自动化工作流,包含 9 个节点。主要使用 Gmail, GoogleDocs, GoogleDrive, JotFormTrigger, OpenAi 等节点。 使用OpenAI和Google Docs从JotForm潜在客户生成AI驱动的销售提案
前置要求
- •Google 账号和 Gmail API 凭证
- •Google Drive API 凭证
- •OpenAI API Key
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
"meta": {
"instanceId": "9f2d25c77f55013c8efee3de456573aadd7369e6f0aaea70d0311a32c92bead1"
},
"nodes": [
{
"id": "a3d6e0d3-3f5a-44de-8518-590601a362d6",
"name": "JotForm 触发器",
"type": "n8n-nodes-base.jotFormTrigger",
"position": [
432,
432
],
"webhookId": "6add8d04-abe5-475a-8425-f7c2ea455b0d",
"parameters": {
"form": "251206359432049"
},
"typeVersion": 1
},
{
"id": "1bf8d979-0f2c-4123-af8b-75dda886a372",
"name": "Google Drive",
"type": "n8n-nodes-base.googleDrive",
"position": [
656,
432
],
"parameters": {
"name": "={{ $json['Company Name'] }} | Ai Proposal",
"fileId": {
"__rl": true,
"mode": "id",
"value": "1DSHUhq_DoM80cM7LZ5iZs6UGoFb3ZHsLpU3mZDuQwuQ"
},
"options": {},
"operation": "copy"
},
"executeOnce": true,
"typeVersion": 3
},
{
"id": "15b2e0d6-4435-426e-9c5f-27e1dad04f95",
"name": "Google Drive 1",
"type": "n8n-nodes-base.googleDrive",
"position": [
880,
432
],
"parameters": {
"fileId": {
"__rl": true,
"mode": "url",
"value": "={{ $('JotForm Trigger').item.json['Call Link'] }}"
},
"options": {},
"operation": "download"
},
"typeVersion": 3
},
{
"id": "0242ce1e-f983-4be8-aecc-ae2aaae1541d",
"name": "OpenAI",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
528,
656
],
"parameters": {
"options": {},
"resource": "audio",
"operation": "transcribe"
},
"typeVersion": 1.8
},
{
"id": "56e8e15a-97aa-4fcb-af03-4b7a4c929a79",
"name": "OpenAI1",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
736,
656
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini",
"cachedResultName": "GPT-4.1-MINI"
},
"options": {},
"messages": {
"values": [
{
"content": "=Please analyze the following data.\n\nProspect Details\nFirst Name:{{ $('JotForm Trigger').item.json['First Name'] }}\nLast Name:{{ $('JotForm Trigger').item.json['Last Name'] }}\nCompany Name: {{ $('JotForm Trigger').item.json['Company Name'] }}\n\nSales Call Transcript: {{ $json.text }}"
},
{
"role": "system",
"content": "# Overview \nYou are an AI agent responsible for generating tailored proposal components in JSON format based on a sales call transcript and basic prospect details.\n\n## Context \n- Your role is to craft high-conversion proposal content using a professional but conversational tone. \n- Outputs must be JSON elements only — no explanatory or surrounding text. \n- Each piece should reflect a deep understanding of the prospect’s problems and clearly explain how the proposed solution and upsell will provide meaningful outcomes. \n- Pricing should range from $2,000 to $10,000 and reflect 5–10% of the value being saved or generated over the next year. \n\n## Instructions \n1. Analyze the sales call transcript to identify the core pain point of the prospect, ideally using their own words. \n2. Construct a compelling problem statement and expand with three concise supporting bullets. \n3. Name the proposed AI system based on the outcome it delivers and align it with the problem. \n4. Write a clear solution statement and elaborate with three supporting bullets. \n5. Explain why this solution works in 2–3 benefit-focused sentences. \n6. Outline the detailed scope of work for the solution. \n7. Generate a price in $USD aligned with the estimated annual value, keeping within the $2K–$10K range. \n8. Define pricing type as either \"one time\" or \"monthly\". \n9. Calculate and return 50% of the solution price in $USD. \n10. Craft a complementary upsell offer that addresses the next logical or adjacent problem. \n11. Follow a similar format for the upsell: name, scope (1–2 sentences), three supporting bullets, price, and pricing type. \n\n## Tools \n- Input: \n - Prospect Details \n - Sales Call Transcript \n\n## Examples \n- Input: \n - Sales Call Transcript: \"We spend hours manually tagging customer support tickets, which delays our response times.\" \n- Output (JSON): \n ```json\n {\n \"problemStatement\": \"Your team is bogged down by the manual tagging of support tickets, causing delays in response times and reducing customer satisfaction.\",\n \"problemStatementBulletOne\": \"Manual tagging consumes hours of valuable time weekly.\",\n \"problemStatementBulletTwo\": \"Delayed ticket handling frustrates customers and risks churn.\",\n \"problemStatementBulletThree\": \"Lack of automation is limiting your scalability.\",\n \"aiSystem\": \"Smart Support Tagger\",\n \"solutionStatement\": \"Smart Support Tagger is an AI-powered system that automatically classifies and tags incoming support tickets, ensuring faster routing and response.\",\n \"solutionStatementBulletOne\": \"Automates initial support triage using natural language understanding.\",\n \"solutionStatementBulletTwo\": \"Reduces average handling time by 40–60%.\",\n \"solutionStatementBulletThree\": \"Integrates with existing support platforms like Zendesk and Intercom.\",\n \"whyThisWorks\": \"This solution eliminates your team's repetitive workload and boosts response speed, directly improving the customer experience. It’s designed to scale as you grow, creating long-term efficiency gains.\",\n \"workScope\": \"Setup and training of the AI model using your past ticket data, integration with current support platform, testing and QA, and deployment.\",\n \"price\": \"$7000\",\n \"solutionPricingType\": \"one time\",\n \"50percentDiscount\": \"$3500\",\n \"upsellOne\": \"Support Sentiment Monitor\",\n \"upsellOneScope\": \"Support Sentiment Monitor analyzes incoming tickets and ongoing chats to detect customer emotions in real time. Paired with Smart Support Tagger, this enables even smarter routing and faster escalation of critical tickets.\",\n \"upsellOneBulletOne\": \"Monitors sentiment to highlight at-risk customers.\",\n \"upsellOneBulletTwo\": \"Pairs well with ticket tagging for full visibility.\",\n \"upsellOneBulletThree\": \"Boosts NPS and customer retention by flagging issues early.\",\n \"upsellOnePricing\": \"$5000\",\n \"upsellOnePricingType\": \"one time\"\n }\n ```\n\n## SOP (Standard Operating Procedure) \n1. Parse the sales call transcript and extract emotional or urgent language to form the problem statement. \n2. Use clear and outcome-driven naming conventions for the AI system. \n3. Create a concise yet compelling solution pitch with benefits and clarity. \n4. Estimate solution pricing based on annual value potential. \n5. Create a logical, adjacent upsell opportunity and match structure to the core offer. \n6. Output only the final proposal JSON object with all specified keys. \n\n## Final Notes \n- Avoid abstract names for systems — prioritize clarity and outcome orientation. \n- Make sure each bullet adds distinct value and insight. \n- Keep tone professional but conversational to build rapport and trust. \n---"
}
]
},
"simplify": false,
"jsonOutput": true
},
"typeVersion": 1.8
},
{
"id": "41062aa1-859b-46ac-ac19-09faccdf05e3",
"name": "Google 文档",
"type": "n8n-nodes-base.googleDocs",
"position": [
480,
928
],
"parameters": {
"actionsUi": {
"actionFields": [
{
"text": "{{prospectFirstName}}",
"action": "replaceAll",
"replaceText": "={{ $('JotForm Trigger').item.json['First Name'] }}"
},
{
"text": "{{companyName}}",
"action": "replaceAll",
"replaceText": "={{ $('JotForm Trigger').item.json['Company Name'] }}"
},
{
"text": "{{problemStatement}}",
"action": "replaceAll",
"replaceText": "={{ $json.choices[0].message.content.problemStatement }}"
},
{
"text": "{{problemStatementBulletOne}}",
"action": "replaceAll",
"replaceText": "={{ $json.choices[0].message.content.problemStatementBulletOne }}"
},
{
"text": "{{problemStatementBulletTwo}} ",
"action": "replaceAll",
"replaceText": "={{ $json.choices[0].message.content.problemStatementBulletTwo }}"
},
{
"text": "{{problemStatementBulletThree}}",
"action": "replaceAll",
"replaceText": "={{ $json.choices[0].message.content.problemStatementBulletThree }}"
},
{
"text": "{{aiSystem}}",
"action": "replaceAll",
"replaceText": "={{ $json.choices[0].message.content.aiSystem }}"
},
{
"text": "{{solutionStatement}}",
"action": "replaceAll",
"replaceText": "={{ $json.choices[0].message.content.solutionStatement }}"
},
{
"text": "{{solutionStatementBulletOne}}",
"action": "replaceAll",
"replaceText": "={{ $json.choices[0].message.content.solutionStatementBulletOne }}"
},
{
"text": "{{solutionStatementBulletTwo}}",
"action": "replaceAll",
"replaceText": "={{ $json.choices[0].message.content.solutionStatementBulletTwo }}"
},
{
"text": "{{solutionStatementBulletThree}}",
"action": "replaceAll",
"replaceText": "={{ $json.choices[0].message.content.solutionStatementBulletThree }}"
},
{
"text": "{{whyThisWorks}}",
"action": "replaceAll",
"replaceText": "={{ $json.choices[0].message.content.whyThisWorks }}"
},
{
"text": "{{workScope}}",
"action": "replaceAll",
"replaceText": "={{ $json.choices[0].message.content.workScope }}"
},
{
"text": "{{price}}",
"action": "replaceAll",
"replaceText": "={{ $json.choices[0].message.content.price }}"
},
{
"text": "{{solutionPricingType}}",
"action": "replaceAll",
"replaceText": "={{ $json.choices[0].message.content.solutionPricingType }}"
},
{
"text": "{{50percentDiscount}}",
"action": "replaceAll",
"replaceText": "={{ $json.choices[0].message.content['50percentDiscount'] }}"
},
{
"text": "{{upsellOne}}",
"action": "replaceAll",
"replaceText": "={{ $json.choices[0].message.content.upsellOne }}"
},
{
"text": "{{upsellOneScope}}",
"action": "replaceAll",
"replaceText": "={{ $json.choices[0].message.content.upsellOneScope }}"
},
{
"text": "{{upsellOneBulletOne}} ",
"action": "replaceAll",
"replaceText": "={{ $json.choices[0].message.content.upsellOneBulletOne }}"
},
{
"text": "{{upsellOneBulletTwo}}",
"action": "replaceAll",
"replaceText": "={{ $json.choices[0].message.content.upsellOneBulletTwo }}"
},
{
"text": "{{upsellOneBulletThree}}",
"action": "replaceAll",
"replaceText": "={{ $json.choices[0].message.content.upsellOneBulletThree }}"
},
{
"text": "{{upsellOnePricing}}",
"action": "replaceAll",
"replaceText": "={{ $json.choices[0].message.content.upsellOnePricing }}"
},
{
"text": "{{upsellOnePricingType}}",
"action": "replaceAll",
"replaceText": "={{ $json.choices[0].message.content.upsellOnePricingType }}"
},
{
"text": "{{date}}",
"action": "replaceAll",
"replaceText": "={{ $now }}"
}
]
},
"operation": "update",
"documentURL": "={{ $('Google Drive').item.json.id }}"
},
"typeVersion": 2
},
{
"id": "05732cb6-7abb-4429-8fc7-c25306151095",
"name": "Google Drive 2",
"type": "n8n-nodes-base.googleDrive",
"position": [
704,
928
],
"parameters": {
"fileId": {
"__rl": true,
"mode": "id",
"value": "={{ $json.documentId }}"
},
"options": {
"fileName": "proposal.pdf",
"binaryPropertyName": "proposal",
"googleFileConversion": {
"conversion": {
"docsToFormat": "application/pdf"
}
}
},
"operation": "download"
},
"typeVersion": 3
},
{
"id": "e2e330b7-7741-411e-9c75-5b376d723a2f",
"name": "Gmail",
"type": "n8n-nodes-base.gmail",
"position": [
912,
928
],
"webhookId": "4d4cb0cb-4793-423e-8a31-f6d6b87d1de3",
"parameters": {
"message": "=Hey {{ $('JotForm Trigger').item.json['First Name'] }} - as discussed, here is the proposal for the {{ $('OpenAI1').item.json.choices[0].message.content.aiSystem }} build. Let me know if you have any questions at all. \n\nLook forward to hearing from you. \n\n- Nolan",
"options": {
"sendTo": "={{ $('JotForm Trigger').item.json.Email }}",
"attachmentsUi": {
"attachmentsBinary": [
{
"property": "proposal"
}
]
}
},
"subject": "={{ $('JotForm Trigger').item.json['Company Name'] }} | {{ $('OpenAI1').item.json.choices[0].message.content.aiSystem }} Proposal",
"resource": "draft"
},
"typeVersion": 2.1
},
{
"id": "48ee48b0-c428-4223-8cf6-7b0177a58360",
"name": "便签1",
"type": "n8n-nodes-base.stickyNote",
"position": [
1136,
272
],
"parameters": {
"width": 936,
"height": 1132,
"content": "### ⚙️ 提案生成器模板(根据 JotForm 提交自动创建提案)"
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"OpenAI": {
"main": [
[
{
"node": "OpenAI1",
"type": "main",
"index": 0
}
]
]
},
"OpenAI1": {
"main": [
[
{
"node": "Google Docs",
"type": "main",
"index": 0
}
]
]
},
"Google Docs": {
"main": [
[
{
"node": "Google Drive2",
"type": "main",
"index": 0
}
]
]
},
"Google Drive": {
"main": [
[
{
"node": "Google Drive1",
"type": "main",
"index": 0
}
]
]
},
"Google Drive1": {
"main": [
[
{
"node": "OpenAI",
"type": "main",
"index": 0
}
]
]
},
"Google Drive2": {
"main": [
[
{
"node": "Gmail",
"type": "main",
"index": 0
}
]
]
},
"JotForm Trigger": {
"main": [
[
{
"node": "Google Drive",
"type": "main",
"index": 0
}
]
]
}
}
}常见问题
如何使用这个工作流?
复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。
这个工作流适合什么场景?
中级 - 文档提取, 多模态 AI
需要付费吗?
本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。
相关工作流推荐
使用AI、Hedra和ElevenLabs生成病毒式婴儿名人播客
使用AI、Hedra和ElevenLabs生成病毒式婴儿名人播客
Code
Wait
Merge
+11
35 节点LeeWei
内容创作
AI驱动的文档摘要生成器与通知器
使用GPT-4汇总Google文档和PDF并发送到Slack或邮件
If
Set
Gmail
+8
16 节点Krishna Sharma
文档提取
使用 OpenAI、QuickChart 和 Google Drive 将电子表格数据转换为智能图表
使用 OpenAI、QuickChart 和 Google Drive 将电子表格数据转换为智能图表
If
Set
Code
+18
82 节点LeeWei
内容创作
协议起草与电子签名自动化
自动化完整协议生命周期:JotForm、审批、Signwell电子签名与跟踪
Set
Code
Gmail
+8
33 节点Dean Pike
文档提取
自动化营销机构客户入职:从 Typeform 到 GDrive + AI 研究
自动化营销机构客户入职:从 Typeform 到 GDrive + OpenAI 研究
If
Gmail
Slack
+5
45 节点Chris Rudy
多模态 AI
从PDF起草摘要工作流
使用Google Drive、GPT-4和邮件通知从PDF生成专业文档草稿
Set
Code
Gmail
+8
14 节点Michael Gullo
文档提取