🔓 Unlock all 10,000+ workflows & prompts free Join Newsletter →
✅ Full access unlocked — explore all 10,000 AI workflow and prompt templates Browse Templates →
Home n8n Workflow
January 21, 2026

Telegram to Google Drive, polished resume PDFs

Lisa Granqvist Partner Workflow Automation Expert

You find a good job post, then lose an hour copy-pasting the description into notes, tweaking a resume, exporting PDFs, and hunting down the “final_final_v3” file later.

This resume PDF automation hits job seekers first, honestly. But career coaches handling multiple clients and recruiting agencies supporting candidates feel the same mess: scattered versions, inconsistent formatting, and too much manual admin.

This workflow turns a job description sent in Telegram into a tailored resume and cover letter, then saves the polished PDF to Google Drive (and logs everything to Google Sheets). You’ll see what it does, what you need, and how to avoid the usual setup traps.

How This Automation Works

The full n8n workflow, from trigger to final output:

n8n Workflow Template: Telegram to Google Drive, polished resume PDFs

The Problem: Resume versions and formatting chaos

Tailoring applications works, but the workflow around it is brutal. You start with a job description in one tab, your “base resume” in another, and a cover letter template somewhere else. Then come the small decisions that drain you: which skills to emphasize, what wording to mirror, what to remove so it fits on one page, and how to keep it all consistent. Add exporting to PDF, naming files, and storing them somewhere you can actually find later. Do this a few times a week and it becomes a second job.

It adds up fast. Here’s where it breaks down in real life:

  • You end up rewriting the same “relevant experience” bullets from scratch for every job posting.
  • PDF exports look slightly different each time, which means last-minute formatting fixes right before you submit.
  • Files get named inconsistently and saved in random folders, so you can’t quickly reuse what worked.
  • There’s no clean record of which resume and cover letter went to which company, so follow-ups feel sloppy.

The Solution: Telegram → tailored resume PDF, auto-saved to Drive

This n8n workflow gives you a single, repeatable input: send a job description to a Telegram bot. From there, an AI agent pulls your stored experience (role, summary, tasks, skills, tools, industry) from an n8n data table and uses it as grounded context for personalization. It generates structured application content, maps it into an HTML resume template, and publishes the HTML to GitHub Pages so it can be rendered consistently. Then Gotenberg converts that hosted HTML into a PDF, and n8n saves the finished resume PDF to Google Drive. Finally, it logs the company and the generated documents in Google Sheets and sends a “Done” message so you don’t accidentally queue overlapping requests.

The workflow starts with a Telegram message trigger. In the middle, the AI agent and OpenAI chat model turn your experience database plus the job description into clean, structured output, then a mapper builds the final HTML. The end result is a Drive-saved PDF (plus a Sheets record) that stays organized without extra effort.

What You Get: Automation vs. Results

Example: What This Looks Like

Say you apply to 5 jobs in a week. Manually, a “tailored” application often means about 45 minutes rewriting bullets, 20 minutes on the cover letter, and 10 minutes exporting/renaming/uploading the PDF, so roughly 6 hours total. With this workflow, you paste the job description into Telegram (about 5 minutes), then wait a few minutes for generation and PDF rendering while you do something else. You still review the output, but the heavy lifting is done, and your resume PDF is already saved in Google Drive and logged in Sheets.

What You’ll Need

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Telegram to submit job descriptions quickly
  • Google Drive to store the final resume PDFs
  • Google Sheets to log applications and outputs
  • GitHub + GitHub Pages to host the HTML resume for conversion
  • Gotenberg to convert hosted HTML into PDFs
  • OpenAI API key (get it from your OpenAI dashboard)

Skill level: Intermediate. You’ll connect accounts, paste a few keys, and be comfortable checking a run log when something fails.

Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).

How It Works

A Telegram message kicks it off. You paste the job listing text into Telegram, and the workflow uses that message as the source of truth for what to tailor.

Your experience is pulled from your database. The AI agent queries your n8n data table (role, summary, tasks, skills, tools, industry) so the resume and cover letter are based on your real background, not imagination.

AI generates structured content and builds the resume file. The workflow parses the output into clean JSON, maps it into an HTML template, and commits updates to GitHub so the latest version is always available via GitHub Pages.

PDF output goes to Google Drive and gets tracked. Gotenberg converts the hosted HTML into a PDF, n8n uploads it to Drive, then writes a row to Google Sheets and sends you a Telegram “Done” message.

You can easily modify the resume template and naming rules to match your style and filing system. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Webhook Trigger

Set up the inbound webhook and align the downstream request chain that generates PDFs and starts the resume pipeline.

  1. Add and configure Inbound Webhook with Path set to fc896fbb-4a70-48d2-a416-564a3eeeae91.
  2. Connect Inbound Webhook to External PDF Request and set URL to http://000.00.00:3000/forms/chromium/convert/url, Method to POST, and Content Type to multipart-form-data.
  3. In External PDF Request, add a body parameter named url with value https://evenkik.github.io/Resume_url/ to generate the resume PDF.
  4. Confirm the execution flow runs Inbound WebhookExternal PDF RequestDrive File Upload without parallel branches.

Step 2: Connect Google Drive & Sheets

Connect storage and logging for the generated resume PDF and application records.

  1. Open Drive File Upload and set Name to =resume-{{ $json.body.message }}.pdf, then choose your Drive and Folder IDs.
  2. Credential Required: Connect your googleDriveOAuth2Api credentials in Drive File Upload.
  3. Configure Upsert Sheet Record with Operation set to appendOrUpdate, Document set to [YOUR_ID], and Sheet set to gid=0.
  4. Map columns in Upsert Sheet Record: resume to {{ $json.webContentLink }}, company to {{ $('Inbound Webhook').item.json.body.message }}, and surat-lamaran to =.
  5. Credential Required: Connect your googleSheetsOAuth2Api credentials in Upsert Sheet Record and Append Sheet Entry.
  6. In Append Sheet Entry, set Operation to append and map fields to {{ $('Telegram Incoming Trigger').item.json.message.link_preview_options.url }}, {{ $('Resume Letter AI').item.json.output.company }}, {{ $('Resume Letter AI').item.json.output.application_letter }}, and {{ $('Resume Letter AI').item.json.output.job_description }}.
⚠️ Common Pitfall: Replace [YOUR_ID] placeholders in Drive File Upload, Upsert Sheet Record, and Append Sheet Entry with your actual Drive folder and Google Sheet IDs.

Step 3: Set Up Resume Letter AI

Configure the AI resume-and-letter generation path, including memory, tools, and structured output.

  1. Configure Telegram Incoming Trigger to receive message updates from your bot.
  2. Credential Required: Connect your telegramApi credentials in Telegram Incoming Trigger and Telegram Status Note.
  3. In Resume Letter AI, set Text to {{ $json.message.text }} and keep Prompt Type as define with Has Output Parser enabled.
  4. Confirm OpenAI Mini Chat is connected as the language model for Resume Letter AI and uses model gpt-5-mini.
  5. Credential Required: Connect your openAiApi credentials in OpenAI Mini Chat.
  6. Verify AI sub-nodes are attached to Resume Letter AI: Session Memory Store with Session Key set to {{ $json.message.from.id }}, Experience Data Tool with Operation get and Return All enabled, and Application JSON Parser with the provided JSON schema.
For AI tool and parser nodes (Session Memory Store, Experience Data Tool, Application JSON Parser), add credentials to the parent Resume Letter AI via OpenAI Mini Chat, not the sub-nodes.

Step 4: Configure Output and Publishing Nodes

Transform the AI output into HTML and publish it to GitHub, then log the application in Sheets.

  1. In JSON to HTML Mapper, keep the provided JavaScript that builds skill and tool HTML and trims LinkedIn URLs from Telegram Incoming Trigger.
  2. Connect JSON to HTML Mapper to HTML Template Builder and retain the HTML template in the HTML field.
  3. Configure GitHub File Update with File Path docs/index.html, File Content {{ $json.html }}, and Commit Message {{ $('Resume Letter AI').item.json.output.company }}.
  4. Credential Required: Connect your githubApi credentials in GitHub File Update, CSS File Commit, Index File Commit, and Workflow YML Commit.
  5. Confirm the execution flow runs HTML Template BuilderGitHub File UpdateAppend Sheet Entry in that order.
⚠️ Common Pitfall: Replace https://github.com/<username> and repository Job-apply in GitHub nodes with your actual owner and repo.

Step 5: Configure Experience Structuring Intake

This path structures freeform experience text into a data table for reuse in resume tailoring.

  1. Set up Chat Message Trigger to accept incoming text for experience processing.
  2. Configure Experience Structuring AI with Has Output Parser enabled and keep the system message rules intact.
  3. Ensure OpenAI Chat Engine is connected as the language model for Experience Structuring AI and uses model gpt-5.
  4. Credential Required: Connect your openAiApi credentials in OpenAI Chat Engine.
  5. Attach Context Memory Buffer to Experience Structuring AI with Context Window Length set to 10.
  6. Use Structured JSON Parser for the output schema and map the results into Insert Experience Row fields like Role, Tasks, Skills, and industry using expressions such as {{ $json.output.role }}.
Add credentials to the parent node Experience Structuring AI via OpenAI Chat Engine; do not add credentials directly to Context Memory Buffer or Structured JSON Parser.

Step 6: Configure Asset Publishing via GitHub Commits

Publish static assets and workflow files through a manual trigger and chained GitHub commits.

  1. Use Manual Start Trigger to kick off the asset publishing path when you want to update CSS/HTML/YML assets.
  2. In Asset Code Set, keep the predefined values for css, html, and yml assignments.
  3. Configure CSS File Commit with File Path docs/style.css, File Content {{ $json.css }}, and Commit Message =style.css.
  4. Configure Index File Commit with File Path docs/index.html, File Content {{ $json.html }}, and Commit Message index.html.
  5. Configure Workflow YML Commit with File Path github/workflows/notify-n8n.yml, File Content {{ $json['notify-n8n'].yml }}, and Commit Message =notify-n8n.yml.
The Unnamed node is not connected to any execution path and can be ignored or removed if it was left as a placeholder.

Step 7: Test and Activate Your Workflow

Run each trigger path to verify end-to-end behavior before enabling production execution.

  1. Click Execute Workflow on Manual Start Trigger to confirm Asset Code SetCSS File CommitIndex File CommitWorkflow YML Commit completes successfully.
  2. Send a test message to your bot to trigger Telegram Incoming Trigger and verify Resume Letter AI produces JSON, HTML is built, GitHub is updated, and Append Sheet Entry logs the record.
  3. Send a test webhook request to Inbound Webhook and verify the PDF is created, uploaded by Drive File Upload, and logged by Upsert Sheet Record, followed by Telegram Status Note sending Done....
  4. Confirm successful runs show updated files in GitHub, a new Google Drive PDF, and appended rows in your Google Sheet.
  5. When ready, toggle the workflow to Active so webhook and Telegram triggers run continuously.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Common Gotchas

  • Google Drive credentials can expire or need specific permissions. If things break, check the n8n credential connection test and your Google account access scopes 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.
  • GitHub commits can fail if your token can’t write to the Pages branch. Confirm the repo permissions and that GitHub Pages is enabled for the branch your workflow updates.

Frequently Asked Questions

How long does it take to set up this resume PDF automation?

Plan for about 60 minutes once your accounts are ready.

Do I need coding skills to automate resume PDF generation?

No. You’ll mostly connect accounts and paste in a few IDs or keys. The “code” part is already built into the workflow; you’re just configuring it.

Is n8n free to use for this resume PDF automation workflow?

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 a few cents per application) and whatever you spend to host Gotenberg.

Where can I host n8n to run this resume PDF automation?

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.

Can I customize this resume PDF automation workflow for a different resume template?

Yes, and you should. Swap the HTML in the HTML Template Builder and adjust the JSON to HTML Mapper so the fields land where you want them. A lot of people also customize file naming (company + role + date), change the Google Drive folder destination, and tune the AI prompt so it matches their writing style.

Why is my Google Drive connection failing in this workflow?

Usually it’s expired OAuth access or missing Drive permissions in your Google credential. Reconnect the Google Drive credential in n8n, then confirm the target folder still exists and you still have access. If uploads work sometimes but not always, it can also be rate limiting when you run several applications back-to-back.

How many resume PDFs can this resume PDF automation handle?

If you self-host n8n, there’s no hard execution cap; it mostly depends on your server and how long PDF rendering takes.

Is this resume PDF automation better than using Zapier or Make?

For multi-step document generation, n8n is usually the smoother fit because it handles branching logic, data shaping, and “wait for the PDF, then upload, then log it” flows without turning into a fragile chain of mini-zaps. You also get the option to self-host, which matters when you’re doing lots of runs or want tighter control of data. Zapier and Make can still work, but complex AI + HTML-to-PDF pipelines often get expensive or hard to debug. Frankly, the biggest advantage is visibility: n8n shows you exactly where the run failed and what data moved through each step. If you want help choosing, Talk to an automation expert.

Once this is set up, applications stop feeling like a file-management project. The workflow handles the repeatable parts so you can focus on the decisions that actually matter.

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.

Lisa Granqvist

Workflow Automation Expert

Expert in workflow automation and no-code tools.

×

Use template

Get instant access to this n8n workflow Json file

💬
Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Launch login modal Launch register modal