Huashu Design
alchaincyf · Skill
Turns a one-line request in your AI agent into a finished design: a launch animation, a clickable app prototype, an editable slide deck, an infographic or a se…
An n8n workflow that turns a Telegram bot into a resume assistant. It keeps each person’s profile in Supabase, tailors it to a job description, and sends back resume and cover letter PDFs built from LaTeX.
Telegram resume and cover letter bot with AI and LaTeX is an n8n workflow in the Writing category, listed by Mindket. It is free. This is version 1, last updated on . Download it on this page or copy its JSON, then import it into an n8n canvas. Nothing runs until you activate it in n8n.
Telegram message
It starts when your bot receives a message or a button press, with:
A resume PDF, a tailored resume, a keyword gap report or a cover letter PDF in the chat, and the profile saved in Supabase
What you need before you start.
Chat
Brings each message and button press to the trigger, and sends the replies and the files back.
NeedsA bot token from BotFather
Database
Keeps each person’s master and tailored profile in the Profiles table.
NeedsProject URL and service role key, and the Profiles table
Language model
Runs the main models, gpt-oss:120b and gpt-oss:20b, through its cloud.
NeedsAn Ollama API key
Language model
Runs gpt-oss-120b when a main model fails.
NeedsA Cerebras API key
LaTeX compiler
Runs pdflatex on the generated LaTeX and returns the PDF.
NeedsA Linux server with SSH password login and TeX Live
Checked by Mindket on 13 Nov 2026
This n8n workflow turns a Telegram bot into a resume and cover letter assistant. A person sends a resume as a PDF, or types details about themselves. An AI model reads it and keeps a profile for that person in Supabase. Commands then show the profile, tailor it to a job description, check it against the job’s keywords and write a cover letter. The PDF files are compiled from LaTeX on your own server and sent back in the chat. Ninety-eight nodes do the work.
Career coaches, bootcamps and job seekers who want a resume kept up to date by chat. It also suits builders who want a large, real example of an n8n bot with commands, memory and a database. Running it means storing people’s resumes, so it fits a service for people who agreed to that.
| Industry | Who uses it | How they use it | Example |
|---|---|---|---|
| Career services | Coaches | Keep a client’s master resume and tailor it for each job | A coach asks the bot to tailor a client’s profile to a posted role and sends back the PDF. |
| Education | Bootcamps | Give graduates a resume tool they can use in a chat | A bootcamp shares the bot with a cohort that uploads their resumes. |
| Recruiting | Staffing agencies | Turn a messy PDF into a clean layout that tracking systems read | A recruiter uploads a candidate’s resume and gets a compiled version. |
| Software | Developers | Study a bot with commands, memory and a LaTeX build | A developer swaps Supabase for another table and keeps the rest. |
This is a large setup: you need n8n, a Supabase table, two model accounts and a server with LaTeX. Nothing in the file states a setup time.
Any n8n that can reach Telegram, Supabase, Ollama’s cloud, Cerebras and your server will run it.
Download saves a zip with workflow.json and Mindket’s setup notes in your downloads folder. Five accounts cover every step.
| Need | Detail |
|---|---|
| n8n | On n8n Cloud or on a server of your own |
| Telegram | A bot made with @BotFather |
| Supabase | A Profiles table with telegram_id, telegram_username, master_profile and tailored_profile, plus the project URL and the service role key |
| Ollama and Cerebras | One API key for each, for the main and the fallback models |
| A Linux server | SSH with a password, and a full TeX Live install with pdflatex |
workflow.json.Telegram Trigger and in every Telegram node.Profiles table in Supabase. Add a Supabase credential and select it in the seven Supabase nodes.https://ollama.com/v1 and whose key is your Ollama key. Select it in Ollama, Ollama JD, Ollama Fix LaTeX Model, Ollama CL Model, Classifier Model, Classifier Model1 and Ollama ATS Model.https://api.cerebras.ai/v1 and whose key is your Cerebras key. Select it in the seven nodes whose names start with Cerebras.Write LaTeX File, Write LaTeX File (Retry), Read PDF Base64 and Compile Cover Letter./start and then a resume as a PDF./view and /download and check that a PDF comes back.Publish the workflow and open your bot. Send a resume as a PDF, then use the commands: /view, /download, /optimize with a job description, /viewoptimized, /downloadoptimized, /coverletter, /analyze with a job description, and /clear.
| To change | Where |
|---|---|
| The resume layout | The template in Generate LaTeX |
| The cover letter layout | The template in Generate LaTeX Cover Letter |
| The voice of the cover letter | The system message of AI Cover Letter Agent |
| What counts as a complete profile | The checks in Assess Master Profile |
| The welcome text and the command list | Telegram Info Reply |
| The models | The seven main model nodes and their seven fallbacks |
You send a resume PDF, then send /optimize with a job description pasted after it.
The bot reads the PDF and saves your master profile. The tailoring step writes a second profile aimed at that job and saves it next to the first. You then send /downloadoptimized, and the bot replies with a compiled PDF and its LaTeX source.
If you are new. n8n draws a workflow as boxes joined by lines, and each box, a node, does one job. A router reads each message and sends it down the right path. LaTeX is a typesetting language, and a program called pdflatex turns it into a PDF, which is why a server is needed.
For experts. Seven agents share one pattern. Each has a main model, a Cerebras fallback and 3 tries.
| Node | What it does | What to know |
|---|---|---|
Command Router | A Switch node with sixteen outputs that reads the message text or the button data | /optimize and /analyze with no job description go to a warning |
Intent Classifier | An agent that sorts free text into a question or an update | Parse Intent checks the first words first and trusts the model only when they do not decide |
AI Agent | Turns the PDF text or a chat message into profile changes, with Window Buffer Memory | The memory is keyed by the chat id |
Supabase Fetch by ID | Looks up the row by chat id, with Supabase Fetch by Username as a second try | Check Migration Needed fills in the id for a row found by user name |
Write LaTeX File | An SSH node that writes the source from base64 and runs pdflatex twice | It prints SUCCESS or the compile log, and If Compile Success reads that |
AI Fix LaTeX Agent | Rewrites the source after a failed compile | One retry, then Send Compile Error Msg |
It keeps people’s resumes, so treat it with care.
/tmp and are removed after a good run. A failed run can leave some behindqwen3-coder:480b, rnj-1:8b and the Cerebras model zai-glm-4.7. Ollama’s cloud list, read on 12 November 2026, shows neither of the first two, and Cerebras deprecated the third on 17 August 2026. Mindket’s copy uses gpt-oss:120b, gpt-oss:20b and gpt-oss-120bAn n8n workflow that turns a Telegram bot into a resume and cover letter assistant. A person sends a resume as a PDF, or just types details about themselves. An AI model reads it and keeps a profile for that person in Supabase. Commands then show the profile, tailor it to a job description, check it against the job's keywords, write a cover letter and send back compiled PDF files. Ninety-eight nodes do the work.
workflow.json: the workflow as n8n exports it, 98 nodes and no sticky notes. It holds no credential.README.md: these notes.Mindket cleaned the copy and swapped the retired models:
qwen3-coder:480b and rnj-1:8b on Ollama's cloud. Ollama's cloud model list, read on 12 November 2026, shows neither. The four larger ones now use gpt-oss:120b and the three smaller ones use gpt-oss:20b, both on that list.zai-glm-4.7, which Cerebras deprecated on 17 August 2026. They now use gpt-oss-120b, which is on Cerebras's current shared list.v1.Profiles and four columns: telegram_id (a bigint), telegram_username (text), master_profile (text) and tailored_profile (text).cfr-lm, marvosym and tcolorbox, and the commands pdflatex and base64 must work there.workflow.json.Telegram Trigger and in every Telegram node. The nodes that say they need one are marked in n8n.Profiles table described above. Add a Supabase credential with the project URL and the service role key, and select it in the seven Supabase nodes. Keep the table out of public access, because the service role key skips row security.https://ollama.com/v1 and whose key is your Ollama API key. Select it in Ollama, Ollama JD, Ollama Fix LaTeX Model, Ollama CL Model, Classifier Model, Classifier Model1 and Ollama ATS Model.https://api.cerebras.ai/v1 and whose key is your Cerebras key. Select it in the seven nodes whose names start with Cerebras.Write LaTeX File, Write LaTeX File (Retry), Read PDF Base64 and Compile Cover Letter./start, then send a resume as a PDF./view, then /download, and check that a PDF comes back.Telegram Trigger takes every message and every button press. It downloads any file that comes with it.Supabase Fetch by ID and Supabase Fetch by Username look for the person's profile row. Check Migration Needed gives a row found only by user name the person's numeric id.Assess Master Profile checks that the profile has a name, a contact, a summary, skills, education, work experience and projects. Until it does, most commands answer with what is missing.Command Router sends the message down one of sixteen branches. They cover a greeting, /start and /info, an incomplete profile, media the bot cannot read (a photo, sticker or voice note), /view, /clear, a PDF upload, chat, /download, /downloadoptimized, /optimize, /viewoptimized, /coverletter and /analyze. Two more branches warn when /optimize or /analyze comes with no job description.Extract PDF Text and AI Agent. The agent fills in the profile and Parse JSON, Safe Profile Merge and Row Exists? save it with Supabase Update or Supabase Create. A file that is not a readable PDF gets an error message.Intent Classifier, and Parse Intent also checks the first words of the message. A question goes to Query Agent, which answers only from the saved profile. Anything else goes to AI Agent, which updates the profile, with Window Buffer Memory keeping the last turns of that chat./optimize followed by a job description goes to AI JD Agent. It writes a tailored copy of the profile and Supabase Save Tailored stores it. The master profile stays as it was./analyze followed by a job description goes to ATS Gap Agent, which lists the keywords the profile lacks. The reply is split to fit Telegram's message limit./download and /downloadoptimized run Generate LaTeX, which fills a resume template, and Write LaTeX File sends it to your server. The server compiles it twice with pdflatex. On success Read PDF Base64 returns the PDF, and Send PDF (Telegram) and Send LaTeX Source (Telegram) deliver both files.AI Fix LaTeX Agent rewrites the source, Write LaTeX File (Retry) tries once more, and Send Compile Error Msg tells the person if that fails too./coverletter uses AI Cover Letter Agent, which writes the letter from the tailored profile and its job description, then Compile Cover Letter builds the PDF the same way./clear runs Supabase Clear Profile and deletes the row at once.Generate LaTeX.Generate LaTeX Cover Letter.AI Cover Letter Agent.Assess Master Profile.Telegram Info Reply./clear has no confirmation step. A press on it deletes the profile./tmp with the execution number in the name and removed after a successful run. A failed run can leave files behind.NOTICE.md 529 B README.md 7 KB workflow.json 177 KB
alchaincyf · Skill
Turns a one-line request in your AI agent into a finished design: a launch animation, a clickable app prototype, an editable slide deck, an infographic or a se…
op7418 · Skill
Skill that makes single-file HTML slide decks, slide illustrations and platform covers in two visual styles, with a presenter mode for rehearsal. For speakers…
alirezarezvani · Skill
Adds 411 ready-made skills for Claude Code and other coding agents, grouped by role from engineering and product to marketing, finance and compliance. Installs…
vennify · Kit
Rewrites English text with fewer grammar mistakes, using a T5 model trained on the JFLEG dataset. Made by vennify for writers, students and developers who want…
tencent · Kit
Translates between 33 languages on your own device with a 1.8B model squeezed to 1.25 bits, about 440 MB as GGUF files for llama.cpp. For developers adding off…
summerAIO · Kit
Summarizes, answers questions about and continues book-length text with a fine-tuned 27B model that uses Gated DeltaNet layers, in English and Japanese. For pe…