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:

* Employement
** One job
:PROPERTIES:
:CV_ENV: cventry
:FROM:     <2014-09-01>
:TO:     <2017-12-07>
:LOCATION: a city, a country
:EMPLOYER: The employer
:END:
- I think about awesome stuff to do.
- I do the awesome stuff I think of.
- 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.

#+TITLE: My dream job
#+AUTHOR: John Doe

#+ADDRESS: My Awesome palace
#+ADDRESS: Fantastic city -- Planet Earth
#+MOBILE: (+9) 87654321
#+HOMEPAGE: example.com
#+GITHUB: John-D
#+GITLAB: John-D
#+LINKEDIN: John-Doe
#+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 you can visit in the about section or directly here.

Photo by Álvaro Serrano on Unsplash