Skip to main content

Build an AI Work Assistant: Automate Meeting Notes with n8n

00:09:09:60

Turn Chaos into Clarity with AI

We've all been there—staring at a jumbled mess of meeting notes, trying to figure out what was actually decided and who's supposed to do what. It's tedious, time-consuming, and honestly, a waste of your brainpower.

What if you could paste your messy notes into a simple form and get back a perfectly structured document with clear summaries, action items, decisions, and follow-ups? That's exactly what we're building today.

In this tutorial, I'll walk you through building an AI Work Assistant using n8n, OpenAI, and Google Docs. By the end, you'll have a fully functional automation that does the heavy lifting for you.

What You'll Build

Our automation consists of four connected nodes that work together seamlessly:

  1. Form Trigger — A simple web form where you paste your messy notes
  2. OpenAI Node — Sends your notes to GPT-4o-mini for intelligent processing
  3. Create Document — Creates a new Google Doc with a timestamped title
  4. Update Document — Populates the doc with the AI-generated structured summary

The end result? A shareable Google Doc containing:

  • SUMMARY — 3-5 bullet points of the main takeaways
  • ACTION ITEMS — Tasks with owner names when mentioned
  • DECISIONS — What was decided during the meeting
  • FOLLOW-UPS — What needs to happen next
Workflow overview

Prerequisites

Before we dive in, make sure you have:

  • An n8n account (we'll set this up together)
  • An OpenAI account with API access
  • A Google account for Google Docs

No coding experience required—n8n's visual workflow builder makes this accessible to everyone.

Part 1: Setting Up n8n

The quickest way to get started is with n8n Cloud:

  1. Go to cloud.n8n.io
  2. Sign up for a free trial account
  3. Once logged in, you'll land on your workflow dashboard
n8n Cloud dashboard

That's it! n8n Cloud handles all the infrastructure, so you can focus on building.

Self-Hosted Option

For those who prefer full control, n8n can be self-hosted using Docker. This gives you unlimited executions and complete data ownership, but requires technical setup and server maintenance. Check out the official n8n self-hosting docs if you want to go this route.

For this tutorial, we'll continue with n8n Cloud.

Part 2: Getting Your OpenAI API Key

To use GPT-4o-mini in our workflow, you'll need an OpenAI API key.

Quick Steps:

  1. Go to platform.openai.com and sign in (or create an account)
  2. Navigate to API Keys in the left sidebar
  3. Click Create new secret key
  4. Give it a name like "n8n Work Assistant"
  5. Copy the key immediately — you won't be able to see it again!
OpenAI API keys page

Pricing Note: GPT-4o-mini is extremely affordable. Processing meeting notes typically costs fractions of a cent per request. You'll need to add a payment method, but expect minimal costs for personal use.

For detailed setup instructions with n8n, see the official n8n OpenAI credentials guide.

Part 3: Setting Up Google Docs OAuth

Google's setup is a bit more involved, but we'll walk through the key steps.

Quick Steps:

  1. Go to Google Cloud Console
  2. Create a new project (or select an existing one)
  3. Enable the Google Docs API from the API Library
  4. Configure the OAuth consent screen (External, add your email as test user)
  5. Create OAuth 2.0 credentials (Web application type)
  6. Add the n8n OAuth callback URL to authorized redirect URIs
  7. Copy your Client ID and Client Secret
Google Cloud Console OAuth credentials

For the complete walkthrough with screenshots, follow the official n8n Google OAuth guide.

Connecting in n8n:

  1. In n8n, go to CredentialsAdd Credential
  2. Search for "Google Docs OAuth2"
  3. Paste your Client ID and Client Secret
  4. Click Sign in with Google and authorize access
n8n Google Docs credential setup

Part 4: Building the Workflow

Now for the fun part—let's build the automation!

Step 1: Create a New Workflow

  1. In n8n, click Add Workflow
  2. Give it a name like "AI Work Assistant"

Step 2: Add the Form Trigger

This creates a web form where you'll paste your notes.

  1. Click the + button to add a node
  2. Search for Form Trigger and select it
  3. Configure it with these settings:

| Setting | Value | |---------|-------| | Form Title | AI Work Assistant | | Form Description | Convert your messy notes, meeting transcripts, email threads into structured, summarized and actionable items. |

  1. Add a form field:
    • Field Label: Notes
    • Field Type: Text Area
    • Placeholder: "Messy content here"
    • Required: Yes
Form Trigger node configuration

Step 3: Add the OpenAI Node

This is where the AI magic happens.

  1. Click + after the Form Trigger
  2. Search for OpenAI and select "Message a Model"
  3. Connect your OpenAI credentials
  4. Set the model to GPT-4o-mini
  5. Add two messages (see prompts in the next section)
OpenAI node configuration

Step 4: Add Google Docs - Create Document

  1. Click + after the OpenAI node
  2. Search for Google Docs and select it
  3. Operation: Create (default)
  4. Connect your Google Docs credentials
  5. Set the title to: Meeting Summary – {{ $now.format("DD HH:mm") }}
  6. Optionally specify a folder ID to organize your docs
Create Document node configuration

Step 5: Add Google Docs - Update Document

  1. Click + after the Create Document node
  2. Add another Google Docs node
  3. Operation: Update
  4. Document URL: {{ $json.id }} (references the created doc)
  5. Add an action → Insert Text
  6. Text: {{ $('Message a model').item.json.output[0].content[0].text }}
Update Document node configuration

Part 5: The AI Prompts

The prompts are the heart of this automation. Here's exactly what to use:

System Prompt

Add this as the first message with role System:

text
You are a professional work assistant.

Your job is to take raw, unstructured work notes and turn them into a clear, structured summary that can be shared with others.

Follow these rules strictly:
- Be concise and professional
- Do not invent information
- If something is unclear or missing, leave it out
- Use simple, clear language
- Format the output exactly as requested below
- Only provide the required output and no other meta conversational text

User Prompt

Add this as the second message with role User:

text
Here are raw notes from a meeting, call, or email thread:

{{ $json.Notes }}

Please create a structured summary using the following format:

SUMMARY:
- 3 to 5 bullet points capturing the main points

ACTION ITEMS:
- Bullet list of tasks
- Include owner names if mentioned
- If no action items are found, write "No clear action items identified"

DECISIONS:
- Bullet list of decisions made
- If none, write "No decisions recorded"

FOLLOW-UPS:
- Bullet list of required follow-ups
- If none, write "No follow-ups required"

The {{ $json.Notes }} expression pulls in whatever text the user submits through the form.

Part 6: Testing Your Workflow

Time to see it in action!

  1. Click Test Workflow in n8n
  2. Open the form URL (shown in the Form Trigger node)
  3. Paste some messy notes, for example:
text
call with sarah and mike about the new website redesign. sarah said she likes the blue color scheme but mike thinks we should go with green. we decided to do user testing first before picking colors. mike will set up the testing by friday. also need to check with legal about the privacy policy update - sarah will handle that. next meeting scheduled for dec 20th to review testing results. budget approved for $5000 for the redesign. oh and we need to update the homepage copy too, john said he'd write a draft.
  1. Submit the form
  2. Check your Google Drive—you should see a new document!
Test form submission Generated Google Doc output

Expected Output

Your Google Doc should look something like this:

text
SUMMARY:
- Website redesign discussion with focus on color scheme selection
- User testing will be conducted before finalizing design decisions
- Budget of $5000 approved for the redesign project
- Next review meeting scheduled for December 20th
- Homepage copy update needed as part of redesign

ACTION ITEMS:
- Mike: Set up user testing by Friday
- Sarah: Check with legal about privacy policy update
- John: Write draft for homepage copy

DECISIONS:
- User testing will be conducted before selecting final color scheme
- Budget approved: $5000 for website redesign

FOLLOW-UPS:
- Review user testing results on December 20th
- Finalize color scheme after testing completion

Download the Workflow

Want to skip the manual setup? Import this workflow directly into n8n:

  1. Download the workflow JSON
  2. In n8n, click Add WorkflowImport from File
  3. Select the downloaded JSON file

Or copy the JSON below and paste it directly:

json
{
  "name": "AI Work Assistant",
  "nodes": [
    {
      "parameters": {
        "formTitle": "AI Work Assistant",
        "formDescription": "Convert your messy notes, meeting transcripts, email threads into structured, summarized and actionable items.",
        "formFields": {
          "values": [
            {
              "fieldLabel": "Notes",
              "fieldType": "textarea",
              "placeholder": "Messy content here",
              "requiredField": true
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.formTrigger",
      "typeVersion": 2.3,
      "position": [0, 0],
      "id": "form-trigger-node",
      "name": "On form submission",
      "webhookId": "your-webhook-id"
    },
    {
      "parameters": {
        "modelId": {
          "__rl": true,
          "value": "gpt-4o-mini",
          "mode": "list",
          "cachedResultName": "GPT-4O-MINI"
        },
        "responses": {
          "values": [
            {
              "role": "system",
              "content": "You are a professional work assistant.\n\nYour job is to take raw, unstructured work notes and turn them into a clear, structured summary that can be shared with others.\n\nFollow these rules strictly:\n- Be concise and professional\n- Do not invent information\n- If something is unclear or missing, leave it out\n- Use simple, clear language\n- Format the output exactly as requested below\n- Only provide the required output and no other meta conversational text"
            },
            {
              "content": "Here are raw notes from a meeting, call, or email thread:\n\n{{ $json.Notes }}\n\nPlease create a structured summary using the following format:\n\nSUMMARY:\n- 3 to 5 bullet points capturing the main points\n\nACTION ITEMS:\n- Bullet list of tasks\n- Include owner names if mentioned\n- If no action items are found, write \"No clear action items identified\"\n\nDECISIONS:\n- Bullet list of decisions made\n- If none, write \"No decisions recorded\"\n\nFOLLOW-UPS:\n- Bullet list of required follow-ups\n- If none, write \"No follow-ups required\""
            }
          ]
        },
        "builtInTools": {},
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "typeVersion": 2,
      "position": [208, 0],
      "id": "openai-node",
      "name": "Message a model"
    },
    {
      "parameters": {
        "folderId": "YOUR_GOOGLE_DRIVE_FOLDER_ID",
        "title": "=Meeting Summary – {{ $now.format(\"DD HH:mm\") }}"
      },
      "type": "n8n-nodes-base.googleDocs",
      "typeVersion": 2,
      "position": [560, 0],
      "id": "create-doc-node",
      "name": "Create a document"
    },
    {
      "parameters": {
        "operation": "update",
        "documentURL": "={{ $json.id }}",
        "actionsUi": {
          "actionFields": [
            {
              "action": "insert",
              "text": "={{ $('Message a model').item.json.output[0].content[0].text }}"
            }
          ]
        }
      },
      "type": "n8n-nodes-base.googleDocs",
      "typeVersion": 2,
      "position": [768, 0],
      "id": "update-doc-node",
      "name": "Update a document"
    }
  ],
  "connections": {
    "On form submission": {
      "main": [[{"node": "Message a model", "type": "main", "index": 0}]]
    },
    "Message a model": {
      "main": [[{"node": "Create a document", "type": "main", "index": 0}]]
    },
    "Create a document": {
      "main": [[{"node": "Update a document", "type": "main", "index": 0}]]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1"
  }
}

Note: After importing, you'll need to connect your own OpenAI and Google Docs credentials, and optionally update the Google Drive folder ID.

What's Next?

Congratulations! You've built a fully functional AI Work Assistant. Here are some ideas to extend it:

  • Add Slack notifications — Send the summary to a Slack channel automatically
  • Email trigger — Forward emails to n8n and process them automatically
  • Multiple output formats — Create Notion pages or send to your task manager
  • Scheduled digests — Compile multiple notes into a daily summary

The beauty of n8n is that once you understand the basics, you can connect hundreds of apps and build increasingly sophisticated automations.


Have questions or built something cool with this? I'd love to hear about it!