Thursday, February 13, 2025

From Resume to Cowl Letter Utilizing AI and LLM, with Python and Streamlit


DISCLAIMER: The thought of doing Cowl Letter and even Resume with AI doesn’t clearly begin with me. Lots of people have finished this earlier than (very efficiently) and have constructed web sites and even firms from the thought. That is only a tutorial on how you can construct your personal Cowl Letter AI Generator App utilizing Python and some strains of code. All of the code you’ll say on this weblog submit could be present in my public Github folder. Get pleasure from. 🙂 

Pep Guardiola is a (very profitable) Manchester Metropolis soccer coach. Throughout Barcelona’s Leo Messi years, he invented a means of enjoying soccer referred to as “Tiki-Taka”. Because of this as quickly as you obtain the ball, you move the ball, instantly, with out even controlling it. You possibly can move the ball 30–40 occasions earlier than scoring a aim.

Greater than a decade later, we are able to see how the way in which of enjoying soccer made Guardiola and his Barcelona well-known is gone. When you take a look at a Manchester Metropolis match, they take the ball and instantly search for the striker or the winger. You solely want a number of, vertical passes, instantly searching for the chance. It’s extra predictable, however you do it so many occasions that you’ll ultimately discover the area to hit the goal.

I feel that the job market has someway gone in the identical route. 

Earlier than you had the chance to go to the corporate, hand in your resume, speak to them, be round them, schedule an interview, and actively speak to individuals. You’ll spend weeks making ready for that journey, sharpening your resume, and reviewing questions and solutions. 

For a lot of, this old style technique nonetheless works, and I consider it. When you’ve got an excellent networking alternative, or the precise time and place, the handing the resume factor works very properly. We love the human connection, and it is extremely efficient to truly know somebody. 

It is very important think about that there’s a entire different strategy as properly. Firms like LinkedIn, Certainly, and even normally the web fully modified the sport. You possibly can ship so many resumes to so many firms and discover a job out of statistics. AI is altering this sport a bit of bit additional. There are a number of AI instruments to tailor your resume for the particular firm, make your resume extra spectacular, or construct the job particular cowl letter. There are certainly many firms that promote this sort of providers to individuals which are searching for jobs.

Now, consider me, I’ve bought nothing in opposition to these firms, in any respect, however the AI that they’re utilizing it’s not likely “their AI”. What I imply by that’s that in case you use ChatGPT, Gemini, or the tremendous new DeepSeek to do the precise process you’ll very possible not get a worse response than the (paid) device that you’re utilizing on their web site. You might be actually paying for the “commodity” of getting a backend API that does what we must do by ChatGPT. And that’s honest. 

Nonetheless, I need to present you that it’s certainly quite simple and low-cost to make your personal “resume assistant” utilizing Massive Language Fashions. Specifically, I need to deal with cowl letters. You give me your resume and the job description, and I provide you with your cowl letter you’ll be able to copy and paste to LinkedIn, Certainly, or your e-mail.

In a single picture, it can seem like this:

Now, Massive Language Fashions (LLMs) are particular AI fashions that produce textual content. Extra particularly, they’re HUGE Machine Studying fashions (even the small ones are very huge). 

Because of this constructing your personal LLM or coaching one from scratch may be very, very costly. We received’t do something like that. We are going to use a superbly working LLM and we are going to neatly instruct it to carry out our process. Extra particularly, we are going to do this in Python and utilizing some APIs. Formally, it’s a paid API. Nonetheless, since I began the entire challenge (with all of the trial and error course of) I spent lower than 30 cents. You’ll possible spend 4 or 5 cents on it.  

Moreover, we are going to make a working net app that can can help you have your cowl letter in a number of clicks. Will probably be an effort of a pair hundred strains of code (with areas 🙂).

To inspire you, listed below are screenshots of the ultimate app:

Pictures made by the writer

Fairly cool proper? It took me lower than 5 hours to construct the entire thing from scratch. Imagine me: it’s that easy. On this weblog submit, we are going to describe, so as:

  1. The LLM API Technique. This half will assist the reader perceive what LLM Brokers we’re utilizing and the way we’re connecting them.
  2. The LLM Object. That is the implementation of the LLM API technique above utilizing Python
  3. The Net App and outcomes. The LLM Object is then transferred into an online app utilizing Streamlit. I’ll present you how you can entry it and a few outcomes. 

I’ll attempt to be as particular as potential so that you’ve got every little thing it is advisable to make it your self, but when these things will get too technical, be happy to skip to half 3 and simply benefit from the sundown 🙃.

Let’s get began!

1. LLM API Technique

That is the Machine Studying System Design a part of this challenge, which I stored extraordinarily gentle, as a result of I wished to maximise the readability of the entire strategy (and since it actually didn’t have to be extra sophisticated than that).

We are going to use two APIs:

  1. A Doc Parser LLM API will learn the Resume and extract all of the significant data. This data shall be put in a .json file in order that, in manufacturing, we may have the resume already processed and saved someplace in our reminiscence.
  2. A canopy letter LLM API. This API will learn the parsed resume (the output of the earlier API) and the job description and it’ll output the Cowl Letter.
Picture made by the writer, credit on the picture

Two details:

  1. What’s the greatest LLM for this process? For textual content extraction and summarization, LLama or Gemma are recognized to be a fairly low-cost and environment friendly LLM. As we’re going to use LLama for the summarization process, with the intention to preserve consistency, we are able to undertake it for the opposite API as properly. If you wish to use one other mannequin, be happy to take action.
  2. How can we join the APIs? There are a selection of the way you are able to do that. I made a decision to provide it a attempt to Llama API. The documentation isn’t precisely intensive, nevertheless it works properly and it lets you play with many fashions. You have to to log in, purchase some credit score ($1 is greater than enough for this process), and save your API key. Be happy to modify to a different answer (like Hugging Face or Langchain) in case you really feel prefer it.

Okay, now that we all know what to do, we simply want to truly implement it in Python. 

2. LLM Object

The very first thing that we want is the precise LLM prompts. Within the API, the prompts are often handed utilizing a dictionary. As they are often fairly lengthy, and their construction is all the time related, it is smart to retailer them in .json recordsdata. We are going to learn the JSON recordsdata and use them as inputs for the API name. 

2.1 LLM Prompts

On this .json file, you should have the mannequin (you’ll be able to name no matter mannequin you want) and the content material which is the instruction for the LLM. In fact, the content material key has a static half, which is the “instruction” and a “dynamic” half, which is the particular enter of the API name. For instance: that is the .json file for the primary API, I referred to as it resume_parser_api.json:

As you’ll be able to see from the “content material” there’s the static name:

“You’re a resume parser. You’ll extract data from this resume and put them in a .json file. The keys of your dictionary shall be first_name, last_name, location, work_experience, school_experience, expertise. In choosing the knowledge, preserve observe of essentially the most insightful.”

The keys I need to extract out of my “.json” recordsdata are:

[first_name, last_name, location, work_experience, school_experience, skills]

Be happy so as to add something extra data that you simply need to be “extracted” out of your resume, however keep in mind that that is stuff that ought to matter solely on your cowl letter. The precise resume shall be added after this textual content to kind the total name/instruction. Extra on that later.

The order instruction is the cover_letter_api.json:

Now the instruction is that this one:

“You might be an skilled in job searching and a canopy letter author. Given a resume json file, the job description, and the date, write a canopy letter for this candidate. Be persuasive {and professional}. Resume JSON: {resume_json} ; Job Description: {job_description}, Date: {date}”

As you’ll be able to see, there are three placeholders: “Resume_json”, “job_description” and “date”. As earlier than, these placeholders will then get replaced with the right data to kind the total immediate. 

2.2 constants.py

I made a really small constants.py file with the trail of the 2 .json immediate recordsdata and the API that you must generate from LLamaApi (or actually no matter API you’re utilizing). Modify this if you wish to run the file regionally. 

2.3 file_loader.py

This file is a set of “loaders” on your resume. Boring stuff however necessary. 

2.4 cover_letter.py

The entire implementation of the LLM Technique could be discovered on this object that I referred to as CoverLetterAI. There it’s:

I spent fairly a while making an attempt to make every little thing modular and straightforward to learn. I additionally made a number of feedback to all of the capabilities so you’ll be able to see precisely what does what. How can we use this beast?

So the entire code runs in 5 easy strains. Like this:

from cover_letter import CoverLetterAI
cover_letter_AI = CoverLetterAI()
cover_letter_AI.read_candidate_data('path_to_your_resume_file')
cover_letter_AI.profile_candidate()
cover_letter_AI.add_job_description('Insert job description')
cover_letter_AI.write_cover_letter()

So so as:

  1. You name the CoverLetterAI object. Will probably be the star of the present
  2. You give me the trail to your resume. It may be PDF or Phrase and I learn your data and retailer them in a variable.
  3. You name profile_candidate(), and I run my first LLM. This course of the candidate phrase information and creates the .json file we are going to use for the second LLM 
  4. You give me the job_description and also you add it to the system. Saved.
  5. You name write_cover_letter() and I run my second LLM that generates, given the job description and the resume .json file, the quilt letter

3. Net App and Outcomes

So that’s actually it. You noticed all of the technical particulars of this weblog submit within the earlier paragraphs.

Simply to be further fancy and present you that it really works, I additionally made it an online app, the place you’ll be able to simply add your resume, add your job description and click on generate cowl letter. That is the hyperlink and that is the code.

Now, the cowl letters which are generated are scary good.

This can be a random one:

February 1, 2025

Hiring Supervisor,
[Company I am intentionally blurring]

I’m thrilled to use for the Distinguished AI Engineer place at [Company I am intentionally blurring], the place I can leverage my ardour for constructing accountable and scalable AI programs to revolutionize the banking trade. As a seasoned machine studying engineer and researcher with a powerful background in physics and engineering, I’m assured that my expertise and expertise align with the necessities of this function.

With a Ph.D. in Aerospace Engineering and Engineering Mechanics from the College of Cincinnati and a Grasp’s diploma in Physics of Complicated Techniques and Large Knowledge from the College of Rome Tor Vergata, I possess a novel mix of theoretical and sensible information. My expertise in growing and deploying AI fashions, designing and implementing machine studying algorithms, and dealing with giant datasets has geared up me with the talents to drive innovation in AI engineering.

As a Analysis and Instructing Assistant on the College of Cincinnati, I utilized surrogate fashions to detect and classify cracks in pipes, reaching a 14% enchancment in harm detection experiments. I additionally developed surrogate fashions utilizing deep studying algorithms to speed up Finite Ingredient Strategies (FEM) simulations, leading to a 1M-fold discount in computational time. My expertise in educating and creating programs in sign processing and picture processing for teenagers excited by AI has honed my capability to speak complicated ideas successfully.

In my earlier roles as a Machine Studying Engineer at Gen 9, Inc., Apex Microdevices, and Accenture, I’ve efficiently designed, developed, and deployed AI-powered options, together with configuring mmWave radar and Jetson units for information assortment, implementing state-of-the-art level cloud algorithms, and main the FastMRI challenge to speed up MRI scan occasions. My experience in programming languages resembling Python, TensorFlow, PyTorch, and MATLAB, in addition to my expertise with cloud platforms like AWS, Docker, and Kubernetes, has enabled me to develop and deploy scalable AI options.

I’m significantly drawn to [Company I am intentionally blurring] dedication to creating accountable and dependable AI programs that prioritize buyer expertise and ease. My ardour for staying abreast of the most recent AI analysis and my capability to judiciously apply novel strategies in manufacturing align with the corporate’s imaginative and prescient. I’m excited concerning the alternative to work with a cross-functional workforce of engineers, analysis scientists, and product managers to ship AI-powered merchandise that remodel how [Company I am intentionally blurring] serves its prospects.

Along with my technical expertise and expertise, I possess wonderful communication and presentation expertise, which have been demonstrated by my technical writing expertise at In direction of Knowledge Science, the place I’ve written complete articles on machine studying and information science, reaching a broad viewers of 50k+ month-to-month viewers.

Thanks for contemplating my software. I’m keen to debate how my expertise and expertise can contribute to the success of the [Company I am intentionally blurring] and [Company I am intentionally blurring]’s mission to deliver humanity and ease to banking by AI. I’m assured that my ardour for AI, my technical experience, and my capability to work collaboratively will make me a helpful asset to your workforce.

Sincerely,

Piero Paialunga

They appear similar to I might write them for a particular job description. That being mentioned, in 2025, it is advisable to watch out as a result of hiring managers do know that you’re utilizing AI to put in writing them and the “pc tone” is fairly straightforward to identify (e.g. phrases like “keen” are very ChatGPT-ish lol). Because of this, I’d prefer to say to use these instruments properly. Positive, you’ll be able to construct your “template” with them, however remember to add your private contact, in any other case your cowl letter shall be precisely like the opposite hundreds of canopy letters that the opposite candidates are sending in. 

That is the code to construct the online app

4. Conclusions 

On this weblog article, we found how you can use LLM to transform your resume and job description into a particular cowl letter. These are the factors we touched:

  1. The usage of AI in job searching. Within the first chapter we mentioned how job searching is now fully revolutionized by AI. 
  2. Massive Language Fashions thought. It is very important design the LLM APIs properly. We did that within the second paragraph
  3. LLM API implementation. We used Python to implement the LLM APIs organically and effectively
  4. The Net App. We used streamlit to construct a Net App API to show the facility of this strategy.
  5. Limits of this strategy. I feel that AI generated cowl letters are certainly superb. They’re on level, skilled and properly crafted. Nonetheless, if everybody begins utilizing AI to construct cowl letters, all of them actually look the identical, or not less than all of them have the identical tone, which isn’t nice. One thing to consider. 

5. References and different sensible implementations

I really feel that’s simply honest to say a number of sensible those that have had this concept earlier than me and have made this public and accessible for anybody. That is just a few of them I discovered on-line.

Cowl Letter Craft by Balaji Kesavan is a Streamlit app that implements a really related thought of crafting the quilt letter utilizing AI. What we do completely different from that app is that we extract the resume immediately from the phrase or PDF, whereas his app requires copy-pasteing. That being mentioned, I feel the man is extremely proficient and really inventive and I like to recommend giving a glance to his portoflio.

Randy Pettus has a related thought as properly. The distinction between his strategy and the one proposed on this tutorial is that he’s very particular within the data, asking questions like “present hiring supervisor” and the temperature of the mannequin. It’s very attention-grabbing (and sensible) you can clearly see the way in which he’s considering of Cowl Letters to information the AI to construct it the way in which he likes them. Extremely really helpful.

Juan Esteban Cepeda does an excellent job in his app as properly. You may also inform that he was engaged on making it larger than a easy streamlit add as a result of he added the hyperlink to his firm and a bunch of opinions by customers. Nice job and nice hustle. 🙂

6. About me!

Thanks once more on your time. It means rather a lot ❤

My identify is Piero Paialunga and I’m this man right here:

Picture made by writer

I’m a Ph.D. candidate on the College of Cincinnati Aerospace Engineering Division and a Machine Studying Engineer for Gen 9. I speak about AI, and Machine Studying in my weblog posts and on Linkedin. When you favored the article and need to know extra about machine studying and observe my research you’ll be able to:

A. Observe me on Linkedin, the place I publish all my tales
B. Subscribe to my publication. It is going to preserve you up to date about new tales and provide the probability to textual content me to obtain all of the corrections or doubts you will have.
C. Turn out to be a referred member, so that you received’t have any “most variety of tales for the month” and you may learn no matter I (and hundreds of different Machine Studying and Knowledge Science prime writers) write concerning the latest know-how accessible.
D. Wish to work with me? Test my charges and tasks on Upwork!

If you wish to ask me questions or begin a collaboration, depart a message right here or on Linkedin:

[email protected]


Related Articles

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Latest Articles

PHP Code Snippets Powered By : XYZScripts.com