by David Grimm
Quick Overview This workflow monitors Gmail for unread emails from a specific sender, classifies attached documents with Google Gemini, then extracts and validates structured data for bills of lading, invoices, and warranty claims, posts the results to an HTTP webhook endpoint, and replies to the sender with an HTML confirmation email. How it works Triggers when an unread Gmail message arrives from the configured sender and downloads the email attachment. Uses Google Gemini to classify the attachment as a bill of lading, invoice, warranty claim, or other, while preserving the original binary file for downstream processing. Routes the flow by document type and uses Google Gemini to extract the document into a structured markdown representation. Uses a dedicated Google Gemini agent per document type to convert the extracted content into JSON that matches a predefined schema. Runs Python validation checks on the structured data (for example, totals matching line items) and adds a validation result to the payload. Posts the structured output to a configured HTTP webhook endpoint and uses a Google Gemini messaging agent to draft an HTML reply. Sends the generated reply back to the original email sender via Gmail. Setup Connect a Gmail OAuth2 credential and set the Gmail trigger filters (sender, unread status) and ensure attachments are enabled for download. Connect a Google Gemini (PaLM) API credential and confirm the configured Gemini models are available for both extraction and the analysis/messaging agents. Update the HTTP Request node URL (and any required headers/authentication) to point to your target webhook or API endpoint. Review and adjust the structured output schemas and the Python validation rules to match the fields and business rules required for your bill of lading, invoice, and warranty claim formats.
by isaWOW
Description Connect your Fireflies account once and activate the workflow — every Monday at 9AM it runs automatically without any input from you. It pulls all sales call transcripts from the past 7 days, analyzes each one with GPT-4o-mini, and extracts six intelligence fields: pricing mentions, objections, buying signals, competitor mentions, a key takeaway, and a recommended next action. Every call is logged as one row in Google Sheets and a full weekly digest is posted to your Slack channel. Built for sales managers and revenue teams who want structured call intelligence delivered without manual review. What This Workflow Does Fetches last 7 days of calls automatically** — Pulls up to 50 recent transcripts from Fireflies and filters to only those recorded in the past week Analyzes every call individually** — GPT-4o-mini reads each transcript and extracts six structured fields per call, not a generic summary Detects objections and buying signals** — Surfaces exactly what concerns were raised and what positive signals suggest the deal is moving forward Flags competitor mentions** — Identifies any competitor names or alternative products that came up across all calls this week Logs each call to Google Sheets** — Appends one 13-column row per call so your team has a permanent, searchable record of every sales conversation Delivers a weekly Slack digest** — Aggregates all calls into one report covering totals, top objections, top buying signals, and a call-by-call overview Exits cleanly when no calls exist** — If no transcripts are found for the week, the workflow stops silently without errors or empty Slack messages Setup Requirements Tools Needed n8n instance (self-hosted or cloud) Fireflies.ai account with API access OpenAI account with GPT-4o-mini API access Google Sheets (one sheet with a tab named Sales Call Analysis) Slack workspace with OAuth2 app configured Credentials Required Fireflies API key (pasted directly into 2. Set — Config Values — no n8n credential needed) OpenAI API key Google Sheets OAuth2 Slack OAuth2 Estimated Setup Time: 15–20 minutes Step-by-Step Setup Import the workflow — Open n8n → Workflows → Import from JSON → paste the workflow JSON → click Import Get your Fireflies API key — Log in to fireflies.ai → go to Settings → Integrations → copy your API key Fill in Config Values — Open node 2. Set — Config Values → replace all placeholders: | Field | What to enter | |---|---| | YOUR_FIREFLIES_API_KEY | Your Fireflies API key from step 2 | | YOUR_GOOGLE_SHEET_ID | The ID from your Google Sheet URL (the string between /d/ and /edit) | | Sales Call Analysis | Leave as-is, or change to match your sheet tab name exactly | | #sales-team | Your Slack channel name including the # | | YOUR COMPANY NAME | Your company name (used in the AI prompt and Slack report) | | salesKeywords | Comma-separated keywords to identify sales calls (default: sales,client,demo,proposal,pricing,onboarding,deal,contract) | Connect OpenAI — Open node 10. OpenAI — GPT-4o-mini Model → click the credential dropdown → add your OpenAI API key → test the connection Create your Google Sheet — Open Google Sheets → create a new sheet → add a tab named exactly Sales Call Analysis → add these 13 column headers in row 1: Call Date, Meeting Title, Duration (min), Participants, Overall Sentiment, Pricing Mentions, Objections, Buying Signals, Competitor Mentions, Key Takeaway, Recommended Action, Transcript URL, Logged At Connect Google Sheets — Open node 13. Google Sheets — Log Call Analysis → click the credential dropdown → add Google Sheets OAuth2 → sign in with your Google account → authorize access Connect Slack — Open node 15. Slack — Send Weekly Report → click the credential dropdown → connect your Slack workspace via OAuth2 → invite the n8n bot to your sales channel in Slack (/invite @n8n) Activate the workflow — Toggle the workflow to Active — it will run automatically every Monday at 9AM > ⚠️ Test before Monday — To test immediately without waiting for Monday, open node 1. Schedule — Every Monday 9AM, click "Execute step", then run the full workflow manually from there. How It Works (Step by Step) Step 1 — Schedule: Every Monday 9AM This step fires the workflow automatically every Monday morning at 9AM. No manual trigger is needed. Once the workflow is active, this runs on its own every week. Step 2 — Set: Config Values Your Fireflies API key, Google Sheet ID, sheet tab name, Slack channel, company name, sales keywords, and the 7-day date window are all stored here. The week start and end dates are calculated automatically based on today's date so you never need to update them manually. Step 3 — HTTP: Fetch Recent Transcripts A request is sent to the Fireflies API using your API key. It retrieves the 50 most recent transcripts from your account, including each call's ID, title, date, duration, and participants. This is a lightweight fetch — full transcript content comes later. Step 4 — Code: Filter Last 7 Days The 50 transcripts are filtered down to only those recorded in the past 7 days. Each transcript that passes the filter becomes its own separate item so the next steps process each call individually. If no transcripts exist at all, a fallback result is passed forward. Step 5 — IF: Any Transcripts Found? This is the gate check. If transcripts were found (YES path), each one moves forward to full analysis. If no transcripts were found this week (NO path), the workflow routes to 6. Set — No Calls This Week and stops cleanly — no errors, no empty reports. Step 6 — Set: No Calls This Week This step handles the empty-week case. It sets a simple message confirming no calls were recorded and the workflow ends here for that run. Step 7 — HTTP: Fetch Full Transcript For each call that passed the filter, a second Fireflies API request is made to retrieve the complete transcript details: all sentences with speaker labels, AI-detected pricing sentences, questions, tasks, keyword summary, overview, and sentiment percentages. Step 8 — Code: Extract Transcript Data The full transcript is processed here. Sentences are assembled into readable text (limited to 4,000 characters for GPT efficiency). Fireflies AI-flagged pricing sentences and question sentences are extracted separately. Sentiment percentages are converted into a single label: Positive, Mostly Positive, Mixed, or Negative. All data is packaged cleanly for the AI step. Step 9 — AI Agent: Analyze Sales Call GPT-4o-mini receives the call details, sentiment data, Fireflies-detected pricing sentences, keywords, overview, and the transcript excerpt. It returns exactly six fields: pricing mentions, objections, buying signals, competitor mentions, a key takeaway under 25 words, and a recommended action for the sales rep to take within 48 hours. Step 10 — OpenAI: GPT-4o-mini Model This is the language model powering the analysis step. It runs at temperature 0.3 for consistent, factual extraction and is capped at 800 tokens per call to keep costs predictable across the full week's batch. Step 11 — Parser: Structured Call Analysis This step enforces the exact six-field schema GPT-4o-mini must return. It validates that all required fields are present and correctly typed before the results move forward, preventing malformed output from reaching your sheet. Step 12 — Code: Combine Analysis Results The AI output is merged with the original transcript metadata (date, title, duration, participants, sentiment, transcript URL). A log timestamp is also added. This creates the complete data row that goes to both Google Sheets and the Slack aggregation step. Step 13 — Google Sheets: Log Call Analysis One row is appended to your Sales Call Analysis tab for every call analyzed. All 13 columns are populated: date, title, duration, participants, sentiment, pricing, objections, buying signals, competitors, key takeaway, recommended action, transcript URL, and logged-at timestamp. Step 14 — Code: Build Weekly Slack Summary All analyzed calls are aggregated into a single weekly digest. The code counts total calls, positive calls, calls with objections, calls with buying signals, and compiles unique competitor mentions. The top 3 objections and top 3 buying signals are pulled from across all calls. A call-by-call overview line is added for every transcript. Step 15 — Slack: Send Weekly Report The complete weekly digest is posted to your Slack channel. The message includes the week date range, summary totals, top objections, top buying signals, competitor mentions, and a one-line overview of every call. A footer confirms the full analysis is logged in Google Sheets. Key Features ✅ Fully automated weekly cadence — Runs every Monday at 9AM with zero manual input after setup ✅ Per-call AI intelligence — Each call gets its own six-field analysis, not a rolled-up average ✅ Fireflies AI signals as input — Pricing sentences and questions detected by Fireflies are fed directly into GPT for more accurate extraction ✅ Structured output enforced — A schema parser validates every AI response before it reaches your sheet — no broken rows ✅ Sentiment scoring per call — Each call is rated Positive, Mostly Positive, Mixed, or Negative based on Fireflies sentiment percentages ✅ Competitor tracking built in — Competitor mentions are collected across all calls and deduplicated into one list in the Slack report ✅ 48-hour action item per call — Every call ends with one concrete action the sales rep should take — not a vague suggestion ✅ Clean empty-week handling — No transcripts this week means a clean stop, not an error or blank Slack message Customisation Options Change the schedule day or time — In node 1. Schedule — Every Monday 9AM, edit the cron expression 0 9 * * 1 to run on a different day or time. For example, 0 8 * * 5 runs every Friday at 8AM for an end-of-week review instead. Increase the transcript fetch limit — In node 3. HTTP — Fetch Recent Transcripts, change limit: 50 in the GraphQL query body to 100 if your team records more than 50 calls per week to ensure no calls are missed. Expand the date window beyond 7 days — In node 2. Set — Config Values, change {days: 7} in both the weekStart and sevenDaysAgoMs fields to {days: 14} for a bi-weekly analysis window. Add a Slack alert for high-objection calls — After node 12. Code — Combine Analysis Results, add an IF check: if the objections field does not contain "No objections", post an immediate Slack alert to a #deal-risk channel so the sales manager can follow up same day. Add a Gmail summary to the sales manager — After node 15. Slack — Send Weekly Report, add a Gmail node to also email the full weekly digest to your sales manager's inbox as a backup record outside of Slack. Filter to specific call types using keywords — In node 2. Set — Config Values, edit the salesKeywords field to narrow analysis to specific call types — for example, change to demo,discovery,closing to analyze only those pipeline stages. Troubleshooting Fireflies returning no transcripts or an auth error: Confirm YOUR_FIREFLIES_API_KEY in node 2. Set — Config Values is replaced with your actual key — not the placeholder text Get your key from fireflies.ai → Settings → Integrations → API Key Make sure your Fireflies plan includes API access — some free plans do not Workflow not triggering on Monday: Confirm the workflow is toggled to Active — it will not run on a schedule if inactive Check that the cron expression in node 1. Schedule — Every Monday 9AM is 0 9 * * 1 — any edit to this field can break the schedule To test immediately, click on node 1 and use the manual Execute option Google Sheets not logging rows: Confirm the Google Sheets OAuth2 credential in node 13. Google Sheets — Log Call Analysis is connected and not expired Check that YOUR_GOOGLE_SHEET_ID in node 2. Set — Config Values matches the ID in your sheet URL exactly Confirm the tab is named Sales Call Analysis exactly — capitalization and spacing must match sheetName in Config Values AI returning incomplete or missing fields: The schema parser in node 11. Parser — Structured Call Analysis enforces all six fields — if output is missing fields, check the execution log of node 9. AI Agent — Analyze Sales Call for the raw GPT response Confirm the OpenAI credential in node 10. OpenAI — GPT-4o-mini Model is connected and your account has available credits If transcripts are very short, GPT may have little content to extract — the fallback text ("No objections detected", etc.) will be used automatically Slack report not arriving: Confirm the Slack OAuth2 credential in node 15. Slack — Send Weekly Report is connected and authorized Check that the channel name in node 2. Set — Config Values includes the # prefix and matches your actual Slack channel name exactly Type /invite @n8n in your Slack channel to ensure the bot has posting permission Support Need help setting this up or want a custom version built for your team or agency? 📧 Email: info@isawow.com 🌐 Website: https://isawow.com/
by Incrementors
Quick Overview This workflow runs every 15 minutes to read candidate rows from Google Sheets, download each resume PDF from Google Drive, extract text, generate an HTML interview brief using OpenAI GPT-4o-mini, email it via Gmail to the interviewer, and mark the row as Processed to avoid duplicates. How it works Runs on a schedule trigger every 15 minutes. Reads all candidate rows from the “Candidates” tab in Google Sheets and processes them one at a time. Skips any rows where the Status column is already set to “Processed.” Extracts the Google Drive file ID from the resume link, downloads the PDF, and converts it to plain text. Cleans and truncates the resume text and combines it with the candidate’s name, role, and email details. Sends the resume text and metadata to OpenAI (GPT-4o-mini) to generate a styled HTML interviewer brief. Emails the HTML brief to the interviewer via Gmail and updates the candidate row in Google Sheets to “Processed,” then waits 5 seconds before moving to the next candidate. Setup Add Google Sheets OAuth credentials and replace YOUR_CANDIDATES_SHEET_ID, then create a “Candidates” sheet with columns Name, Email, Job Role, Resume Drive Link, Interviewer Email, and Status. Add Google Drive OAuth credentials and ensure each resume PDF is accessible to the workflow (for example, shared so the connected account can view it). Add an OpenAI API credential and keep the model set to GPT-4o-mini. Add Gmail OAuth credentials and confirm the sender name and subject line meet your email requirements. Adjust the schedule interval if you want the workflow to check for new candidates more or less frequently.
by Pedro Olavarria
Quick Overview This workflow runs every Monday at 9AM ET to research recent automation topics with Perplexity, generate a Google Business Profile post with Anthropic Claude, publish it to Google Business Profile, log the published post to Supabase, and send a confirmation email via Microsoft Outlook. How it works Runs every Monday at 9AM ET on a schedule. Fetches the 8 most recent published posts from a Supabase table to avoid repeating topics and angles. Selects a rotating industry and post category, then asks Perplexity to research timely examples, trends, or statistics based on that theme. Combines the research and recent-post history into a detailed writing prompt and generates a GBP-ready post using Anthropic Claude. Cleans and trims the generated post to stay under Google Business Profile character limits. Publishes the post to Google Business Profile with a “Learn more” call-to-action link, then logs the published content back to Supabase and emails you the live post details via Microsoft Outlook. Setup Add credentials for Supabase (REST API), Perplexity, Anthropic, Google Business Profile OAuth2, and Microsoft Outlook OAuth2. Update the Supabase REST endpoints (YOUR-PROJECT) and ensure a gbp_posts table exists with fields like post_text, category, and published_at for fetching and logging posts. Set your Google Business Profile account ID and location ID, and confirm the call-to-action URL and type in the publish step. Replace the email recipient address in the Outlook step with the address that should receive publishing notifications. Adjust the schedule (timezone/day/time) if you want the workflow to run at a different posting cadence.
by Monfort N. Brian | 宁俊
Quick Overview This workflow receives meeting transcripts via webhook, uses Anthropic Claude to extract summaries, decisions, and action items, then posts a digest to Slack, emails the organizer via Gmail, and creates high-confidence action items as Linear issues while skipping duplicate deliveries. How it works Receives meeting event data via a POST webhook and immediately returns a JSON acknowledgement to prevent provider timeouts and retries. Extracts the transcript and meeting metadata from Fireflies, Otter, or a raw payload, and ignores test events. Validates the payload represents a real meeting and deduplicates deliveries using a stored fingerprint so the same meeting is not processed twice. Sends the transcript and attendee list to Anthropic Claude to generate a structured JSON summary, decisions, next-meeting details, and action items with owners and confidence scores. Parses the Claude JSON response, filters action items by a confidence threshold (>= 0.7), and formats both a Slack message and an HTML email recap. Posts the meeting digest to a Slack channel and emails the recap to the meeting organizer. Creates one Linear issue per high-confidence action item, including meeting context, priority, owner, due-date hint, and confidence. Setup Configure your transcript provider (for example Fireflies or Otter) to POST meeting events to this workflow’s webhook URL. Add Anthropic API credentials for the Claude model used to analyze transcripts. Add a Slack OAuth2 credential and select the target channel for posting the meeting digest. Add a Gmail OAuth2 credential and ensure the incoming payload includes the organizer email address used as the recipient. Add a Linear OAuth2 credential and update the Linear team ID used when creating issues. Adjust the confidence threshold constant (default 0.7) if you want to create Linear issues more or less aggressively.
by Incrementors
Description Connect Fireflies to this workflow once and every meeting action item becomes a ClickUp task automatically — no manual note-taking, no copy-pasting. The moment Fireflies finishes transcribing a call, the workflow extracts action items from two sources, uses GPT-4o-mini to parse each one into a clean task with an owner, deadline, and priority, and creates every task in ClickUp via the API. When all tasks are created, you receive a single Telegram message confirming the total count. Built for founders, project managers, and team leads who want zero gap between a meeting ending and the work showing up in their task manager. What This Workflow Does Triggers automatically on transcription complete** — Fireflies fires the workflow the moment any meeting finishes transcribing, with no manual step needed Extracts action items from two sources** — Combines Fireflies NLP task-flagged sentences and the AI-generated summary list, then deduplicates and caps at 15 items Validates every incoming signal** — Checks for a valid meeting ID and silently discards invalid or test pings before any processing begins Parses each item into a structured task** — GPT-4o-mini converts raw action item text into a verb-first task name, assigns an owner, sets a deadline, and scores a priority from 1 to 4 Creates tasks in ClickUp automatically** — Each parsed task is posted to your specified ClickUp list via the API with priority, due date, and a meeting reference in the description Sends one Telegram confirmation** — After all tasks are created, a single message is sent with the meeting title, date, and total task count — no spam per task Exits cleanly when nothing is found** — Meetings with no action items stop silently without errors or empty notifications Setup Requirements Tools Needed n8n instance (self-hosted or cloud) Fireflies.ai account with webhook access OpenAI account with GPT-4o-mini API access ClickUp account with API access and a target list Telegram bot (created via @BotFather) Credentials Required Fireflies API key (pasted into 5. Set — Config Values) ClickUp API token (pasted into 5. Set — Config Values) OpenAI API key Telegram Bot credential (connected in n8n) Estimated Setup Time: 15–20 minutes Step-by-Step Setup Import the workflow — Open n8n → Workflows → Import from JSON → paste the workflow JSON → click Import Activate the workflow and copy the webhook URL — Toggle the workflow to Active → click on node 1. Webhook — Fireflies Transcript Done → copy the webhook URL shown Register the webhook in Fireflies — Log in to fireflies.ai → Settings → Developer Settings → Webhooks → paste the webhook URL → save Get your Fireflies API key — In Fireflies, go to Settings → Integrations → copy your API key Get your ClickUp API token — In ClickUp, click your avatar (bottom left) → Settings → Apps → API Token → copy the token Get your ClickUp List ID — Open the ClickUp list where tasks should be created → look at the URL bar → copy the number after /li/ (e.g. in .../li/90121234567, the list ID is 90121234567) Get your Telegram Chat ID — Open Telegram → search for @userinfobot → send /start → it will reply with your chat ID Fill in Config Values — Open node 5. Set — Config Values → replace all placeholders: | Field | What to enter | |---|---| | YOUR_FIREFLIES_API_KEY | Your Fireflies API key from step 4 | | YOUR_CLICKUP_API_TOKEN | Your ClickUp API token from step 5 | | YOUR_CLICKUP_LIST_ID | Your ClickUp list ID from step 6 | | YOUR_TELEGRAM_CHAT_ID | Your Telegram chat ID from step 7 | | YOUR NAME | Your name (used in the AI prompt context) | | YOUR COMPANY NAME | Your company name (shown in Telegram message) | Connect OpenAI — Open node 11. OpenAI — GPT-4o-mini Model → click the credential dropdown → add your OpenAI API key → test the connection Connect Telegram — Open node 17. Telegram — Send Task Summary → click the credential dropdown → add your Telegram Bot API credential → open Telegram → send /start to your bot before testing > ⚠️ Activate the workflow before registering the webhook in Fireflies. An inactive workflow will not receive signals. Activate first, then paste the URL into Fireflies. How It Works (Step by Step) Step 1 — Webhook: Fireflies Transcript Done This step listens for a signal from Fireflies. Every time a meeting finishes transcribing, Fireflies sends a request to this webhook URL containing the meeting ID. No manual trigger is needed — it fires automatically after every recorded call. Step 2 — Code: Extract Meeting ID The meeting ID is extracted from the incoming signal. Fireflies can send the payload in several different formats, so this step checks all possible locations and pulls the ID safely. If no meeting ID is present, the signal is marked as invalid. Step 3 — IF: Valid Meeting ID? This is the first gate check. If a valid meeting ID was found (YES path), the workflow moves forward to fetch the transcript. If the signal was invalid or empty (NO path), the workflow routes to 4. Set — Invalid Webhook Skip and stops cleanly without errors. Step 4 — Set: Invalid Webhook Skip This step handles the invalid signal case. It sets a brief message and the workflow ends here for that trigger. Step 5 — Set: Config Values Your Fireflies API key, ClickUp API token, ClickUp list ID, Telegram chat ID, your name, and company name are all stored here. The validated meeting ID from step 2 is also carried forward so the transcript fetch can use it directly. Step 6 — HTTP: Fetch Transcript A request is sent to the Fireflies API using your API key and the meeting ID. It retrieves the full transcript including all sentences with speaker labels and task flags, plus the AI-generated summary containing action items, overview, and keywords. Step 7 — Code: Process Action Items Action items are collected from two sources simultaneously: sentences that Fireflies NLP flagged as tasks, and the AI-generated action items list from the Fireflies summary. Both lists are combined, duplicates are removed, and the result is limited to 15 items. Meeting metadata (title, date, duration, participants, overview) is also extracted here. If no action items are found at all, a flag is set for the next gate check. Step 8 — IF: Action Items Found? This is the second gate check. If action items were found (YES path), the workflow continues to AI parsing. If no action items were detected or the transcript was not ready (NO path), the workflow routes to 9. Set — No Action Items Skip and ends cleanly. Step 9 — Set: No Action Items Skip This step handles the no-items case. It logs the meeting ID and a skip message, and the workflow ends here. Step 10 — AI Agent: Parse Action Items GPT-4o-mini receives the meeting context and the full list of raw action items. For each item it returns four structured fields: a clean verb-first task name (maximum 60 characters), the responsible owner extracted from the text (or "Unassigned" if not mentioned), a deadline in YYYY-MM-DD format with relative date logic built in (today, tomorrow, this week, next week), and a priority number from 1 (Urgent) to 4 (Low). Every input item must produce exactly one output task — no skipping. Step 11 — OpenAI: GPT-4o-mini Model This is the language model powering the parsing step. It runs at temperature 0.2 for precise, consistent structured output and is capped at 1,200 tokens to handle up to 15 tasks per meeting. Step 12 — Parser: Structured Task Output This step enforces the exact array schema GPT-4o-mini must return. It validates that every task has all four required fields in the correct format before the results move to ClickUp creation, preventing any malformed tasks from reaching your account. Step 13 — Code: Split Tasks for Loop The array of parsed tasks is converted into individual items — one per task — so each one can be sent to ClickUp separately. A deadline timestamp is calculated in milliseconds for the ClickUp API. A flag called isLastTask is set to true only on the final task in the list, which controls when the Telegram notification fires. Step 14 — HTTP: Create ClickUp Task For each task, a request is sent to the ClickUp API v2. The task is created in your specified list with the task name, a description that includes the meeting title, date, owner, and deadline, plus the priority level, due date, and a tag meeting-action-item applied automatically. Step 15 — IF: All Tasks Created? After each ClickUp task is created, this check reads the isLastTask flag. If it is true (YES path — this was the last task), the workflow moves to build the Telegram summary. If it is false (NO path — more tasks still exist), the workflow routes to 18. Set — Loop Continues and the loop proceeds to the next task. Step 16 — Code: Build Telegram Summary Once all tasks are created, a clean confirmation message is assembled. It includes the meeting title, date, total number of tasks created, and a reminder to review the tasks in ClickUp. Your company name is included in the footer. Step 17 — Telegram: Send Task Summary The confirmation message is sent to your Telegram chat ID. This fires exactly once per meeting — after all tasks are in ClickUp — not once per task. Step 18 — Set: Loop Continues This step handles the non-final tasks in the loop. It sets a brief in-progress message and the loop continues to the next task creation. Key Features ✅ Dual-source action item extraction — Combines Fireflies NLP task flags and the AI summary list for more complete coverage than either source alone ✅ Fires exactly once per meeting — The Telegram notification uses an isLastTask flag so you receive one clean summary, not one message per task ✅ Relative deadline logic built in — GPT understands "by Friday", "next week", and "tomorrow" and converts them to real dates automatically ✅ Three validation gates — Invalid webhooks, missing transcripts, and meetings with no action items all exit cleanly without errors or empty tasks ✅ Priority scoring per task — Every task is scored 1–4 (Urgent to Low) based on context so your ClickUp list is pre-sorted by importance ✅ Meeting reference in every task description — Each ClickUp task includes the meeting title, date, owner, and deadline so your team always knows where the task came from ✅ meeting-action-item tag auto-applied — Every task created by this workflow is tagged automatically so you can filter and report on meeting-sourced work in ClickUp ✅ Structured output enforced — A schema parser validates all four task fields before anything reaches ClickUp — no broken or incomplete tasks Customisation Options Change the maximum task limit — In node 7. Code — Process Action Items, change .slice(0, 15) to a higher or lower number to control how many action items per meeting are sent to ClickUp. Add tasks to different lists by meeting type — In node 5. Set — Config Values, add a second list ID (e.g. clickupSalesListId). Then add an IF check after step 7 that reads the meeting title — if it contains "sales" or "demo", route to the sales list; otherwise use the default list. Send a Slack message instead of or alongside Telegram — After node 16. Code — Build Telegram Summary, add a Slack node using the same message text to also post the task summary to a #meetings channel for team visibility. Add a Google Sheets log — After node 14. HTTP — Create ClickUp Task, add a Google Sheets append step to log each task: meeting title, task name, owner, deadline, priority, and ClickUp task ID — giving you a permanent record outside ClickUp. Assign tasks to specific ClickUp users — In node 14. HTTP — Create ClickUp Task, add an assignees field to the JSON body containing ClickUp user IDs. Map owner names from step 13 to their ClickUp IDs using a lookup object in the code step. Troubleshooting Workflow not triggering when a call ends: Confirm the workflow is Active before expecting Fireflies to fire it — inactive workflows do not receive webhooks Log in to Fireflies → Settings → Developer Settings → Webhooks → confirm the URL is saved and matches the URL from node 1. Webhook — Fireflies Transcript Done exactly Check that your Fireflies plan includes webhook support Fireflies API key error or empty transcript: Confirm YOUR_FIREFLIES_API_KEY in node 5. Set — Config Values is replaced with your actual key — not the placeholder text Get your key from fireflies.ai → Settings → Integrations → API Key If the transcript returns empty, Fireflies may still be processing — the workflow exits cleanly via 9. Set — No Action Items Skip in this case ClickUp tasks not being created: Confirm YOUR_CLICKUP_API_TOKEN in node 5. Set — Config Values is your personal API token, not an OAuth token — get it from ClickUp avatar → Settings → Apps Confirm YOUR_CLICKUP_LIST_ID is the numeric ID from the list URL (after /li/), not the list name Check the execution log of node 14. HTTP — Create ClickUp Task for the exact API error message — a 401 means wrong token, a 404 means wrong list ID Telegram message not arriving: Confirm the Telegram Bot credential in node 17. Telegram — Send Task Summary is connected with a valid bot token from @BotFather Confirm YOUR_TELEGRAM_CHAT_ID in node 5. Set — Config Values is your numeric chat ID — get it from @userinfobot in Telegram You must send /start to your bot before the first message will be delivered — bots cannot initiate conversations AI returning incomplete or wrongly formatted tasks: The schema parser in node 12. Parser — Structured Task Output validates all four fields — check the execution log of node 10. AI Agent — Parse Action Items if tasks are missing fields If deadlines are returning as placeholder text instead of dates, confirm the action items text contains recognizable timeframes — GPT defaults to a 2-day deadline when no timeframe is mentioned Confirm the OpenAI credential in node 11. OpenAI — GPT-4o-mini Model is connected and your account has available credits Support Need help setting this up or want a custom version built for your team or agency? 📧 Email: info@incrementors.com 🌐 Website: https://www.incrementors.com/
by WeblineIndia
Quick Overview This workflow runs every six hours to pull open Salesforce opportunities, enriches selected deals with Gmail and Microsoft Outlook email context, uses OpenAI to score deal risk, writes the assessment back to Salesforce, and notifies teams in Slack with optional email escalation for critical deals. How it works Runs every 6 hours and queries Salesforce for up to 100 open Opportunities via the REST API. Stops the run and posts a Slack message if the Salesforce fetch returns an error. Normalizes each Opportunity, computes activity/close-date metrics, and routes deals with missing required fields to a Slack channel for manual data cleanup. Applies a heuristic triage and immediately marks non-risky deals as healthy in Salesforce to avoid unnecessary AI analysis. For triaged deals, pulls recent related messages from Gmail and Microsoft Outlook, merges them, and builds a compact email engagement context (participants, reply counts, and silence gap). Sends the CRM and email context to OpenAI to produce a structured risk score, drivers, and recommended actions, then validates and cleans the AI output. Updates Salesforce with the assessed risk fields and, for non-low risk deals, posts a detailed Slack alert (with cooldown suppression) and emails leadership when the risk level is Critical. Setup Add Salesforce OAuth2 credentials, set the SALESFORCE_INSTANCE_URL environment variable, and ensure the Opportunity custom fields used for risk tracking (for example Risk_Score__c, Risk_Level__c, Risk_Summary__c, and Deal_Health__c) exist. Add OpenAI credentials and confirm the selected model (gpt-4o-mini) is available in your OpenAI account. Add Slack OAuth2 credentials and update the target channel IDs for Salesforce failure alerts, incomplete-deal alerts, and risk alerts. Add Gmail OAuth2 credentials and Microsoft Outlook credentials (optional) so the workflow can retrieve deal-related email threads. Set the LEADERSHIP_EMAIL environment variable (or edit the node default) to define where Critical-risk escalation emails are sent.
by moosa
What this workflow does Fully production-ready B2B lead outreach pipeline that: Takes industry keywords from a form trigger (or you can manually add rows to Google Sheets) Scrapes targeted LinkedIn leads using Apify (peakydev~leads-scraper-ppe actor) Filters for valid emails Automatically creates company + contact records in HubSpot CRM Generates highly personalized, non-salesy cold emails using GPT (tailored to the company’s industry) Logs every lead to Google Sheets with "Pending" status Waits for human approval or rejection — triggered directly from Google Sheets via two webhooks: Approve (via button/script in sheet) → sends the email via Gmail Reject (via button/script in sheet) → automatically rewrites a softer, more value-focused version with a different angle → updates the same row in the sheet Why this is useful Most outreach automations send emails blindly. This one gives you full control with a human-in-the-loop layer inside Google Sheets + automatic intelligent rewrite on rejection — which greatly improves reply rates, reduces spam complaints, and protects your sender reputation. Ideal if you: Run outbound campaigns at reasonable scale Already live in Google Sheets for lead review Want clean HubSpot CRM records before sending anything Need traceable approval (who approved what, when) Often hear “too salesy” and want the AI to adapt automatically How to use Import the workflow into n8n Connect the required credentials: Apify API token HubSpot App Token (Private App) Gmail OAuth2 Google Sheets OAuth2 OpenAI API key Replace placeholders: Your Google Sheet ID in the “Leads Log” node Your name & signature in the AI prompts Any test email addresses if needed Activate the main Form Trigger (Lead Campaign Setup) to start campaigns Review & act from Google Sheets: Leads appear in your sheet with "Pending" status Use simple buttons or a dropdown + Apps Script (code examples provided in workflow sticky notes) to trigger: Approve → POST to /webhook/approved Reject → POST to /webhook/rejected Required credentials Apify HubSpot (App Token) Gmail OAuth2 Google Sheets OAuth2 OpenAI Once set up, you get a beautiful hybrid system: generate leads automatically → review & decide in familiar Google Sheets → one-click action → n8n handles sending or smart rewriting. Enjoy — and feel free to share your reply rates or any tweaks you make after running a few campaigns! 🪄
by isaWOW
Quick overview Submit any YouTube lecture URL through a form and this workflow transcribes the full video using WayinVideo, generates chapter-wise study notes and a 5-question MCQ quiz per chapter using GPT-4o-mini, and delivers a formatted HTML email with everything ready for revision. How it works You fill in a form with the YouTube lecture URL, subject name, number of chapters you want, and your email address. The YouTube URL is submitted to the WayinVideo Transcription API v2, which begins extracting the full spoken transcript with speaker labels and timestamps. A task ID is returned to track the job. After an initial 30-second wait, the workflow polls the WayinVideo results endpoint. If the transcript is still processing, it waits 30 seconds and polls again. This loop repeats automatically until the status returns SUCCEEDED. Once complete, the transcript segments are joined into clean readable text and trimmed to 12,000 characters for AI processing. GPT-4o-mini reads the full transcript and generates a structured JSON output containing: an inferred lecture title, chapter-wise notes (one per requested chapter), key concepts, important terms with definitions, 5 MCQ questions per chapter with correct answers and explanations, an overall lecture summary, and key takeaways. The structured output is parsed and built into a fully formatted HTML email with chapter sections, concept badges, quiz cards, and a summary block. Google Sheets logs the video URL, subject, lecture title, chapter count, quiz question count, summary, notes, and quiz text for every session. Gmail sends the complete HTML study email to the address submitted in the form — subject line includes the lecture title, chapter count, and quiz question count. Setup Add your WayinVideo API key by replacing YOUR_WAYINVIDEO_API_KEY in both WayinVideo HTTP requests, and ensure your WayinVideo account has available API units. Connect an OpenAI credential for the GPT-4o-mini chat model. Connect a Google Sheets OAuth2 credential, set YOUR_GOOGLE_SHEET_ID, and create a “Study Log” sheet with columns that match the fields being appended (for example: Date, YouTube URL, Subject, Lecture Title, Chapters Generated, Quiz Questions, Summary, Notes, Quiz, Status). Connect a Gmail OAuth2 credential and verify the sender account can send emails to your recipients. Requirements Active n8n instance (self-hosted or cloud) WayinVideo account with API key and purchased API units — get both at wayin.ai/wayinvideo/api-dashboard OpenAI account with GPT-4o-mini API access Google Sheets with a tab named Study Log Gmail account connected via OAuth2 for sending study notes Customization Change the number of chapters — the form field Number of Chapters controls how many chapters GPT generates; users can enter any number from 1 to 6 depending on video length Change quiz questions per chapter — in the system prompt of node 10. AI Agent — Generate Notes and Quiz, change "exactly 5 quiz questions" to a different number to generate more or fewer questions per chapter Add a Google Drive upload — after node 12. Google Sheets — Log Study Session, add a Google Drive step to save the notes text as a plain text file so students can access the notes outside their inbox Support non-English lectures — in node 2. HTTP — WayinVideo Submit Transcription, change source_lang from en to any WayinVideo-supported language code to transcribe lectures in other languages Increase the transcript length limit — in node 9. Code — Prepare Transcript, change .slice(0, 12000) to a larger number such as 20000 for longer lectures — note this increases GPT token usage and cost Additional info The WayinVideo API key appears in two separate steps — node 2. HTTP — WayinVideo Submit Transcription and node 5. HTTP — Poll Transcription Status. You must replace YOUR_WAYINVIDEO_API_KEY in both. Missing either one will cause the workflow to fail. WayinVideo charges API units per transcription based on video length. Make sure you have sufficient units purchased at wayin.ai/wayinvideo/api-dashboard before running the workflow on long lectures. The polling loop between nodes 5, 6, 7, and 8 runs automatically until the transcription status equals SUCCEEDED. For longer videos this may take several minutes. The workflow handles this without any manual intervention — do not stop the execution while it is running. The transcript is trimmed to 12,000 characters before being sent to GPT. For very long lectures, content from the end of the video may be cut off. To process longer transcripts, increase the character limit in node 9. Code — Prepare Transcript, keeping in mind GPT context window limits and increased token cost.
by Monfort N. Brian | 宁俊
Quick overview This workflow runs every morning to pull unpaid invoices from a Notion database, calculates how overdue each one is, uses Anthropic Claude to draft an escalation-appropriate reminder, emails the client via Gmail, updates the invoice record in Notion, and alerts you in Telegram for high-risk late payments. How it works Runs every day at 8:00 AM on a schedule. Fetches all unpaid invoice pages from a Notion database and normalizes the key invoice fields into a flat structure. Calculates days overdue from the due date, determines which reminder tier (1/2/3) is due based on thresholds and what was already sent, and skips invoices that are not yet due for the next escalation. Uses Anthropic Claude to generate a subject line and message body that matches the escalation tier. Sends the reminder email to the client via Gmail and updates the Notion page to record the latest reminder tier sent. If the invoice reaches the final (tier 3) escalation, sends a Telegram message to the freelancer to flag the invoice as a payment risk. Setup Create or choose a Notion invoice database with the properties referenced by the workflow (including Status, Due Date, Client Email, and Reminder Tier Sent) and paste the database ID into the Notion node configuration. Add credentials for Notion, Anthropic (Claude), Gmail, and Telegram, and select them in their respective nodes. Set your Telegram chat ID in the Telegram node and ensure your Notion Status values match the workflow filter (for example, invoices to remind are marked as “unpaid”).
by David Grimm
Quick overview This workflow triggers on a Gmail message from a specific sender, extracts bill of lading data from an email attachment using Google Gemini, validates the extracted values with Python, posts the structured JSON to a webhook URL, and replies to the sender with an HTML acceptance email. How it works Triggers when a new Gmail email arrives from the configured sender and downloads the attached document. Uses Google Gemini to analyze the attachment and rewrite the bill of lading content into a structured Markdown format. Uses a second Google Gemini agent with a structured output schema to convert the Markdown into validated JSON fields for shipper, consignee, shipment details, and line items. Runs a Python validation that compares customer order package/weight values against the carrier line items and appends a validation result to the JSON. Sends the resulting JSON payload to an external HTTP webhook endpoint. Uses Google Gemini to draft an HTML acceptance reply email based on the validated data and sends it back to the original sender via Gmail. Setup Connect your Gmail OAuth2 credentials and set the sender filter (and any other Gmail Trigger options) to match the emails you want to process. Add Google Gemini (PaLM) API credentials and confirm the selected Gemini models are available in your account. Ensure the incoming emails include a compatible bill of lading attachment and update the binary attachment property name if it differs from attachment_0. Replace the HTTP Request URL with your own endpoint that should receive the structured JSON payload. Review the structured JSON schema and the Python validation logic to match your required fields and matching rules before enabling the workflow. Customization Any LLM provider can do the task, change Gemini with any AI you can use Additional info This is an example of prompt chaining. It is an AI agent workflow that shows the benefit of chaining several LLMs together.
by Hyrum Hurst
AI Agent Lead Funnel for AI Agencies An End-to-End Automation That Turns Demos Into Booked Calls This n8n workflow is a full inbound → outbound hybrid funnel designed for AI agencies. It captures warm leads through instant AI value, then automatically follows up with personalized, context-aware outreach and reminders until the lead either replies or books a call. No cold scraping. No manual follow-ups. Just leverage + timing. 🚀 How the Workflow Works 📋 PART 1 — Lead Capture & Instant Value 1 — Share High-Impact AI Image Edits You post before/after examples using the NanoBanna / Gemini image-editing model on social platforms. Each post includes a link to a lightweight form. The visual results do the selling for you. 2 — Lead Submits Image & Details The form collects: Image upload Edit instructions Name Email Company name This filters for high-intent prospects only. 3 — AI Edits the Image Instantly Once submitted, the workflow: Sends the image + instructions to the AI image editor Preserves lighting and camera angle unless specified Generates a polished result in seconds 4 — Result Delivered via Email The edited image is emailed directly to the user with: A friendly confirmation message Soft positioning for future work This establishes trust before any sales motion happens. 5 — Lead Is Logged Automatically All lead data is saved to Google Sheets: Name Company Email Timestamp This becomes your live CRM of warm inbound leads. 🤖 PART 2 — AI-Driven Personalized Outreach 6 — AI Analyzes the Lead An AI sales agent: Looks at the company name + context Reviews a library of proven automation ideas Either selects the best fit or creates a simple custom one 7 — AI Writes a Personalized Outreach Email The agent generates a short email that: Mentions a specific automation already built States you can help implement it quickly Invites them to book a call via your calendar No marketing fluff. No generic pitches. Every email feels hand-written. 8 — Outreach Email Is Sent Automatically The email is sent from your inbox (Outlook, Gmail, SMTP, etc.) and includes: Their name Their company A clear calendar booking link 📬 PART 3 — Smart Follow-Up System 9 — Wait 48 Hours The workflow pauses to give the lead time to respond naturally. 10 — Check for a Reply After 48 hours: If the lead replied → they are tagged as Interested If no reply → continue to follow-up (Current reply detection is placeholder logic and can be swapped for a live inbox listener.) 11 — AI Writes a Polite Follow-Up If there’s no response, an AI agent writes: A short, non-pushy follow-up Referencing the original automation idea Under 60 words 12 — Follow-Up Email Is Sent The follow-up goes out automatically and keeps the conversation alive without manual effort. 📈 Why This Workflow Converts So Well Instant Value First Leads experience AI results before being pitched anything. Context-Aware Outreach Every email is personalized based on the lead, not a template. Built-In Persistence The system follows up automatically — no leads fall through the cracks. Fully Automated Once live, this workflow handles: Lead capture AI delivery Outreach Follow-ups CRM updates You just keep posting content. 🔧 Setup Requirements To deploy this workflow, connect: Google Gemini API** (image editing + agents) Email provider** Outlook Gmail SMTP Google Sheets** Columns: Name, Company, Email, Time, Status Calendar booking link** Example: https://cal.com/your-link All credentials are modular and easily swappable. 🎯 Summary This n8n automation turns attention into action by: Delivering immediate AI value Following up with relevant, personalized ideas Nudging leads toward a booked call — automatically It’s not just a lead funnel. It’s an AI sales assistant that runs 24/7.