Google Sheets + Telegram: LinkedIn job shortlists
Job hunting falls apart in the same place every time. You find promising roles, copy links into a doc, lose half of them in open tabs, then realize you applied to something similar last week.
Recruiters see the mess from the other side, but job seekers live in it. A marketing specialist tracking roles across countries feels it too. If you’re trying to stay organized, LinkedIn job automation turns scattered searching into a clean shortlist you can actually act on.
This workflow pulls LinkedIn job results via SerpAPI, filters them with AI, logs them into Google Sheets, and sends a weekly summary to Telegram. You’ll see what it does, why it saves real time, and what you need to run it.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: Google Sheets + Telegram: LinkedIn job shortlists
flowchart LR
subgraph sg0["Telegram Flow"]
direction LR
n0["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Telegram Trigger"]
n1@{ icon: "mdi:play-circle", form: "rounded", label: "Weekly Schedule", pos: "b", h: 48 }
n2@{ icon: "mdi:swap-vertical", form: "rounded", label: "Initialize Variables", pos: "b", h: 48 }
n3["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/itemLists.svg' width='40' height='40' /></div><br/>Split Countries"]
n4["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/itemLists.svg' width='40' height='40' /></div><br/>Split Job Types"]
n5["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Search LinkedIn Jobs"]
n6@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Check if Jobs Found", pos: "b", h: 48 }
n7["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Process & Filter Jobs"]
n8@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Check Processed Jobs", pos: "b", h: 48 }
n9@{ icon: "mdi:database", form: "rounded", label: "Save to Google Sheets", pos: "b", h: 48 }
n10@{ icon: "mdi:cog", form: "rounded", label: "Aggregate All Jobs", pos: "b", h: 48 }
n11["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Create Enhanced Summary"]
n12["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Format Enhanced Message"]
n13["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Send Telegram Notification"]
n14@{ icon: "mdi:swap-vertical", form: "rounded", label: "No Jobs Found", pos: "b", h: 48 }
n15["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Create No Jobs Summary"]
n16["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Send No Jobs Notification"]
n17["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/whatsapp.svg' width='40' height='40' /></div><br/>WhatsApp Business Cloud"]
n14 --> n15
n3 --> n4
n4 --> n5
n1 --> n2
n0 --> n2
n10 --> n11
n6 --> n7
n6 --> n14
n8 --> n9
n8 --> n15
n2 --> n3
n5 --> n6
n7 --> n8
n9 --> n10
n15 --> n16
n11 --> n12
n12 --> n13
n12 --> n17
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n0,n1 trigger
class n6,n8 decision
class n9 database
class n5 api
class n7,n11,n12,n15 code
classDef customIcon fill:none,stroke:none
class n0,n3,n4,n5,n7,n11,n12,n13,n15,n16,n17 customIcon
The Problem: Job Search Gets Noisy Fast
Searching for roles across multiple job categories and countries sounds productive… until you try to keep it all straight. LinkedIn results repeat, titles vary slightly, and “remote” means five different things depending on the post. Then you still have to capture the essentials (company, location, salary hints, link, date) somewhere reliable. Most people end up with a messy spreadsheet that isn’t updated consistently, plus Telegram messages or bookmarks they never revisit. The result is a lot of activity, and not much forward motion.
It adds up fast. Here’s where it usually breaks down.
- You spend about 30 minutes per search session just collecting links and rewriting the same details.
- Duplicates sneak in, so you waste time re-reading roles you already reviewed.
- When you search multiple countries, you lose the bigger picture of what’s trending and where.
- By the time you’re ready to apply, half the good posts are buried under new results.
The Solution: Weekly AI-Filtered Shortlists in Sheets + Telegram
This workflow automates the “search, clean up, track, summarize” loop for LinkedIn jobs. It runs on a weekly schedule (or can be started via Telegram), searches LinkedIn job listings using SerpAPI across the countries and job categories you define, and validates that the results are usable. Then it cleans the raw job payload, uses an AI agent (OpenAI Chat Model) to filter for relevance, and writes the qualifying roles into a structured Google Sheets log with consistent columns. After everything is logged, it aggregates the new entries, builds a country-by-country summary, formats it into a readable message, and sends it to Telegram. If there are no results, it still notifies you, so you’re not left guessing.
The workflow starts with your weekly trigger and startup values (countries and job types). It then loops through country and category combinations, pulls roles, filters them, and logs the survivors in Google Sheets. Finally, it produces a tight Telegram recap, with optional WhatsApp notification.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say you search 3 countries (Qatar, UAE, Saudi Arabia) and 3 job categories (software development, web development, digital marketing). That’s 9 searches. If you spend about 15 minutes per search to scan, open posts, copy details, and save links, you’re burning roughly 2 hours each week. With this workflow, you set it once, let it run on schedule, and then spend about 10 minutes reviewing a Telegram summary and the Sheet rows that made the cut.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Google Sheets for the job log and tracking.
- Telegram to receive the weekly shortlist summary.
- SerpAPI key (get it from serpapi.com).
Skill level: Intermediate. You’ll connect accounts, paste a few IDs/keys, and keep spreadsheet headers exact.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
A weekly trigger (or a Telegram start message) kicks things off. The workflow initializes your search parameters, like the list of countries and job categories you want to monitor.
Search requests go out to SerpAPI. n8n runs through each country/category combination and pulls back LinkedIn job results via HTTP Request, then checks if the response actually contains valid jobs.
AI filtering turns a noisy feed into a shortlist. A code step cleans the payload, then an AI agent using the OpenAI Chat Model evaluates relevance (based on your intent) so you don’t log junk.
Everything lands in Google Sheets, then Telegram gets a readable recap. Approved jobs are written to your spreadsheet with consistent columns, aggregated into a weekly roll-up, and sent as a country-by-country message. If nothing matches, you still get a “no results” alert.
You can easily modify the countries and job types to match your search, so it fits your exact market and role targets. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Telegram and Schedule Triggers
This workflow can start from a Telegram command or a weekly schedule. Configure both triggers so the digest can run on demand and automatically.
- Add and configure Incoming Telegram Start to receive a Telegram start message for on-demand execution.
- Credential Required: Connect your Telegram API credentials in Incoming Telegram Start.
- Configure Weekly Timing Trigger to your preferred weekly schedule for automated runs.
- Confirm both Incoming Telegram Start and Weekly Timing Trigger connect to Set Startup Values.
Step 2: Connect Google Sheets
The workflow logs job results to Google Sheets before aggregating them for summary output.
- Open Write to Sheets Log and select the target spreadsheet and worksheet.
- Credential Required: Connect your Google Sheets credentials in Write to Sheets Log.
- Map fields from the incoming items so each job result is logged in a consistent row format.
Step 3: Set Up Job Search Processing
These nodes prepare the search parameters and call the external job source.
- In Set Startup Values, define any startup variables used later (such as base lists or default filters).
- Configure Divide Country List to split your country list into items for downstream processing.
- Configure Separate Job Categories to split categories or roles into individual items.
- In Query LinkedIn Roles, set the HTTP request details needed to fetch job results.
- Use Validate Job Results to check whether the job query returned usable results and route accordingly.
Step 4: Filter, Log, and Aggregate Results
This section filters job data, verifies output, logs to Sheets, and aggregates records for summary creation.
- In Filter Job Payload, implement your filtering logic to keep only relevant results.
- Configure Verify Filtered Jobs to ensure filtered results exist before logging.
- Connect Verify Filtered Jobs to Write to Sheets Log for valid results, and to Compose Empty Summary when none exist.
- Set up Combine Job Records to aggregate the logged items into a single collection for summary generation.
Step 5: Build and Format Summaries
The workflow builds a detailed summary when jobs exist and an alternate summary when results are empty.
- In Build Detailed Summary, construct the detailed digest from Combine Job Records output.
- Use Format Summary Message to format the final message for delivery.
- Configure Handle Empty Results to initialize placeholders or flags for the empty-result path.
- In Compose Empty Summary, build the message used when no jobs are found.
Step 6: Configure Output Alerts
Send the summary to Telegram and WhatsApp, and send a dedicated empty alert when no results are found.
- Format Summary Message outputs to both Dispatch Telegram Alert and WhatsApp Cloud Notice in parallel.
- Credential Required: Connect your Telegram API credentials in Dispatch Telegram Alert.
- Credential Required: Connect your WhatsApp Cloud credentials in WhatsApp Cloud Notice.
- Connect Compose Empty Summary to Send Empty Alert for the no-results scenario.
- Credential Required: Connect your Telegram API credentials in Send Empty Alert.
Step 7: Test and Activate Your Workflow
Verify that both trigger paths, summary branches, and output channels behave correctly before enabling the workflow in production.
- Click Execute Workflow and trigger Incoming Telegram Start to run the flow manually.
- Confirm that job results flow through Query LinkedIn Roles, Validate Job Results, and Filter Job Payload, then log to Write to Sheets Log.
- Verify that summaries are built in Build Detailed Summary and formatted in Format Summary Message, then sent to Dispatch Telegram Alert and WhatsApp Cloud Notice.
- Test the empty-results path by returning no data and confirm Compose Empty Summary sends to Send Empty Alert.
- When everything works as expected, toggle the workflow to Active to enable scheduled runs from Weekly Timing Trigger.
Common Gotchas
- Google Sheets credentials can expire or need specific permissions. If things break, check your connected Google account in n8n credentials and confirm the spreadsheet is shared to the right account first.
- If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- Telegram bot tokens get rotated or pasted incorrectly more often than people admit. If alerts stop, verify the BotFather token in your Telegram credentials and confirm you’re sending to the correct chat ID.
Frequently Asked Questions
About 45 minutes if you already have SerpAPI, Google, and Telegram ready.
No. You’ll mostly paste keys/IDs and map a few fields. The included code steps are already written, so you don’t have to touch them unless you want custom filtering.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in OpenAI API costs (usually small per summary) and SerpAPI, which includes 100 free searches/month.
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
Yes, but you’ll want to adjust a few parts. Change the Weekly Timing Trigger to run daily, then tighten the AI filtering prompt so you don’t get spammed. Many people also update the Google Sheets logging to include a “reviewed” column, so daily alerts don’t feel overwhelming. If you keep WhatsApp enabled, consider sending only the top few results there and leaving the full list for Telegram.
Usually it’s OAuth permissions or the wrong Google account. Reconnect your Google Sheets credential in n8n, then confirm the target spreadsheet is shared with that same account. Also double-check your sheet headers match the required column names exactly, because mismatched headers can look like a “connection” issue when it’s really a mapping problem.
Practically, it can handle hundreds of jobs per run, but your real limits are SerpAPI search volume and your n8n plan. If you self-host, there’s no execution cap (it depends on your server). On n8n Cloud, higher tiers handle more workflow executions per month. If you increase countries and categories, budget extra SerpAPI searches because each combination costs you a request.
Often, yes. This workflow uses branching logic, data cleanup, and AI filtering, which gets awkward (and expensive) in many Zapier-style setups once you add loops and conditions. n8n is also easier to self-host, so you can run larger weekly searches without worrying about per-task pricing. Zapier or Make can still be fine if you’re only running a single search and sending a simple notification. Talk to an automation expert if you want help choosing.
This is the kind of automation that makes job searching feel calmer. Your sheet stays clean, your shortlist shows up on schedule, and you can spend your best energy on applications that actually fit.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.