by Stefan Joulien
How it works A prospect submits a form with their email and website URL The workflow fetches and cleans the website HTML, extracting key business signals An Analyst Agent reads the content and produces a structured JSON diagnostic (business type, offers, pain points, funnels, copy kit) A Writer Agent converts the diagnostic into a personalised email with 10 actionable improvements, written automatically in the lead's language A branded HTML email is assembled and sent via Gmail with numbered improvement cards, a booking CTA and a professional footer Set up steps Connect your OpenAI API credentials to both AI model nodes (~2 min) Connect your Gmail account to the Send Email node (~1 min) Open the Build Email HTML node and fill in the 6 constants at the top: your name, email, cal.com booking link, Instagram URL, LinkedIn URL and logo image URL (~3 min) Activate the workflow and share the form URL with your leads
by Shreya Bhingarkar
This n8n workflow automates your entire B2B outreach pipeline from lead discovery to personalized cold email delivery. Submit a form, let Apollo find and enrich your leads, review AI-generated emails in your sheet and send them all with one click. How it works Form Trigger** accepts Job Title, Location and Number of Leads to kick off the workflow Apollo** searches for matching people and enriches each lead with email, phone, LinkedIn URL and company data Duplicate check** runs automatically to skip any leads already in your sheet Leads are saved** to Google Sheet with outreach status set to Pending Manual Trigger** runs the email generation section using Groq LLM to write a personalized cold email per lead Generated emails** are saved to the sheet for review before sending Gmail** sends each email and updates the outreach status to Mail Sent How to use Run Trigger 1 — Form to scrape and enrich leads from Apollo Review leads in your Google Sheet Run Trigger 2 — Manual to generate and send cold emails Update the AI Cold Email Writer node with your company details before running Requirements Apollo** account with API Key Google Sheets** account Groq** account with API Key Gmail** account Customising this workflow Replace Groq with OpenAI or any other LLM for email generation Extend with a follow-up sequence to re-engage leads who did not reply
by Avkash Kakdiya
How it works This workflow automatically detects completed orders in PostgreSQL and prepares them for AI-based post-purchase communication. It enriches each order with customer, product, and payment data, then generates a personalized message using an AI agent. The message is delivered via email and WhatsApp and finally logged in Google Sheets for tracking and auditing. Step-by-step Step 1: Fetch and prepare completed orders for AI processing** Postgres Trigger – Watches the orders table for updates and initiates the workflow. Postgres (Execute query) – Fetches only orders marked as completed. Split In Batches – Loops through completed orders safely and sequentially. Postgres (Execute query) – Retrieves full customer, product, and payment details using joins. AI Agent – Generates a personalized post-purchase message using order data. Groq Chat Model – Supplies the language model used by the AI agent. Merge – Combines AI-generated text with database results for downstream use. Step 2: Deliver messages and log post-purchase communication** Code – Formats AI output into clean email and WhatsApp message templates. Gmail – Sends the post-purchase email to the customer. WhatsApp – Sends the same message via WhatsApp. Set – Flags email and WhatsApp messages as successfully sent. Google Sheets – Appends customer, order, and communication details. Wait – Pauses before continuing to process the next completed order. Why use this? Automates post-purchase communication with zero manual effort. Ensures consistent, personalized messaging across email and WhatsApp. Adapts message tone automatically based on payment status. Creates a centralized audit log in Google Sheets. Scales easily as order volume grows.
by Abdullah Alshiekh
What Problem Does It Solve? Staying up-to-date with AI and LLM developments requires reading dozens of articles every week. Manual research is time-consuming and often leads to “information overload” or reading low-quality clickbait. Important technical breakthroughs often get buried under marketing fluff. This workflow solves these by: Leveraging Decodo to instantly find and scrape high-quality organic articles (automatically filtering out YouTube/video noise). Using AI to read and summarize every article individually. Using an "Analyst Agent" to score news by relevance and write a single, high-quality intelligence report. How to Configure It Decodo & API Setup Decodo:** Connect your Decodo credentials. This is the core engine that handles the high-precision Google Search and content scraping. OpenAI:** Connect your OpenAI API key (GPT-4o or 4.1-mini recommended for best analysis). Gmail:** Connect a Google Service Account or Gmail OAuth to send the emails. Search Configuration Open the Set Search Config node. Edit the search_query value to match your niche (e.g., "Latest Large Language Model benchmarks" or "Generative AI in Healthcare"). How It Works Trigger:** The workflow wakes up once a week (customizable). Search (Powered by Decodo):** It searches Google using Decodo's organic results filter to ensure only high-quality reading material is selected. Scraping:** It visits every URL found and extracts the raw text, cleaning up HTML tags. Summarization:** An LLM reads each article individually to extract key technical points. Analyst Agent:** Reviews all summaries, assigns a "Relevance Score", and compiles the final newsletter. Delivery:** The final report is emailed to you immediately. Customization Ideas Change the topic to any industry (Crypto, Finance, Sports). Swap the AI model for Claude or DeepSeek. Log the summaries into a Notion database. If you need any help Get In Touch
by Cheng Siong Chin
How It Works Automates revenue data validation and intelligent anomaly detection with scheduled weekly processing. Fetches revenue data, applies dual OpenAI models for categorization and anomaly detection, identifies outliers or suspicious patterns, and synchronizes clean data with accounting software. Includes correction workflow through Connection Agent for data quality remediation. System generates compliance summaries and automatically sends reports to tax agents via Gmail. Designed for accounting firms, tax professionals, and finance teams requiring enterprise-grade data validation, fraud detection, and regulatory compliance without manual review bottlenecks. Setup Steps Configure OpenAI API keys for categorization and anomaly detection models Connect revenue data source and accounting software via Connection Agent Define anomaly detection thresholds and categorization Set email templates for tax agent communication Configure weekly schedule trigger timing Prerequisites OpenAI API key, accounting software credentials, revenue data source connectivity, Gmail account Use Cases Accounting firm multi-client processing, monthly/quarterly tax compliance Customization Adjust anomaly thresholds per business rules, customize categorization rules for industry standards Benefits Reduces data validation time by 85%, eliminates manual categorization errors, detects fraud patterns
by Matthew
Description This workflow automates the first line of customer support by intelligently drafting email replies. It bridges the gap between your CRM (Supabase), your technical documentation (Vector Store), and your inbox (Outlook). By analyzing the sender's identity and the technical content of the query, it ensures that every draft reply is personalized, accurate, and follows strict business rules. How It Works Trigger: Monitors a Microsoft Outlook inbox for new incoming messages. Contact Enrichment: Queries a Supabase contacts table using the sender's email to retrieve their name, organization, and department. Context Construction: A Code node prepares a "Chat Input" that includes the email body, sender metadata, and specific brand "Business Rules." AI Intelligence (RAG): An AI Agent (GPT-4o) analyzes the request. If technical details are required, the Agent uses a Supabase Vector Store tool to retrieve semantic matches from your product manuals. Draft Creation: The AI generates an HTML-formatted reply which is saved as a Draft in Outlook for manual review. Audit Trail: Logs the intent, urgency, and outcome into a Google Sheet for performance tracking. Requirements Microsoft Outlook:** Business/Office 365 account. Supabase:** * A table for contact lookups. A vector-enabled database containing document embeddings. OpenAI API:** For the GPT-4o model and embeddings. Google Sheets:** To maintain an execution summary log. Setup Instructions Import: Paste the workflow JSON into your n8n canvas. Credentials: Set up and select credentials for Outlook, OpenAI, Supabase, and Google Sheets. Placeholder Updates: Fetch Contact Info: Set the table name to your specific CRM table. Vector Store: Update the table name and query function to match your Supabase Vector Store setup. Log to Google Sheets: Replace the Document ID and Sheet Name with your specific spreadsheet details. Persona Tuning: Open the AI Support Agent node and the Build AI Prompt code node to replace the [YOUR_COMPANY] and [YOUR_NAME] placeholders with your actual brand identity. Customization Ideas Urgency Routing:** Add an If node after the Agent to send a Slack or Teams notification if the AI detects the urgency is "high." Attachments:** Modify the Outlook node to include specific PDF brochures based on the primary_product_codes identified by the AI. Human-in-the-loop:** Use n8n "Wait for Webhook" or "Manual Approval" nodes if you want to approve the draft within the n8n UI before it hits the Outlook drafts folder.
by Daniel Agrici
This workflow automates business intelligence. Submit one URL, and it scrapes the website, uses AI to perform a comprehensive analysis, and generates a professional report in Google Doc and PDF format. It's perfect for agencies, freelancers, and consultants who need to streamline client research or competitive analysis. How It Works The workflow is triggered by a form input, where you provide a single website URL. Scrape: It uses Firecrawl to scrape the sitemap and get the full content from the target website. Analyze: The main workflow calls a Tools Workflow (included below) which uses Google Gemini and Perplexity AI agents to analyze the scraped content and extract key business information. Generate & Deliver: All the extracted data is formatted and used to populate a template in Google Docs. The final report is saved to Google Drive and delivered via Gmail. What It Generates The final report is a comprehensive business analysis, including: Business Overview: A full company description. Target Audience Personas: Defines the demographic and psychographic profiles of ideal customers. Brand & UVP: Extracts the brand's personality matrix and its Unique Value Proposition (UVP). Customer Journey: Maps the typical customer journey from Awareness to Loyalty. Required Tools This workflow requires n8n and API keys/credentials for the following services: Firecrawl (for scraping) Perplexity (for AI analysis) Google Gemini (for AI analysis) Google Services (for Docs, Drive, and Gmail) ⚠️ Required: Tools Workflow This workflow will not work without its "Tools" sub-workflow. Please create a new, separate workflow in n8n, name it (e.g., "Business Analysis Tools"), and paste the following code into it. { "name": "Business Analysis Workflow Tools", "nodes": [ { "parameters": { "workflowInputs": { "values": [ { "name": "function" }, { "name": "keyword" }, { "name": "url" }, { "name": "location_code" }, { "name": "language_code" } ] } }, "type": "n8n-nodes-base.executeWorkflowTrigger", "typeVersion": 1.1, "position": [ -448, 800 ], "id": "e79e0605-f9ac-4166-894c-e5aa9bd75bac", "name": "When Executed by Another Workflow" }, { "parameters": { "rules": { "values": [ { "conditions": { "options": { "caseSensitive": true, "leftValue": "", "typeValidation": "strict", "version": 2 }, "conditions": [ { "id": "8d7d3035-3a57-47ee-b1d1-dd7bfcab9114", "leftValue": "serp_search", "rightValue": "={{ $json.function }}", "operator": { "type": "string", "operation": "equals", "name": "filter.operator.equals" } } ], "combinator": "and" }, "renameOutput": true, "outputKey": "serp_search" }, { "conditions": { "options": { "caseSensitive": true, "leftValue": "", "typeValidation": "strict", "version": 2 }, "conditions": [ { "id": "bb2c23eb-862d-4582-961e-5a8d8338842c", "leftValue": "ai_mode", "rightValue": "={{ $json.function }}", "operator": { "type": "string", "operation": "equals", "name": "filter.operator.equals" } } ], "combinator": "and" }, "renameOutput": true, "outputKey": "ai_mode" }, { "conditions": { "options": { "caseSensitive": true, "leftValue": "", "typeValidation": "strict", "version": 2 }, "conditions": [ { "id": "4603eee1-3888-4e32-b3b9-4f299dfd6df3", "leftValue": "internal_links", "rightValue": "={{ $json.function }}", "operator": { "type": "string", "operation": "equals", "name": "filter.operator.equals" } } ], "combinator": "and" }, "renameOutput": true, "outputKey": "internal_links" } ] }, "options": {} }, "type": "n8n-nodes-base.switch", "typeVersion": 3.2, "position": [ -208, 784 ], "id": "72c37890-7054-48d8-a508-47ed981551d6", "name": "Switch" }, { "parameters": { "method": "POST", "url": "https://api.dataforseo.com/v3/serp/google/organic/live/advanced", "authentication": "genericCredentialType", "genericAuthType": "httpBasicAuth", "sendBody": true, "specifyBody": "json", "jsonBody": "=[\n {\n \"keyword\": \"{{ $json.keyword.replace(/[:'\"\\\\/]/g, '') }}\",\n \"location_code\": {{ $json.location_code }},\n \"language_code\": \"{{ $json.language_code }}\",\n \"depth\": 10,\n \"group_organic_results\": true,\n \"load_async_ai_overview\": true,\n \"people_also_ask_click_depth\": 1\n }\n]", "options": { "redirect": { "redirect": { "followRedirects": false } } } }, "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": [ 384, 512 ], "id": "6203f722-b590-4a25-8953-8753a44eb3cb", "name": "SERP Google", "credentials": { "httpBasicAuth": { "id": "n5o00CCWcmHFeI1p", "name": "DataForSEO" } } }, { "parameters": { "content": "## SERP Google", "height": 272, "width": 688, "color": 4 }, "type": "n8n-nodes-base.stickyNote", "typeVersion": 1, "position": [ 288, 432 ], "id": "81593217-034f-466d-9055-03ab6b2d7d08", "name": "Sticky Note3" }, { "parameters": { "assignments": { "assignments": [ { "id": "97ef7ee0-bc97-4089-bc37-c0545e28ed9f", "name": "platform", "value": "={{ $json.tasks[0].data.se }}", "type": "string" }, { "id": "9299e6bb-bd36-4691-bc6c-655795a6226e", "name": "type", "value": "={{ $json.tasks[0].data.se_type }}", "type": "string" }, { "id": "2dc26c8e-713c-4a59-a353-9d9259109e74", "name": "keyword", "value": "={{ $json.tasks[0].data.keyword }}", "type": "string" }, { "id": "84c9be31-8f1d-4a67-9d13-897910d7ec18", "name": "results", "value": "={{ $json.tasks[0].result }}", "type": "array" } ] }, "options": {} }, "type": "n8n-nodes-base.set", "typeVersion": 3.4, "position": [ 592, 512 ], "id": "a916551a-009b-403f-b02e-3951d54d2407", "name": "Prepare SERP output" }, { "parameters": { "content": "# Google Organic Search API\n\nThis API lets you retrieve real-time Google search results with a wide range of parameters and custom settings. \nThe response includes structured data for all available SERP features, along with a direct URL to the search results page. \n\n👉 Documentation\n", "height": 272, "width": 496, "color": 4 }, "type": "n8n-nodes-base.stickyNote", "typeVersion": 1, "position": [ 976, 432 ], "id": "87672b01-7477-4b43-9ccc-523ef8d91c64", "name": "Sticky Note17" }, { "parameters": { "method": "POST", "url": "https://api.dataforseo.com/v3/serp/google/ai_mode/live/advanced", "authentication": "genericCredentialType", "genericAuthType": "httpBasicAuth", "sendBody": true, "specifyBody": "json", "jsonBody": "=[\n {\n \"keyword\": \"{{ $json.keyword }}\",\n \"location_code\": {{ $json.location_code }},\n \"language_code\": \"{{ $json.language_code }}\",\n \"device\": \"mobile\",\n \"os\": \"android\"\n }\n]", "options": { "redirect": { "redirect": {} } } }, "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": [ 384, 800 ], "id": "fb0001c4-d590-45b3-a3d0-cac7174741d3", "name": "AI Mode", "credentials": { "httpBasicAuth": { "id": "n5o00CCWcmHFeI1p", "name": "DataForSEO" } } }, { "parameters": { "content": "## AI Mode", "height": 272, "width": 512, "color": 6 }, "type": "n8n-nodes-base.stickyNote", "typeVersion": 1, "position": [ 288, 720 ], "id": "2cea3312-31f8-4ff0-b385-5b76b836274c", "name": "Sticky Note11" }, { "parameters": { "assignments": { "assignments": [ { "id": "b822f458-ebf2-4a37-9906-b6a2606e6106", "name": "keyword", "value": "={{ $json.tasks[0].data.keyword }}", "type": "string" }, { "id": "10484675-b107-4157-bc7e-b942d8cdb5d2", "name": "result", "value": "={{ $json.tasks[0].result[0].items }}", "type": "array" } ] }, "options": {} }, "type": "n8n-nodes-base.set", "typeVersion": 3.4, "position": [ 592, 800 ], "id": "6b1e7239-ee2b-4457-8acb-17ce87415729", "name": "Prepare AI Mode Output" }, { "parameters": { "content": "# Google AI Mode API\n\nThis API provides AI-generated search result summaries and insights from Google. \nIt returns detailed explanations, overviews, and related information based on search queries, with parameters to customize the AI overview. \n\n👉 Documentation\n", "height": 272, "width": 496, "color": 6 }, "type": "n8n-nodes-base.stickyNote", "typeVersion": 1, "position": [ 800, 720 ], "id": "d761dc57-e35d-4052-a360-71170a155f7b", "name": "Sticky Note18" }, { "parameters": { "content": "## Input", "height": 384, "width": 544, "color": 7 }, "type": "n8n-nodes-base.stickyNote", "typeVersion": 1, "position": [ -528, 672 ], "id": "db90385e-f921-4a9c-89f3-53fc5825b207", "name": "Sticky Note" }, { "parameters": { "assignments": { "assignments": [ { "id": "b865f4a0-b4c3-4dde-bf18-3da933ab21af", "name": "platform", "value": "={{ $json.platform }}", "type": "string" }, { "id": "476e07ca-ccf6-43d4-acb4-4cc905464314", "name": "type", "value": "={{ $json.type }}", "type": "string" }, { "id": "f1a14eb8-9f10-4198-bbc7-17091532b38e", "name": "keyword", "value": "={{ $json.keyword }}", "type": "string" }, { "id": "181791a0-1d88-481c-8d98-a86242bb2135", "name": "results", "value": "={{ $json.results[0].items }}", "type": "array" } ] }, "options": {} }, "type": "n8n-nodes-base.set", "typeVersion": 3.4, "position": [ 800, 512 ], "id": "83fef061-5e0b-417c-b1f6-d34eb712fac6", "name": "Sort Results" }, { "parameters": { "content": "## Internal Links", "height": 272, "width": 272, "color": 5 }, "type": "n8n-nodes-base.stickyNote", "typeVersion": 1, "position": [ 288, 1024 ], "id": "9246601a-f133-4ca3-aac8-989cb45e6cd2", "name": "Sticky Note7" }, { "parameters": { "method": "POST", "url": "https://api.firecrawl.dev/v2/map", "sendHeaders": true, "headerParameters": { "parameters": [ { "name": "Authorization", "value": "Bearer your-firecrawl-apikey" } ] }, "sendBody": true, "specifyBody": "json", "jsonBody": "={\n \"url\": \"https://{{ $json.url }}\",\n \"limit\": 400,\n \"includeSubdomains\": false,\n \"sitemap\": \"include\"\n }", "options": {} }, "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": [ 368, 1104 ], "id": "fd6a33ae-6fb3-4331-ab6a-994048659116", "name": "Get Internal Links" }, { "parameters": { "content": "# Firecrawl Map API\n\nThis endpoint maps a website from a single URL and returns the list of discovered URLs (titles and descriptions when available) — extremely fast and useful for selecting which pages to scrape or for quickly enumerating site links. (Firecrawl)\n\nIt supports a search parameter to find relevant pages inside a site, location/languages options to emulate country/language (uses proxies when available), and SDK + cURL examples in the docs,\n\n👉 Documentation\n\n[1]: https://docs.firecrawl.dev/features/map \"Map | Firecrawl\"\n", "height": 272, "width": 624, "color": 5 }, "type": "n8n-nodes-base.stickyNote", "typeVersion": 1, "position": [ 560, 1024 ], "id": "08457204-93ff-4586-a76e-03907118be3c", "name": "Sticky Note24" } ], "pinData": { "When Executed by Another Workflow": [ { "json": { "function": "serp_search", "keyword": "villanyszerelő Largo Florida", "url": null, "location_code": 2840, "language_code": "hu" } } ] }, "connections": { "When Executed by Another Workflow": { "main": [ [ { "node": "Switch", "type": "main", "index": 0 } ] ] }, "Switch": { "main": [ [ { "node": "SERP Google", "type": "main", "index": 0 } ], [ { "node": "AI Mode", "type": "main", "index": 0 } ], [ { "node": "Get Internal Links", "type": "main", "index": 0 } ] ] }, "SERP Google": { "main": [ [ { "node": "Prepare SERP output", "type": "main", "index": 0 } ] ] }, "AI Mode": { "main": [ [ { "node": "Prepare AI Mode Output", "type": "main", "index": 0 } ] ] }, "Prepare SERP output": { "main": [ [ { "node": "Sort Results", "type": "main", "index": 0 } ] ] }, "Sort Results": { "main": [ [] ] } }, "active": false, "settings": { "executionOrder": "v1" }, "versionId": "6fce16d1-aa28-4939-9c2d-930d11c1e17f", "meta": { "instanceId": "1ee7b11b3a4bb285563e32fdddf3fbac26379ada529b942ee7cda230735046a1" }, "id": "VjpOW2V2aNV9HpQJ", "tags": [] } `
by Muhammad Ali
Who’s it for Perfect for marketing agencies that manage multiple Facebook ad accounts and want to automate their weekly reporting. It eliminates manual data collection, analysis, and client updates by delivering a ready-to-share PDF report. How it works Every Monday, the workflow: Fetches the previous week’s campaign metrics from the Facebook Graph API. Formats and summarizes each campaign’s performance using OpenAI. Merges all summaries into one comprehensive report with insights and next-week suggestions. Converts the report into a polished PDF using any PDF generation API. Sends the final PDF report automatically to the client via Gmail. How to set up Connect your Facebook, OpenAI, and Gmail accounts in n8n. Add credentials for your preferred PDF generator (e.g., PDFCrowd, Placid, etc.). Open the “Set Node” to customize recipient email, date range, or report text. Requirements Facebook Graph API access token OpenAI API key Gmail credentials API key for your PDF generation service How to customize You can modify the trigger day, personalize the report design, or include additional analytics such as ROAS, CPC, or conversion data for deeper insights.
by Yaron Been
Analyze competitor Instagram engagement by scraping profiles with Bright Data and scoring them with GPT-5.4. This workflow reads competitor Instagram URLs from a Google Sheet, scrapes their profile data using the Bright Data Instagram Profiles dataset, validates the API response, then sends the data to GPT-5.4 for engagement scoring. Each competitor is scored on follower growth, engagement rate quality, content consistency, and audience authenticity (0-25 each, total 0-100). High-scoring competitors trigger email alerts. How it works: Schedule trigger runs the workflow daily. Reads competitor URLs from the 'competitor_accounts' sheet. Sends each URL to Bright Data's Instagram Profiles API. Validates the API response (handles async/error cases). GPT-5.4 analyzes profile metrics and scores engagement quality. Parses the structured JSON response. Filters by AI confidence (>= 0.7 threshold). Routes high scorers (engagement_score >= 75) to 'top_performers' with Gmail alert. Routes normal results to 'engagement_analysis'. Low confidence results go to 'low_confidence_engagement' for review. Setup: Create a Google Sheet with a 'competitor_accounts' tab containing columns: competitor_name, url, our_industry. Add output tabs: engagement_analysis, top_performers, low_confidence_engagement. Configure all credentials (Bright Data API, OpenAI, Google Sheets, Gmail). Requirements: Bright Data API account (~$0.01-0.03 per profile scrape). OpenAI API account (GPT-5.4 costs ~$0.003-0.008 per call). Google Sheets OAuth2 credentials. Gmail OAuth2 credentials. Notes: Add competitors one per row with their full Instagram profile URL. The engagement_score threshold of 75 can be adjusted in the IF node. Low confidence results may indicate incomplete profile data from Bright Data.
by Razvan Bara
How it works: This n8n workflow automates communication with meeting invitees to decrease no-show rates by sending timely email and WhatsApp reminders, and a clarification request if more information is needed to prepare the meeting. Step-by-step: The workflow is triggered by an incoming email notification from Calendly about a newly scheduled meeting. It uses AI to extract key meeting data from the email content. It checks if the invitee didn't provide sufficient information, and, if there is a need for more information, sends a clarification request email. It calculates the waiting time required for the 24-hour and 1-hour reminders. It uses an If node to determine the correct waiting path based on the meeting time. It uses Wait nodes for timing the reminders correctly. Finally, it sends a reminder email and a WhatsApp reminder before the meeting. Customization Options: Replace Google Gemini with your preferred LLM model (though Gemini works on the free tier). Tailor email and WhatsApp messages to speak your brand's language. Replace Twillio node to WhatsApp node to be a completly free usage flow.
by Minibox Digital
Chat with a Gemini-powered operations assistant to create and update Notion tasks, send emails via Gmail, and pull live project summaries — all from a single chat interface. Daily and weekly status reports also fire automatically on a schedule. Who's it for Operations managers, project leads, and small teams who manage work in Notion and want a single conversational interface to handle task creation, updates, and reporting — without switching between tools. How it works A chat trigger receives a plain-English message and passes it to Gemini, which classifies the intent into one of five actions: create a Notion task, update an existing task, send a Gmail, generate an on-demand report, or fetch the latest task ID. The message is routed to the matching AI agent, which calls the correct sub-workflow or tool and replies in chat. Two scheduled flows run independently — a daily status report every morning and a weekly progress digest every Friday — both pulling live data from your Notion Workstreams database and summarising it with Gemini. How to set up Add your Google Gemini API credential in n8n and assign it to all Gemini nodes Add your Notion credential in n8n and connect it to your Workstreams database Add your Gmail OAuth2 credential in n8n Replace the placeholder database ID in every Notion node with your own After importing, open Call Sub-Create Workflow and Call Sub-Update Workflow and update the workflow ID to match your imported workflow Requirements n8n (cloud or self-hosted) Google Gemini API key Notion account with a Workstreams database Gmail account with OAuth2 access How to customize Add new intent labels to the Route by Intent node and wire them to your own agents to extend MiniBox with new capabilities. Swap the Notion field names in the Sub-Create and Sub-Update sections to match your own database schema.
by Toshiya Minami
Here’s a clean, English-only template description you can paste into the n8n “Description” field. Overview This workflow analyzes customer survey responses, groups them by sentiment (positive / neutral / negative), generates themes and insights with an AI agent, and delivers a consolidated report to your destinations (Google Sheets, Slack). It runs on a daily schedule and uses batch-based AI analysis for accuracy. Flow: Schedule → Fetch from Sheets → Group & batch (Code) → AI analysis → Aggregate → Save/Notify (Sheets, Slack) What You’ll Need A survey data source (Google Sheets recommended) AI model credentials (e.g., OpenAI or OpenRouter) Optional destinations: Google Sheets (summary sheet), Slack channel Setup Data source (Google Sheets) In Get Survey Responses, replace YOUR_SHEET_ID and YOUR_SHEET_NAME with your sheet details. Ensure the sheet includes columns like: 満足度 (Rating), 自由記述コメント (Comment), 回答日時 (Timestamp). AI model Add credentials to your preferred LLM node (OpenAI/OpenRouter). Keep the prompt’s JSON-only requirement so the structured parser can consume it reliably. Destinations Save to Sheet: set your output documentId / sheetName. Slack: set the target channelId on the Slack node. How It Works Daily Schedule Trigger — starts the workflow at your chosen time. Get Survey Responses (Sheets) — reads survey data. Group & Prepare Data (Code) — classifies by rating (>=4: positive, =3: neutral, <3: negative) and creates batches (max 50 per batch). Loop Over Batches — feeds each sentiment batch to the AI separately for cleaner signals. Analyze Survey Batch (AI Agent) — returns structured JSON: themes, insights, recommendations. Add Metadata (Code) — attaches original sentiment and item counts to each AI result. Aggregate Results (Code) — merges all batches; outputs Top Themes, Key Insights, Priority Recommendations, and an Executive Summary. Save to Sheet / Slack — appends the summary to a sheet and posts highlights to Slack. Data Assumptions (Columns) Your source should include at least: 満足度 (Rating) — integer 1–5 自由記述コメント (Comment) — string 回答日時 (Timestamp) — ISO string or date Outputs Consolidated summary** containing: Top themes (with example quotes) Key insights Priority recommendations Executive summary Destinations**: Google Sheets (one row per run) and Slack (high-level highlights) Customize Adjust sentiment thresholds (e.g., require >=5 for positive) or batch size (default 50) in the Code node. Tailor the AI prompt or the output JSON schema to your domain. Add more outputs (CSV export, database insert, additional channels) in parallel after the Aggregate step. Before You Run (Checklist) [ ] Add credentials for Sheets / AI / Slack in Credentials [ ] Update documentId, sheetName, and Slack channelId [ ] Confirm your column names match the Code node references [ ] Verify schedule time and timezone (e.g., Asia/Tokyo) Troubleshooting Parser errors on AI output: ensure the model response is **JSON-only; reduce temperature or simplify schema if needed. Only some batches run**: check batch size in Loop and ensure each sentiment bucket actually contains responses. No output to Sheets/Slack**: verify credentials, IDs, and required fields; confirm permissions. Security & Template Notes Do not include credentials in the template file. Users add their own after import. Use Sticky Notes to document Overview, Setup, Processing Logic, and Output choices. This template already includes guideline-friendly notes.