8
n8n 한국어amn8n.com

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 Drive1",
      "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 Docs",
      "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 Drive2",
      "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": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1136,
        272
      ],
      "parameters": {
        "width": 936,
        "height": 1132,
        "content": "### ⚙️ Proposal Generator Template (Automates proposal creation from JotForm submissions)\n\n### 🧑‍💻 Author: [LeeWei]\n\n---\n\n### 🚀 Steps to Connect:\n\n1. **JotForm Setup**\n   - Visit [JotForm](https://www.jotform.com/) to generate your API key and connect to the JotForm Trigger node.\n   - Update the `form` field in the **JotForm Trigger** node with your form ID (default: `251206359432049`).\n\n2. **Google Drive Setup**\n   - Go to [Google Drive](https://www.google.com/drive/) and set up OAuth2 credentials (\"Google Drive account\") with access to the folder containing your template.\n   - Update the `fileId` field in the **Google Drive** node with your template file ID (default: `1DSHUhq_DoM80cM7LZ5iZs6UGoFb3ZHsLpU3mZDuQwuQ`).\n   - Update the `name` field in the **Google Drive** node with your desired output file name pattern (default: `={{ $json['Company Name'] }} | Ai Proposal`).\n\n3. **OpenAI Setup**\n   - Visit [OpenAI](https://platform.openai.com/) and generate your API key.\n   - Paste this key into the **OpenAI** and **OpenAI1** nodes under the \"OpenAi account 3\" credentials.\n   - Update the `modelId` field in the **OpenAI1** node if needed (default: `gpt-4.1-mini`).\n\n4. **Google Docs Setup**\n   - Set up OAuth2 credentials (\"Google Docs account\") with edit permissions for the generated documents.\n   - No fields need editing as the node dynamically updates based on previous outputs.\n\n5. **Google Drive2 Setup**\n   - Ensure the same Google Drive credentials (\"Google Drive account\") are used.\n   - No fields need editing as the node handles PDF conversion automatically.\n\n6. **Gmail Setup**\n   - Go to [Gmail](https://mail.google.com/) and set up OAuth2 credentials (\"Gmail account\").\n   - No fields need editing as the node dynamically uses the prospect's email from JotForm.\n\n---\n\n### How it works\n\n- The workflow triggers on JotForm submissions, copies a Google Drive template, downloads an audio call link, transcribes it with OpenAI, generates a tailored proposal, updates a Google Docs file, converts it to PDF, and emails it to the prospect.\n\n### Set up steps\n\n- Setup time: Approximately 15-20 minutes.\n- Detailed instructions are available in sticky notes within the workflow.\n"
      },
      "typeVersion": 1
    }
  ],
  "pinData": {},
  "connections": {
    "0242ce1e-f983-4be8-aecc-ae2aaae1541d": {
      "main": [
        [
          {
            "node": "56e8e15a-97aa-4fcb-af03-4b7a4c929a79",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "56e8e15a-97aa-4fcb-af03-4b7a4c929a79": {
      "main": [
        [
          {
            "node": "41062aa1-859b-46ac-ac19-09faccdf05e3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "41062aa1-859b-46ac-ac19-09faccdf05e3": {
      "main": [
        [
          {
            "node": "05732cb6-7abb-4429-8fc7-c25306151095",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "1bf8d979-0f2c-4123-af8b-75dda886a372": {
      "main": [
        [
          {
            "node": "15b2e0d6-4435-426e-9c5f-27e1dad04f95",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "15b2e0d6-4435-426e-9c5f-27e1dad04f95": {
      "main": [
        [
          {
            "node": "0242ce1e-f983-4be8-aecc-ae2aaae1541d",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "05732cb6-7abb-4429-8fc7-c25306151095": {
      "main": [
        [
          {
            "node": "e2e330b7-7741-411e-9c75-5b376d723a2f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "a3d6e0d3-3f5a-44de-8518-590601a362d6": {
      "main": [
        [
          {
            "node": "1bf8d979-0f2c-4123-af8b-75dda886a372",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
자주 묻는 질문

이 워크플로우를 어떻게 사용하나요?

위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.

이 워크플로우는 어떤 시나리오에 적합한가요?

중급 - 문서 추출, 멀티모달 AI

유료인가요?

이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.

워크플로우 정보
난이도
중급
노드 수9
카테고리2
노드 유형6
난이도 설명

일정 경험을 가진 사용자를 위한 6-15개 노드의 중간 복잡도 워크플로우

외부 링크
n8n.io에서 보기

이 워크플로우 공유

카테고리

카테고리: 34