by Anna Bui
🎯 LinkedIn ICP Lead Qualification Automation Automatically identify and qualify ideal customer prospects from LinkedIn post reactions using AI-powered profile analysis and intelligent data enrichment. Perfect for sales teams and marketing professionals who want to convert LinkedIn engagement into qualified leads without manual research. This workflow transforms post reactions into actionable prospect data with AI-driven ICP classification. Good to know LinkedIn Safety**: Only use cookie-free Apify actors to avoid account detection and suspension risks Daily Processing Limits**: Scrape maximum 1 page of reactions per day (50-100 profiles) to stay under LinkedIn's radar Apify actors cost approximately $0.01-0.05 per profile scraped - budget accordingly for daily processing Includes intelligent rate limiting to prevent API restrictions and maintain LinkedIn account safety AI classification requires clear definition of your Ideal Customer Profile criteria Processing too many profiles or running too frequently will trigger LinkedIn's anti-scraping measures Always monitor your LinkedIn account health and Apify usage patterns for any warning signs How it works Scrapes LinkedIn post reactions using Apify's specialized actor to identify engaged users Extracts and cleans profile data including names, job titles, and LinkedIn URLs Checks against existing Airtable records to prevent duplicate processing and save costs Creates new prospect records with basic information for tracking purposes Enriches profiles with comprehensive LinkedIn data including company details and experience Aggregates and formats profile data for AI analysis and classification Uses AI to analyze prospects against your ICP criteria with detailed reasoning Updates records with ICP classification results and extracted email addresses Implements smart batching and delays to respect API rate limits throughout the process How to use IMPORTANT**: Select cookie-free Apify actors only to avoid LinkedIn account suspension Set up Apify API credentials in both HTTP Request nodes for safe LinkedIn scraping Configure Airtable OAuth2 authentication and select your prospect tracking base Replace the LinkedIn post URL with your target post in the initial scraper node Daily Usage**: Process only 1 page of reactions per day (typically 50-100 profiles) maximum Customize the AI classification prompt with your specific ICP criteria and job titles Test with a small batch first to verify setup and monitor both API costs and LinkedIn account health Schedule workflow to run daily rather than processing large batches to maintain account safety Requirements Apify account with API access and sufficient credits for profile scraping Airtable account with OAuth2 authentication configured OpenAI or compatible AI model credentials for prospect classification LinkedIn post URL with reactions to analyze (minimum 10+ reactions recommended) Clear definition of your Ideal Customer Profile criteria for accurate AI classification Customising this workflow Safety First**: Always verify Apify actors are cookie-free before configuring to protect your LinkedIn account Modify ICP classification criteria in the AI prompt to match your specific target customer profile Set up daily scheduling (not hourly/frequent) to respect LinkedIn's usage patterns and avoid detection Adjust rate limiting delays based on your comfort level with LinkedIn scraping frequency Add additional data fields to Airtable schema for storing custom prospect information Integrate with CRM systems like HubSpot or Salesforce for automatic lead import Set up Slack notifications for new qualified prospects or daily summary reports Create email marketing sequences in tools like Mailchimp for nurturing qualified leads Add lead scoring based on company size, industry, or engagement level for prioritization Consider rotating between different LinkedIn posts to diversify your prospect sources while maintaining daily limits
by iamvaar
Project Overview: Automated Climate-Driven HVAC Upsell & AI Concierge This project is specifically built for an HVAC business to automatically upsell to old customers when their locality has a heatwave or snow wave forecast in the upcoming five days. Prerequisites & Setup 1. GoHighLevel (GHL) Create Custom Fields:** stop_whatsapp: Used when a user replies "STOP" to remove them from the marketing list. opp_type: To track the campaign type (e.g., heatwave or snowwave). Create Two Pipelines:** Pipeline A: HEATWAVE Pipeline B: SNOWWAVE Note: Both pipelines require 4 stages: New Lead, Contacted, Scheduled, and Closed. Grab the Calendar ID:** Keep your GHL Calendar ID handy, as the workflow will need it to search for free slots and book appointments. 2. WhatsApp (Meta Business Suite) Create and approve two marketing templates for proactive outreach: A. Heatwave Template > Hello {{1}}, > With temperatures expected to rise soon, we wanted to share a few tips to keep your home comfortable and your AC running efficiently. > Maintenance Tips: > • Keep blinds closed during peak sun hours. > • Check your air filters; a clean filter prevents overworking. > • If you leave the house, raise the thermostat a few degrees rather than turning it off. > Need help? > If your system is struggling to keep up, we are here to assist. > Stay cool and safe! B. Snow Wave Template > Hello {{1}}, > With a cold front and freezing temperatures expected soon, we wanted to share a few tips to keep your home warm and your heating system running efficiently. > Winter Comfort Tips: > • Keep curtains and blinds open during the day to let sunlight naturally warm your home, then close them at night to trap the heat. > • Check your air filters; a clogged filter makes your heater work much harder in freezing weather. > • Ensure your outdoor vents and heat pump units are clear of snow or debris to maintain proper airflow. > Need help? > If your heating system is struggling to stay warm or making unusual noises, we are here to assist. > Stay warm and safe! 3. API Integrations Nominatim OpenStreetMap API:** Review the documentation. This open-source tool will be used to extract exact cities from customer street addresses. WeatherAPI:** Obtain a free API key. Add this to your workflow's generic credentials (Type: Query Auth > Name: key > Value: your-api-key). Gemini API:** Obtain your API key to power the AI Service Concierge. Part 1: The Climate-Driven Lead Generation Engine (Proactive Outreach) This sub-workflow acts as a proactive scraper. It monitors your CRM contacts, cross-references their locations with live weather data, and triggers targeted upsell campaigns. 1. Schedule Trigger & Fetch Contacts Schedule Trigger:** Kicks off the workflow every morning at 7:00 AM. Fetch Contacts (HighLevel):** Pulls your entire list of previous customers and leads from GoHighLevel. 2. Geocoding & Data Cleaning If Node (City Set):** Checks if the CRM contact already has a city populated. Nominatim API (Loop & Fetch):** If a city is missing, the workflow runs the address through the Nominatim OpenStreetMap API to extract the exact city. Update Contact (HighLevel):** Saves the extracted city back to the GHL contact profile to prevent redundant geocoding in the future. 3. Weather Data Aggregation Code Node (Group by City):** A vital step to optimize API usage. Instead of making 1,000 separate calls for 1,000 contacts, custom JavaScript groups all contacts by their respective cities. HTTP Request (Fetch Forecast):** Pings WeatherAPI.com to grab the 5-day forecast for each unique city. 4. Hazard Detection & Routing Code Node (Detect Weather Hazards):** A script evaluates the 5-day forecast against dynamic, seasonal temperature thresholds (e.g., a "heatwave" threshold in May might be >85°F, but >95°F in August). It tags the grouped contacts with a campaign type (HEATWAVE or SNOWWAVE). If Node (Check Campaign Type):** Routes the qualified leads into the appropriate pipeline logic. 5. CRM Execution & WhatsApp Outreach Create Opportunity (HighLevel):** Drops the qualified lead into the "New Lead" stage of the respective GHL pipeline. Send Template (WhatsApp):** Dispatches the pre-approved Meta marketing template to the customer. Update & Upsert (HighLevel):** Moves the Opportunity to the "Contacted" stage and updates the opp_type custom field so the system tracks the reason for outreach. Part 2: The AI-Powered Service Concierge (Inbound Handling) When a customer replies to the proactive blast (e.g., "My AC is making a weird noise, can someone come out?"), this sub-workflow seamlessly takes over to assist the customer and autonomously book an appointment. 1. Trigger & Validation Trigger (WhatsApp Message Received):** Listens for inbound replies from customers. Fetch & Validate (HighLevel):** Looks up the sender's phone number in GHL. If the number does not exist in the CRM, the workflow ignores the message to prevent spam handling. 2. The Opt-Out Filter If Node (Stop Command):** Scans the inbound message for the keyword "STOP". Upsert Contact (HighLevel):** If "STOP" is detected, the workflow immediately updates the user's stop_whatsapp custom field to TRUE, excluding them from all future blasts, and terminates the flow. 3. The Agentic Core Customer Service AI Agent (LangChain + Gemini):** If the user is requesting assistance, the message is routed to an AI Agent powered by the Gemini Chat Model. Redis Chat History Memory:** Connects to a Redis instance so the AI retains conversation context, which is crucial for natural, back-and-forth scheduling. Agent Tools (HighLevel Integration):** The Gemini agent is equipped with specific tools it can trigger autonomously: Fetch Available Calendar Slots: The AI is strictly instructed to check live GHL availability before suggesting times to the user. Book Calendar Appointment: Automatically secures the timeslot in GHL if the user agrees. Close Deal: If the user declines service ("I'm good, no thanks"), the AI triggers this tool to mark the GHL opportunity as "Closed/Lost". Update Pipeline Stage: If an appointment is successfully booked, the AI moves the pipeline stage to "Scheduled" without any manual human intervention. 4. Final Response Send Response (WhatsApp):** The AI formulates a conversational, friendly reply—utilizing WhatsApp's native formatting like bolding and bullet points—and sends it back to the customer to confirm the action taken.
by Oneclick AI Squad
Quick overview This workflow runs on a schedule (or manually) to reconcile bank/PSP transactions against open invoices from an ERP via HTTP APIs, auto-applying exact matches, routing partial matches to Slack for approval, logging unmatched payments as exceptions in Google Sheets, and posting a reconciliation summary to Slack. How it works Runs on a schedule or via a manual trigger and loads configuration values like API URLs, matching tolerances, Google Sheets IDs, and Slack channels. Fetches incoming payment transactions from a bank/PSP API and open invoices from an ERP/accounting API. Compares each payment to invoices using deterministic rules (reference match first, then amount/currency plus a date window) and labels it as matched, partial, or unmatched. For matched payments, updates the invoice in the ERP as paid via an HTTP request and appends the outcome to a Google Sheets audit log. For partial matches, posts the candidate invoices to Slack for human review, waits for a decision, and then either applies the payment in the ERP and logs it to the audit sheet or flags it as a rejected exception and alerts Slack. For unmatched payments, writes an exception row to a Google Sheets exceptions sheet and notifies finance in Slack. Aggregates run-level counts and totals across all processed payments and posts a summary message to Slack. Setup Create HTTP Header Auth credentials for your bank/PSP and ERP endpoints, and replace the example API URLs and ledger base URL in the configuration values. Add Google Sheets credentials and set the audit and exceptions spreadsheet IDs, ensuring the target sheets exist (for example, tabs named “AuditLog” and “Exceptions”). Add Slack credentials and set the channel names for review, exceptions, and summary notifications. If you use the manual review path, configure Slack (or an external callback) to resume the wait step by sending an approval payload (for example, approved: true and optionally selectedInvoiceId).
by vinci-king-01
CRM Contact Sync with Mailchimp and Pipedrive This workflow keeps your contact records perfectly aligned between your CRM (e.g. HubSpot / Salesforce / Pipedrive) and Mailchimp. Whenever a contact is created or updated in one system, the automation propagates the change to the other platform, ensuring every email address, phone number and custom field stays in sync. Pre-conditions/Requirements Prerequisites n8n instance (self-hosted or cloud) Community nodes: Pipedrive, Mailchimp A dedicated service account in each platform with permission to read & write contacts Basic understanding of how webhooks work (for CRM → n8n triggers) Required Credentials Pipedrive API Token** – Used for creating, updating and searching contacts in Pipedrive Mailchimp API Key** – Grants access to lists/audiences and contact operations CRM Webhook Secret** (optional) – If your CRM supports signing webhook payloads Specific Setup Requirements | Environment Variable | Description | Example | |----------------------|--------------------------------------|---------------------------------| | PIPEDRIVE_API_KEY | Stored in n8n credential manager | 123abc456def | | MAILCHIMP_API_KEY | Stored in n8n credential manager | us-1:abcd1234efgh5678 | | MAILCHIMP_DC | Mailchimp Datacenter (sub-domain) | us-1 | | CRM_WEBHOOK_URL | Generated by the Webhook node | https://n8n.myserver/webhook/... | How it works This workflow keeps your contact records perfectly aligned between your CRM (e.g. HubSpot / Salesforce / Pipedrive) and Mailchimp. Whenever a contact is created or updated in one system, the automation propagates the change to the other platform, ensuring every email address, phone number and custom field stays in sync. Key Steps: Inbound Webhook**: Receives contact-change events from the CRM. Split in Batches**: Processes contacts in chunks to stay within API rate limits. Mailchimp Upsert**: Adds or updates each contact in the specified Mailchimp audience. Pipedrive Upsert**: Mirrors the same change in Pipedrive (or vice-versa). Merge & IF nodes**: Decide whether to create or update a contact by checking existence. Error Trigger**: Captures any API failures and posts them to the configured alert channel. Set up steps Setup Time: 15-25 minutes Create credentials • In n8n, add new credentials for Pipedrive and Mailchimp using your API keys. • Name them clearly (e.g. “Pipedrive Main”, “Mailchimp Main”). Import the workflow • Download or paste the JSON template into n8n. • Save the workflow. Configure the Webhook node • Set HTTP Method to POST. • Copy the generated URL and register it as a webhook in your CRM’s contact-update events. Map CRM fields • Open the first Set node and match CRM field names (firstName, lastName, email, etc.) to the standard keys used later in the flow. Select Mailchimp Audience • In the Mailchimp node, choose the audience/list that should receive the contacts. Define Pipedrive Person Fields • If you have custom fields, add them in the Pipedrive node’s Additional Fields section. Enable the workflow • Turn the workflow from “Inactive” to “Active”. • Send a test update from the CRM to verify that contacts appear in both Mailchimp and Pipedrive. Node Descriptions Core Workflow Nodes: Webhook** – Accepts contact-change payloads from the CRM. Set** – Normalises field names to a common schema. SplitInBatches** – Loops through contacts in controllable group sizes. HTTP Request** – Generic calls (e.g. HubSpot/Salesforce look-ups when required). Pipedrive** – Searches for existing persons; creates or updates accordingly. Mailchimp** – Performs contact upsert into an audience. If** – Branches logic on “contact exists?”. Merge** – Re-assembles branch data back into a single execution line. Code** – Small JS snippets for complex field transformations. Error Trigger** – Listens for any node failure and routes it to alerts. StickyNote** – Documentation hints inside the workflow. Data Flow: Webhook → Set (Normalise) → SplitInBatches SplitInBatches → Mailchimp (Get) → If (Exists?) → Mailchimp (Upsert) SplitInBatches → Pipedrive (Search) → If (Exists?) → Pipedrive (Upsert) Merge → End / Success Customization Examples Add a Tag to Mailchimp contacts // Place inside a Code node before the Mailchimp Upsert item.tags = ['Synced from CRM', 'High-Value']; return item; Apply a Deal Stage in Pipedrive // Pipedrive node → Additional Fields "deal": { "title": "New Lead from Mailchimp", "stage_id": 2 } Data Output Format The workflow outputs structured JSON data: { "id": 1472, "status": "updated", "email": "alex@example.com", "source": "CRM", "synced": { "pipedrive": "success", "mailchimp": "success" }, "timestamp": "2024-04-27T10:15:00Z" } Troubleshooting Common Issues HTTP 401 Unauthorized – Verify that the API keys are still valid and have not been revoked. Webhook receives no data – Double-check that the CRM webhook URL matches exactly and that the event is enabled. Performance Tips Batch contacts in groups of 50-100 to respect Mailchimp & Pipedrive rate limits. Use Continue On Fail in non-critical nodes to prevent the entire run from stopping. Pro Tips: Map your CRM’s custom fields once in the Set node to avoid touching each downstream node. Use Merge+If pattern to keep “create vs update” logic tidy. Enable workflow execution logs only in development to reduce storage usage. *Community Template Disclaimer: This workflow is provided by the n8n community “as is”. n8n GmbH makes no warranties regarding its performance, security or compliance. Always review and test in a development environment before using it in production.*
by Kumar SmartFlow Craft
⏺ 🚀 How it works Fully automates your inbound and outbound voice sales pipeline — from live call qualification to CRM pipeline management — with multi-agent AI and automatic lead nurturing if a prospect doesn't book. 📞 Receives end-of-call reports from Vapi or Retell AI via webhook — works with both providers out of the box 🧠 Qualifies every inbound lead using BANT scoring (Budget · Authority · Need · Timeline) powered by Claude Haiku 📅 Detects appointment intent and preferred meeting time using GPT-4o before touching your CRM 🗂️ Upserts the contact and creates a pipeline opportunity in GoHighLevel automatically — no duplicates 💬 Analyses objections and generates a rebuttal script using Claude Sonnet (feel-felt-found + Challenger Sale) 📝 Writes a professional CRM note from the call summary using Gemini 2.0 Flash — ready to sync 🔁 Enrols unqualified leads into a GoHighLevel nurture workflow automatically for long-term follow-up 📤 Fires prioritised outbound calls every morning at 9 AM via Vapi — GPT-4o Mini ranks leads by conversion probability 📊 Logs every call (inbound + outbound) to Supabase and Google Sheets for full pipeline reporting 🛠️ Set up steps Estimated setup time: ~45 minutes Webhook — copy the webhook URL and paste it into your Vapi or Retell dashboard as the end-of-call report URL GoHighLevel — connect your HighLevel OAuth2 credential; set your Pipeline ID, Hot Stage ID, and Nurturing Stage ID in the opportunity nodes (Opportunities → Settings → Pipelines) Anthropic — connect your Anthropic API credential; used for Claude Haiku (BANT qualification) and Claude Sonnet (objection handling) OpenAI — connect your OpenAI API credential; used for GPT-4o (booking intent detection) and GPT-4o Mini (outbound lead ranking) Google Gemini — connect your Google Gemini API credential; used for CRM note writing with gemini-2.0-flash Vapi — add your Vapi API key to the HTTP Request node header; set your Phone Number ID and Assistant ID in the outbound call node (Vapi Dashboard → Phone Numbers / Assistants) Supabase — connect your Supabase API credential; create the voice_call_logs table using the SQL in the setup sticky note inside the workflow Google Sheets — connect Google Sheets OAuth2; set your Spreadsheet ID and ensure a sheet named Voice Call Log exists with the columns listed in the setup sticky note Follow the sticky notes inside the workflow — each section has a one-liner setup guide 📋 Prerequisites Vapi or Retell AI account with an active phone number and assistant configured Anthropic API key (Claude API access) OpenAI API key (GPT-4o and GPT-4o Mini access) Google Gemini API key GoHighLevel account with at least one pipeline and automation workflow set up Supabase project with the voice_call_logs table created Google Sheets spreadsheet set up as your call log --- Custom Workflow Request with Personal Dashboard kumar@smartflowcraft.com https://www.smartflowcraft.com/contact More free templates https://www.smartflowcraft.com/n8n-templates
by Milo Bravo
Event Alumni Re-engager: HubSpot → Gemini → Personalized Outreach Who is this for? Event marketers and conference organizers who want to reactivate past attendees with AI-personalized emails at 3-5x ROI vs. cold leads. What problem is this workflow solving? Alumni gold is untapped: Past attendees convert 3-5x better Manual segmentation takes hours Generic emails get ignored This auto-segments + personalizes outreach from HubSpot data. What this workflow does CRM → AI Alumni Machine: Trigger**: Manual (or schedule 8-12 weeks pre-event) HubSpot Pull**: Past event_registration contacts Smart Filter**: Exclude current registrants 3-Tier Segments**: Champions (3+ events) / Returning (2) / One-timers (1) Gemini Personalization**: Unique copy per attendee Email Send**: Alumni-exclusive CTAs Slack Summary**: Campaign stats posted Main workflow required. This is a sub-workflow triggered by Event Registration with Auto-Enrichment Setup (7 minutes) HubSpot**: Header Auth (Bearer YOUR_API_KEY) Custom Property**: event_registration (comma-separated event IDs) Gemini**: Flash Lite API key Email**: SMTP + Slack OAuth2 Config**: Event details in Set Campaign Config Fully configurable—no code changes needed. How to customize to your needs Segments**: Add VIPs / Speakers / High-LTV CRM**: HubSpot → Salesforce → Sheets Copy**: Edit Gemini prompts for tone/industry Channels**: Add WhatsApp / LinkedIn Timing**: Cron for automated runs HubSpot Setup: event_registration property auto-created by companion template. ROI: 3-5x conversion** vs. cold leads 60% lower CAC** (alumni segment) 2h → 2min** campaign launch Need help customizing?: Contact me for consulting and support: LinkedIn / Message Keywords: event participant re-engagement, conference registration, HubSpot automation, personalized outreach, conference marketing
by Lucía Maio Brioso
🧑💼 Who is this for? This workflow is for any YouTube user who wants to bulk delete all playlists from their own channel — whether to start fresh, clean up old content, or prepare the account for a new purpose. It’s useful for: Creators reorganizing their channel People transferring content to another account Anyone who wants to avoid deleting playlists manually one by one 🧠 What problem is this workflow solving? YouTube does not offer a built-in way to delete multiple playlists at once. If you have dozens or hundreds of playlists, removing them manually is extremely time-consuming. This workflow automates the entire deletion process in seconds, saving you hours of repetitive effort. ⚙️ What this workflow does Connects to your YouTube account Fetches all playlists you’ve created (excluding system playlists) Deletes them one by one** automatically > ⚠️ This action is irreversible. Once a playlist is deleted, it cannot be recovered. Use with caution. 🛠️ Setup 🔐 Create a YouTube OAuth2 credential in n8n for your channel. 🧭 Assign the credential to both YouTube nodes. ✅ Click “Test workflow” to execute. > 🟨 By default, this workflow deletes everything. If you want to be more selective, see the customization tips below. 🧩 How to customize this workflow to your needs ✅ Add a confirmation flag Insert a Set node with a custom field like confirm_delete = true, and follow it with an IF node to prevent accidental execution. ✂️ Delete only some playlists Add a Filter node after fetching playlists — you can match by title, ID, or keyword (e.g. only delete playlists containing “old”). 🛑 Add a pause before deletion Insert a Wait or NoOp node to give you a moment to cancel before it runs. 🔁 Adapt to scheduled cleanups Use a Cron trigger if you want to periodically clear temporary playlists.
by Pixcels Themes
Who’s it for This template is built for founders, sales teams, agencies, consultants, and growth operators who want a fully automated way to discover high-intent companies showing buying signals such as funding, hiring, launches, or expansion — without manual research. It’s ideal for outbound sales, partnership scouting, market intelligence, and lead generation. What it does / How it works This workflow automates daily business signal monitoring and opportunity detection. It runs on a daily schedule and collects data from multiple sources: LinkedIn** X** Product Hunt** CrunchBase** Google News** All incoming data is: Merged and normalized into a single unified feed Cleaned and deduplicated Passed to an AI agent powered by Google Gemini The AI agent: Filters only relevant events (Funding, Launch, Expansion, Hiring) Generates a concise summary Explains why the event represents a business opportunity Based on the AI classification: Relevant opportunities continue through the workflow Irrelevant noise is automatically discarded For each qualified opportunity: Company/contact data is enriched via an external API The opportunity is saved to Google Sheets A real-time alert is sent via Telegram All logic runs automatically end-to-end. Requirements Google News (NewsAPI) API key Twitter/X API credentials Product Hunt API credentials Crunchbase RSS feed access Google Sheets OAuth2 credentials Telegram Bot credentials Google Gemini (PaLM) API credentials (Optional) Contact enrichment API How to set up Import the workflow into n8n. Connect all required credentials: Google Gemini Google Sheets Telegram External APIs (News, X, Product Hunt) Replace placeholders: Google Sheet ID and range Telegram Chat ID Enrichment API URL (if used) Adjust search queries if needed. Run the workflow once manually to test. Enable the Daily Trigger to activate automation. How to customize the workflow Modify AI prompts to refine opportunity criteria Add new data sources (LinkedIn, Reddit, Hacker News) Change schedule frequency (hourly, weekly) Log opportunities into a CRM instead of Sheets Add email or Slack alerts Expand enrichment logic for deeper company insights This workflow transforms scattered startup news into a clean, daily stream of actionable business opportunities — fully automated.
by Didac Fernandez
AI-Powered Financial Document Processing with Google Gemini This comprehensive workflow automates the complete financial document processing pipeline using AI. Upload invoices via chat, drop expense receipts into a folder, or add bank statements - the system automatically extracts, categorizes, and organizes all your financial data into structured Google Sheets. What this workflow does Processes three types of financial documents automatically: Invoice Processing**: Upload PDF invoices through a chat interface and get structured data extraction with automatic file organization Expense Management**: Monitor a Google Drive folder for new receipts and automatically categorize expenses using AI Bank Statement Processing**: Extract and organize transaction data from bank statements with multi-transaction support Financial Analysis**: Query all your financial data using natural language with an AI agent Key Features Multi-AI Persona System**: Four specialized AI personas (Mark, Donna, Victor, Andrew) handle different financial functions Google Gemini Integration**: Advanced document understanding and data extraction from PDFs Smart Expense Categorization**: Automatic classification into 17 business expense categories using LLM Real-time Monitoring**: Continuous folder watching for new documents with automatic processing Natural Language Queries**: Ask questions about your financial data in plain English Automatic File Management**: Intelligent file naming and organization in Google Drive Comprehensive Error Handling**: Robust processing that continues even when individual documents fail How it works Invoice Processing Flow User uploads PDF invoice via chat interface File is saved to Google Drive "Invoices" folder Google Gemini extracts structured data (vendor, amounts, line items, dates) Data is parsed and saved to "Invoice Records" Google Sheet File is renamed as "{Vendor Name} - {Invoice Number}" Confirmation message sent to user Expense Processing Flow User drops receipt PDF into "Expense Receipts" Google Drive folder System detects new file within 1 minute Google Gemini extracts expense data (merchant, amount, payment method) OpenRouter LLM categorizes expense into appropriate business category All data saved to "Expenses Recording" Google Sheet Bank Statement Processing Flow User uploads bank statement to "Bank Statements" folder Google Gemini extracts multiple transactions from statement Custom JavaScript parser handles various bank formats Individual transactions saved to "Bank Transactions Record" Google Sheet Financial Analysis Enable the analysis trigger when needed Ask questions in natural language about your financial data AI agent accesses all three spreadsheets to provide insights Get reports, summaries, and trend analysis What you need to set up Required APIs and Credentials Google Drive API** - For file storage and monitoring Google Sheets API** - For data storage and retrieval Google Gemini API** - For document processing and data extraction OpenRouter API** - For expense categorization (supports multiple LLM providers) Google Drive Folder Structure Create these folders in your Google Drive: "Invoices" - Processed invoice storage "Expense Receipts" - Drop zone for expense receipts (monitored) "Bank Statements" - Drop zone for bank statements (monitored) Google Sheets Setup Create three spreadsheets with these column headers: Invoice Records Sheet: Vendor Name, Invoice Number, Invoice Date, Due Date, Total Amount, VAT Amount, Line Item Description, Quantity, Unit Price, Total Price Expenses Recording Sheet: Merchant Name, Transaction Date, Total Amount, Tax Amount, Payment Method, Line Item Description, Quantity, Unit Price, Total Price, Category Bank Transactions Record Sheet: Transaction ID, Date, Description/Payee, Debit (-), Credit (+), Currency, Running Balance, Notes/Category Use Cases Small Business Accounting**: Automate invoice and expense tracking for bookkeeping Freelancer Financial Management**: Organize client invoices and business expenses Corporate Expense Management**: Streamline employee expense report processing Financial Data Analysis**: Generate insights from historical financial data Bank Reconciliation**: Automate transaction recording and account reconciliation Tax Preparation**: Maintain organized records with proper categorization Technical Highlights Expense Categories**: 17 predefined business expense categories (Cost of Goods Sold, Marketing, Payroll, etc.) Multi-format Support**: Handles various PDF layouts and bank statement formats Scalable Processing**: Processes multiple documents simultaneously Error Recovery**: Continues processing even when individual documents fail Natural Language Interface**: No technical knowledge required for financial queries Real-time Processing**: Documents processed within minutes of upload Benefits Time Savings**: Eliminates manual data entry from financial documents Accuracy**: AI-powered extraction reduces human error Organization**: Automatic file naming and categorization Insights**: Query financial data using natural language Compliance**: Maintains organized records for accounting and audit purposes Scalability**: Handles growing document volumes without additional overhead This workflow transforms tedious financial document processing into an automated, intelligent system that grows with your business needs.
by Luka Zivkovic
Complete Telegram Trivia Bot with AI Question Generation Build a fully-featured Telegram trivia bot that automatically generates fresh questions daily using OpenAI and tracks user progress with NocoDB. Perfect for communities, education, or entertainment! ✨ Key Features 🤖 AI Question Generation: Automatically creates 40+ new trivia questions daily across 8 categories 📊 Smart User Management: Tracks scores, prevents question repeats, maintains leaderboards 🎮 Game Mechanics: Star-based difficulty scoring, answer history, progress tracking 🏆 Competitive Elements: Real-time leaderboards with emoji rankings and user positioning 🛡️ Robust Architecture: Error handling, state management, and data validation 🚀 Perfect For Community Engagement**: Keep Telegram groups active with daily trivia challenges Educational Content**: Create learning experiences with categorized questions Business Applications**: Employee training, customer engagement, lead generation Personal Projects**: Learn n8n automation while building something fun 📱 Supported Commands /start - Welcome new users with setup instructions /question - Get personalized trivia questions (never repeats correctly answered ones) /score - View current points and statistics /leaderboard - See top 10 players with rankings /stats - Detailed accuracy and performance metrics /help - Complete command reference 🔧 How It Works User Journey: User sends /question command to bot System checks their answer history to avoid repeats Displays fresh question with multiple choice options Processes answer, updates score based on difficulty stars Saves complete answer history for future filtering AI Content Pipeline: Daily scheduler triggers question generation OpenAI creates 5 questions per category (8 categories total) Questions automatically saved to NocoDB with difficulty ratings Content includes explanations and proper formatting 🛠️ Set Up Steps Prerequisites: n8n instance (cloud or self-hosted) NocoDB database (free tier works) OpenAI API key (Not required if you want to add questions yourself) Telegram bot token Database Setup: Create 3 NocoDB tables with the exact field specifications provided in the sticky notes. The workflow includes complete schema documentation. Configuration Time: ~15 minutes for database setup + API keys Detailed Setup Instructions: All setup steps, database schemas, and configuration details are documented in the workflow's sticky notes for easy implementation. 📈 Advanced Features Question History Tracking**: Users never see correctly answered questions again Difficulty-Based Scoring**: 1-5 star rating system with corresponding points Category Management**: 8 different trivia categories for variety State Management**: Proper game flow with idle/waiting states Error Handling**: Graceful fallbacks for all edge cases Scalable Architecture**: Supports unlimited concurrent users 🎯 Business Applications Lead Generation**: Capture user data through engaging trivia Employee Training**: Create custom questions for onboarding Customer Engagement**: Keep users active in your Telegram community Educational Tools**: Subject-specific learning with progress tracking Event Activation**: Conferences, workshops, or team building 💡 Customization Options Modify question categories for your niche Adjust scoring systems and difficulty levels Add custom commands and features Integrate with other platforms or APIs Create specialized question sets 🔗 Get Started Ready to build your own AI-powered trivia bot? Start with n8n and follow the comprehensive setup guide included in this workflow template. Next Steps: Import this workflow template Follow the database setup instructions in sticky notes Configure your API credentials Test with sample questions Launch your trivia bot! Turn your friend group into trivia champions with AI-generated questions that spark friendly competition!
by Ramon David
This workflow manages subscription billing reminders and data updates via Telegram. It runs daily at 8:00 AM to check for upcoming due subscriptions, formats relevant information, and sends reminders to users. It also processes user messages for subscription management—adding, updating, or retrieving billing info—using AI-powered natural language understanding. Main outcomes include automated subscription tracking, timely reminders, and conversational interaction through Telegram, reducing manual tracking efforts and improving billing accuracy. Automation Benefits Time & Cost Savings Manual Process: Several hours/week spent managing subscriptions and reminders manually. Automated Process: Workflow completes checks, reminders, and data updates in under a minute. Time Savings: Saves approximately 5 hours weekly, translating to significant productivity gains and cost reduction. ROI: Automation pays for itself within the first month due to saved labor. Error Reduction: Minimized manual entry errors, ensuring accurate billing records and timely reminders. Business Impact Solves the problem of manual subscription tracking and reminders. Scales effortlessly as subscription list grows. Opens new opportunities for proactive customer engagement, personalized messaging, and integrated billing insights. Setup Guide Prerequisites Google Sheets account with subscription data sheet. OpenAI API key with access to GPT-4. Telegram bot token with messaging permissions. Email SMTP setup if email reminders are used. API Configuration Google Sheets: Generate OAuth2 credentials, enable Sheets API, and authorize access. OpenAI: Create API key, set model to GPT-4, and test connectivity. Telegram: Create bot via BotFather, retrieve token, and set webhook URL. Webhook URL: Use the provided URL in the Telegram bot settings. Node-by-Node Setup OpenAI Chat Model: Enter API credentials, select GPT-4 model. Google Sheets: Input spreadsheet ID, sheet name, and ensure correct permissions. Telegram Nodes: Insert chat ID, message parsing, and response formatting. Schedule Trigger: Confirm cron expression for daily execution. For AI nodes, test with sample messages to verify formatting and extraction. Testing & Validation Run workflow manually. Confirm data is retrieved, processed, and responses sent. Verify subscription updates in Google Sheets. Check Telegram chats for correct message flow. N8N Documentation References Google Sheets Node OpenAI Node Telegram Node Schedule Trigger Maintenance & Troubleshooting Regular Maintenance (Monthly) Check API credentials and renew tokens if expired. Monitor workflow logs for errors. Review Google Sheets data for consistency. Update API keys when new versions or permissions are granted. Verify currency conversion accuracy periodically. Common Issues & Solutions Workflow not triggering: check schedule settings and webhook URLs. Data not updating: verify Google Sheets credentials and permissions. Incorrect responses: test AI prompt inputs and outputs. API failures: regenerate API keys or check quota limits. Reconfigure nodes if external API changes. Monitoring & Alerts Set up email or Slack alerts for failures. Regularly review execution logs. Track key metrics like successful runs, error rates, and response times. Support & Escalation Check n8n logs first for errors. Export workflow for support if needed. Use n8n community forums for common issues. Contact API providers for account-specific problems. Emergency procedures: restart workflow, regenerate tokens. Updates & Improvements Review workflow performance quarterly. Optimize AI prompts for better accuracy. Backup workflow configurations before major changes. Incorporate user feedback for feature enhancements.
by Nikan Noorafkan
🚀 Channable + Google Ads + Relevance AI: Scalable AI Workflow for Automated Ad Copy Generation & Publishing 🧩 Overview This workflow automates the entire ad creation process for Google Ads by integrating product data, AI-generated copy, compliance checks, and publication into your marketing pipeline. It connects n8n, Relevance AI, Google Sheets, and optionally Channable to: Fetch product data from your catalog Generate Google Text Ad headlines and descriptions using Relevance AI Validate character limits and ensure Google Ads compliance Route non-compliant ads to a Slack review channel Save compliant, ready-to-publish ads in Google Sheets Notify your marketing team automatically after each generation cycle 🧠 Key Benefits ✅ 100% automated ad copy pipeline ✅ AI-generated, human-quality Google Ads text ✅ Built-in compliance verification (Google Ads policy) ✅ Google Sheet integration for team review ✅ Daily automatic schedule (zero manual effort) ✅ Slack alerts for QA and transparency ✅ Modular design — extendable for Shopping and Performance Optimization ✅ Scalable for 10 → 10,000+ product ads ⚙️ System Architecture Tech Stack n8n** – Automation Orchestrator Relevance AI** – AI tools for copy generation and policy compliance Google Sheets** – Data storage and team collaboration Slack** – Real-time alerts and notifications (Optional) Channable – Product feed integration 🧭 Workflow Logic Daily Trigger (00:00) ⬇️ 1️⃣ Get Product Feed (Channable or custom API) ⬇️ 2️⃣ Split Into Batches (50 products each) ⬇️ 3️⃣ Generate Ad Copy (Relevance AI tool → Claude 3.5 prompt) ⬇️ 4️⃣ Validate Character Limits (JS node: max 30 headline / 90 description) ⬇️ 5️⃣ Compliance Check (Relevance AI agent → Google Ads policies) ⬇️ 6️⃣ IF Compliant → CSV / Google Sheets ↳ ❌ Non-Compliant → Slack Alert ⬇️ 7️⃣ Aggregate Batches + Generate CSV ⬇️ 8️⃣ Save to Google Sheets (“Generated Ads” tab) ⬇️ 9️⃣ Slack Notification → Summary Report 📋 Environment Variables Set these in n8n → Settings → Variables → Add Variable Copy-paste from your ENVIRONMENT_VARIABLES_CORRECTED.txt. Includes: ✅ Relevance AI region, API key, tool & agent IDs ✅ Google Ads, Merchant Center, and Sheets credentials ✅ Slack channel name ✅ Optional Channable endpoint Example: RELEVANCE_AI_API_URL=https://api-f1db6c.stack.tryrelevance.com/latest RELEVANCE_TOOL_AD_COPY_ID=bueQG8io04dw RELEVANCE_AGENT_COMPLIANCE_ID=xT29mQ4QKsl GOOGLE_SHEET_ID=1q2w3e4r5t6y7u8i9o0p SLACK_CHANNEL=#google-ads-automation 🏗️ Node-by-Node Breakdown | Node | Description | Endpoint / Logic | | -------------------------------------- | ----------------------------------------------- | ----------------------------------------------------------------------------- | | 🕓 Schedule Trigger | Runs daily at 00:00 | Cron 0 0 * * * | | 📦 Get Product Feed | Pulls product data from Channable or custom API | GET {{$env.CHANNABLE_API_URL}}/v1/projects/{{$env.PROJECT_ID}}/items | | 🧮 Split Into Batches | Processes 50 products at a time | Avoids rate limits | | ✍️ Generate Ad Copy (Relevance AI) | Calls AI tool for each product | POST {{$env.RELEVANCE_AI_API_URL}}/tools/google_text_ad_copy_generator/run | | 🔍 Validate Character Limits | JS validation (≤30 headline / ≤90 description) | Truncates smartly | | 🧠 Compliance Check Agent | Verifies Google Ads compliance | POST {{$env.RELEVANCE_AI_API_URL}}/agents/google_ads_compliance_checker/run | | ⚖️ IF Compliant | Routes APPROVED vs REJECTED | "contains 'APPROVED'" | | 💾 Format for CSV | Formats compliant ads for export | Maps ID, headline, desc, URLs | | 📊 Aggregate Batches | Combines all results | Merges datasets | | 🧱 Generate CSV File | Converts JSON → CSV | Escaped string-safe format | | 📑 Save to Google Sheets | Saves reviewed ads | Sheet: Generated Ads | | 📢 Slack Notification (Success) | Posts completion summary | Shows ad count, timestamp | | 🚨 Slack Alert (Non-Compliant) | Notifies team for review | Includes issues, category | 🔑 API Authentication Setup 🔹 Relevance AI Create “HTTP Header Auth” credential Header Name: Authorization Header Value: Bearer {{$env.RELEVANCE_AI_API_KEY}} 🔹 Google Sheets Credential type: “Google OAuth2 API” Scopes: https://www.googleapis.com/auth/spreadsheets https://www.googleapis.com/auth/drive.file 🔹 Slack Create Slack App → Add Bot Token Scopes → chat:write Paste token in n8n “Slack API” credential. 🔹 (Optional) Channable Header Auth: Bearer {{$env.CHANNABLE_API_TOKEN}} 🧩 Google Sheet Template Sheet name: Generated Ads Columns: | product_id | headline | description | final_url | display_url | generated_at | Optional: Add compliance_status or notes columns for QA. ⚙️ Testing Procedure Manual Trigger: Disable the schedule → click “Execute Workflow”. Batch Size: Start small (3 products). Expected Output: ✅ Ad copy generated ✅ Character limits validated ✅ Slack alerts for rejects ✅ Google Sheet filled Check logs in Executions for errors. Re-enable the cron trigger after successful validation. 🧾 Example Output | product_id | headline | description | final_url | display_url | generated_at | | ---------- | ------------------ | --------------------------------------------- | ------------------------------------------------ | ----------- | -------------------- | | 12243 | “Eco Bamboo Socks” | “Soft, breathable comfort for everyday wear.” | https://shop.com/socks | shop.com | 2025-10-22T00:00:00Z | 📬 Slack Alert Templates ✅ Success Notification ✅ Google Ads Generation Complete 📊 Summary: • Total Ads Generated: 50 • Saved to Google Sheets: Generated Ads • Timestamp: 2025-10-22T00:00:00Z ⚠️ Non-Compliant Alert ⚠️ Non-Compliant Ad Flagged Product: Bamboo Socks Issues: Contains “Free Shipping” Headline too long Timestamp: 2025-10-22T00:00:00Z 🧰 Maintenance & Monitoring | Frequency | Task | | --------- | -------------------------------- | | Daily | Check Slack alerts for rejects | | Weekly | Review ad performance metrics | | Monthly | Update Relevance AI prompts | | Quarterly | Refresh API tokens and variables | 📊 Success Metrics ✅ Compliance approval rate: >85% 🚫 Disapproval rate: <5% 📈 CTR improvement: +15–25% ⏱️ Time saved: 10–15 hours/week 🌐 Scalable: 1,000+ ads/day 🪜 Next Steps Deploy and monitor for 7 days. After 30 days → activate Workflow 2: Performance Optimization Loop. Extend to Shopping Feed Optimization. Add multi-language generation using Relevance AI. Integrate Google Ads API publishing (full automation). 🔗 Resources n8n Docs Relevance AI Docs Google Ads API Merchant API Channable Help 🎉 Conclusion You now have a production-ready, scalable AI-powered ad generation system integrating Channable, Google Ads, and Relevance AI — built entirely on n8n. This delivers: 💡 AI creativity at scale ✅ Google Ads policy compliance ⚙️ Hands-free daily automation 📊 Transparent reporting and collaboration > Start small → validate → scale to 10,000+ ads per day. > Within weeks, you’ll have a self-learning, always-on ad pipeline driving consistent performance.