Structured Résumés: why does it have to be so hard?
====What is a “structured” resume?====
Most of us make our resumes in word processors (such as Word or OpenOffice Writer) or typesetting systems (such as LaTeX). Such resumes are free form and ad-hoc, in the sense that each resume is presumably different from every other one in terms of organization of content, layout, design and obviously, content.
Since most resumes have a lot of common elements (contact, qualifications, employment history etc), can we somehow abstract out this commonality? Loosely speaking, a structured resume is one where the specification of the resume is in some standardized format.
==== Why structured resumes? ====
While there is nothing wrong with writing resumes the old way, putting some kind of structure to resumes would be beneficial in at least two ways:
* Instead of treating resumes as just regular binary blobs of PDF or .doc files, search engines could actually be made to do a lot more with structured resumes. Right now each HR department has to maintain its own database, with no way of converting the information in the database to an actual usable resume. Imagine if people could just upload their structured resumes in some repository (with the appropriate access control etc) and then searching would become so much more manageable.
* Separate presentation from content: often times I am asked to send my resume as a plain text file in emails (no attachments). At other times, I want to print or email a PDF of my resume. And I most certainly want to put up an HTML version of my resume on my web page. Maintaining different formats of my resume and keeping them consistent with one another is a __HUGE__ PITA. A structured resume offers an elegant solution to this problem: write your resume once in some format, and then there will be tools to take that specification and convert it to whatever format you want. For each format, you might be able to control the presentation separately (eg: using CSS for the HTML format).
=== HOWTO: Structured Resumes ====
Given the requirements and architectural considerations of the system, XML seems to be an obvious choice for building structured resumes. I started looking at structured resumes almost 5-6 years back, and at the time, the only thing I could find was [[http://xmlresume.sf.net|XML Resume]]. From the website:
//The XML Résumé Library is an XML and XSL based system for marking up, adding metadata to, and formatting résumés and curricula vitae.//
For several years this worked out **great** for me. The text output is fairly easy to get right since there is not a whole lot to customize. I really liked the PDF output from XML Resume — it was pretty and compact. The HTML format left a little to be desired, but CSS took care of it. The code was well structured and easy to hack and I made a whole bunch of changes to the schema to suit my needs.
And I could have probably just stayed with it without any problems. However, me being me, I started checking out the space again around an year back. One of the reasons was that XML Resume had become largely defunct. A huge push for converting the XML DTD to a Relax-NG format had abruptly died out. Meanwhile, a new consortium to standardize resume and other HR data in XML was gaining prominence. From the [[http://www.hr-xml.org|HR-XML]] web site:
//The HR-XML Consortium is an independent, non-profit organization dedicated to the development and promotion of a standard suite of XML specifications to enable e-business and the automation of human resources-related data exchanges.//
Finally, there was a lot of interest in embedding semantic information into regular (X)HTML, giving an easy transitory path to a completely semantic web. This effort is being spear headed by [[http://microformats.org|the microformats community]] and they have had a visible impact. A lot of services you love and use on a daily basis already embed a LOT of information using microformats in regular HTML pages (Technorati, Blogger, Flickr and [[http://microformats.org/wiki/examples-in-the-wild|many many more]]). Standard specifications already exist for [[http://microformats.org/wiki/hcalendar|events]] and [[http://microformats.org/wiki/hcard|contacts]], and there is a [[http://microformats.org/wiki/hresume|draft for hResume]].
So I figured it was time to re-assess the tool space. For HR-XML, [[http://hr-xsl.sourceforge.net/|HR-XSL]] is the best tool chain around. From its website:
//The HR-XSL project provides a set of command-line tools that transforms a curriculum vitae or résumé in XML format into PDF, HTML, or plain text format.//
My main gripe with HR-XSL is that its output is not quite as pretty as XML Resume. In part, this is because HR-XSL heavily relies on the Docbook tool chain. That is, it converts HR-XML into Docbook, and then uses the Docbook toolchain to convert it for various formats. On the other hand, XML Resume had a customized set of stylesheets so they could be a lot more refined in their conversion.
This is probably not a huge problem though. It should be possible to tune the Docbook output generated by HR-XSL along with some styling options to make the output more compact and good looking. The text output is fairly good, and so is the HTML (with some CSS good-ness).
However, my biggest gripe with both XML Resume and HR-XSL/HR-XML is that marking up the resume is just extremely, //extremely// tedious. I know I know there are a lot of good XML editors out there that supposedly take the pain out of writing raw XML by hand. I’ve tried and believe me, they don’t take out any of the real pain. I mean really, it’s nice that XML is human readable and all that, but it is NOT meant to be written out by hand! What I would **really** love is to be able to write my resume in some really simple markup (such as Textile or Dokuwiki markup) and have that be converted automatically to HR-XML or whatever.
For me, there are two main problems with microformats: first, I still need to mark up the HTML by hand, and it is almost as painful as marking XML by hand. Secondly, microformats are strongly tied to HTML and there is no good way of converting your “content” to other formats (like text and PDF). However, microformats do have the advantage that since it can be embedded in free form HTML, it gives a LOT of flexibility in terms of how the content is presented. For instance, if I want to give a link to my full list of publications in the publications section of my resume, it is almost impossible to do with XML Resume or HR-XML but trivial with microformats.
Right now I have an outdated copy of my resume in XML Resume format and an unfinished but current copy in HR-XML markup. After much agonizing deliberation, I have decided to go the microformats route for now. To deal with format conversion, I markup my resume in HTML and then a quick ”elinks -dump” gives me the text format, and Print to PDF in Konqueror gives me the PDF format.
If structured resumes are to gain any more momentum, the barriers to entry need to made much lower. Does it really need to be this hard?
**Update (2007/10/28, 10pm PST)**: I figured I should post the links to my resume for reference! So here we go:
* Microformats: [[http://floatingsun.net/resume/resume.html|html]], {{http://floatingsun.net/resume/resume.pdf|pdf}}, {{http://floatingsun.net/resume/resume.txt|txt}}. I’m still working on the content and presentation, so please bear with me!
* xmlresume: {{http://floatingsun.net/resume/xmlresume.xml}}
* hr-xml: {{http://floatingsun.net/resume/hr-xml-resume.xml}}
Quite indepth. Since I did not see a direct link, hResume is the microformat for publishing resumes.
*@abhijit*: Included now, thanks!
Am using ReStructuredText for most notes, presentations, resumes, journals these days. It’s very palatable in plain text and converts easily to pdf, s5, html, xml when necessary.
Though it would be nice to add microformat meta data to the rst markup. Perhaps by just using pre-defined “section headings”, this could be accomplished….
Of course I’m sortof a python guy so I’m biased towards it…
Marking up a resume in any flavor of XML is tedious. If it is tedious for technical people, consider it impossible for an average job seeker.
The HR-XML 3.0 resume will be a good deal “flatter” than its predecessor and have some data type problems cleared up. This should make generating a supporting form using XForms and InfoPath easier. This may be some help.
Also some of the things that make usable, portable structured resumes so hard aren’t necessarily technical reasons. Every social network site, job board, etc. has a resume/profile building tool. Once they have collected structured, fielded data, it would be very easy to generate some sort of “portable” XML file for the candidate. But you then have to ask yourself, what would be the incentive for those sites to want to enable such portability? I know of only one site (a non-profit cooperative arrangement among group of leading German employers) that will return an HR-XML resume to job seekers. Each participating employer will then accept such resume directly.
Is there something out there that would give candidates control and flexibility? I’m not sure there is something immediately on the horizon. Some of the plugins for WordPress and blogging/social networking platforms seem to have some promise. An ideal plugin might provide a form-driven profile builder that creates the hResume for search engine discovery of some level of detail (skills, location, etc.), but that also captured sufficient detail to allow full profile/resume exchange via HR-XML. Such exchange of might be regulated using a protocol like Liberty’s ID-SIS (some work on this in Europe: http://projectconcordia.org/images/9/9a/Draft-symlabs-id-hr-xml-1.0-01.pdf ) or using something like the emerging OpenID Attribute Exchange ( http://openid.net/specs/openid-attribute-exchange-1_0-07.html ).
All that said, anyone dreaming of Resume interchange nirvana also needs to be aware that for employers, a resume is starting point. I don’t think the above vision of user-maintained and controlled structured resumes would eliminate those dreaded applications forms. However, what it might do is to provide an easy way to pre-populate those forms with all the usual stuff (contact info, employment history, education, skill summary, etc.).
Short of all of the above – some of the best, but still underutilized technology for simplifying applications for job seekers are Resume parsers (almost all of which use HR-XML as their intermediate format). The way these work is that they allow candidates to upload their word, pdf, or html (even hresume) resume. The file is then passed to the parser web service, which returns HR-XML, that is used to pre-populate the application form. The job seeker can then make any corrections and fill-in any additional information required. More job sites should have this technology deployed. Unlike all what I’ve described in the preceding paragraphs, the resume parsers have been around for 9+ years. They work. They save candidates a lot of typing and reduce the “drop rates” for career sites and employers.
*@matt*: I’m a Python guy myself, and needless to say I have dabbled with RST earlier. I don’t really know how easy it is to add custom syntax annotations to RST, I should probably look into that. Meanwhile, rst2xmlresume or rst2hr-xml would be super cool!
*@chuck*: Most of your points are right on. There is an hResume builder plugin for WordPress, but I haven’t come across any plugins for HR-XML. I’m really looking forward to HR-XML 3.0! For me, personally, the incentive to use something like HR-XML exists irrespective of whether employers use it or not. As an end user, I would just like to minimize my effort (duplicating content across different formats) while retaining flexibility (separate content from presentation).
I am feeling the pain of trying to find a decent resume generator. For years, I used LaTeX for generating my resumes. I have a decent PDF version of my resume, and with a little effort, I am able to put together a rtf version as well as a HTML version (both require a lot of fat fingering to get things looking right).
So I tried to move to using XML ( in the form of XML Resume Library). Like you, I was the potential of the project. I was really pleased by the tagging feature, considering that one resume does not fit all. On the other hand, like most sourceforge projects, interested wanes quickly. Something that had potential, falls by the wayside.
So what is the next solution? I am not really feeling HR-XSL, and have run out of other options. What direction have to moved to? I noticed that you pulled your example resumes off of your blog.
@Kim Callis: I hear your pain. HR-XSL seems too XML heavy, so even I’ve avoided it so far. Recently I’ve started using emurse.com for my resumes and so far it has worked out reasonably well. The principle is the same — you input your resume on a web-based form and emurse will make it available in multiple formats, including plain text, HTML, PDF and OpenOffice. My only gripe so far is the formatting of the PDF output. My LaTeX output or even the XML-resume output looked much slicker.
Great post!
I’ve been researching about this lately and I’ve found some links you might be interested in looking out:
- Format transformation webservices:
http://cvt.eife-l.org/index.php?language=en
- Europass: a nice webservice for building some sort of custom Europass HR-XML, that later can be transformed with the above link
http://europass.cedefop.europa.eu/europass/home/vernav/Europass+Documents/Europass+CV.csp
(check the first link)
I hope it helps!
Regards.