Google Sheets + Telegram: job matches you act on
Your job search shouldn’t feel like endless tab-hopping and copy-paste. But that’s what happens when listings live in one place, your resume lives somewhere else, and your “shortlist” is a messy mix of bookmarks, screenshots, and half-finished notes.
This job match automation hits job seekers first, honestly. recruiters doing quick candidate-to-role checks feel it too, and so do founders who want a simple pipeline without buying a full ATS. The outcome is straightforward: new jobs get captured, structured, and sent to Telegram so you can decide fast.
Below is what the workflow does, why it saves real time, and how you can tweak it to fit your search keywords, location, and resume(s).
How This Automation Works
See how this solves the problem:
n8n Workflow Template: Google Sheets + Telegram: job matches you act on
flowchart LR
subgraph sg0["Scheduled Run Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Scheduled Run Trigger", pos: "b", h: 48 }
n1@{ icon: "mdi:cog", form: "rounded", label: "Job Search Scraper", pos: "b", h: 48 }
n2@{ icon: "mdi:brain", form: "rounded", label: "Gemini Chat Engine", pos: "b", h: 48 }
n3@{ icon: "mdi:robot", form: "rounded", label: "Structured Output Reader", pos: "b", h: 48 }
n4@{ icon: "mdi:swap-vertical", form: "rounded", label: "Split Records", pos: "b", h: 48 }
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/telegram.svg' width='40' height='40' /></div><br/>Send Telegram Alert"]
n6@{ icon: "mdi:database", form: "rounded", label: "Append to Sheets", 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/html.dark.svg' width='40' height='40' /></div><br/>Parse HTML Cards"]
n8@{ icon: "mdi:robot", form: "rounded", label: "Job Data Extractor", pos: "b", h: 48 }
n9@{ icon: "mdi:cog", form: "rounded", label: "Retrieve Resume File", pos: "b", h: 48 }
n10@{ icon: "mdi:cog", form: "rounded", label: "Parse Resume Text", pos: "b", h: 48 }
n11@{ icon: "mdi:brain", form: "rounded", label: "Gemini Resume Model", pos: "b", h: 48 }
n12@{ icon: "mdi:robot", form: "rounded", label: "Resume Summary Chain", pos: "b", h: 48 }
n13@{ icon: "mdi:swap-vertical", form: "rounded", label: "Map Resume Text", pos: "b", h: 48 }
n1 --> n7
n4 --> n6
n13 --> n12
n7 --> n8
n10 --> n13
n9 --> n10
n0 --> n9
n12 --> n1
n6 --> n5
n2 -.-> n8
n3 -.-> n8
n11 -.-> n12
n8 --> n4
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 trigger
class n3,n8,n12 ai
class n2,n11 aiModel
class n6 database
classDef customIcon fill:none,stroke:none
class n5,n7 customIcon
The Challenge: Turning “Interesting” Jobs Into a Shortlist
Finding job listings is not the hard part. The hard part is turning a flood of “maybe” roles into a clean shortlist you can act on today, without second-guessing what you already reviewed. You skim a job board, open five tabs, lose two of them, and then realize you still have to compare each role against your resume and the same handful of deal-breakers (salary, location, stack, seniority). Do that for a week and you’ve burned a few hours without moving the needle.
It adds up fast. Here’s where it breaks down in real life.
- You keep re-reading the same listings because there’s no single place where “reviewed” actually means reviewed.
- Job cards on boards are messy HTML, so copying details into a spreadsheet is slower than it should be and easy to mess up.
- Your resume sits in Google Drive, but your decision process happens elsewhere, which means you’re constantly context-switching.
- Notifications are either too noisy (everything) or too quiet (you forget to check), so great roles slip by.
The Fix: Auto-Scrape Jobs, Structure Them, Then Send the Best to Telegram
This workflow runs on a schedule and does the “first pass” work for you. It pulls your resume from Google Drive, extracts the text, and creates a quick summary of what you actually bring to the table (skills, focus areas, keywords) using an AI summarization chain. Then it scrapes job search results from SimplyHired through Decodo residential proxies, which helps avoid blocks and inconsistent page loads. An AI agent converts the raw job card HTML into structured fields you can sort and filter (title, company, location, link, and more). Finally, the workflow appends each job to Google Sheets and sends a Telegram alert so you can review in seconds, not hours.
The workflow starts with a scheduled trigger and a resume pull from Google Drive. From there, it summarizes the resume, scrapes job pages, and uses AI to extract clean job data. Google Sheets becomes your running shortlist, while Telegram delivers the “new and worth seeing” update right away.
What Changes: Before vs. After
| What This Eliminates | Impact You’ll See |
|---|---|
|
|
Real-World Impact
Say you review about 30 new listings a day. Manually, it’s usually a couple minutes to open each role, scan, copy the link, and log it, which is about 1 hour daily, plus another 20 minutes bouncing between your resume and the “maybe” roles. With this workflow, the scheduled run does the scraping and structuring for you, then Telegram pings you with fresh matches while Google Sheets keeps the log. Your “daily review” becomes closer to 15 minutes of decisions instead of 90 minutes of busywork.
Requirements
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Google Sheets for storing your shortlist and history.
- Telegram to receive job alerts in real time.
- Google Drive for resume access and updates.
- Decodo API credentials (get them from your Decodo dashboard).
- Google Gemini API key (get it from Google AI Studio / Google Cloud).
Skill level: Intermediate. You’ll connect accounts, add API keys, and tweak a search URL without breaking the workflow.
Need help implementing this? Talk to an automation expert (free 15-minute consultation).
The Workflow Flow
A scheduled run kicks it off. n8n starts the workflow automatically, so your job search happens even when you’re not thinking about it.
Your resume is pulled and summarized. The workflow retrieves your resume file from Google Drive, extracts text from the PDF, and runs a Gemini summarization chain so the automation “knows” what to look for.
Job pages are scraped and cleaned up. Decodo fetches your SimplyHired search results, HTML job cards get parsed, and an AI agent turns messy page fragments into structured job fields you can store and review.
Results land where you’ll actually use them. Each job is appended to Google Sheets, then a Telegram message sends you the listing info while it’s still fresh.
You can easily modify the job search URL and the fields you store in Google Sheets based on your needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Scheduled Trigger
Set up the workflow to run on a schedule so it can refresh resume context and scrape new job listings automatically.
- Add and open Scheduled Run Trigger.
- Define your schedule rule (for example, daily or hourly) so the workflow runs automatically.
- Confirm the flow begins with Scheduled Run Trigger → Retrieve Resume File.
Step 2: Connect Google Drive and Parse the Resume
This step downloads the resume PDF and extracts its text for later matching.
- Open Retrieve Resume File and set Operation to
downloadand File to your resume ID (replace[YOUR_ID]). - Credential Required: Connect your
googleDriveOAuth2Apicredentials in Retrieve Resume File. - Open Parse Resume Text and set Operation to
pdf. - Open Map Resume Text and set the text assignment to
={{ $json.text }}.
⚠️ Common Pitfall: If the resume file ID is incorrect or access is not shared with the Google Drive credential, Retrieve Resume File will fail and the downstream AI summary will be empty.
Step 3: Set Up Resume Summarization (AI)
Summarize the resume text to provide context for job matching.
- Open Resume Summary Chain and set Chunk Size to
100000and Chunk Overlap to2000. - Ensure Gemini Resume Model is connected as the language model for Resume Summary Chain.
- Credential Required: Connect your
googlePalmApicredentials in Gemini Resume Model.
Step 4: Configure Job Scraping and AI Extraction
Scrape the job board, extract HTML cards, and use AI to structure job data and match it against the resume.
- Open Job Search Scraper and set URL to
https://www.simplyhired.com/search?q=software+engineer&l=Remote. - Credential Required: Connect your
decodoApicredentials in Job Search Scraper. - Open Parse HTML Cards and set Operation to
extractHtmlContentand Data Property Name toresults[0].content. - In Parse HTML Cards, add extraction values with Key
joband CSS Selector.css-13ia03s. - Open Job Data Extractor and set Text to
={{ $json.job }}and keep Has Output Parser enabled. - Ensure Gemini Chat Engine is connected as the language model for Job Data Extractor, and Structured Output Reader is connected as the output parser.
- Credential Required: Connect your
googlePalmApicredentials in Gemini Chat Engine. For the output parser, add credentials to the parent AI node (if required), not the Structured Output Reader sub-node. - Open Split Records and set Field to Split Out to
output.jobs.
Tip: If the job board changes its HTML structure, update the CSS selector in Parse HTML Cards to ensure extraction continues to work.
Step 4: Configure Output Actions
Store structured job data in Google Sheets and send a Telegram alert for each match.
- Open Append to Sheets and confirm Operation is
append. - Set Document to your spreadsheet URL and Sheet to
job listings(replace[YOUR_ID]values). - Keep the column mappings as defined, such as url
=https://www.simplyhired.com{{ $json.url }}and date extracted={{ DateTime.now().format('yyyy-MM-dd')}}. - Credential Required: Connect your
googleSheetsOAuth2Apicredentials in Append to Sheets. - Open Send Telegram Alert and keep Text set to
=👋New Job Posting Alert👋 ... https://www.simplyhired.com{{ $json.url }}. - Credential Required: Connect your
telegramApicredentials in Send Telegram Alert.
⚠️ Common Pitfall: If the Google Sheet doesn’t have matching column headers (for example, company name, job type), Append to Sheets will fail or write empty fields.
Step 5: Test and Activate Your Workflow
Validate the end-to-end flow from resume parsing to job alerts before turning it on.
- Click Execute Workflow to run the process manually starting from Scheduled Run Trigger.
- Confirm that Retrieve Resume File downloads your PDF and Parse Resume Text outputs text.
- Verify Append to Sheets adds new rows and Send Telegram Alert sends a formatted message.
- When successful, toggle the workflow to Active so it runs on the schedule.
Watch Out For
- Google Drive credentials can expire or need specific permissions. If things break, check the Google connection in n8n’s Credentials section first, then confirm the resume file still exists and is accessible.
- If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- Default prompts in AI nodes are generic. Add your brand voice early or you’ll be editing outputs forever.
Common Questions
About 45 minutes if your accounts and API keys are ready.
Yes, but expect a little setup work. You won’t code, though you will paste API keys, connect Google Drive/Sheets, and test a Telegram message.
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 Gemini API usage plus Decodo proxy costs for scraping.
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.
You can swap the job source by changing the URL used by the Decodo scraping node, then adjusting the HTML parsing so the AI agent receives the right job card blocks. Common customizations include adding a simple match score field in the “Edit Fields (Set)” step, storing extra columns in Google Sheets (seniority, remote policy, salary text), and routing alerts somewhere else like Gmail or Slack instead of Telegram. If you have multiple resumes, duplicate the Google Drive “Retrieve Resume File” path and merge the summaries before scraping so each run matches against the right profile.
Usually it’s permissions or an expired credential. Reconnect Google Sheets in n8n, confirm the target spreadsheet still exists, and make sure the account has edit access to the specific sheet tab you’re appending to.
On n8n Cloud Starter you’re generally fine for small daily runs, but high-volume scraping can burn through executions quickly. Self-hosting removes execution limits, and the practical cap becomes your server size plus rate limits from Decodo and your AI provider. In most setups, processing a few dozen listings per run is comfortable; if you push into hundreds, you’ll want pagination, batching, and stricter filtering before the AI extraction.
Often, yes. This workflow relies on scraping, HTML parsing, and AI extraction chains, which are awkward (or expensive) in many “simple automation” tools. n8n also gives you self-hosting, so you can run more without worrying about per-task billing as you scale. Zapier or Make can still work if you only need basic alerts from a clean API source, not web scraping. If you’re not sure, Talk to an automation expert and get a quick recommendation based on your volume.
Once this is running, your shortlist stays current without you babysitting it. The workflow handles the repetitive scanning and logging so you can spend your time applying, not sorting.
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.