My Job Application Workflow: Keeping the Human Touch
Automating resume tailoring using Markdown context, Typst templates, and a persistent candidate truth repository.
My Job Application Workflow: Keeping the Human Touch
Recently, I have been seeing a lot of projects built for automatic resume customization, cover letter writing, and even job search. Some tools even do all of that for you, from searching for the job to building a perfect resume for that job, writing a perfect cover letter for that job, and giving you everything you need to click that apply button, like AI Job Search. So, I decided to write about my own workflow, which I have been using for a while now.
Getting the right balance between automation and human touch
Automating everything in life seems like a sci-fi fantasy, but is it really worth it if we lose the human touch? What does the human touch even mean in the context of a job application? How can I use automation to my advantage without losing my own voice in the process? These are some of the questions that I have been grappling with recently. When I actually receive a job offer using my automated job application agent, the outcome could either be a good surprise or a set of expectations from a future employer that I cannot match.
My semi-automated job application workflow
To make my AI agent write my resume, I need to give it context about everything I know and make sure the output sounds just like me. I should be able to discuss the mistakes it made while writing my resume, then suggest improvements that it should keep in its persistent memory. I don't treat it like something to be built and then forgotten, but rather something to be nurtured and improved upon over time while we both learn simultaneously.
So, I started with a job application workflow in Codex. From the beginning, I wanted it to be agent-agnostic, so that it could work with any AI agent, even if it consumes a few more tokens.

My workflow is pretty simple:
- Markdown files to describe the agent workflow and the tasks.
candidatefolder to store the candidate details required for a portfolio, like work experience, projects, strengths, and anything else useful.applicationsfolder to keep track of the jobs I have applied to, their JDs, the resumes and cover letters used to apply, prompt history used to build them, etc.- The agent uses Typst to create beautifully formatted, ATS-friendly resumes, cover letters, etc. from the generated markdown files.
REVIEW.mdfile where the lessons from previous interactions are stored so they can be used to further improve the resumes and cover letters in the future.
Reflect and adjust: the review loop
The workflow is designed to be a constant improvement loop. Every time I see a rejection, I make sure to learn from it and improve the workflow. Every time I see an acceptance, I make sure to learn from it and improve the workflow. Every time I see a typo or grammatical error, I make sure to learn from it and improve the workflow. Every time I see a missed opportunity, I make sure to learn from it and improve the workflow.
This makes sure that both my job application agent and I are constantly improving and learning from each other. Over time, we are able to create better and better resumes and cover letters, and we are able to get more and more interviews and job offers.
The "Typst" Advantage
One of the most important decisions I made early on was to use Typst for generating the resume, instead of any other tool.
Typst is a markup-based typesetting system that has the capacity to produce beautiful, professional-looking documents. It is similar to LaTeX, but it is much simpler to use. It is also much faster than LaTeX, which makes it a great choice for faster iteration cycles while testing.
Bugs and Issues
Sometimes, the agent struggles to properly format the PDFs, often resulting in weird whitespace between different sections. I want to solve this by adding more robust .typ templates that Typst can use to generate the PDFs.
Sometimes, the summary sections of the resume and cover letters talk about me in third person. I did ask it to write in first person and also save this instruction in its memory, but I don't know why it sometimes forgets that instruction and starts writing in third person. I think this issue will be solved by using better models and tooling as the agents and the runtimes improve.
Future improvements
I want to further improve this workflow by adding a few more features:
- Better Typst templates.
- A PDF output reviewer workflow to check for visual errors.
- A job search agent to find relevant jobs for me.
- A dashboard to track my application status and progress.
- A more robust review loop to improve the resume and cover letters over time.
Conclusion
This workflow is a work in progress, and I am constantly improving it. I am not an expert, but it felt better to create my own workflow instead of taking someone else's work to generate something as important and as personal as a job application resume. It has been fun and an educational experience.
From the archive



