The autocv
package provides a straightforward, unified, data-driven workflow for constructing, tailoring, and maintaining a curriculum vitae (and related job application documents) from data stored in spreadsheets.
Overview
User interface
The core interface of autocv
is encapsulated in the following functions:
Build an application directory. Given a job of interest, construct a directory containing the template data files and folders required to build a tailored job application.
Edit the application data files. Open the data files for a given job of interest and select the information (sections, entries, skills, ordering) to include or exclude from your application.
Render your application documents. For a given job of interest, use the tailored data files to generate the requested application documents (plain text and/or PDF résumé, PDF or HTML curriculum vitae, cover letter, etc.).
Check application keywords. Given a term bank of relevant job keywords as well as a job posting and the application documents for a given job of interest, extract keywords from your job application and cross-check them against the job posting.
Review job application data. Retrieve information about your existing job applications.
Command-line interface
The autocv
package comes with a built-in CLI called cv
which exposes its core functionality in a compact, user-friendly way:
>>> cv --help
Usage: cv <command> [options]
Available commands:
build Build an application directory.
edit Edit the application data files.
render Render your application documents.
check Check application keywords.
review Review job application data.
apply Set the status of a submitted application.
open Open a job output directory.
Run 'cv <command> --help' for command-specific options.
build
>>> cv build --help
Usage: cv build
[STEP 1/4] Build an application directory.
Options:
-h, --help
Show this help message and exit
Details:
1. Opens 'input/job_metadata.yml' and prompts you to enter
metadata for a job of interest, including:
- a unique identifier `id`
- the current application period `period`
- hyperlinks to the job posting
Upon confirmation, adds a logfile entry to the application directory
for the given period and constructs the job directory from your base
data files:
{applications/<period>/<job>/}
2. Attempts to download the job posting and waits for you to
make edits to the retrieved text. Once confirmed, generates keyword
reports for your reference.
See also:
{autocv::build_base_directory}
Creates the required stylesheets, notebooks, and base data
files inside the 'input/' directory, including:
{cover_data.xlsx}
{resume_data.xlsx}
{qa.yml}
{job_metadata.yml}
edit
>>> cv edit --help
Usage: cv edit [id='latest'] [--period PERIOD='latest'] [--doc DOCUMENT='resume'] [--base]
[STEP 2/4] Edit application data files.
Options:
-p PERIOD, --period=PERIOD
Application period [default latest]
-d DOCUMENT, --doc=DOCUMENT
Document to edit: one of all, resume, cover, qa. Ignored with --base. [default resume]
-b, --base
Edit the base application data instead of a specific period/job
-h, --help
Show this help message and exit
Details:
a. Opens the following documents inside the
'application/<period>/<job>/input/' directory for editing purposes:
{posting_<id>.txt}
{resume_data_<id>.xlsx} [--doc all|resume]
{cover_data_<id>.xlsx} [--doc all|cover]
{qa_<id>.yml} [--doc all|qa]
Modify these files to tailor résumé entries, bullet points, keywords,
and cover letter sections for a specific job application. Modify the
following fields to change the rendered outputs:
include
Toggle included résumé and cover letter entries.
b. With the --base flag, opens the following documents inside the root
'input/' directory:
{resume_data.xlsx} [--doc all|resume]
{cover_data.xlsx} [--doc all|cover]
{qa.yml} [--doc all|qa]
Modify these files to maintain your base list of positions, projects,
and skills (from which job-specific files are derived) as they grow
over time. Modify the following fields to change the rendered outputs:
in_base
Toggle included base résumé entries.
core_tools
current_tech
key_competency
Modify CV-specific details.
short_summary
tool_*
competency_*
Modify LinkedIn-specific details.
See also:
{cv build}
Must be run as a prerequisite to construct the application directory.
render
>>> cv render --help
Usage: cv render [id='latest'] [--period PERIOD='latest'] [--doc DOCUMENT='resume'] [--base] [--cv] [--linkedin]
[STEP 3/4] Render application documents.
Options:
-p PERIOD, --period=PERIOD
Application period. Ignored with --base, --cv, or --linkedin. [default latest]
-d DOCUMENT, --doc=DOCUMENT
Document to render: one of all, resume, cover. Ignored with --base, --cv, or --linkedin. [default resume]
-s, --show
Open the rendered documents instead of showing them in the file explorer
-a, --achievements
Use a list of achievements in place of the cover letter body text. Ignored unless --doc cover|all supplied.
-b, --base
Render the base résumé (as both a PDF and plain text file) instead of those for a specific period/job
-c, --cv
Render the base, web-optimized CV (as both an HTML and PDF file) instead of those for a specific period/job
-l, --linkedin
Render the base résumé (as both a PDF and plain text file) using the `short_summary` and `linkedin_*` fields instead of those for a specific period/job
-h, --help
Show this help message and exit
Details:
a. Using the applicable input data files and stylesheets (see `cv edit`
and `cv base`), generates the following documents inside the
'application/<period>/<job>/output/' directory:
{resume_<yourname>_<id>.pdf} [--doc all|resume]
{resume_<yourname>_<id>.txt} [--doc all|resume]
{cover_<yourname>_<id>.pdf} [--doc all|cover]
{cover_<yourname>_<id>.txt} [--doc all|cover]
{email_<yourname>_<id>.txt} [--doc all|cover]
b. With the --base flag, renders the following documents and saves
them inside the root 'output/' directory:
{resume_<yourname>.pdf}
{resume_<yourname>.txt}
c. With the --cv flag, generates the following documents inside
the root 'output/' directory:
{cv_<yourname>.html}
{cv_<yourname>.pdf}
d. With the --linkedin flag, generates the following documents inside
the root 'output/' directory:
{resume_<yourname>_linkedin.pdf}
{resume_<yourname>_linkedin.txt}
See also:
{cv edit}
Run this first to tailor data files as desired.
check
>>> cv check --help
Usage: cv check [id='latest'] [--period PERIOD='latest'] [--base] [--linkedin]
[STEP 4/4] Check application keywords.
Options:
-p PERIOD, --period=PERIOD
Application period. Ignored with --base or --linkedin. [default latest]
-b, --base
Count skills in the base résumé instead of those for a specific period/job
-l, --linkedin
Count skills in the LinkedIn-appropriate base résumé instead of those for a specific period/job
-h, --help
Show this help message and exit
Details:
a. Extract job-relevant terms from a résumé and cross-check them against
the job posting. The term bank is a plain text file with each term
(case-sensitive) defined on a new line. By default, it is located
inside the 'inst/extdata/resources/' directory:
{skill_list.txt}
{keyword_list.txt}
This step generates CSV files inside the
'application/<period>/<job>/output/' directory, namely:
{keyword_counts_<id>.csv}
{skill_counts_posting_<id>.csv}
{skill_counts_resume_<id>.csv}
{skill_report_<id>.csv}
b. With the --base flag, only prints skill counts based on the base
résumé With the --linkedin flag, only prints skill counts based on
the LinkedIn-appropriate base résumé
See also:
{cv render}
Run this first to generate the résumé to check.
review
>>> cv review --help
Usage: cv review [id='latest'] [--period PERIOD='latest'] [--field FIELD='all'] [--status STATUS='all'] [--report]
Review application details.
Options:
-p PERIOD, --period=PERIOD
Application period [default latest]
-r, --report
Summarize the application log by status
-h, --help
Show this help message and exit
See also:
{cv check}
Generate keyword reports.
API reference
Find the documentation for these functions in the reference, along with documentation for additional functions included with the package so that developers may tweak and extend functionality as desired.
Data reference
The autocv
package includes template data files which the user should modify to reflect their work experience, skills, application text, and metadata for any job of interest. The core data files are:
example_skill_data
: A table with rows representing job-relevant skills, along with ratings of skill level and flags indicating whether to include each skill in the present job application.example_position_data
: A table with rows representing professional roles, degrees and certificates earned, professional projects, etc., with optional fields including title, company, timeline, and description text.example_contact_data
: A table with rows containing personal contact information and associated links (address, email, personal website, etc.).example_text_data
: A table with rows containing the textual building blocks of a job application, such as a résumé bio or a cover letter.example_job_metadata
: A named list with fields containing the details of a given job application, such as the company, position, associated URLs, and a unique identifier.example_posting
: A string containing the text of an example job posting.
Example documents
The autocv
package includes functions and dynamic spreadsheets for generating the following documents:
PDF resume Either a general (‘base’) résumé for the role you are pursuing or a tailored résumé, built upon the base, modified to suit a specific job to which you are applying. Uses the notebook
resume.Rmd
(see template) and the spreadsheetresume_data.xlsx
(see template, as well as the corresponding example datasets example_skill_data and example_position_data). View an example.PDF cover letter: A cover letter containing the company and position information for a job of interest. Uses the spreadsheet
cover_data.xlsx
(see template, as well as the corresponding example datasets example_contact_data and example_text_data).Plain text résumé: A resume containing the same information as the PDF résumé and relying on the same template files but rendered in a plain text format for simplicity and ease of data entry. View an example.
Plain text cover letter: A cover letter containing the same information as the PDF cover letter and relying on the same template files but rendered in a plain text format for simplicity and ease of data entry.
HTML curriculum vitae: An informal, web-friendly curriculum vitae containing an ongoing record of your professional history, a graphical breakdown of your skill set, and a space to include an image. Relies on the notebook
cv.Rmd
(see template) and the same spreadsheet files as the PDF and plain text résumé. View an example.PDF curriculum vitae: A curriculum vitae containing the same information as the HTML version and relying on the same template files but rendered as a PDF document for offline distribution.
Professional profile curriculum vitae: A streamlined curriculum vitae, rendered as a PDF using the PDF resume styling, based on concise information, provided in the data spreadsheet, intended for compatibility with an online professional profile such as LinkedIn. Relies on the same template files as the PDF and plain text résumé.
Installation
This package is not on CRAN. If you would like to use it, you can install it directly from GitHub by running the following in your console:
Usage
Follow this demo illustrating the basic end-to-end workflow to get started.
Acknowledgements
This project is inspired by Nick Strayer’s data-driven cv template (exemplar), which extends the pagedown html_resume
template. Further inspiration and design refinements are borrowed from Matt Leary’s resume repository (exemplar). Thank you to the creators of these projects.