by Lucas Peyrin
How it works This workflow automates your initial hiring pipeline by creating an AI-powered CV scanner. It collects job applications through a web form, uses AI to analyze the candidate's CV against your job description, and neatly organizes the results in a Google Sheet. Here’s the step-by-step process: The Application Form:** A Form Trigger provides a public web form for candidates to submit their name, email, and CV (as a PDF). Initial Logging:** As soon as an application is submitted, the candidate's name and email are added to a Google Sheet. This ensures every applicant is logged, even if a later step fails. CV Text Extraction:* The workflow uses *Mistral's OCR** model to accurately extract all the text from the uploaded CV PDF. AI Analysis:* The extracted text is sent to *Google Gemini**. A detailed prompt instructs the AI to act as a hiring assistant, scoring the CV against the specific requirements of your job role and providing a detailed explanation for its score. Structured Output:** A JSON Output Parser ensures the AI's analysis is returned in a clean, structured format, making the data reliable. Final Record:** The AI-generated qualification score and explanation are added to the candidate's row in the Google Sheet, giving you a complete, analyzed list of applicants. Set up steps Setup time: ~15 minutes You'll need API keys for Mistral and Google AI, and to connect your Google account. Get Your Mistral API Key: Visit the Mistral Platform at console.mistral.ai/api-keys. Create and copy your API key. In the workflow, go to the Extract CV Text node, click the Credential dropdown, and select + Create New Credential. Paste your key into the API Key field and Save. Get Your Google AI API Key: Visit Google AI Studio at aistudio.google.com/app/apikey. Click "Create API key in new project" and copy the key. In the workflow, go to the Gemini 2.5 Flash Lite node, click the Credential dropdown, and select + Create New Credential. Paste your key into the API Key field and Save. Connect Your Google Account: Select the Create 'CVs' Spreadsheet node. Click the Credential dropdown and select + Create New Credential to connect your Google account. Repeat this for the Log Candidate Submission and Add CV Analysis nodes, selecting the credential you just created. Create Your Spreadsheet: Click the "play" icon on the Start Here node to run it. This will create a new Google Sheet in your Google Drive named "CVs" with the correct columns. Customize the Job Role: Go to the AI Qualification node. In the Text parameter, find the job_requirements section and replace the example job description with your own. Be as detailed as possible for the best results. Start Screening! Activate the workflow using the toggle at the top right. Go to the Application Form node and click the "Open Form URL" button. Fill out the form with a test application and upload a sample CV. Check your Google Sheet to see the AI's analysis appear within moments
by Ravi Patel
Enterprise AI Outreach Automation Description This n8n template demonstrates how to build a complete AI-powered outbound email system using Google Sheets, Gmail, Gemini, and website scraping. The workflow is designed to help you move from basic lead data to personalized cold outreach without manually researching each company or writing each email yourself. You only need to add a few lead details such as first name, last name, email, and website in your Google Sheet. From there, the workflow scrapes the lead’s website, cleans the text, analyzes the business with Gemini, generates outreach context like pain points and growth signals, creates a six-email sequence, sends the first message, schedules follow-ups, and updates the lead record automatically. The workflow also includes protections for working hours and daily sending limits. It has a separate Gmail reply-monitoring branch that detects responses, marks leads as active or replied, and stops unnecessary future follow-ups by updating the lead sheet. Good to know This workflow uses two Gemini-powered AI steps: one to generate business research from website content and another to generate the six-email sequence, so usage cost will depend on your Gemini plan and token usage. The workflow also depends on website scraping through a Puppeteer node connected to a Browserless endpoint, so you need a working scraping setup before activating the template. It is also built around a Google Sheets structure that stores lead details, email content, send dates, send status fields, thread IDs, notes, and service information. For best results, keep the sheet columns aligned with the workflow mappings before you start using it. How it works A scheduled trigger starts the new lead flow and first passes through a working-hours protection check so emails are only processed during allowed business hours. The workflow reads leads from Google Sheets and filters for rows where the lead status is blank, which means only fresh leads are processed first. The lead website is scraped with Puppeteer, then a code node removes noisy HTML, scripts, duplicate lines, and low-value content so the AI receives cleaner business text. Gemini analyzes the cleaned website text and returns structured data such as company summary, industry, target audience, pain points, growth signals, automation opportunities, email angle, and a personalized opening line. That research is written back to the lead sheet, after which the workflow reads your service data from a separate sheet so the offer can be matched to the lead context. A second Gemini step generates a full six-email sequence, with only Email 1 receiving a subject line and follow-ups designed to be sent in the same Gmail thread. The parsed email content is cleaned and formatted, a random wait is applied before sending, Email 1 is sent through Gmail, and tracking fields such as thread ID, send dates, sent flags, sequence step, and follow-up dates are updated in Google Sheets. A separate scheduled branch handles Email 2 to Email 6 by checking lead status, sequence step, send dates, working hours, and daily limits before sending the next follow-up reply in the existing Gmail thread. Another Gmail Trigger branch monitors replies, extracts reply details, updates the lead record, and marks the lead so follow-ups stop once a response is received. How to use Add new leads to your main Google Sheet with at least First Name, Last Name, Email, and Website. Add your services, offers, or solution descriptions to the services sheet so the workflow can align outreach messaging with what you actually sell. Connect your Google Sheets, Gmail, and Gemini credentials in n8n, and configure your Browserless or Puppeteer scraping setup. Review the mapped sheet columns carefully, especially the fields for subject lines, email bodies, send timestamps, sent-status flags, thread IDs, notes, and sequence steps. Activate the workflow to allow the scheduled lead-processing flow, follow-up flow, and Gmail reply-monitoring flow to run automatically. Requirements Google Sheets account for lead storage, service data, tracking fields, and daily limit control. Gmail account for sending the first email, replying in existing threads, and detecting incoming replies. Gemini account for website analysis and AI email sequence generation. Puppeteer node plus a working Browserless or compatible scraping endpoint for website extraction. Customising this workflow You can adapt this template to different outreach styles by changing the prompts in the “Generate Website Summary” and “Generate Email” nodes. The current setup focuses on B2B personalized outreach with a six-step sequence, but you can easily change the tone, CTA style, email lengths, service positioning, or follow-up intervals to fit agencies, consultants, SaaS founders, recruiters, or niche lead generation campaigns. You can also adjust the sheet logic to support additional statuses, separate campaigns, multiple sender accounts, or different daily sending caps for new emails and follow-ups. Since the workflow already tracks sent counts, send windows, sequence stages, and reply updates, it provides a strong base for scaling into a more advanced outreach system. Optional “Try it out” section Try It Out This n8n template is a complete AI-powered cold email outreach system for teams that want to automate lead research, email writing, follow-up scheduling, and reply tracking. You only need to provide basic lead details in Google Sheets, and the workflow handles the rest automatically. It researches each company website, creates personalized outreach context, generates a full six-email sequence, sends emails through Gmail, updates tracking fields, and stops follow-ups once a reply is detected.
by gotoHuman
💼 Lead Outreach Agent This AI workflow helps you quickly react to new leads with an initial personalized outreach. A great start of your lead nurturing sequence to avoid loosing precious leads that could turn into paying customers. Most importantly it uses gotoHuman so you can review the AI-analysis and the AI-generated editable email draft before it is sent out in your name. How it works We receive a new form submission incl. the email address and company name of the prospect and extract the website URL from the address. We proceed only for company email addresses. We scrape the website using Firecrawl and summarize it with OpenAI Our AI agent runs an analysis based on the lead information and documents describing our own company and the defined Ideal Customer Profiles. It also fetches previously approved examples from gotoHuman so you're effectively creating a self-learning agent. It responds with the analysis and the drafted outreach email. Human Approval in gotoHuman. Allows editing the drafted email. We can now send our email including any edits made during the review and be sure that we are using high-quality content instead of AI slop. How to set up Most importantly, install the gotoHuman node before importing this template! (Just add the node to a blank canvas before importing) Set up your credentials for the different services In gotoHuman, select and create the pre-built review template "Lead Outreach Agent" or import the ID: T873fI1Xli5nt3eh33Rj Select this template in the gotoHuman node Requirements You need accounts for gotoHuman (Human Supervision) OpenAI (AI Agent) Typeform (Lead Form Submissions) Firecrawl (Website Scraping) Gmail Google Docs (Company Wiki) How to customize Replace the Typeform trigger with any other way you might receive or find new leads Provide the AI Sales Agent with more context to properly analyze the lead and create better personalized emails. Consider adding tools that allow the agent to fetch more infos about the prospect's company or personal profile, or to find out more about your specific product/service offerings and how your sales pitches look like.
by Khairul Muhtadin
Automatically extract job listings from any website URL, format them with AI, and publish directly to WordPress. Just send a URL via Telegram, and watch as the workflow scrapes the job details, enhances the content with GPT, and creates a polished post on your site. 💡 Why Use Job Repost? ⏰ Save countless hours Automatically extract, process, and publish job offers from any website, freeing your time from repetitive tasks. ✅ Eliminate human errors Say goodbye to typos and missed fields — every job post is validated before going live. 📈 Boost engagement Fresh, well-structured job listings attract more candidates, improving your site's reach and authority. 🚀 Stay ahead Leveraging AI with GPT means your content is not just automated but polished and SEO-friendly — the digital assistant you never knew you needed. ⚡ Perfect For Job board managers:** Want to aggregate listings from multiple sources with minimal effort Recruiters & HR teams:** Who need to streamline job posting workflows without technical hassles Content creators & marketers:** Looking to automate publishing while maintaining style and SEO standards 🔧 How It Works | Step | Process | Description | |------|---------|-------------| | 📱 | Trigger | Send a job URL via Telegram bot to initiate the process | | 🔥 | Extract | Firecrawl API scrapes and extracts clean content from the provided URL | | 📎 | Process | Job data is extracted via AI, text split and cleaned, job categories and types mapped to your system | | 🤖 | Smart Logic | GPT crafts formatted job posts, intelligent validation ensures all key data is present, default values fill in the blanks if necessary | | 💌 | Output | Posts automatically published to WordPress with company logos uploaded, and success or error notifications sent via Telegram | | 🗂 | Storage | Uses Supabase vector store for managing document embeddings, ensuring quick lookup and reference compliance | 🔐 Quick Setup Import the provided JSON file into your n8n instances Add credentials: Firecrawl API key Google Drive OAuth2 (for RAG storage) OpenAI API WordPress API Telegram API Supabase Customize: Telegram bot token WordPress URLs Default images and category mappings if needed Update: URLs and API tokens where placeholders are used Test: Send a job URL to your Telegram bot to verify accurate extraction and posting 🧩 You'll Need ✅ Active n8n instances ✅ Firecrawl account with API access ✅ Google Drive account for RAG document storage ✅ OpenAI account with GPT API access ✅ WordPress site with autojob plugin and API enabled ✅ Telegram bot for URL submission and notifications ✅ Supabase account for vector store management 🛠️ Level Up Ideas 🌍 Add multi-language support to expand global reach 🔗 Support batch URL processing for multiple jobs at once 💬 Integrate Slack or email notifications for wider team alerts 🎯 Use more AI nodes to summarize or rate job offers for quality control 🔄 Schedule periodic cleanup of vector store for performance optimization 📊 Add analytics tracking for published jobs performance 🧠 Nodes Used Core Components: Firecrawl HTTP Request** (Web scraping and content extraction) Google Drive** (RAG document storage) Supabase Vector Store** OpenAI** (Embeddings, GPT Extraction) Code Nodes** for mapping categories Telegram Trigger & Message** HTTP Request** (for WordPress API and image uploads) Made by: Khaisa Studio Tags: automation recruitment job-posting wordpress AI web-scraping firecrawl Category: Human Resources, Recruitment, Wordpress, Scrapping Need a custom? contact me on LinkedIn or Web
by Trung Tran
Decodo Scraper API Workflow Template (n8n Automation Amazon Book Purchase Report) Watch the demo video below: > This workflow demos how to use Decodo Scraper API to crawl any public web page (headless JS, device emulation: mobile/desktop/tablet), extract structured product data from the returned HTML, generate a purchase-ready report, and automatically deliver it as a Google Doc + PDF to Slack/Drive. Who’s it for Creators / Analysts** who need quick product lists (books, gadgets, etc.) with prices/ratings. Ops & Marketing teams** building weekly “top picks” reports. Engineers** validating the Decodo Scraper API + LLM extraction pattern before scaling. How it works / What it does Trigger – Manually run the workflow. Edit Fields (manual) – Provide inputs: targetUrl (e.g., an Amazon category/search/listing page) deviceType (desktop | mobile | tablet) Optional: maxItems, notes, reportTitle, reportOwner Scraper API Request (HTTP Request → POST) Calls Decodo Scraper API with: URL to crawl, headless JS enabled Device emulation (UA + viewport) Optional waitFor / executeJS to ensure late-loading content is captured HTML Response Parser (Code/Function or HTML node) Pulls the HTML string from Decodo response and normalizes it (strip scripts/styles, collapse whitespace). Product Analyzer Agent (LLM + Structured Output Parser) Prompts an LLM to extract structured “book” objects from the HTML: The Structured Output Parser enforces a strict JSON schema and drops malformed items. Build 📚 Book Purchase Report (Code/LLM) Converts the JSON array into a Markdown (or HTML) report with: Executive summary (top picks, average price/rating) Table of items (rank, title, author, price, rating, link) “Recommended to buy” shortlist (rules configurable) Notes / owner / timestamp Configure Google Drive Folder (manual) Choose/create a Drive folder for output artifacts. Create Document File (Google Docs API) Creates a Doc from the generated Markdown/HTML. Convert Document to PDF (Google Drive export) Exports the Doc to PDF. Upload report to Slack Sends the PDF (and/or Doc link) to a chosen Slack channel with a short summary. How to set up 1 Prerequisites n8n** (self-hosted or Cloud) Decodo Scraper API** key OpenAI (or compatible) API key** for the Analyzer Agent Google Drive/Docs** credentials (OAuth2) Slack** Bot/User token (files:write, chat:write) 2 Environment variables (recommended) DECODO_API_KEY OPENAI_API_KEY DRIVE_FOLDER_ID (optional default) SLACK_CHANNEL_ID 3 Nodes configuration (high level) Edit Fields (Set node) Scraper API Request (HTTP Request → POST) HTML Response Parser (Code node) Product Analyzer Agent Build Book Purchase Report (Code/LLM) Create Document File Convert to PDF Upload to Slack Requirements Decodo**: Active API key and endpoint access. Be mindful of concurrency/rate limits. Model**: GPT-4o/4.1-mini or similar for reliable structured extraction. Google**: OAuth client (Docs/Drive scopes). Ensure n8n can write to the target folder. Slack**: Bot token with files:write + chat:write. How to customize the workflow Target site: Change targetUrl to any **public page (category, search, or listing). For other domains (not Amazon), tweak the LLM guidance (e.g., price/label patterns). Device emulation**: Switch deviceType to mobile to fetch mobile-optimized markup (often simpler DOMs). Late-loading pages**: Adjust waitFor.selector or use waitUntil: "networkidle" (if supported) to ensure full content loads. Client-side JS**: Extend executeJS if you need to interact (scroll, click “next”, expand sections). You can also loop over pagination by iterating URLs. Extraction schema**: Add fields (e.g., discount_percent, bestseller_badge, prime_eligible) and update the Structured Output schema accordingly. Filtering rules**: Modify recommendation logic (e.g., min ratings count, price bands, languages). Report branding**: Add logo, cover page, footer with company info; switch to HTML + inline CSS for richer Docs formatting. Destinations**: Besides Slack & Drive, add Email, Notion, Confluence, or a database sink. Scheduling: Add a **Cron trigger for weekly/monthly auto-reports.
by Ruth Aju
Quick Overview This workflow generates a personalized freelance proposal from a Tally form submission, using OpenAI to extract text from screenshots and write the proposal, SerpAPI to pull proposal examples, Google Sheets to reference past projects, pdf.co to create a PDF, and Gmail to email it to the submitter. How it works Triggers when a new submission is received from a Tally form. Detects whether the submission contains a job screenshot and, if so, uses OpenAI (GPT-4o Vision) to extract the job description text; otherwise it uses the typed job description. Searches Google via SerpAPI for proposal examples based on the submitted job title and compiles relevant snippets. Combines the job title, job description, and example snippets into a single prompt payload for proposal writing. Uses an OpenAI agent that first looks up relevant past projects from Google Sheets and then generates a proposal and a short email body as HTML inside a JSON response. Converts the proposal HTML to a PDF using the pdf.co API, downloads the generated file, and emails it with Gmail to the address provided in the form. Setup Create a Tally form with job title, job description, optional job screenshot upload, and email fields, then set the Tally Form ID and replace all YOUR_*_FIELD_ID placeholders with your actual Tally field IDs. Add OpenAI credentials for both the image text extraction step and the proposal-generation agent, and update the OWNER BIO section in the agent prompt with your real profile details. Add a SerpAPI credential. Create a Google Sheets spreadsheet containing your past projects and connect a Google Sheets credential, then set the spreadsheet ID and sheet/tab used by the “get_relevant_projects” tool. Create a pdf.co account and add an HTTP Header Auth credential that sends your x-api-key header, and confirm the PDF conversion endpoint is reachable. Connect a Gmail OAuth2 credential and confirm the workflow can send emails to the recipient address captured from the Tally form.
by Incrementors
Description Submit your carousel topic, brand name, target audience, tone, and number of content slides via a simple form and the workflow generates a complete LinkedIn carousel PDF automatically. GPT-4o-mini returns a structured JSON array of slides — title slide, content slides with 3 bullet points each, and a CTA slide — which are assembled into a full branded HTML document with dark gradient backgrounds, slide number badges, and a swipe prompt, then converted into a square-format PDF at 1080×1080px per slide. The PDF is uploaded to Google Drive, logged to Google Sheets with the Drive link, and emailed to you with step-by-step LinkedIn posting instructions. Built for LinkedIn creators who want a fully formatted, ready-to-upload carousel PDF in minutes without designing slides manually. What This Workflow Does Generates structured slide content in pure JSON** — GPT-4o-mini produces a title slide, content slides with exactly 3 bullet points each, and a CTA slide as a validated JSON array — not free text Converts content to a branded square-format PDF** — Each slide is rendered as a 1080×1080px page with dark gradient backgrounds, slide number badges, and your brand name in the footer Adds a swipe prompt on the title slide** — A "Swipe →" label is automatically added to the title slide so viewers know to scroll through the carousel Uploads the finished PDF to Google Drive** — The PDF is saved with a structured filename including the topic and date — for example linkedin-carousel-seo-mistakes-2025-05-18.pdf Logs every carousel run to Google Sheets** — Topic, brand name, slide count, file name, Drive link, Drive file ID, PDF size, and generation timestamp are saved per run Sends a delivery email with posting instructions** — A styled HTML email arrives in your inbox with the Drive link and a 4-step guide on how to post the carousel on LinkedIn Setup Requirements Tools Needed n8n instance — self-hosted only (the PDF generation step requires installing an npm package on your n8n server — see step 1 below) OpenAI account with GPT-4o-mini API access Google Drive (one folder for carousel PDFs) Google Sheets (one sheet with a tab named Carousel Log) Gmail account Credentials Required OpenAI API key Google Drive OAuth2 Google Sheets OAuth2 Gmail OAuth2 > ⚠️ This workflow requires a self-hosted n8n instance. The PDF generation step uses html-pdf-node, an npm package that must be installed on your n8n server. This cannot be done on n8n Cloud. If you use n8n Cloud, the PDF step will fail. Estimated Setup Time: 25–30 minutes Step-by-Step Setup Install html-pdf-node on your n8n server — This is required before anything else. Run this command on your server: Standard install: npm install html-pdf-node Docker install: docker exec -it n8n npm install html-pdf-node After installing, restart your n8n instance for the package to be available Import the workflow — Open n8n → Workflows → Import from JSON → paste the workflow JSON → click Import Connect OpenAI — Open node OpenAI — GPT-4o-mini Model → click the credential dropdown → add your OpenAI API key → test the connection Get your Google Drive folder ID — Open your target Google Drive folder in a browser → the folder ID is the string at the end of the URL after /folders/ Connect Google Drive — Open node 6. Google Drive — Upload PDF → click the credential dropdown → add Google Drive OAuth2 → authorize access → replace YOUR_GDRIVE_FOLDER_ID in the folder field with your actual folder ID Create your Google Sheet tab — Open your Google Sheet → add a tab named exactly Carousel Log → add these 9 column headers in row 1: Date, Topic, Brand Name, Slide Count, File Name, Drive Link, Drive File ID, PDF Size (bytes), Generated On Get your Google Sheet ID — Open your Google Sheet in a browser → copy the string between /d/ and /edit in the URL Connect Google Sheets — Open node 7. Google Sheets — Log Carousel → replace YOUR_GOOGLE_SHEET_ID with your actual Sheet ID → click the credential dropdown → add Google Sheets OAuth2 → authorize access Set your email address — Open node 8. Gmail — Email PDF to You → replace YOUR_EMAIL_ADDRESS in the Send To field with your actual email address Connect Gmail — Open the same node 8. Gmail — Email PDF to You → click the credential dropdown → add Gmail OAuth2 → complete the Google authorization flow Customize your brand color (optional) — Open node 4. Code — Build HTML Slides → find the BRAND SETTINGS section near the top of the code → replace #0A66C2 in BRAND_COLOR with your own hex color code Activate the workflow — Toggle the workflow to Active → copy the Form URL from node 1. Form — Carousel Topic + Details → open it in a browser to submit your first carousel How It Works (Step by Step) Step 1 — Form: Carousel Topic + Details You open the form URL and fill in five fields: the carousel topic (e.g. "5 SEO mistakes beginners make"), your name or brand, the target audience, the tone (e.g. Professional, Motivational, Educational), and the number of content slides you want (recommended: 4 to 7). Submitting the form starts the full pipeline. Step 2 — AI Agent: Generate Slide Content GPT-4o-mini receives the topic, audience, tone, and slide count. The system prompt instructs it to return ONLY a valid JSON array — no text before or after, no markdown backticks. The array contains one title slide object, the requested number of content slide objects (each with a headline, one emoji, an empty subtitle, and exactly 3 bullet points), and one CTA slide object with a follow prompt and a comment-baiting question. Each slide has a type field set to "title", "content", or "cta". Step 3 — Code: Parse Slides JSON The AI output is cleaned of any accidental markdown code fences and parsed as a JSON array. If parsing fails, the step throws a clear error showing the first 300 characters of the output for debugging. If the array is empty or missing, another error is thrown. The topic, brand name, audience, and tone from the form are also extracted and packaged alongside the slides array. Step 4 — Code: Build HTML Slides Each slide in the array is converted to a full-height HTML div at 1080×1080px with a dark gradient background using your brand color. Content slides get a numbered badge in the top-right corner. The title slide gets a "Swipe →" label at the bottom-right. All slides get a brand name label at the bottom-left. Content slides render the 3 bullet points as a list with circular checkmark icons. All styles are inline so the HTML is fully self-contained. A complete HTML document wrapping all slide divs is returned alongside a structured filename built from the topic and today's date. Step 5 — Code: Generate PDF The html-pdf-node npm package is called with the full HTML string. The PDF is generated at 1080×1080px per page with no margins and printing backgrounds enabled. The resulting PDF buffer is converted to base64 and returned as binary data alongside the filename, slide count, topic, brand name, and PDF file size in bytes. Step 6 — Google Drive: Upload PDF The PDF binary is uploaded to your specified Google Drive folder using the structured filename from step 4. Google Drive returns the file's ID and other metadata. Step 7 — Google Sheets: Log Carousel One row is appended to your Carousel Log tab with all 9 columns. The Drive Link is constructed directly from the file ID as https://drive.google.com/file/d/FILE_ID/view so every row has a clickable link immediately. Step 8 — Gmail: Email PDF to You A styled HTML email is sent to your address with the carousel topic, slide count, filename, and a clickable "Open in Google Drive" link. A blue callout box at the bottom of the email shows the 4-step LinkedIn posting process: download the PDF from Drive, go to LinkedIn, create a post, add the PDF as a document, add your caption, and post. Key Features ✅ Pure JSON output from GPT — GPT is instructed to return only a JSON array — making the output directly parseable without regex extraction and producing consistent slide structures every time ✅ Slide count badge auto-numbered — Content slides automatically get a numbered circle badge in the top-right corner showing which slide number it is — no manual numbering needed ✅ Swipe prompt on title slide — The first slide automatically gets a "Swipe →" label so LinkedIn viewers know to scroll through — this is a standard carousel best practice ✅ Brand color applied globally — Change one value in the code and the entire PDF reflects your brand color across all backgrounds and gradients ✅ Filename includes topic and date — Files are named linkedin-carousel-[topic]-[date].pdf so your Drive folder stays organized and searchable ✅ PDF size logged in bytes — The sheet log records the exact file size so you can monitor output consistency and catch any generation issues ✅ LinkedIn posting instructions in every email — The delivery email includes a 4-step posting guide so anyone on your team can upload the carousel without knowing how LinkedIn document posts work Customisation Options Change the brand color — In node 4. Code — Build HTML Slides, find const BRAND_COLOR = '#0A66C2' in the BRAND SETTINGS section at the top and replace the hex code with your own brand color — the change applies to all slide backgrounds and gradients. Change the slide layout font — In the same BRAND SETTINGS section of node 4. Code — Build HTML Slides, change const FONT = 'Arial, sans-serif' to any web-safe font — for example 'Georgia, serif' for a more editorial look or 'Verdana, sans-serif' for a cleaner style. Add your topic to the topic emoji map — In node 10. Code — Build HTML Email (note: this is in the News Digest workflow — for the carousel, the emoji is generated by GPT per slide) — if you want to control which emoji appears on each slide type, add instructions to the GPT system prompt in node 2. AI Agent — Generate Slide Content. Send to a Slack channel when a carousel is ready — After node 8. Gmail — Email PDF to You, add a Slack step that posts the carousel topic, slide count, and a direct Drive link to a #content-team channel so your team is notified without checking email. Increase the slide bullet point count — In the system prompt of node 2. AI Agent — Generate Slide Content, change Exactly 3 bullet points per content slide to a different number — for example 4 or 5 — and update the bullet point rendering in node 4. Code — Build HTML Slides accordingly. Troubleshooting PDF generation failing with a module not found error: Confirm html-pdf-node was installed on the same n8n server instance running this workflow — run npm install html-pdf-node again if unsure For Docker: run docker exec -it n8n npm install html-pdf-node and restart the container — the package must be installed inside the container, not on the host machine Check the exact error message in the execution log of node 5. Code — Generate PDF — a "Cannot find module" error confirms the package is not installed; any other error may point to a specific HTML rendering issue GPT returning a JSON parse error: Check the execution log of node 3. Code — Parse Slides JSON — it shows the first 300 characters of the raw GPT output, which helps identify whether GPT added text outside the JSON array If GPT added markdown fences despite instructions, the parse step strips them — but if it added a preamble sentence, parsing will still fail; try rerunning the form Confirm the OpenAI API key in node OpenAI — GPT-4o-mini Model is valid and your account has credits Form submission not starting the workflow: Confirm the workflow is Active — inactive workflows do not receive form submissions Copy the Form URL fresh from node 1. Form — Carousel Topic + Details after activating Make sure all five fields are filled in — all are required Google Drive upload failing: Confirm the Google Drive OAuth2 credential in node 6. Google Drive — Upload PDF is connected and not expired — re-authorize if needed Confirm YOUR_GDRIVE_FOLDER_ID is replaced with just the folder ID from the URL — not the full Drive URL If the PDF generation step returned an empty or failed binary, the upload will also fail — check the execution log of step 5 first Google Sheets not logging or Gmail not sending: Confirm YOUR_GOOGLE_SHEET_ID in node 7. Google Sheets — Log Carousel is replaced with your actual Sheet ID and the tab is named Carousel Log exactly Confirm YOUR_EMAIL_ADDRESS in node 8. Gmail — Email PDF to You is replaced with a valid email address and the Gmail OAuth2 credential is connected 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 ayo.o
Quick overview This workflow accepts invoice files via a Telegram bot, extracts text with OCR.space, uses OpenAI to turn the OCR output into structured invoice fields, appends the data to Google Sheets, archives the original file in Google Drive, and sends a confirmation message back to Telegram. How it works Triggers when a user sends an invoice image (JPG/PNG) or PDF to your Telegram bot. Downloads the file from Telegram, detects its MIME type, and continues only for JPG, PNG, or PDF invoices. Sends the invoice file to OCR.space to extract the raw text content. Uses OpenAI to convert the OCR text into structured invoice JSON and validates the output against a predefined schema. Formats item lines into newline-separated fields and appends the invoice details to a Google Sheets worksheet. Uploads the original invoice file to a specified Google Drive folder and generates a short confirmation message with key details and your database link. Sends the confirmation message back to the same Telegram chat. Setup Create a Telegram bot, add the Telegram credentials in n8n, and start a chat with the bot so it can receive messages. Add an OCR.space API key using HTTP Header Auth credentials and connect it to the OCR request step. Add OpenAI API credentials for the model used to extract structured invoice data and write the confirmation message. Connect Google Sheets and Google Drive OAuth credentials, then set the Google Sheet ID and Drive folder ID in the workflow variables. Create a Google Sheet (for example, “Sheet1”) with the required column headers used by the append step and update the sheet name if different. Set the invoice database link in the workflow variables so it can be included in the Telegram confirmation. Requirements Telegram Bot (created via BotFather) OpenAI API key OCR.space API key (free tier available at ocr.space) Google Sheets OAuth2 credentials Google Drive OAuth2 credentials
by Rajeet Nair
Overview This workflow implements a privacy-preserving AI document processing pipeline that detects, masks, and securely manages Personally Identifiable Information (PII) before any AI processing occurs. Organizations often need to analyze documents such as invoices, forms, contracts, or reports using AI. However, sending documents containing personal data directly to AI models can create serious privacy, compliance, and security risks. This workflow solves that problem by automatically detecting sensitive information, replacing it with secure tokens, and storing the original values in a protected vault database. Only the masked version of the document is sent to the AI model for analysis. If required, a controlled PII re-injection mechanism can restore original values after processing. The workflow also records all operations in an audit log, making it suitable for environments requiring strong compliance such as GDPR, financial services, healthcare, or enterprise document processing systems. How It Works 1. Document Upload A webhook receives a document (typically a PDF) and triggers the workflow. 2. OCR Text Extraction The OCR Extract node extracts the text content from the document so it can be analyzed for sensitive information. 3. PII Detection Multiple detectors analyze the text to identify different types of sensitive data: Email addresses (regex detection) Phone numbers (multi-pattern detection) Identification numbers such as PAN, SSN, or bank accounts Physical addresses detected using an AI model Each detection includes: detected value location in the text confidence score 4. Detection Consolidation All detected PII results are merged into a single dataset. The workflow resolves overlapping detections and removes duplicates to produce a clean list of sensitive values. 5. Tokenization and Secure Vault Storage Each detected PII value is replaced with a secure token, for example: <<EMAIL_7F3A>> <<PHONE_A12B>> The original values are securely stored in a Postgres vault table. This ensures sensitive data is never exposed to AI models. 6. Masked AI Processing The masked document is sent to an AI model for structured analysis. Possible AI tasks include: Document classification Data extraction Document summarization Entity extraction Since all sensitive data has been tokenized, the AI processes the document without seeing any real personal data. 7. Controlled PII Re-Injection After AI processing, the workflow can optionally restore original values from the vault. The Re-Injection Controller determines which fields are allowed to restore PII based on defined permissions. 8. Compliance Audit Logging All events are recorded in an audit table, including: PII detection token generation AI processing PII restoration This provides traceability and compliance reporting. Setup Instructions 1. Configure Postgres Database Create two tables in your database. PII Vault Table Example structure: token original_value type document_id created_at This table securely stores original PII values mapped to tokens. Audit Log Table Example structure: document_id pii_types_detected token_count ai_access_confirmed re_injection_events timestamp actor This table records workflow activity for compliance tracking. 2. Configure AI Model Credentials This workflow supports multiple AI models: Anthropic Claude (used for AI document processing) Ollama local models (used for address detection) Configure credentials in n8n before running the workflow. 3. Configure Webhook Trigger The workflow starts when a document is sent to the webhook: POST /webhook/gdpr-document-upload Upload a PDF file to this endpoint to trigger processing. 4. Configure Alert Notifications (Optional) Replace the placeholder alert webhook URL with your monitoring or alerting system. Example use cases: Slack alert monitoring system incident notification Alerts are triggered if masking fails. Use Cases This workflow is useful for many privacy-sensitive automation scenarios. GDPR-Compliant Document Processing Safely process documents containing personal data without exposing PII to AI models. AI-Powered Document Analysis Use AI to summarize or extract data from documents while maintaining privacy. Enterprise Data Redaction Pipelines Automatically detect and tokenize sensitive data before sending documents to downstream systems. Financial Document Processing Process invoices, contracts, and financial reports securely. Healthcare Document Automation Analyze patient documents while ensuring sensitive data is protected. Requirements To run this workflow you need: n8n** Postgres database** Anthropic Claude API access** Ollama (optional for local AI address detection)** Webhook endpoint for document uploads** Optional integrations: Monitoring or alert system Compliance audit database Key Features Automated PII detection and tokenization AI-safe document processing** Secure vault storage for sensitive data Controlled PII restoration Full audit logging Works with multiple AI models Designed for GDPR and enterprise compliance Summary This workflow creates a secure bridge between sensitive documents and AI systems. By automatically detecting, masking, and securely storing personal data, it enables organizations to safely apply AI to document processing tasks without exposing sensitive information. The combination of tokenization, secure vault storage, controlled re-injection, and audit logging makes this workflow suitable for privacy-sensitive industries and enterprise automation pipelines.
by Kev
⚠️ Important: This workflow uses the Autype community node and requires a self-hosted n8n instance. Send an email with a document request and optional PDF attachments. The AI assistant can summarize documents, compare multiple PDFs, draft new content, or create documents from scratch with internet research — all output as professionally branded PDFs using Autype. The finished document is delivered back to the sender via email. Who is this for? Consultants, analysts, project managers, and teams who need on-demand document generation. Send an email and get a branded PDF back — whether it's a summary, comparison, draft, or a freshly researched document. Concrete example: Attach 3 PDF proposals and write "Compare these proposals and recommend the best option" — each PDF is OCR'd via Autype Lens, the AI assistant produces a structured comparison with tables, and you receive a branded PDF within minutes. This also works as an additional skill for an AI agent. Instead of an email trigger, connect the workflow to a webhook or chat trigger so an agent can call it when a user asks "create a summary of these documents." What this workflow does On each incoming email, the workflow: Extracts the email subject + body as the document request, and detects PDF attachments Processes each attached PDF sequentially: uploads to Autype, extracts text via Lens OCR Combines all OCR results into a single context Downloads the Autype Extended Markdown syntax reference so the AI knows the output format Passes the request text + all PDF content to an AI Document Assistant with Firecrawl and SerpAPI as research tools The assistant determines the task type (summarize, compare, draft, or create from scratch) and produces the document in Autype Extended Markdown Autype renders the markdown to a branded PDF with company styling (fonts, colors, heading styles, tables, header with logo, footer with page numbers) The PDF is delivered back to the original sender via email Output structure How it works New Email Received — An IMAP Email Trigger monitors your inbox for incoming document requests. The email subject and body become the request text; PDF attachments are automatically detected. Set Company Config — A Set node defines your company name, logo URL, and brand color. Edit these values once. Extract & Split PDFs — A Code node extracts the sender email, combines subject + body as request text, and detects PDF attachments. Each PDF is split into a separate item for loop processing. If no PDFs are attached, a single item with just the text is output. Has PDFs? — An IF node routes the flow: emails with PDF attachments enter the processing loop, text-only emails skip directly to the AI Assistant. Loop Over PDFs — A Split In Batches node processes each PDF sequentially (one at a time to avoid API rate limits). Upload PDF to Autype — Each PDF is uploaded to Autype via the community node (resource: file). Autype Lens OCR — An HTTP Request node triggers Autype Lens OCR on the uploaded file with outputFormat: "md". This uses Generic Auth Type → Header Auth with X-API-Key set to your Autype API key. Cost: 4 credits per page. A dedicated community node for Lens is planned. Wait for OCR → Poll OCR Status — Waits 8 seconds, then polls the job status via HTTP Request (same Header Auth credential). The loop continues to the next PDF after each OCR completes. Extract OCR Text — Extracts the markdown text from each OCR result and stores it with the original filename. Combine All OCR Results — After the loop completes, collects all OCR texts and combines them into a single context string with labeled sections per PDF. Prepare Text Only — For emails without PDFs, passes just the request text forward. Download Markdown Syntax — Fetches the Autype Extended Markdown syntax reference so the AI knows the output format. Merge Context — Combines the request text, all OCR content, and the markdown syntax reference into a single item for the AI Agent. AI Document Assistant — An n8n AI Agent (OpenRouter) with two tools: Firecrawl Scrape — Scrapes specific URLs to extract page content as markdown. SerpAPI — Web search for current information, statistics, and facts. The assistant determines the task type (summarize, compare, draft, or create from scratch). The system prompt limits tool usage to max 5 calls and prioritizes attached PDF content. Prepare Render Payload — Cleans the AI output (strips code fences), generates a filename, and prepares branding variables. Render Branded PDF — Autype Render from Markdown generates the PDF with a full defaults JSON for company styling: Roboto font, heading colors from brand color, styled tables with colored headers, header with company logo, and footer with page numbers. See the defaults schema for all options. Send Report via Email — SMTP sends the PDF as an attachment back to the original email sender. Setup Install the Autype community node (n8n-nodes-autype) via Settings > Community Nodes. Create an Autype API credential with your API key from app.autype.com. See API Keys in Settings. Create a Header Auth credential for the Lens OCR HTTP Request nodes: Go to Credentials > New > Header Auth Name: X-API-Key Value: your Autype API key (same key as step 2) Assign this credential to the "Autype Lens OCR" and "Poll OCR Status" nodes. Create an OpenRouter API credential (or replace the chat model with OpenAI/Anthropic). Create an IMAP credential for the email inbox to monitor. Create an SMTP credential for sending emails. Get a Firecrawl API key from firecrawl.dev and create a Firecrawl credential. Get a SerpAPI key from serpapi.com and create a SerpAPI credential. Import this workflow and assign your credentials to each node. Edit the Set Company Config node: companyName — Your company name (appears in header/footer) companyLogoUrl — URL to your company logo (PNG/JPEG, publicly accessible) brandColor — Hex color for headings and table headers (e.g. #1a5276) Update the Send Report via Email node with your sender email address. Activate the workflow — any new email to the monitored inbox triggers document generation. > Note: This is a community node. It is not maintained by the n8n team. You need a self-hosted n8n instance to use community nodes. Requirements Self-hosted n8n instance (community nodes are not available on n8n Cloud) Autype account with API key (Lens OCR costs 4 credits/page, Render from Markdown costs 1 credit) n8n-nodes-autype community node installed OpenRouter API key (or OpenAI/Anthropic — configurable chat model) IMAP credentials for the monitored inbox SMTP credentials for sending emails Firecrawl API key (free tier: 500 pages/month) SerpAPI key (serpapi.com) How to customize Change AI model:** Replace the OpenRouter Chat Model sub-node with OpenAI, Anthropic Claude, Google Gemini, or any LangChain-compatible chat model. Add more research tools:** Add additional tool nodes for specialized APIs — Google Scholar, SEC filings, PubMed, or internal knowledge bases. Customize styling:** Edit the defaults JSON in the Render Branded PDF node to change fonts, colors, heading styles, table designs, header/footer content, and spacing. See the defaults schema for all available options. Replace email trigger:** Swap the IMAP Email Trigger with a Form Trigger, Webhook, or Chat Trigger to accept input from different sources. Add watermark:** Insert an Autype Watermark step after rendering to stamp "DRAFT" or "CONFIDENTIAL" on every page. Save to cloud storage:** Add a Google Drive, S3, or SharePoint upload step after rendering (before or instead of SMTP). Adjust OCR wait time:** For large PDFs (10+ pages), increase the Wait node from 8 to 15-20 seconds, or add a retry loop that polls until status is COMPLETED. Use Autype community node for Lens:** Once the Autype community node adds Lens OCR support, replace the HTTP Request OCR/poll chain with a single Autype node. Change output format:** Switch from Render from Markdown to Render from JSON for a better manipulation experience
by Yaron Been
Zsxkib Canary Qwen 2.5b Text Generator Description 🎤The best open-source speech-to-text model as of Jul 2025, transcribing audio with record 5.63% WER and enabling AI tasks like summarization directly from speech✨ Overview This n8n workflow integrates with the Replicate API to use the zsxkib/canary-qwen-2.5b model. This powerful AI model can generate high-quality text content based on your inputs. Features Easy integration with Replicate API Automated status checking and result retrieval Support for all model parameters Error handling and retry logic Clean output formatting Parameters Required Parameters audio** (string): Audio file to transcribe Optional Parameters llm_prompt** (string, default: None): Optional LLM analysis prompt show_confidence** (boolean, default: False): Show AI reasoning in analysis include_timestamps** (boolean, default: True): Include timestamps in transcript How to Use Set up your Replicate API key in the workflow Configure the required parameters for your use case Run the workflow to generate text content Access the generated output from the final node API Reference Model: zsxkib/canary-qwen-2.5b API Endpoint: https://api.replicate.com/v1/predictions Requirements Replicate API key n8n instance Basic understanding of text generation parameters
by Sirhexalot
This n8n workflow allows you to update user roles in Zammad based on data from an Excel file. The workflow automates role assignments, ensuring efficient and consistent updates. Features Excel Integration**: Import user data from an Excel file containing emails and role assignments. Dynamic Updates**: Match Zammad users by email and update their roles. Error Handling**: Continue workflow execution even if some updates fail. Customizable Variables**: Configure Zammad API URL, API key, and Excel file URL. Usage Import the Workflow: Upload the provided .json file into your n8n instance. Set Variables: zammad_base_url: Your Zammad instance URL. excel_source_url: URL of the Excel file containing user data. Authentication for Zammad Create in the Node "Find Zammad User by email" and "Update User Roles" a Header Auth Authentication Name**: Authorization Value**: Bearer <put here your zammad api token> Run the Workflow: Execute the workflow to update user roles based on the Excel data. Issues and Suggestions For issues or suggestions, visit the GitHub Repository.