I’m again in this time of my life where I’m looking for a new long term project to work on. Because optimization is my favorite way of procrastination, instead of just making a Curriculum Vitae (CV) for job applications, I decided that I need to implement an org-mode export backend. This backend will let me keep my CV in org-mode and then export it to \(\LaTeX\) or markdown for my website. This exporter now lives in gitlab as org-cv and the documentation is here .

I work with org-mode, because it is amazing, because it already provides exporters and its syntax allows to store information beyond the plain prose. That is by the way the key, an item inside a CV includes information beyond what I have done, but where? when? and with whom? Such information can be encoded in a property drawer , and the exporter’s job is to understand them so that they can be displayed later on in a pertinent location. With this in mind I’ll describe a job entry like this:

 1* Employement
 2** One job
 4:CV_ENV: cventry
 5:FROM:     <2014-09-01>
 6:TO:     <2017-12-07>
 7:LOCATION: a city, a country
 8:EMPLOYER: The employer
10- I think about awesome stuff to do.
11- I do the awesome stuff I think of.
12- I write about awesome stuff I do.

I use org-mode's tree hierarchy: a heading about Employement and then the subtrees are the job positions taken. The :CV_ENV: cventry is the key-value pair that makes this the special CV item, the other ones are self explanatory and provide the context information of the entry/job. Finally, I can use org-mode to write about the work done.

In a CV, its header includes a bunch of contact information, thus many new keywords are recognized by the exported to this purpose. The example below shows their availability and use.

 1#+TITLE: My dream job
 2#+AUTHOR: John Doe
 4#+ADDRESS: My Awesome palace
 5#+ADDRESS: Fantastic city -- Planet Earth
 6#+MOBILE: (+9) 87654321
 7#+HOMEPAGE: example.com
 8#+GITHUB: John-D
 9#+GITLAB: John-D
10#+LINKEDIN: John-Doe
11#+PHOTO: smile.png

After you have written your information you can rely on my package org-cv to generate the \(\LaTeX\) file for your pdf. I currently support moderncv and altacv templates. I also wrote an extension for ox-hugo so that I can prepare a markdown file, which HUGO will understand to generate my Online CV which.