How I Automated Writing My Cover Letters with AI
Motivation
It was January 2023, at the height of the big tech layoffs, and I was really enjoying working as a Software Development Engineer at Amazon.
And then we got the email. Our entire team had been laid off and our access to internal services was cut, effective immediately. Now the worst part came — dozens of applications, grinding LeetCode, and worst of all, the soul crushing, time consuming, writing of cover letters.
It’s 2023, I thought to myself, how is this still a thing? ChatGPT had come out a few months ago, I was even using it to help with writing code on a regular basis. Surely it could also pass as a decent cover letter writer.
Attempt #1: Meh
“Write a cover letter for a Software Engineer”
ChatGPT’s Response:
[Employer’s Name]
[Company Name]
[Company Address]
[City, State ZIP Code]Dear [Employer’s Name],
I am writing to express my strong interest in the Software Engineer position at [Company Name], as advertised on [Job Board/Company Website]. With a passion for creating innovative solutions and a proven track record of delivering high-quality software products, I am excited about the opportunity to contribute my skills and expertise to your dynamic team.
In my previous role at [Previous Company Name], I was responsible for designing, developing, and maintaining complex software systems that streamlined operations and enhanced user experiences. My experience includes proficiency in languages such as Java, Python, and C++, and I have a deep understanding of software development methodologies and best practices. I take pride in my ability to collaborate with cross-functional teams, communicate effectively with both technical and non-technical stakeholders, and adapt quickly to new technologies and challenges.
What excites me about [Company Name] is your reputation for innovation and your commitment to pushing the boundaries of technology. I am eager to contribute to your ongoing projects, including [Project/Initiative], which aligns well with my background in [Relevant Skill/Experience]. The prospect of working alongside talented professionals and contributing to cutting-edge solutions is what draws me to your team.
Please find my resume attached for your review. I would welcome the opportunity to further discuss how my background aligns with your needs. You can reach me at [Your Phone Number] or [Your Email Address]. Thank you for your time and consideration.
Sincerely,
[Your Name]
Hmmmm….it’s not terrible, but I can’t really use it obviously, those facts are all made up and so it’s not actually saying anything about me. It needs to know about my resume, let me just try pasting it in.
Attempt #2: Not bad
“Write a cover letter for a Software Engineering position using details from my resume.
Here is my resume:
RAHUL BEHAL
EDUCATION
McGill University — Chemical Engineering 2017–2022
Minor: Software Engineering
SKILLS
■ Languages: Java, Scala, Python, JavaScript/TypeScript, HTML/CSS, OCaml, VBA, R, SQL, MATLAB
■ Software & Tools: React, Angular, Vue.js, AWS, Docker, Node.js, Spring, Gradle, PostgreSQL, MongoDB, CI/CD
PERSONAL PROJECTS
primeAID: Python, Flask, Java, JavaScript, HTML, CSS
- Developed Python backend for medical software that intends to streamline information among medical facilities
- Implemented a controller for an API to diagnose symptoms and a triage risk assessment from user inputs on the frontend
- Created map with nearby healthcare facilities using Google Maps API on the frontend
Won 1st place at the Concordia Hackathon for the Tactio sponsorship prize focusing on healthcare solutions
WORK EXPERIENCE
Software Development Engineer — Amazon: Vancouver, British Columbia. August, 2022 — February, 2023
- Worked within the Selling Partner Experience (SPX) organization to deliver products designed to maximize seller efficiency
- Designed technical architecture for products along with setup of AWS infrastructure including Lambda, S3, DynamoDB, etc.
- Coordinated across several lines of the business (PM, DE, BA, etc.) to ensure success criteria of product could be evaluated
- Merged 50+ pull requests with an average of less than 1 revision and few comments in my first 4 months at the company
Full Stack Developer Intern — Neat: Montréal, Québec. June, 2020 — August, 2020
- Engaged in 10+ workshops building technological entrepreneurship skills through an early-stage startup environment
- Responsible for 30% of all pull requests made to build and launch the MVP
- Utilized Vue.js for the frontend and Firebase on the backend to implement critical features working with tree manipulation
- Worked heavily with several APIs like Google Drive, Google Sheets, and Slack utilizing OAuth 2.0 with local storage“
ChatGPT’s Response:
[Employer’s Name]
[Company Name]
[Company Address]
[City, State ZIP Code]Dear [Employer’s Name],
I am writing to express my strong interest in the Software Engineering position at [Company Name] as advertised. With a strong educational background in Chemical Engineering supplemented by a Minor in Software Engineering from McGill University, and hands-on experience in developing innovative software solutions, I am excited about the opportunity to contribute my skills and knowledge to your team.
My educational journey at McGill University equipped me with a solid foundation in both engineering principles and software development. I have honed my proficiency in a range of programming languages including Java, Scala, Python, JavaScript/TypeScript, and more. This diverse skill set has enabled me to create robust and efficient software solutions that cater to complex problem domains.
One of my notable achievements is the development of primeAID, a medical software with a Python backend. I successfully orchestrated the integration of a symptom diagnosis API and risk assessment algorithm, along with creating an intuitive frontend using JavaScript, HTML, and CSS. primeAID secured the 1st place at the Concordia Hackathon, showcasing my ability to create impactful solutions within the healthcare domain.
My recent role as a Software Development Engineer at Amazon further enhanced my skills and expertise. Working within the Selling Partner Experience (SPX) organization, I was instrumental in delivering products aimed at optimizing seller efficiency. I also played a pivotal role in designing technical architecture and AWS infrastructure setup. My ability to collaborate seamlessly across various teams ensured the success of the product, and I demonstrated remarkable efficiency in code review and merging processes.
During my internship as a Full Stack Developer at Neat, I contributed significantly to the development of the MVP. Utilizing Vue.js for the frontend and Firebase on the backend, I implemented critical features that involved intricate tree manipulation. My experience with APIs like Google Drive, Google Sheets, and Slack, along with OAuth 2.0 integration, allowed me to create seamless interactions and enhance user experience.
Thank you for considering my application. I look forward to the opportunity to discuss further how my background and experiences align with the goals of [Company Name]. Please feel free to contact me at [Email Address] or [Phone Number] to schedule a conversation.
Sincerely,
Rahul Behal
Ah now that’s more like it! Cover letters should definitely be tailored to a specific job though. Screw it, let’s just paste that in too.
Attempt #3: Surprisingly good
“Write a cover letter for a Software Engineering position using details from my resume tailored to a specific job description.
Here is my resume:
{Resume Content}
Here is the job description:
Google San Bruno, CA
Qualifications
• Degree in Computer Science, Engineering, Computer Information Systems, Mathematics, Physics, or a related field or foreign equivalent
• 6 months of experience involving the following: C, C++, C#, Java, JavaScript, Objective-C, Python, HTML, CSS, Object oriented analysis and design, advanced algorithms, multi-threading, machine learning, artificial intelligence, data mining, APIs, natural language processing, MapReduce, or any other programming languages Responsibilities
• Use required technologies to support, maintain, and upgrade code and participate in necessary redesign and reimplementation of existing components of Google software applications
• Evaluate complex technical data, develop strategic recommendations, and resolve advanced technical issues
• Work with other groups on project-wide efforts; show leadership in design and product direction discussions
• Work on small or medium-size Google technology that are part of a multi-system project
• Provide technical leadership for small projects of moderate complexity and impact for Google, including coordinating project priorities Benefits
“
ChatGPT’s Response:
Hiring Manager
1600 Amphitheatre Parkway
Mountain View, CA 94043Dear Hiring Manager,
I am writing to express my enthusiasm for the Software Engineer position at Google’s San Bruno location. Based on the qualifications and responsibilities detailed in the job description, I am convinced that my educational background in Chemical Engineering with a minor in Software Engineering from McGill University, coupled with my practical experience in software development, aligns perfectly with what Google is looking for.
While my degree in Chemical Engineering showcases my analytical and problem-solving abilities, my minor in Software Engineering and subsequent work experiences underscore my technical proficiencies. As you mentioned the need for a candidate skilled in Java, JavaScript, HTML, and CSS, I want to highlight my hands-on experience with these languages. During my personal project, primeAID, I developed a medical software backend in Python and Java, with frontend implementations using JavaScript, HTML, and CSS. This project won the 1st place at the Concordia Hackathon for the Tactio sponsorship prize focusing on healthcare solutions, which speaks to its effectiveness and impact.
My recent tenure as a Software Development Engineer at Amazon in the Selling Partner Experience (SPX) organization has given me extensive experience in coordinating multi-system projects. I played a pivotal role in designing technical architecture and setting up AWS infrastructure. The requirement to “use required technologies to support, maintain, and upgrade code” aligns with my responsibilities at Amazon, where I seamlessly integrated with the cross-functional teams and ensured the successful evaluation of product success criteria.
In addition, my internship at Neat as a Full Stack Developer allowed me to demonstrate my ability to work with multiple APIs, echoing the qualification mentioned in the job description. My responsibilities at Neat entailed a high degree of engagement with Google Drive, Google Sheets, and Slack and required proficiency in OAuth 2.0 and tree manipulation.
I am excited about the opportunity to contribute to Google’s multifaceted projects, applying my skills in both large scale system design and hands-on code implementation. Moreover, I am eager to take on technical leadership for projects and collaborate with Google’s diverse teams to drive product direction and innovation.
Thank you for considering my application. I am looking forward to the opportunity to discuss how my experience and vision can benefit Google’s mission and the projects in San Bruno. I am available at your earliest convenience for a conversation.
Sincerely,
Rahul Behal
Now that’s…actually usable.
Initial Workflow
And so, my new job application workflow started — dozens of jobs a day. Copy and pasting my resume and job description into the ChatGPT interface, copy and pasting its response into a Word document, saving it as a PDF, and uploading that into the job application portal.
Infinitely better than writing cover letters myself, but I’m an engineer. Naturally, as soon as I started this flow, I was identifying inefficiencies and looking for areas of improvement. “I could make a website to do this for me”, I thought. Simply paste in a job description, upload your resume, and poof: a generated PDF cover letter pops out, ready for uploading to a job application.
This would be quite a bit of work though. Writing a ton of code to build out a frontend that was more usable than the ChatGPT interface for this use case, as well as the backend hosting the API, database for user information, file storage for the resumes, etc. Would it be less effort to just write the damn cover letter?
Fully Automated Workflow
Instead, I could build this reusable workflow without any code at all on AgentHub, a platform for building AI-powered pipelines with drag-and-drop, modular components. I signed on to the platform, spent a few minutes looking at the different components and what I would need.
An “Upload File” component for my resume. A “Website Scraper” component for the job description, so I could just input the URL. A “Combine Strings” component to join these two things together and form the context for the prompt.
Then I can use “Ask ChatGPT” to actually generate the content of the cover letter. Finally, a “Generate File” operator to create a PDF that I could simply download and then upload directly into job applications.
After a couple dozen clicks, and some tinkering with the prompts, I had created a pipeline that does the exact same thing a full-stack web application would do. I spent the next month or two using this pipeline to generate all my cover letters, give it a go yourself here.
User View
After discussing my job search with friends and family, I got many people asking if they could use the automated workflow for themselves. Some of them were less technical, and so I wanted to simplify the whole experience by adding a “User View”.
AgentHub allows you to simplify the pipeline view for users, just showing them the things they need to input and a run button.
Simple as that!
Conclusion
This was the first experience I had that made me realize how powerful this type of platform could be.
I ended up not needing too many cover letters after all as this process directly lead me to joining the AgentHub team as a co-founder just a few months later!