Back to HOWTOs

A Customized Cover Letter Generation System using LaTeX

Background

When applying for faculty positions in academia, I wanted to generate a cover letter customized for each school based on their advertisements. However, I also wanted to apply to a lot of schools. So, this is a set of Perl scripts that I created to help automate the process using LaTeX. These scripts are easily adaptable to industry positions as well. Here is an example (using my alma mater) of what the final cover letter looks like with the packages I have used. Here is the LaTeX source (TXT link) for the example and the logo image.

In addition to customizing the cover letter address and some of the text, these scripts also generate HTML files to help you track where you and your letter of recommendation writers should send stuff and what schools have acknowledged receipt of your application (and which have sent rejection letters). Also, it allows you to merge the cover letter with your vitae, research statement, teaching statement, list of references, and (if applicable) representative publications into one PDF file (which some schools require/prefer). Note: these are meant for people familiar with LaTeX and Perl since you'll probably have to hack them a little to customize them exactly how you want them.

In addition to LaTeX and Perl, these scripts make use of several other tools and packages:

  • Latexmk: A Perl script that makes the LaTeX generation easier.
  • newlfm: A LaTeX package for generating letters with letterhead.
  • Multivalent: A JAR file that merges PDF files into one.

These scripts only generate one LaTeX file per school: the cover letter. However, to merge files, it assumes the following PDFs already exist elsewhere:

  • Your CV
  • Your Research Statement
  • Your Teaching Statement
  • Your List of References. One list for each discrete number of references required. If some schools require three references and some require four, then you would have two separate PDF files: one with the list of three references that you wish to use and one with the list of four references that you wish to use. Alternatively, you could just use the maximum number of references for each school (regardless of how many they ask for) and use that one PDF file.
  • Your Representative Publications

These scripts are provided under the GNU General Public License. I have tried to add some comments to help those who want to modify the files for their own customization.

Related Pages

HOWTO

  • Download my set of Perl scripts which contains the following files:
    • cover_example.pdf: An example PDF of what my cover letter looked like using the system.
    • generate_ack_list.pl: Generates a HTML file of which schools have acknowledged receipt of your application, which are outstanding, and which have sent rejection letters.
    • generate_application_info.pl: Generates a HTML file of how you should send your application to each school (e.g., email, online, or postal) and the address to use.
    • generate_cover_letters.pl: Generates the LaTeX file for a customized cover letter for each school and then runs the commands to make a PDF file.
    • generate_job_packets.pl: Merges your customized cover letter PDF with existing PDFs of your CV, list of references, research statement, teaching statement, and (if applicable) representative publications.
    • generate_lor_info.pl: Generates a HTML file of how your letter of recommendation writers should send your application to each school (e.g., email, online, or postal) and the address to use. You can then forward this file to each of your references.
    • generate_school_count.pl: Prints to the screen the number of schools to which you are applying.
    • generate_school_list.pl: Generates a HTML file that lists the names of all the schools to which you are applying. You can send it to friends and family to impress them. :)
    • Schools.pm: The file which holds the hash table of all the information necessary to use the other files. I have included an example in the file with comments on what each hash keys represents.
  • Find the information required by the Schools.pm file for each department to which you wish to apply (e.g., by finding faculty position advertisements on department websites) and type it into the file. This is probably the most time consuming part if you plan to apply to a lot of schools.
  • Write your cover letter by changing the text in generate_cover_letters.pl. I have left the text of my cover letter in the file as an example. Please do not just copy my exact template. Your cover letter should be personalized for your background and goals.
  • Hack the scripts to customize them according to your needs and generate your batch of job packets!