by Yaron Been
This workflow contains community nodes that are only compatible with the self-hosted version of n8n. This workflow automatically tracks key sales pipeline metrics—new leads, deal stages, win rates—and sends actionable insights to your team. Eliminate manual CRM exports and stay on top of revenue health. Overview The automation queries your CRM API (HubSpot, Salesforce, or Pipedrive) on a schedule, pulls pipeline data, and feeds it into OpenAI for anomaly detection (e.g., stalled deals). Summaries and alerts appear in Slack, while daily snapshots are archived in Google Sheets for trend analysis. Tools Used n8n** – Pipeline orchestration CRM API** – Connects to your chosen CRM OpenAI** – Detects anomalies and highlights risks Slack** – Notifies reps and managers in real time Google Sheets** – Stores historical pipeline data How to Install Import the Workflow into n8n. Connect Your CRM: Provide API credentials in the HTTP Request node. Set Up OpenAI: Add your API key. Authorize Slack & Google Sheets. Customize Thresholds: Adjust what constitutes a stalled deal or low conversion. Use Cases Sales Management**: Monitor pipeline health without dashboards. Revenue Operations**: Detect bottlenecks early. Forecasting**: Use historical snapshots to improve predictions. Rep Coaching**: Alert reps when deals stagnate. Connect with Me Website**: https://www.nofluff.online YouTube**: https://www.youtube.com/@YaronBeen/videos LinkedIn**: https://www.linkedin.com/in/yaronbeen/ Get Bright Data**: https://get.brightdata.com/1tndi4600b25 (Using this link supports my free workflows with a small commission) #n8n #automation #salespipeline #crm #openai #slackalerts #n8nworkflow #nocode #revenueops
by Oneclick AI Squad
This comprehensive n8n workflow automates the entire travel business call management process, from initial customer inquiries to trip bookings and marketing outreach. The system handles incoming calls, validates trip details, processes bookings, captures leads, and manages outbound marketing campaigns to promote trip organizer services. It streamlines the complete sales cycle while maintaining organized data records for business intelligence. Essential Information The system operates across four distinct workflows to handle different aspects of travel call management. All call data is automatically captured and stored in organized spreadsheets for analysis and follow-up. The workflow validates trip details before processing to ensure data accuracy and prevent booking errors. Outbound marketing campaigns are automatically triggered based on lead detection and formatting. System Architecture Call Handling Pipeline**: The Detect Incoming Call node captures all incoming customer calls, followed by the Validate Trip Details node which verifies and processes trip information, and the Deliver Organizer Info node that provides relevant trip organizer details to callers. Booking Management Flow**: The Capture Voice Input node records customer booking requests, the Update Booking Record node processes and stores booking information, and the Send Booking Confirmation node delivers confirmation details to customers. Lead Generation Process**: The Detect New Lead node identifies potential customers from call data, the Format Lead Information node structures the lead data for marketing use, and the Initiate Marketing Outreach node launches targeted marketing campaigns. Data Management System**: The Receive Call Response node collects call interaction data, the Log User Input node records customer information in spreadsheets, and the Relay Response to System node ensures data synchronization across all components. Implementation Guide Import the workflow into n8n and configure phone system integration for call detection and voice capture. Set up spreadsheet connections for booking records, lead management, and call logging. Configure marketing automation tools for outbound campaign management. Test each workflow section independently before enabling the complete system. Monitor call handling accuracy and adjust validation rules as needed. Technical Dependencies Phone system API or telephony service for call detection and voice processing Spreadsheet service (Google Sheets, Excel Online) for data storage and management Marketing automation platform for outbound campaign execution Voice recognition service for capturing and processing customer input CRM integration for lead management and customer tracking Database & Sheet Structure Call Tracking Sheet**: Columns should include Call_ID, Customer_Phone, Call_Time, Call_Duration, Call_Status, Trip_Interest, Organizer_Assigned Booking Records Sheet**: Required columns are Booking_ID, Customer_Name, Customer_Phone, Destination, Travel_Dates, Group_Size, Booking_Status, Confirmation_Sent Lead Management Sheet**: Essential columns include Lead_ID, Customer_Name, Phone_Number, Email, Trip_Preference, Lead_Source, Lead_Status, Marketing_Campaign_Sent Trip Organizer Database**: Contains Organizer_ID, Organizer_Name, Specialization, Contact_Info, Availability_Status, Performance_Rating Marketing Outreach Log**: Tracks Campaign_ID, Lead_ID, Campaign_Type, Send_Date, Response_Status, Follow_up_Required Customization Possibilities Adjust the Validate Trip Details node to include specific travel validation rules or partner requirements. Modify the Format Lead Information node to match your CRM system's data structure and marketing campaign formats. Configure the Initiate Marketing Outreach node to integrate with your preferred marketing platforms and campaign templates. Customize the data logging structure in the Log User Input node to capture additional customer information or booking details. Add additional validation steps or approval workflows between booking capture and confirmation sending.
by Lorena
This workflow synchronizes data both ways between Pipedrive and HubSpot. Cron node** schedules the workflow to run every minute. Pipedrive* and *Hubspot nodes** pull in both lists of persons from Pipedrive and contacts from HubSpot. Merge1* and *Merge2 nodes** with the option Remove Key Matches identify the items that uniquely exist in HubSpot and Pipedrive, respectively. Update Pipedrive* and *Update HubSpot nodes** take those unique items and add them in Pipedrive and HubSpot, respectively.
by Airtop
About The ICP Company Scoring Automation Sorting through lists of potential leads manually to determine who's truly worth your sales team's time isn't just tedious, it's incredibly inefficient. Without proper qualification, your team might spend hours pursuing prospects who aren't the right fit for your product, while ideal customers slip through the cracks. How to Automate Identifying Your Ideal Customers With this automation, you'll learn how to automatically score and prioritize leads using data extracted directly from LinkedIn profiles via Airtop's integration with n8n. By the end, you'll have a fully automated workflow that analyzes prospects and calculates an Ideal Customer Profile (ICP) score, helping your sales team focus on high-potential opportunities. What You'll Need A free Airtop API key A copy of this Google Sheets Understanding the Process This automation transforms how you qualify and prioritize leads by extracting real-time, accurate information directly from LinkedIn profiles. Unlike static databases that quickly become outdated, this workflow taps into the most current professional information available. The workflow in this template: Uses Airtop to extract comprehensive LinkedIn profile data Analyzes the data to calculate an ICP score based on AI interest, technical depth, and seniority Updates your Google Sheet with the enriched data and the ICP Company score Company ICP Scoring Workflow Our company-focused workflow analyzes company LinkedIn profiles with a comprehensive set of criteria: Company Identity Extraction Company Scale Assessment Business Classification Technical Sophistication Assessment Investment Profile To then calculate the ICP Scoring, it will focus on: AI Implementation Level: Low-5 pts, Medium-10 pts, High-25 pts Technical Sophistication: Basic-5 pts, Intermediate-15 pts, Advanced-25 pts, Expert-35 pts Employee Count: 0-9 employees-5 pts, 10-150 employees-25 pts, 150+ employees-30 pts Automation Agency Status: True-20 pts, False-0 pts Geography: US/Europe Based-10 pts, Other-0 pts Setting Up Your Automation We've created ready-to-use templates for both person and company ICP scoring. Here's how to get started: Configure your connections Connect your Google Sheets account Add your Airtop API key (obtain from the Airtop dashboard) Set up your Google Sheet Ensure your Google Sheet has the necessary columns for input data and result fields Ensure that columns Linkedin_URL_Company and ICP_Score_Company exist at least Configure the Airtop module Set up the Airtop module to use the appropriate LinkedIn extraction prompt Use our provided prompt that extracts company profile data Customization Options While our templates work out of the box, you might want to customize them for your specific needs: Modify the ICP scoring criteria: Adjust the point values or add additional criteria specific to your business Add notification triggers: Set up Slack or email notifications for high-value leads that exceed a certain ICP threshold Implement batch processing: Modify the workflow to process leads in batches to optimize performance Add conditional logic: Create different scoring models for different industries or product lines Integrate with your CRM: Integrate this automation with your preferred CRM to get the details added automatically for you Real-World Applications Here's how businesses are using this automation: AI Sales Platform: A B2B AI company could implement this workflow to process their trade show lead list of contacts. Within hours, they can identify the top 50 prospects based on ICP score. SaaS Analytics Tool: A SaaS company could implement LinkedIn enrichment to identify which companies fit best. The automation processes weekly leads and categorizes them into high, medium, and low priority tiers, allowing their sales team to focus on the most promising opportunities first. Best Practices To get the most out of this automation: Review and refine your ICP criteria quarterly: What constitutes an ideal customer may evolve as your product and market develop Create tiered follow-up processes: Develop different outreach strategies based on ICP score ranges Perform regular data validation: Periodically check the accuracy of the automated scoring against your actual sales results What's Next? Now that you've automated your ICP scoring with LinkedIn data, you might be interested in: Setting up automated outreach sequences based on ICP score thresholds Creating custom reporting dashboards to track conversion rates by ICP segment Expanding your scoring model to include additional data sources Implementing lead assignment automation based on ICP scores Happy automating!
by Airtop
About The ICP Person Scoring Automation Sorting through lists of potential leads manually to determine who's truly worth your sales team's time isn't just tedious, it's incredibly inefficient. Without proper qualification, your team might spend hours pursuing prospects who aren't the right fit for your product, while ideal customers slip through the cracks. How to Automate Identifying Your Ideal Customers With this automation, you'll learn how to automatically score and prioritize leads using data extracted directly from LinkedIn profiles via Airtop's built-in integration with n8n. By the end, you'll have a fully automated workflow that analyzes prospects and calculates an Ideal Customer Profile (ICP) score, helping your sales team focus on high-potential opportunities. What You'll Need A free Airtop API key A copy of this Google Sheets Understanding the Process This automation transforms how you qualify and prioritize leads by extracting real-time, accurate information directly from LinkedIn profiles. Unlike static databases that quickly become outdated, this workflow taps into the most current professional information available. The workflow in this template: Uses Airtop to extract comprehensive LinkedIn profile data Analyzes the data to calculate an ICP score based on AI interest, technical depth, and seniority Updates your Google Sheet with the enriched data and the ICP score Person ICP Scoring Workflow Our person-focused workflow evaluates individual LinkedIn profiles to determine how well they match your ideal customer profile by: Extracting data for each individual Analyzing their profile to determine seniority and technical depth The system then automatically calculates an ICP score based on the following criteria: AI Interest: beginner-5 pts, intermediate-10 pts, advanced-25 pts, expert-35 pts Technical Depth: basic-5 pts, intermediate-15 pts, advanced-25 pts, expert-35 pts Seniority Level: junior-5 pts, mid-level-15 pts, senior-25 pts, executive-30 pts Setting Up Your Automation Here's how to get started: Configure your connections Connect your Google Sheets account Add your Airtop API key (obtain from the Airtop dashboard) Set up your Google Sheet Ensure your Google Sheet has the necessary columns for input data and result fields Ensure that columns Linkedin_URL_Person and ICP_Score_Person exist at least Configure the Airtop module Set up the Airtop module to use the appropriate LinkedIn extraction prompt Use our provided prompt that extracts individual profile data Customization Options While our templates work out of the box, you might want to customize them for your specific needs: Modify the ICP scoring criteria: Adjust the point values or add additional criteria specific to your business Add notification triggers: Set up Slack or email notifications for high-value leads that exceed a certain ICP threshold Implement batch processing: Modify the workflow to process leads in batches to optimize performance Add conditional logic: Create different scoring models for different industries or product lines Integrate with your CRM: Integrate this automation with your preferred CRM to get the details added automatically for you Real-World Applications Here's how businesses are using this automation: AI Sales Platform: A B2B AI company could implement this workflow to process their trade show lead list of contacts. Within hours, they can identify the top 50 prospects based on ICP score. SaaS Analytics Tool: A SaaS company could implement LinkedIn enrichment to identify which companies fit best. The automation processes weekly leads and categorizes them into high, medium, and low priority tiers, allowing their sales team to focus on the most promising opportunities first. Best Practices To get the most out of this automation: Review and refine your ICP criteria quarterly: What constitutes an ideal customer may evolve as your product and market develop Create tiered follow-up processes: Develop different outreach strategies based on ICP score ranges Perform regular data validation: Periodically check the accuracy of the automated scoring against your actual sales results What's Next? Now that you've automated your ICP scoring with LinkedIn data, you might be interested in: Setting up automated outreach sequences based on ICP score thresholds Creating custom reporting dashboards to track conversion rates by ICP segment Expanding your scoring model to include additional data sources Implementing lead assignment automation based on ICP scores Happy automating!
by tbphp
Overview This n8n template monitors specified GitHub repositories. When a new release is published, it automatically fetches the information, uses AI (Google Gemini by default) to summarize and translate it into Chinese, and sends a formatted notification to a designated Slack channel. Core Features: Automated Monitoring**: Checks for updates on a predefined schedule. Intelligent Processing**: Uses AI to extract key information and translate. Error Handling**: Sends an error notification if fetching RSS for a single repository fails, without affecting others. Duplicate Prevention**: Remembers the last processed release ID using Redis to ensure only new content is pushed. Prerequisites Slack**: Configure your Slack app credentials in n8n. Redis**: Have an available Redis service and configure its credentials in n8n. AI Provider (Gemini)**: Configure credentials for Google Gemini (or your chosen AI model) in n8n. Configuration Instructions After importing the template, you need to modify the following key nodes: Cron Trigger: Adjust the Rule setting to change the update check frequency (default is 0 */10 9-23 * * *, checking every 10 minutes between 9 AM and 11 PM daily). GitHub Config (Repository List - Code Node): Edit the JavaScript array within this node's code area. Modify or add the repositories you want to follow. Each repository object needs a name (custom display name) and github (format: owner/repo). Example: { "name": "n8n", // Custom display name "github": "n8n-io/n8n" // GitHub path }, { "name": "LobeChat", "github": "lobehub/lobe-chat" } // ... add more repositories Redis and Redis2 (Redis Connection): Select your configured Redis credentials in both nodes. Gemini (AI Model): Select your configured Google Gemini credentials. (Optional) Replace with a different supported AI model node and select its credentials. Information Extractor (AI Processing & Translation): Main Configuration: Review the System Prompt. By default, it asks the AI to extract information and translate it into Chinese. Modify this prompt if you need a different language or summary style. Send Message and Send Error (Slack Notifications): Select your configured Slack credentials in both Slack nodes. Set the target Channel ID for notifications. Workflow Overview Start: Cron Trigger initiates the workflow on schedule. Load Config: GitHub Config provides the list of repositories to monitor. Loop: The Loop node iterates through each repository. Fetch & Check: The RSS node attempts to fetch the repository's releases feed. If No Error checks for success: Failure: Send Error posts an error to Slack, skips this repository. Success: Continues. Check for New Release: The Redis node retrieves the last recorded Release ID for this repository. The If New node compares the latest Release ID with the recorded ID: Different IDs (New Release): Proceeds to processing. Same ID (Already Processed): Skips this repository. Process & Notify (Only for New Releases): Information Extractor (with Gemini) extracts, summarizes, and translates the content. The Code node formats the information into Slack Block Kit. Send Message sends the formatted message to Slack. The Redis2 node stores the current Release ID in Redis. End: The workflow finishes after processing all repositories. Conclusion Once configured, this template automates GitHub release monitoring, uses AI to distill key information, and delivers it efficiently to your Slack workspace.
by Chandan Singh
This workflow creates a daily, automated backup of all workflows in a self-hosted n8n instance and stores them in Google Drive. Instead of exporting every workflow on every run, it uses content hashing to detect meaningful changes and only updates backups when a workflow has actually been modified. To keep Google Drive clean and predictable, the workflow intentionally deletes the existing backup file before uploading the updated version. This avoids duplicate files and ensures there is always one authoritative backup per workflow. A Data Table is used as an index to track workflow IDs, hash values, and timestamps. This allows the workflow to quickly determine whether a workflow already exists, whether its content has changed, or whether it should be skipped entirely. How it works Runs daily using a Cron Trigger. Fetches all workflows from the n8n API. Processes workflows one-by-one for reliability. Generates a SHA-256 hash for each workflow. Compares hashes against a stored Data Table. Deletes existing Google Drive backups when changes are detected. Uploads updated workflows and skips unchanged ones. Store new or updated workflows details in Data Table. Filters workflows based on the configured backup scope (all | active | tagged ). Backs up all workflows, only active workflows, or only workflows matching a specific tag. Applies the scope filter before hashing and comparison, ensuring only relevant workflows are processed. Setup steps Set the Cron schedule** Open the Cron Trigger node and choose the time you want the backup to run (for example, once daily during off-peak hours). Create a Data Table** Create a new n8n Data Table with the title defined in dataTableTitle. This table stores workflowId, workflowName, hashCode, and DriveFiveId. Configure the Set node** In the Set Backup Configuration node, provide the following values: { "n8nHost": "https://your-n8n-domain", "apiKey": "your-n8n-api-key", "backupFolder": "/n8n/workflow-backups", "hashAlgorithm": "sha256", "dataTableTitle": "n8n_workflow_backup_index", "backupScope" : "", "requiredTag" : "" } In the Set Backup Configuration node, choose how workflows should be selected for backup: all – backs up every workflow (default) active – backs up only enabled workflows tagged – backs up only workflows containing a specific tag If using the tagged option, provide the required tag name to match. { "backupScope": "tagged", "requiredTag": "production" } Connect Google Drive credentials** Authorize your Google Drive account and ensure the backup folder exists. Activate the workflow** Once enabled, backups run automatically with no further action required.
by iamvaar
Quick overview Youtube Video: https://youtu.be/MTHAZzOZCnQ?si=0k_06-RgGYHtC08v This workflow runs daily to score customer “relationship drift” from Postgres metrics, uses Google Gemini to generate a structured diagnosis for medium/high-risk accounts, stores the assessment back in Postgres, and posts actionable alerts to Slack. How it works Runs on a daily 07:00 schedule (or manually) to start the drift check. Pulls customer drift feature data from a Postgres view and calculates a rule-based risk score, level, and supporting signals for each customer. Sends only customers above the configured threshold to Postgres to fetch recent support tickets and communications context. Uses Google Gemini (via a LangChain agent) to produce a structured drift diagnosis, evidence, and recommended next action, then validates that the AI output cites known rule signal IDs. Merges AI-diagnosed and non-AI results, builds a consolidated record (including Slack message text and CRM payloads), and assigns an urgency and due date. Writes each assessment to a Postgres drift_assessments table and posts a Slack alert for actionable medium/high drift cases. Setup Configure Postgres credentials and ensure the required objects exist (v_customer_drift_features view, support_tickets and communications tables, and the drift_assessments table/columns used by the INSERT). Add a Google Gemini (Google PaLM) API credential for the LangChain chat model used to generate the drift diagnosis. Add a Slack credential and set the target channel ID for where drift alerts should be posted. Review or adjust the cron schedule (currently 07:00 daily) and the rule thresholds inside the drift scoring code if you need different sensitivity.
by iamvaar
Quick overview Youtube Video: https://youtu.be/7lmQu9wd46w This workflow runs on a monthly schedule (or manually) to compare SolarEdge energy production against weather-adjusted expectations using Open-Meteo and Postgres history, then uses Google Gemini to attribute losses and, for anomalies, creates Jira work orders and posts alerts to Slack. How it works Runs on a monthly schedule (or when executed manually) and loads site configuration such as date range, expected kWh, and thresholds. Pulls daily energy production for the configured period from the SolarEdge Monitoring API and fetches hourly radiation and cloud cover data from Open-Meteo. Queries Postgres for the site’s last 30 days of performance history and the most recent incidents to build diagnostic context. Calculates actual vs expected production, weather-adjusted losses, performance ratios, anomaly flags, and historical baselines, then upserts the results into a Postgres solar performance table. If the period is anomalous, sends the metrics and historical context to Google Gemini to generate a structured root-cause attribution, confidence, priority, and recommended actions. Stores the AI diagnosis as an open incident in Postgres, creates a Jira task with the diagnosis details, links the Jira key back to the incident, and posts an alert to a Slack channel. If no anomaly is detected, posts a daily/period summary message to Slack. Setup Configure credentials for SolarEdge (OAuth2), Postgres, Google Gemini (PaLM/Generative Language API), Jira Software Cloud, and Slack. Update the Config values for your site (SolarEdge site ID, latitude/longitude, timezone, expected_kwh, loss_threshold_pct, evaluation date and period dates, and Jira base URL). Ensure Postgres has the required tables and constraints used by the queries (solar_daily_performance and solar_incidents, including the ON CONFLICT keys). Select the target Slack channel and confirm the Jira project and issue type used for creating work orders match your Jira setup. Activate the workflow and adjust the schedule trigger interval if you want a different cadence than monthly.
by Milo Bravo
Conference Synthetic Personas: Slack → Gemini → CRM Insights Who is this for? Event strategists, conference organizers, and marketing teams planning content/networking who want to interview realistic audience personas based on their participantants behavioural data before spending budget. What problem is this workflow solving? Event deisgn and management is guesswork: Content misses audience needs Networking formats flop No pre-validation of concepts This workflow creates interviewable synthetic personas from your real CRM data, test ideas pre-event. What this workflow does Trigger**: Slack /doppelganger "EventX" 5 hubspot CRM Pull**: HubSpot/Salesforce/Sheets attendee data Gemini Analysis**: Generates 5+ realistic personas per event Slack Cards**: Rich persona profiles + 14 auto-interview questions Thread Replies**: Team follow-ups in persona context Sheets Log**: Personas + conversations archived Setup (8 minutes) Slack**: OAuth2 + /doppelganger slash command Gemini**: Google API key (Flash/Pro) CRM**: HubSpot API / Salesforce OAuth / Google Sheets Sheets ID**: Personas + Conversations tabs Fully configurable, no code changes needed. How to customize to your needs CRMs**: HubSpot → Salesforce → Sheets CSV Personas**: Speakers/Exhibitors/Attendees Questions**: Edit 14 interview prompts (5 categories) Scale**: Multi-event batching Output**: Add Teams/Notion sync ROI: 40% better content relevance** (pre-validated) 25% lower no-show rates** (targeted comms) 2h → 2min** persona generation Need help customizing?: Contact me for consulting and support: LinkedIn / Message Keywords: event personas, synthetic audience, conference planning, attendee segmentation, event strategy automation
by Lal Krishna
Quick overview This workflow runs every morning to fetch a daycare menu from a webpage, read your family schedule from Google Sheets, and pull a local forecast from Open-Meteo, then uses Google Gemini to reliably extract today’s meals and sends a single WhatsApp briefing via CallMeBot. How it works Runs every day at 07:00 and calculates today’s date in your configured timezone, stopping if a message was already successfully sent for the same date. On weekdays, downloads the daycare menu webpage, extracts the text around today’s date, and asks Google Gemini to return today’s meals as strict JSON. Verifies Gemini’s response by checking that the quoted “date text seen” exists in the page content, and falls back to reporting the menu as unavailable if verification fails. Reads recurring and date-specific schedule items from a Google Sheets tab named schedule and selects the items that match today. Requests an hourly forecast for your coordinates from Open-Meteo and converts it into a deterministic weather summary and child-focused clothing advice. Assembles a single morning briefing message (skipping school menu details on weekends) and sends it to your WhatsApp number via the CallMeBot WhatsApp API. Marks today as sent only after the WhatsApp API response indicates delivery was queued/sent, so failures retry on the next run. Setup Add credentials for Google Gemini (API key), Google Sheets (OAuth2), and an HTTP Query Auth credential for CallMeBot containing your WhatsApp API key. Update the settings values for menu_url, timezone, latitude, longitude, whatsapp_phone, schedule_sheet_url, and output_language in the “Configure your settings” step. Create a Google Sheet with a schedule tab and columns date | weekday | title | details, using YYYY-MM-DD (plain text) for date-specific items and leaving date empty for weekly recurring items. Register your WhatsApp number with CallMeBot to obtain an API key and ensure the target phone number is in international format. Activate the workflow and confirm it runs at 07:00 server time (or adjust the cron expression if needed). Requirements Google Gemini API key (free tier works) Google account for the Sheets schedule A WhatsApp number registered with CallMeBot (free for personal use) A daycare or school menu page that is publicly viewable without login Customization Replace the WhatsApp node with Telegram, Slack, Discord or Gmail Change output_language in the settings node to translate menus into any language Adjust the clothing temperature bands or the 7:00-17:00 daytime window in the weather code node Add recurring activities, trips or closures to the Google Sheet without touching the workflow Change the send time in the schedule trigger Additional info The menu extraction is designed to never invent food. Gemini must quote the exact date text it found for today, and the workflow verifies that quote exists on the fetched page. If the page is down, has changed, or doesn't list today, the message says so instead of guessing. Duplicate protection uses workflow static data, which only persists for active (production) runs. Manual test runs will always send. Menus loaded by JavaScript after the page opens may not be readable by the HTTP node. Check that the menu text appears in the page source.
by Khairul Muhtadin
Job boards show you one posting at a time. This workflow reads a week of LinkedIn postings for your niche every morning, compares the numbers with your own history, and sends a short voice note to Telegram. It also guards against double runs, checks the AI draft before it is spoken, and sends a weekly trend recap. Last updated: November 2026. Quick Overview Each morning the workflow first checks the hiring_pulse sheet so a pulse never goes out twice on the same day. It then runs a saved Apify LinkedIn job search with retries, reduces the postings to counts, a median listed salary and ranked skills, and compares today with the last seven logged days. A DeepSeek agent writes the headline and narration, a validation step holds weak drafts for review, ElevenLabs turns the brief into an mp3, and Telegram gets the voice note. Failures, quiet days and held drafts land in a run_log tab, and a Monday digest sums up the week. How it works A cron schedule fires at 07:30 and reads the hiring_pulse tab. If a row for today already exists, the run stops at Already Sent Today. The Apify LinkedIn jobs actor runs against the saved search URL, and the dataset is read back. Both calls retry three times, and a final failure is written to run_log and posted to Telegram. Postings with a title are counted, salary strings are scanned for a median, and a fixed skill list is ranked. Fewer than three postings logs a quiet day and sends a one line note. The trend step compares today's count with the seven day average from the sheet and lists skills that did not appear in the last week, then adds that context to the prompt. A DeepSeek agent writes a headline, summary, hot skills and a 70 to 110 word narration, and the reply is parsed as JSON with a regex fallback. A validation step checks the headline, narration length and formatting. Drafts that fail go to Telegram as a text for review and are logged as needs_review instead of being spoken. ElevenLabs creates the mp3 and Telegram sends it with the headline as caption. If text to speech fails, the text version is sent instead. Every delivered pulse appends a row with the counts, trend note, delivery type and Telegram message id. Every Monday at 08:00 a second schedule reads the last seven days and posts pulses sent, postings seen, the busiest day and the skills that showed up most. Setup Connect your Apify account and confirm the LinkedIn jobs scraper actor is available on your plan. Add your DeepSeek compatible chat credential on Hiring Model and keep the temperature low. Edit the search URL in the Collect Job Postings body so the keyword, location and time filter match your niche. Add an ElevenLabs credential and pick a voice on Speak Hiring Pulse. Add a Telegram credential and replace the placeholder chat ID 123456789 in every Telegram node. Create a Google Sheets file with two tabs: hiring_pulse (created_at, role_query, job_count, median_salary, top_skills, headline, audio_file, trend_note, delivery, telegram_message_id) and run_log (run_at, status, detail, job_count). Adjust the two cron expressions if 07:30 daily and 08:00 Monday do not fit your week. Quick Answers Can the same pulse arrive twice? No. The first step reads the hiring_pulse tab and stops when a row for today already exists, so a manual rerun does not repeat the Apify scrape or the voice note. What if the AI writes something odd? The draft is checked for a headline, a 40 to 180 word narration and no markdown or long dashes. Anything that fails is sent to Telegram as text for review and logged, not spoken. What happens when Apify is down? Each Apify call retries three times with a short wait. If it still fails, the error goes to run_log and a Telegram alert, and the rest of the run stops. How do I see the bigger picture? The Monday digest reads the last week of rows and reports pulses sent, total postings, the busiest day and the most repeated skills. Additional info Built with n8n. Need an assessment on your business? Feel free to reach out at https://khmuhtadin.com/consultation/