AutomationFlowsAI & RAG › Workana AI Agent: Generate Google Doc Proposal

Workana AI Agent: Generate Google Doc Proposal

Workana AI Agent: Generate Google Doc Proposal. Uses executeWorkflowTrigger, googleDrive, googleDocs, openAi. Event-driven trigger; 8 nodes.

Event trigger★★★★☆ complexityAI-powered8 nodesExecute Workflow TriggerGoogle DriveGoogle DocsOpenAI
AI & RAG Trigger: Event Nodes: 8 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow follows the Execute Workflow Trigger → Google Drive 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 →

Download .json
{
  "createdAt": "2025-09-21T11:56:11.282Z",
  "updatedAt": "2025-10-13T19:20:34.585Z",
  "id": "jekyvEetvz05SuWB",
  "name": "Workana AI Agent: Generate Google Doc Proposal",
  "active": false,
  "isArchived": false,
  "nodes": [
    {
      "parameters": {},
      "id": "cad45b62-6f37-4053-8b2f-0b07183b8331",
      "name": "Execute Workflow Trigger",
      "type": "n8n-nodes-base.executeWorkflowTrigger",
      "position": [
        -176,
        208
      ],
      "typeVersion": 1
    },
    {
      "parameters": {
        "content": "## \ud83d\udcc4 STEP 5: Google Doc Proposal Creation\n\nGenerates professional proposal documents:\n\n1. **OpenAI1**: Creates structured proposal content (title, explanation, scope, timeline)\n2. **Google Drive**: Copies template and creates unique document\n3. **Google Drive1**: Shares document publicly for client access\n4. **Google Docs**: Replaces template variables with AI-generated content\n5. **Edit Fields1**: Returns shareable URL to AI agent\n\n**Output**: Professional proposal document with personalized content and social proof",
        "height": 396,
        "width": 420
      },
      "id": "e9106532-e31d-48e8-9045-178aa6917d6d",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -672,
        32
      ],
      "typeVersion": 1
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "e980c92c-07d9-400e-b40c-a8fbdbe8bbcb",
              "name": "aboutMe",
              "type": "string",
              "value": "Sou um freelancer desenvolvedor Full Stack com IA e automa\u00e7\u00e3o, apaixonado por transformar ideias em solu\u00e7\u00f5es digitais incr\u00edveis que cria sistemas de divulga\u00e7\u00e3o, sistemas de CRM, sistemas de gerenciamento de projetos, sistemas sem c\u00f3digo e integra\u00e7\u00f5es. Com forma\u00e7\u00e3o em An\u00e1lise e Desenvolvimento de Sistemas, p\u00f3s-graduando em An\u00e1lise de Dados e Intelig\u00eancia Artificial, dedico-me a criar projetos que aliam qualidade, inova\u00e7\u00e3o e impacto real. "
            }
          ]
        },
        "options": {}
      },
      "id": "493f06b0-82a6-42bf-8954-22fe1b56deed",
      "name": "Set Variable1",
      "type": "n8n-nodes-base.set",
      "position": [
        64,
        208
      ],
      "typeVersion": 3.4
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "74b2ef09-da1d-4fe0-b6ea-242f25edf5e8",
              "name": "urlOfProposal",
              "type": "string",
              "value": "=https://docs.google.com/document/d/{{ $json.documentId }}/edit"
            }
          ]
        },
        "options": {}
      },
      "id": "652211b1-b555-4a1d-8433-53d3830f1c4c",
      "name": "Edit Fields1",
      "type": "n8n-nodes-base.set",
      "position": [
        1296,
        208
      ],
      "typeVersion": 3.4
    },
    {
      "parameters": {
        "operation": "copy",
        "fileId": {
          "__rl": true,
          "value": "1TA8VE_Z10r82OBqR3w2SNQs77sNSjAuoHmoo9P6wlHg",
          "mode": "list",
          "cachedResultName": "Workana Proposal Template [pt]",
          "cachedResultUrl": "https://docs.google.com/document/d/1TA8VE_Z10r82OBqR3w2SNQs77sNSjAuoHmoo9P6wlHg/edit?usp=drivesdk"
        },
        "name": "={{ $json.message.content.titleOfSystem }}",
        "sameFolder": false,
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive"
        },
        "folderId": {
          "__rl": true,
          "value": "1oNejL80Kl0THZJ5XBvVR5dvdmLHJseVu",
          "mode": "list",
          "cachedResultName": "Propostas Workana",
          "cachedResultUrl": "https://drive.google.com/drive/folders/1oNejL80Kl0THZJ5XBvVR5dvdmLHJseVu"
        },
        "options": {}
      },
      "id": "db103947-bc6e-48b2-975f-1bdfe502bc8c",
      "name": "Copy file",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        640,
        208
      ],
      "typeVersion": 3,
      "executeOnce": true,
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "operation": "share",
        "fileId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $json.id }}"
        },
        "permissionsUi": {
          "permissionsValues": {
            "role": "reader",
            "type": "anyone"
          }
        },
        "options": {}
      },
      "id": "2ed2aeab-9ab5-4e4d-adce-d37440c693ff",
      "name": "Share file",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        864,
        208
      ],
      "typeVersion": 3,
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "operation": "update",
        "documentURL": "={{ $('Copy file').item.json.id }}",
        "actionsUi": {
          "actionFields": [
            {
              "action": "replaceAll",
              "text": "{{titleOfSystem}}",
              "replaceText": "={{ $('Message GPT-5-nano model').item.json.message.content.titleOfSystem }}"
            },
            {
              "action": "replaceAll",
              "text": "{{briefExplanationOfSystem}}",
              "replaceText": "={{ $('Message GPT-5-nano model').item.json.message.content.briefExplanationOfSystem }}"
            },
            {
              "action": "replaceAll",
              "text": "{{specificPartOfTheirRequest}}",
              "replaceText": "={{ $('Message GPT-5-nano model').item.json.message.content.specificPartOfTheirRequest }}"
            },
            {
              "action": "replaceAll",
              "text": "{{stepByStepBulletPoints}}",
              "replaceText": "={{ $('Message GPT-5-nano model').item.json.message.content.stepByStepBulletPoints }}"
            },
            {
              "action": "replaceAll",
              "text": "{{leftToRightFlowWithArrows}}",
              "replaceText": "={{ $('Message GPT-5-nano model').item.json.message.content.leftToRightFlowWithArrows }}"
            },
            {
              "action": "replaceAll",
              "text": "{{aboutMeBulletPoints}}",
              "replaceText": "={{ $('Message GPT-5-nano model').item.json.message.content.aboutMeBulletPoints }}"
            },
            {
              "action": "replaceAll",
              "text": "{{proposalNumber}}",
              "replaceText": "={{ $now.year }}.{{ $('Execute Workflow Trigger').item.json.projectId }}.{{ $now.day }}{{ $now.month }}"
            }
          ]
        }
      },
      "id": "b843588f-6e6b-4f6a-8b87-c8538c98fcdf",
      "name": "Update a document",
      "type": "n8n-nodes-base.googleDocs",
      "position": [
        1088,
        208
      ],
      "typeVersion": 2,
      "credentials": {
        "googleDocsOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "modelId": {
          "__rl": true,
          "value": "GPT-5-mini",
          "mode": "id"
        },
        "messages": {
          "values": [
            {
              "content": "You are a helpful, intelligent proposal writer.",
              "role": "system"
            },
            {
              "content": "=I'm an automation specialist applying to jobs on freelance platforms.\n\nYour task is to take as input an Workana job description and return as output JSON for a customized proposal (which I'll upload to Google Docs).\n\nHigh-performing proposals are typically templated as follows:\n\n```\n# {titleOfSystem} \n## {briefExplanationOfSystem}\n\nHi. As mentioned, I\u2019m so confident I\u2019m the right fit for this I went ahead and created a proposal for you, including a step-by-step of how I\u2019d do it.\n\nI\u2019ve done the below many times and working with {specificPartOfTheirRequest} is actually one of my favorite things to do. Talk about serendipity!\n\nAnyway, here\u2019s how we'll build {paraphrasedSystem}:\n{stepByStepBulletPoints}\n\nSo basically, {leftToRightFlowWithArrows}.\n\nA little about me:\n{aboutMeBulletPoints}\n\nTo be upfront: my goal is to work with you on a long-term retainer, since I find it aligns incentives and lets me help clients better. So I'd treat everything we do together as foundational, and help you build systems that drive revenue/maximize cost savings. \n\nI am really confident I can blow this out of the park for you, so if this sounds like something you're into, just respond to my proposal on Upwork & we'll take it from there. \n\nThank you for your time!\n```\n\nOutput your results in JSON using this format:\n\n{\n  \"proposalNumber\": \"\",\n  \"titleOfSystem\": \"\",\n  \"briefExplanationOfSystem\": \"\",\n  \"specificPartOfTheirRequest\": \"\",\n  \"stepByStepBulletPoints\": \"\",\n  \"leftToRightFlowWithArrows\": \"\",\n  \"aboutMeBulletPoints\": \"\",\n}\n\nRules:\n- Always respond in Portuguese (pt-BR)\n- Write in a casual, spartan tone of voice.\n- Don't use emojis or flowery language.\n- If there's a name included somewhere in the description, add it for personalization purposes.\n- Return \"stepByStepBulletPoints\" and \"aboutMeBulletPoints\" as strings, and delimit each bullet point with a \\n and make sure it includes a -\n- In \"aboutMeBulletPoints\", prefer to mention social proof that includes $ and numbers.\n- For \"leftToRightFlowWithArrows\", write a simplified left to right flow delimited by \"->\" strings. For instance, we receive a new email -> we add that to the CRM -> we send an email to the new lead.\n- Use first-person \"I\" language, like \"I'd streamline...\" for bullet points etc.\n\n\nSome facts about me for the personalization: {{ $json.aboutMe }}\n"
            },
            {
              "content": "={\"jobDescription\":\"{{ $('Execute Workflow Trigger').item.json.query }}\"}"
            }
          ]
        },
        "jsonOutput": true,
        "options": {
          "temperature": 0.7
        }
      },
      "id": "74ee7463-1627-48ca-a199-17471e5e13ae",
      "name": "Message GPT-5-nano model",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        256,
        208
      ],
      "typeVersion": 1.6,
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      }
    }
  ],
  "connections": {
    "Set Variable1": {
      "main": [
        [
          {
            "node": "Message GPT-5-nano model",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Copy file": {
      "main": [
        [
          {
            "node": "Share file",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Execute Workflow Trigger": {
      "main": [
        [
          {
            "node": "Set Variable1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Share file": {
      "main": [
        [
          {
            "node": "Update a document",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update a document": {
      "main": [
        [
          {
            "node": "Edit Fields1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Message GPT-5-nano model": {
      "main": [
        [
          {
            "node": "Copy file",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1"
  },
  "staticData": null,
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "versionId": "2b5ebaac-f5c6-4394-9c8b-e02c8ce0844d",
  "triggerCount": 0,
  "tags": [
    {
      "createdAt": "2025-09-06T18:51:55.029Z",
      "updatedAt": "2025-10-08T17:55:04.973Z",
      "id": "aqoahvvuwcUF7xAJ",
      "name": "prod"
    },
    {
      "createdAt": "2025-10-10T13:21:49.645Z",
      "updatedAt": "2025-10-10T13:21:49.645Z",
      "id": "dPPdsd8YcJkrO0u5",
      "name": "sub"
    },
    {
      "createdAt": "2025-10-07T18:10:03.762Z",
      "updatedAt": "2025-10-07T18:10:03.762Z",
      "id": "pBpikzqjo5Xglfoj",
      "name": "internal-infra"
    }
  ],
  "n8n_host_name ": "https://n8n.trymyapp.tech/"
}

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.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

Workana AI Agent: Generate Google Doc Proposal. Uses executeWorkflowTrigger, googleDrive, googleDocs, openAi. Event-driven trigger; 8 nodes.

Source: https://github.com/denissongomes/Backup-N8N-workflows/blob/d45870a8f60defad99d0a90ee75cb0abfca98c70/Workflows/Workana_AI_Agent__Generate_Google_Doc_Proposal.json — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

The best content automation template in the market is now even better—with “deep research” on time-sensitive topics\! Unlike most n8n content automation templates that are mainly for “demo purposes,”

OpenAI, HTTP Request, XML +11
AI & RAG

Categories: AI Agents, Freelance Automation, Proposal Generation

Execute Workflow Trigger, OpenAI, Google Drive +6
AI & RAG

This workflow is a fully automated YouTube Shorts production pipeline. It takes the structured output from a video digestion workflow (transcript, key moments, metadata) and produces finished, rendere

HTTP Request, Google Drive, Execute Workflow Trigger +5
AI & RAG

Pitch Paul. Uses lmChatOpenRouter, telegram, outputParserStructured, supabaseTool. Event-driven trigger; 33 nodes.

OpenRouter Chat, Telegram, Output Parser Structured +10
AI & RAG

Faceless Video. Uses httpRequest, agent, googleDrive, stickyNote. Event-driven trigger; 29 nodes.

HTTP Request, Agent, Google Drive +6