by Jitesh Dugar
👤 Who’s it for This workflow is designed for employees who need to submit expense claims for business trips. It automates the process of extracting data from receipts/invoices, logging it to a Google Sheet, and notifying the finance team via email. Ideal users: Employees submitting business trip expense claims HR or Admins reviewing travel-related reimbursements Finance teams responsible for processing claims ⚙️ How it works / What it does Employee submits a form with trip information (name, department, purpose, dates) and uploads one or more receipts/invoices (PDF). Uploaded files are saved to Google Drive for record-keeping. Each PDF is passed to a DocClaim Assistant agent, which uses GPT-4o and a structured parser to extract structured invoice data. The data is transformed and formatted into a standard JSON structure. Two parallel paths are followed: Invoice records are appended to a Google Sheet for centralized tracking. A detailed HTML email summarizing the trip and expenses is generated and sent to the finance department for claim processing. 🛠 How to set up Create a form to capture: Employee Name Department Trip Purpose From Date / To Date Receipt/Invoice File Upload (multiple PDFs) Configure file upload node to store files in a specific Google Drive folder. Set up DocClaim Agent using: GPT-4o or any LLM with document analysis capability Output parser for standardizing extracted receipt data (e.g., vendor, total, tax, date) Transform extracted data into a structured claim record (Code Node). Path 1: Save records to a Google Sheet (one row per expense). Path 2: Format the employee + claim data into a dynamic HTML email Use Send Email node to notify the finance department (e.g., finance@yourcompany.com) ✅ Requirements Jotform account with expense form setup Sign up for free here n8n running with access to: Google Drive API (for file uploads) Google Sheets API (for logging expenses) Email node (SMTP or Gmail for sending) GPT-4o or equivalent LLM with document parsing ability PDF invoices with clear formatting Shared Google Sheet for claim tracking Optional: Shared inbox for finance team 🧩 How to customize the workflow Add approval steps**: route the email to a manager before finance Attach original PDFs**: include uploaded files in the email as attachments Localize for other languages**: adapt form labels, email content, or parser prompts Sync to ERP or accounting system**: replace Google Sheet with QuickBooks, Xero, etc. Set limits/validation**: enforce max claim per trip or required fields before submission Auto-tag expenses**: add categories (e.g., travel, accommodation) for better reporting
by DigiMetaLab
How it works: Daily Trigger: Every morning at 8 AM, the workflow is automatically triggered. Fetch Trending Topics: The workflow collects trending topics from external sources, such as news RSS feeds and Reddit popular posts. These trends are merged and summarized to provide up-to-date context for content generation. Read Active Campaigns: The workflow reads all rows from the “Active Campaigns” Google Sheet, but only processes campaigns with a status of "active" to avoid generating content for paused or inactive campaigns. Enrich Campaigns with Trends: Each active campaign is enriched with the latest trending topics, so the generated content can reference current events or popular themes. AI Content Generation: For each enriched campaign, Groq AI generates: An engaging post caption tailored to the platform and target audience Creative direction with visual suggestions Relevant hashtags (5-10) Best posting time recommendation for the platform Quality Scoring: The workflow calculates a quality score for each generated content idea, considering factors like caption length, hashtag count, and creative direction. Append to Google Sheets: The generated content ideas, along with their quality scores and other details, are appended to the “Daily Content Plan” Google Sheet for record-keeping and team collaboration. Schedule in Google Calendar: For each campaign, an event is created in Google Calendar with the content details and recommended posting time, ensuring the team is reminded to review or publish the content. Daily Email Summary (Optional): At the end of the process, a summary email can be sent to the team, including statistics such as the number of campaigns processed, average quality score, and a platform breakdown. Set up steps: Prepare Your Google Sheets: Create a sheet named “Active Campaigns” with columns: Project Name, Theme, Target Audience, Platform, and Status (to mark campaigns as active/inactive). Create another sheet named “Daily Content Plan” with columns for Project Name, Date, Platform, Caption, Creative Direction, Hashtags, and any other details you want to track. Connect Google Services to n8n: In n8n, set up and authenticate your Google Sheets and Google Calendar credentials. You can find authentication information in the n8n documentation for Google credentials. Add a Cron Node: Drag in a Cron node and set it to trigger every day at 8:00 AM. Read Campaigns from Google Sheets: Add a Google Sheets node. Set the operation to “Read Rows” and select your “Active Campaigns” sheet. (Optional) Use a Filter or IF node to process only rows where Status is “active”. (Optional) Fetch Trending Topics: If you want to enrich your content with trending topics, add nodes to fetch data from RSS feeds, Reddit, or other sources. Process Each Campaign: Use a SplitInBatches node to process each campaign row individually. Generate Content Ideas with Groq AI: Add a Groq AI node (or OpenAI node if Groq is not available). Configure the prompt to generate a content idea using the campaign’s theme, target audience, and platform. You can reference fields from the Google Sheets node using expressions like $("Google Sheets").item.json['Theme']. Append Results to “Daily Content Plan”: Add another Google Sheets node. Set the operation to “Append” and select your “Daily Content Plan” sheet. Map the generated content fields to the appropriate columns. Schedule Events in Google Calendar: Add a Google Calendar node. Set the operation to “Create Event”. Use the project name and content idea for the event title and description, and set the event time as needed. (Optional) Send a Daily Summary Email: Add an Email node to send a summary of the day’s content plan to your team. Test the Workflow: Run the workflow manually to ensure all steps work as expected. Check that new content ideas appear in the “Daily Content Plan” sheet and that events are created in Google Calendar. Activate the Workflow: Once you’ve confirmed everything works, activate the workflow so it runs automatically every morning.
by Sankalp Dev
This automation workflow transforms Meta advertising data into executive ready presentation decks, eliminating manual report creation while ensuring stakeholders receive consistent performance insights. It generates professional Google Slides presentations from your ad campaigns and delivers them automatically via email to designated recipients. By combining scheduled data extraction with AI-powered analysis and automated presentation building, you'll receive polished, actionable reports that facilitate strategic advertising decisions and client communication Key Features: Scheduled automated summary deck generation (daily, weekly, or monthly) AI powered data analysis using advanced language models Intelligent presentation generation with actionable recommendations Direct email delivery of formatted summary decks Prerequisites: GoMarble MCP account and API access Anthropic account Google Slides, Google Drive & Gmail accounts n8n instance (cloud or self-hosted) Configuration Time: ~15-20 minutes Step By Step Setup: 1. Connect GoMarble MCP to n8n Follow the integration guide: GoMarble MCP Setup Configure your Meta Ads account credentials in GoMarble platform 2. Configure the Schedule Trigger 3.Customize the Ad Account Settings. Update the account name to match your ad account name. 4. Customise the Report Prompt (Although the workflow includes a pre configured template report prompt) Define specific metrics and KPIs to track Set analysis parameters and report format preferences 5. Set up AI Agent Configuration Configure Anthropic Claude model with your API credentials Connect the GoMarble MCP tools for Meta advertising data 6. Configure Google Services Integration Set up Google Slides OAuth2 API for presentation creation Configure Google Drive OAuth2 API for file management Link Gmail OAuth2 for automated email delivery 7. Customize Email Delivery Set recipient email addresses for stakeholders Customize email subject line and message content Advanced Configuration Modify report prompt to include specific metrics and KPIs Adjust slide content structure (5-slide format: Executive Snapshot, Channel KPIs, Top Campaigns, Under-performers, Action Recommendations) What You'll Get Automated Presentation Creation: Weekly Google Slides decks generated without manual intervention Professional Ads Analysis: Executive-ready performance summaries with key metrics and insights Structured Intelligence: Consistent 5-slide format covering spend, ROAS, campaign performance, and strategic recommendations Direct Stakeholder Delivery: Presentations automatically emailed as attachments to specified recipients Data-Driven Insights: AI-powered analysis of campaign performance with actionable next steps Scalable Reporting: Easy to modify timing, recipients, or content structure as business needs evolve Perfect for marketing teams, agencies, and business owners who need regular Meta advertising performance updates delivered professionally without manual report creation.
by Hans Wilhelm Radam
📌 Title (SEO-Friendly) Automate Facebook Messenger orders to Google Sheets and Google Calendar Introduction This workflow automates Facebook Messenger order management by connecting your Facebook Page with Google Sheets and Google Calendar. It’s designed to help small businesses save time, reduce errors, and streamline order-taking. Every time a customer messages your page, they receive a structured order form, their responses are parsed, and the details are saved directly to Google Sheets. The same workflow also creates a Google Calendar event, ensuring you never miss a delivery or pickup schedule. Who’s It For Small businesses** selling products through Facebook Messenger. Entrepreneurs** who want to eliminate manual order-taking. Teams** that need a centralized order tracker (Google Sheets) and automatic reminders (Google Calendar). How It Works Listen to incoming messages on Facebook Messenger. Send an automated greeting and order form to the customer. Parse their responses (items, quantity, payment method, etc.). Save order details into Google Sheets for easy tracking. Create a matching Google Calendar event for the order date/time. Send a confirmation message and an optional upsell suggestion. Requirements Facebook Page** with Messenger enabled. Meta for Developers account** to create a Facebook App and generate a Page Access Token. Google Sheets** account with a spreadsheet containing the following columns: Date, Customer Name, Order Details, Payment Method, Order Status, Notes Google Calendar** account for order scheduling. n8n instance** (cloud or self-hosted). 💡 Security Best Practice: Store your Page Access Token and Google credentials in n8n Credentials (not hardcoded in nodes). Setup Instructions 1. Facebook Messenger Connection Go to Meta for Developers. Create a Messenger App and generate a Page Access Token. Copy the Webhook URL from your n8n Webhook Trigger node. Add the webhook URL and verify it in your Facebook Page settings. 2. Google Sheets Setup Create a new spreadsheet named Messenger Orders. Add columns: Date, Customer Name, Order Details, Payment Method, Order Status, Notes. Share the sheet with the Google account connected in n8n. 3. Google Calendar Setup Connect your Google Calendar credentials in n8n. Select the calendar where orders should be added. 4. Import & Configure Workflow Download this workflow template. Replace placeholders ({{YOUR_PAGE_ACCESS_TOKEN}}, {{YOUR_GOOGLE_SHEET_ID}}, etc.). Test by sending a message to your Facebook Page. Customization Personalize messages** in the Messenger node (greeting, upsell suggestions). Add extra fields such as delivery address or contact number to both the form and the Google Sheet. Extend the workflow by adding Telegram, Email, or SMS notifications for customers or staff. Use Filter nodes to route VIP orders or high-value purchases to a separate workflow. ⚡ Final Flow: Facebook Messenger → Order Form → Google Sheets → Google Calendar → Customer Confirmation 💬 Call to Action: Clone this workflow, connect your accounts, and start automating your Messenger orders in minutes!
by Marco Venturi
How it works This workflow sources news from news websites. The information is then passed to an LLM, which processes the article's content. An editor approves or rejects the article. If accepted, the article is first published on the WordPress site and then on the LinkedIn page. Setup Instructions 1. Credentials You'll need to add credentials for the following services in your n8n instance: News API**: A credential for your chosen news provider. LLM**: Your API key for the LLM you want to use. Google OAuth**: For both Gmail and Google Sheets. WordPress OAuth2**: To publish articles via the API. See the WordPress Developer Docs. LinkedIn OAuth2**: To share the post on a company page. 2. Node Configuration Don't forget to: Fetch News (HTTP Request)**: Set the query parameters (keywords, language, etc.) for your news source. Basic LLM Chain: Review and **customize the prompt to match your desired tone, language, and style. Approval request (Gmail)**: Set your email address in the Send To field. HTTP Request WP - Push article**: Replace <site_Id> in the URL with your WordPress Site ID. getImageId (Code Node)**: Update the array with your image IDs from the WordPress Media Library. Create a post (LinkedIn)**: Enter your LinkedIn Organization ID. Append row in sheet (Google Sheets)**: Select your Google Sheet file and the target sheet. All Email Nodes**: Make sure the Send To field is your email.
by Avkash Kakdiya
How it works This workflow monitors incoming Gmail messages for refund requests and uses AI to extract the order ID and reason. It then retrieves order details from Shopify to evaluate refund eligibility. Based on the order status, it automatically approves or routes the request for manual review. Customers and internal teams are notified accordingly, and all actions are logged in Google Sheets. Step-by-step Capture refund requests from email** Gmail Trigger – Detects unread emails with “Refund Request” in the subject. AI Agent2 – Extracts order ID and reason using AI. Groq Chat Model – Provides the language model used by the AI agent. Code in JavaScript – Converts AI output into structured JSON. Fetch order details from Shopify** Get an order – Retrieves order information using the extracted order ID. Evaluate refund eligibility** If – Checks whether the order status is “Delivered” to allow auto-approval. Handle responses and logging** Send a message to customer – Sends approval confirmation if eligible. Send a message to the team – Notifies team for manual review cases. Send a message to customer for "Pending" Status – Updates customer about manual review. Logs to Sheet – Records all refund actions and details in Google Sheets. Why use this? Automates repetitive refund handling tasks and reduces workload Improves customer experience with faster response times Ensures consistent decision-making based on order status Keeps a centralized log for auditing and reporting Easily extendable with additional validation rules or integrations
by Avkash Kakdiya
How it works This workflow automates the handling of new lead responses received in Gmail. It captures emails with a specific label, analyzes the message using AI to determine sentiment, intent, urgency, next action, and priority, and then decides whether follow-up is needed. If required, it creates tasks in HubSpot, notifies the sales team via Slack, and logs all details into Google Sheets for tracking. Step-by-step Trigger on New Lead Email Workflow starts whenever a new email with a defined Gmail label arrives. Captures the sender’s email, subject, message snippet, and timestamp. Normalize Email Data Standardizes Gmail fields into structured values: leadEmail (sender’s address) subject (email subject) message (email content snippet) source (Gmail) receivedAt (timestamp) AI-Powered Lead Analysis Uses OpenAI to analyze the lead’s message. Extracts: Sentiment (Positive / Neutral / Negative) Intent (Interested, Not Interested, Needs Info, Ready to Buy, Objection) Urgency (High / Medium / Low) Next Action (Call, Email, Demo, Quote, No Action) Summary (1–2 sentence description) Priority (Hot / Warm / Cold) Parsed results are merged with the original email data. Flags are added: needsFollowUp (true/false) isHighPriority (true/false) Decision: Needs Follow-Up? If AI suggests a follow-up action, the workflow continues. Otherwise, the process stops here. Create HubSpot Task Automatically creates a HubSpot CRM task for the sales team. Task includes email subject, body, and lead details. Notify Sales Team on Slack Sends a formatted message to Slack with key lead insights: Summary Lead email Priority Urgency Date of analysis Log Lead Data to Google Sheets Appends structured data to Google Sheets for record-keeping. Stores all fields: Email, Date, Subject, Message, Sentiment, Intent, Urgency, Next Action, Summary, and Priority. Why use this? Automates lead triage directly from Gmail. Saves time by using AI-powered analysis instead of manual review. Ensures no potential lead is missed by logging into Google Sheets. Provides instant sales team alerts on high-priority leads. Integrates seamlessly with HubSpot CRM for structured follow-up. Keeps your sales pipeline efficient, organized, and proactive.
by Avkash Kakdiya
How it works This workflow fetches the latest blog post from a WordPress API and checks against a Google Sheets tracker to prevent duplicate processing. If a new post is found, the workflow updates the tracker and cleans the blog data. The cleaned content is then sent to a Gemini-powered AI agent to generate a newsletter and LinkedIn teaser. Finally, the workflow distributes the content via LinkedIn and Gmail to subscribers. Step-by-step Detect new blog content** Schedule Trigger – Runs the workflow automatically at intervals. HTTP Request – Fetches the latest blog post from WordPress. Last ID – Retrieves the last processed blog ID from Google Sheets. If – Compares IDs to check if the blog is new. Update Last ID – Updates the sheet with the latest blog ID. Clean and generate AI content** data cleanse – Cleans HTML, extracts title, content, and image. AI Agent2 – Generates newsletter and teaser content. Google Gemini Chat Model – Provides AI model for content generation. Distribute content across channels** Format Response – Parses and structures AI output. Create a post – Publishes content on LinkedIn. Email List – Fetches subscriber emails from Google Sheets. Loop Over Items – Iterates through each recipient. Send Email – Sends HTML newsletter via Gmail. Why use this? Automates end-to-end blog promotion workflow Prevents duplicate publishing using ID tracking Uses AI to generate engaging content instantly Saves time on manual posting and emailing Easily scalable for growing audiences
by oka hironobu
Forecast sales trends and generate reports with Stripe, Sheets, and Gemini AI Who is this for Revenue operations teams, SaaS growth managers, and sales directors who need automated weekly insights from their Stripe payment data. Perfect for small to medium businesses tracking subscription revenue, one-time charges, and refund patterns without manual spreadsheet work. How it works Every Monday morning, the workflow pulls the previous week's charges, subscriptions, and refunds from Stripe's API. It merges this fresh data with historical sales records stored in Google Sheets, then calculates key metrics like week-over-week growth, moving averages, and MRR estimates. Google Gemini AI analyzes the compiled data to identify trends, predict next week's performance, and flag unusual revenue patterns. When significant changes are detected (20%+ variance), the system triggers targeted alerts through a separate Slack channel. All insights get logged to a Google Sheets history for tracking, while a comprehensive dashboard page updates automatically in Notion. The weekly summary posts to your main sales Slack channel, and executives receive detailed email reports with strategic recommendations. How to set up Configure Stripe API credentials with read access to charges, subscriptions, and refunds. Set up Google Sheets OAuth for both reading historical data and writing analysis logs. Create a Notion integration with page update permissions for your sales dashboard. Add Slack OAuth credentials for posting to your chosen sales and alerts channels. Configure Gmail SMTP for executive email delivery. Update the Configuration Settings node with your specific IDs, channels, and email addresses. Requirements Stripe account with API access Google Sheets with historical sales data Notion workspace for dashboard Slack workspace with posting permissions Gmail account for executive reports Google Gemini API access How to customize Adjust the anomaly detection threshold in the Calculate Trends code node (currently 50% variance triggers alerts). Modify the Slack message templates, email formatting, or add additional metrics to the Notion dashboard. Change the schedule trigger from weekly to daily or monthly based on your reporting needs.
by Nirav Gajera
🤖 AI Resume Screener — Google Forms to Automated Shortlisting & Email Automatically score every job application with AI, update your tracking sheet, and send personalised emails to candidates — all without human review. 📖 Description This workflow automates your entire first-round resume screening process. When a candidate submits your Google Form application, the workflow triggers, extracts their details, scores them against the job description using AI, writes the results back to your Google Sheet, and sends the right email — a congratulations to shortlisted candidates, a polite rejection to others. Your HR team only reviews candidates the AI has already scored 7 or above. Built for companies hiring across multiple roles simultaneously, HR teams wanting to reduce screening time, and startups with no dedicated recruiting staff. ✨ Key Features Google Sheets Trigger** — fires automatically when a new application row is added Duplicate prevention** — tracks processed rows with a Processed column, never scores the same application twice Multi-role support** — built-in Job Description map for 5 roles, easily extendable AI scoring 1–10** — Google Gemini scores each candidate against the JD with strengths, weaknesses, recommendation Direct sheet write via API** — writes score + grade + status to exact row using Google Sheets API Smart email routing** — score ≥ 7 → shortlisted (HR alert + candidate email), score < 7 → rejection email Rate limit protection** — Wait node between HR alert and candidate email prevents SMTP throttling Robust AI parsing** — 3-layer fallback ensures AI output always produces a usable result 🔄 How It Works New Google Form submission ↓ Google Sheets Trigger (rowAdded, polls every minute) ↓ Read All Rows → Filter Unprocessed Rows (col_18 / Processed ≠ 1) ↓ Extract Fields + Load Job Description → name, email, phone, position, experience, skills, cover note → loads matching JD from built-in map ↓ AI Resume Scorer (Google Gemini) → score: 1–10 → grade: Strong Yes / Maybe / No → strengths, weaknesses, recommendation, summary ↓ Parse AI Output (3-layer fallback) ↓ Build Sheet Request → Write to Sheet via API → writes score, grade, strengths, weaknesses, recommendation, summary, status, timestamp, Processed=1 ↓ Score ≥ 7? ✅ YES → Alert Email to HR + Wait 10s → Shortlist Email to Candidate ❌ NO → Rejection Email to Candidate 🤖 AI Scoring System The AI scores each candidate from 1 to 10 against the job description: | Score | Grade | Action | | :---: | :--- | :--- | | 8–10 | Strong Yes | Shortlisted ✅ | | 7 | Strong Yes / Maybe | Shortlisted ✅ | | 5–6 | Maybe | Rejected ❌ | | 1–4 | No | Rejected ❌ | For each application the AI also provides: Strengths** — what the candidate does well vs the JD Weaknesses** — gaps or concerns Recommendation** — e.g. "Invite for technical interview" Summary** — 2–3 sentence overall assessment 📋 Built-in Job Descriptions Five roles are pre-configured and auto-matched by position name: | Role | Key Requirements | | :--- | :--- | | Frontend Developer | 2+ yrs React/Vue, HTML/CSS/JS, REST APIs, Git | | Backend Developer | 2+ yrs Node.js/Python/Java, PostgreSQL/MongoDB, Docker | | UI/UX Designer | 2+ yrs UI/UX, Figma or Adobe XD, portfolio | | Project Manager | 3+ yrs PM, PMP/Scrum preferred, Jira/Asana | | Digital Marketing Executive | 2+ yrs digital marketing, Google Ads, Meta Ads, GA4 | Add more roles by editing the JD_MAP object in the Extract Fields + Load JD node. 📧 Email Templates Shortlist Email (to candidate) Subject: Congratulations [Name] - You have been shortlisted! Navy blue header Score table (score/10, grade, position, experience, skills) Strengths highlighted in green AI assessment in blue Promise: HR contacts within 2 business days HR Alert Email (internal) Subject: Strong Candidate - [Name] for [Position] Amber header — urgent feel Full candidate details + complete AI breakdown Strengths, weaknesses, recommendation, summary all included Rejection Email (to candidate) Subject: Your application for [Position] - Update Grey header — professional and neutral Polite decline with encouragement No score or feedback shared 🛠 Setup Requirements 1. Google Form Create a Google Form with these fields: | Field | Type | | :--- | :--- | | Full Name | Short answer | | Email Address | Short answer | | Phone Number | Short answer | | Select the Position You Are Applying For | Dropdown | | Years of Experience | Short answer | | Relevant Skills | Long answer | | Cover Note | Long answer | Link the form to a Google Sheet (Responses tab). 2. Google Sheet — Response Sheet Columns The form creates columns A–H automatically. Add these columns manually for AI results: | Col | Header | Filled by | | :---: | :--- | :--- | | A | Timestamp | Google Forms | | B | Select the Position... | Google Forms | | C | Full Name | Google Forms | | D | Email Address | Google Forms | | E | Phone Number | Google Forms | | F | Years of Experience | Google Forms | | G | Relevant Skills | Google Forms | | H | Upload CV | Google Forms | | I | Cover Note | Google Forms | | J | AI Score | This workflow | | K | Grade | This workflow | | L | Strengths | This workflow | | M | Weaknesses | This workflow | | N | Recommendation | This workflow | | O | Summary | This workflow | | P | Status | This workflow | | Q | Processed At | This workflow | | R | Processed | This workflow (1 = done) | > Important: The workflow uses column R (Processed) to track which rows have been scored. Rows where R = 1 are skipped on subsequent triggers. 3. Credentials Required | Credential | Used for | Free? | | :--- | :--- | :--- | | Google Sheets Trigger OAuth2 | Detects new rows | Free | | Google Sheets OAuth2 | Read rows + write results | Free | | Google Gemini (PaLM) API | AI resume scoring | Free tier available | | SMTP | Sending emails | Depends on provider | 4. Update Sheet ID In the Read All Rows and Write to Sheet via API nodes, replace the Sheet ID with your own: https://docs.google.com/spreadsheets/d/YOUR_SHEET_ID/... 5. Update Email Addresses In all three email nodes, update: fromEmail — your HR sending address HR alert toEmail — your internal HR inbox SMTP credential — your email provider ⚙️ Workflow Nodes | Node | Type | Purpose | | :--- | :--- | :--- | | Google Sheets Trigger | Trigger | Fires on new row (polls every minute) | | Read All Rows | Google Sheets | Reads all form responses | | Filter Unprocessed Rows | Code | Skips rows where Processed = 1 | | Extract Fields + Load JD | Code | Extracts candidate data + matches JD | | AI Resume Scorer | AI Agent | Scores candidate vs JD using Gemini | | Google Gemini Chat Model | LLM | AI model for scoring | | Parse AI Output | Code | Parses JSON with 3-layer fallback | | Build Sheet Request | Code | Prepares API write request for exact row | | Write to Sheet via API | HTTP Request | Writes results to columns J–R | | Score ≥ 7? | IF | Routes by score | | Alert Email - HR Team | Email Send | Notifies HR of strong candidates | | Wait 10s | Wait | Prevents SMTP rate limiting | | Shortlist Email - Candidate | Email Send | Congratulations to shortlisted | | Rejection Email - Candidate | Email Send | Polite rejection to others | 🔑 Key Technical Details Why HTTP Request for sheet write instead of Google Sheets node? The standard Google Sheets node cannot reliably write to a specific row by row number. Using the Sheets API PUT values/{range} endpoint writes to the exact cell range Form responses 1!J{rowNum}:R{rowNum} — always the correct row regardless of concurrent submissions. Why Read All Rows then Filter instead of reading one row? The Google Sheets Trigger fires on rowAdded but may not pass the exact new row data reliably. Reading all rows and filtering by Processed ≠ 1 is more reliable and handles backlog processing too. The Processed column (R) Set to 1 after scoring completes. This prevents re-processing if the trigger fires again before the workflow finishes, or if old unprocessed rows exist. 3-layer AI output fallback: Direct JSON parse Strip markdown fences then parse Regex extract JSON block Default values if all fail (score: 5, grade: Maybe) 📊 Sample Sheet Output After Scoring Col J (AI Score): 8 Col K (Grade): Strong Yes Col L (Strengths): 3+ yrs React experience; Strong TypeScript skills; Relevant API work Col M (Weaknesses): No Docker experience mentioned; No TypeScript explicitly listed Col N (Recommendation): Invite for technical interview Col O (Summary): Strong frontend candidate with solid React/Vue background. Experience aligns well with role requirements. Minor gaps in DevOps knowledge. Col P (Status): Shortlisted Col Q (Processed At): 2026-03-18T10:30:00.000Z Col R (Processed): 1 🔧 Customisation Add more roles: Edit the JD_MAP object in Extract Fields + Load JD: const JD_MAP = { 'Your New Role': 'ROLE: ... REQUIREMENTS: ...', // add as many as needed }; Change the score threshold: In the Score ≥ 7? IF node, change rightValue: 5 to any number. Setting to 8 makes the bar higher (only Strong Yes candidates shortlisted). Add a second HR alert channel: After the HR Alert Email, add a Slack or Telegram node to ping your team instantly for high-scoring candidates. Add calendar booking link: Include a Calendly link in the shortlist email so candidates can self-schedule interviews immediately. Extend with CV parsing: Add a Google Drive node before the AI scorer to download the CV attachment, extract text, and include it in the AI prompt for more accurate scoring. ⚠️ Important Notes The Google Sheets Trigger polls every minute — there may be up to a 1-minute delay after form submission before scoring begins The Processed column must exist in your sheet (column R) before activating the workflow Trailing spaces in Google Forms column headers are common — the key.trim() normalization in the code handles this automatically The Wait node between HR alert and shortlist email is intentional — prevents hitting SMTP rate limits when processing multiple candidates 💡 Enhancement Ideas CV download + parse** — download Google Drive CV attachment and include content in AI scoring Calendly integration** — auto-create interview slot and include booking link in shortlist email Slack alert** — instant Slack message to hiring manager for score ≥ 9 candidates Airtable sync** — mirror all candidate data to an Airtable CRM for pipeline tracking Telegram bot** — let HR check candidate status by texting a bot with the candidate email Multi-stage pipeline** — add a second workflow that triggers when HR marks a candidate for second round 📦 Requirements Summary n8n (cloud or self-hosted) Google Workspace account (Forms + Sheets) Google AI Studio account for Gemini API key (free tier available) SMTP email account (Gmail, SendGrid, Mailtrap etc.) Built with n8n · Google Gemini AI · Google Forms · Google Sheets · SMTP
by Harry Siggins
Research meeting attendees and prepare daily agenda in Slack This workflow automatically researches your meeting attendees every morning and sends you a comprehensive brief in Slack with context about who you're meeting, their company, and key talking points. Who's it for Sales professionals who need quick context before meetings Executives with packed calendars who need meeting preparation Customer success teams managing multiple client relationships Account managers preparing for client calls Business development teams researching prospects Anyone who wants to be better prepared for their daily meetings How it works Daily Trigger: Runs every weekday morning at 6 AM (customizable) to analyze your Google Calendar Calendar Analysis: Fetches all meetings scheduled for today and filters for external meetings (those with attendees other than yourself) AI-Powered Research: For each external meeting, an AI agent researches attendees using multiple sources: Searches your CRM (Attio) for existing contact information Queries Gmail history for past email interactions Searches past calendar events for previous meetings with attendees Performs web searches for recent news about attendees and their companies Retrieves company data from Apollo.io including industry, size, and technologies CRM Updates: Automatically creates new contact records in Attio for unknown attendees and adds meeting preparation notes to existing contacts Brief Generation: Compiles all research into a scannable, actionable meeting brief with key talking points Slack Delivery: Sends the formatted brief to your designated Slack channel for easy mobile access Setup requirements Google Calendar** OAuth2 connection (for fetching meetings) Slack** workspace with bot permissions (for receiving briefs) Gmail** OAuth2 connection (for email history search) OpenRouter** API key (for AI processing) Attio CRM** account and API token (optional - for contact management) Apollo.io** API key (optional - for company research) Anthropic** API key (optional - for advanced web search) How to customize Adjust Schedule: Modify the Schedule Trigger node to run at your preferred time - change from 6 AM to whenever works best for your schedule Customize Research Sources: Remove CRM integration if you don't use Attio Remove Apollo.io if you don't need company research Add additional research tools as needed Modify Output Format: Edit the prompt in "Format Daily Meeting Brief" node to change how the information is structured and presented Change Delivery Method: Replace Slack with Microsoft Teams, email, or Discord Add multiple delivery channels if needed Send to different channels based on meeting type Filter Meetings: Adjust the filtering logic to include/exclude certain types of meetings based on keywords, attendees, or calendar properties Advanced customization Add VIP alerts**: Create special handling for meetings with executives or key clients Include preparation documents**: Automatically attach relevant files from Google Drive Time zone handling**: Adjust for meetings across different time zones Language support**: Modify prompts to generate briefs in different languages
by oka hironobu
Automate Business Card Management with LINE, AI, and Google Sheets Who's it for This workflow is designed for business professionals and sales teams who receive business card images via LINE and want to quickly digitize contact information with minimal manual work. It is best suited for users who process business cards one image at a time and want a simple, reliable automation rather than a high-volume ingestion pipeline. What it does This workflow processes a single business card image sent via LINE, extracts text using Google Gemini AI, and stores the structured contact information in Google Sheets. The workflow focuses on simplicity and clarity: it receives an image, performs AI-based OCR, parses the extracted text, saves the result, uploads the original image for reference, sends a thank-you email, and replies with the extracted data on LINE. How it works A single business card image is sent to the LINE bot. The workflow is triggered via a LINE webhook. The image file is downloaded and sent to Google Gemini AI for OCR. The extracted text is parsed into structured fields. The data is appended to Google Sheets. The image is uploaded to Google Drive. A thank-you email is sent via Gmail. The extracted information is sent back as a LINE reply. This workflow is intentionally designed to handle one image per execution. Requirements To use this workflow, you will need: A LINE Messaging API account A Google Gemini API key A Google account with access to Google Sheets and Google Drive A Gmail account for sending thank-you emails A Google Sheets document with the following column names: Company Name Contact Name Department Address Email Address Phone Number Important limitations This workflow does not support multiple images sent in a single message. Sending images in quick succession may trigger multiple executions and lead to unexpected results. Only the first image in an event payload is processed. OCR accuracy depends on image quality, lighting, and card design. These limitations are intentional to keep the workflow simple and easy to understand. How to set up Create a LINE Messaging API channel and obtain a Channel Access Token. Generate a Google Gemini API key. Update the Config node with your LINE token, Google Sheets ID, and Google Drive folder ID. Configure credentials for LINE, Google Gemini, Google Sheets, Google Drive, and Gmail. Register the n8n webhook URL in your LINE channel settings. Activate the workflow in n8n and test it with a single business card image. How to customize Modify the AI prompt in the “Extract Card Info” node to support different languages or fields. Adjust the parsing logic to match different business card layouts. Replace Google Sheets with a CRM or database. Add queueing or locking logic if you want to support batch or sequential image uploads. Note: This workflow was tested using real business card images sent individually via the LINE Messaging API. For production use, testing with your own card samples is strongly recommended.