15 ms·
Show HN: Open-source resume builder and parser
Hi HN, I recently created and published an open-source resume builder as a weekend project. The idea came to me while I was mentoring students and noticing common mistakes they made in their resumes that I had also made in the past. I thought to build a tool to help people easily create a modern professional resume with built-in best practices to avoid those mistakes.
Top highlights of the resume builder are:
1. Real time UI update as you type
2. ATS friendly to top ATS platforms, e.g. Greenhouse, Lever
3. Privacy focus - no sign up is required and data is stored locally in browser that only users have access
4. Support import from existing resume PDF
The tool also includes a resume parser to help people test their existing resumes’ ATS readability if they might not be interested in using the builder. I also explained the parser algorithm in an article with interactive tables that might be an interesting read to see the steps and logics it uses (https://www.open-resume.com/resume-parser https://www.open-resume.com/resume-parser).
I hope others might find this tool useful and I look forward to hearing any feedback the community has. Thanks all.
Home Page: https://open-resume.com https://open-resume.com
Github Repo: https://github.com/xitanggg/open-resume https://github.com/xitanggg/open-resume
Product Hunt: https://producthunt.com/posts/openresume https://producthunt.com/posts/openresume
- tacone 3y agoI wrote my own (code first) resume generator and I am very curious about your project, also for things I didn't know about like ATS. Will definitely look into it.
- xitang 3y agoAmazing to hear that you are creating your own resume generator. I have learned a lot while building this project and am happy to share thoughts if you have any questions. I document my code extensively so I hope it can be helpful reference too. In regards to ATS, basically company uses ATS software to parse resume info, the most ATS friendly resume structure is the simple single column resume design since it works best with the parser by being easiest to parse.
- js4ever 3y agoVery nice, thanks for making this open source!
- xitang 3y agoThank you for your support! I am so glad you find it nice.
- juliusgeo 3y agoJust checked out the resume scanner and it’s very nice! I appreciate how it only took a few clicks to get from the home page to a real example with my own resume. It also works much faster than the resume parsers I’ve used before (most of which take on the order of 10 seconds just to get from the upload screen to a parsed output). One minor nit is that I think the resume scanner deserves its own button on the front page—the current placement makes it seem like an addendum to the “no sign up requirement” imo.
- xitang 3y agoThanks so much for your kind words. Great feedback on the resume parser being not as noticeable on the home page. I just created an issue to track this feedback: https://github.com/xitanggg/open-resume/issues/3 https://github.com/xitanggg/open-resume/issues/3. I initially think people might be more interested in using the resume builder so I haven't thought about making the resume parser more clear. Would you mind sharing more about your use case of the resume scanner?
- juliusgeo 3y agoYeah, I see what you mean. In my case it is because I use LaTeX to create my resume, and my main concern is just that in some ATS systems it doesn't parse correctly and it would be nice to know when I'm making the resume, rather than when I apply for the job. For people without an existing opinionated workflow (likely the bulk), the resume scanner would be a good way to help them understand the value proposition of a unified builder that works with most ATS systems by design, rather than as an afterthought (which seems to be the case with most resume builders online besides this one).
- siilikuin 3y agoNice work, Xitang. Curious to know if this supports the JSON Resume format.
- xitang 3y agoThanks for your kind words. When creating the resume state structure, I have considered making it a JSON Resume format so it is compatible with other JSON Resume as well as tools that built on top of JSON Resume. However, after looking more into JSON Resume's schema, I find it to be a bit more restrictive than I would like, e.g. it includes a startDate and endDate as date type for work experience, but I want to combine both into date so user can type anything they like `June 2022 - Present` or `06/2022 - Present`. Also, for skills, JSON Resume has a very fixed structured but I want to give users the freedom to type anything in any format. Overall, I think JSONResume works well on its own and defines each field very well. But when thinking in product level, these restrictions might pose too much restrictions, so I ultimately create my own custom resume state type.
- dr_kiszonka 3y agoThis sounds reasonable. If exporting a JSON resume is not possible, maybe you could support importing one?
- xitang 3y agoGreat point. Top of my head, it seems possible and easier to support import from JSON resume instead of export. Just created an issue to keep track of it: https://github.com/xitanggg/open-resume/issues/12 https://github.com/xitanggg/open-resume/issues/12
- latexr 3y agoThis looks really good. Responsive real-time preview, clear interface, no login necessary, customisable without being overwhelming. Even the category names can be edited if you need a CV in a language other than English. You’re ticking a bunch of the right boxes. Fantastic work, I’ve already sent the link to a few friends.
- xitang 3y agoThank you so much for your kind words and support! I am so glad you like the UI/UX and share it with a few friends. I hope they might find it helpful
- shmooper 3y agoAwesome work! The builder is super comfy and intuitive. Just one request - would really like to mark in bold parts of a sentence.
- xitang 3y agoThanks so much for your support and kind words. I just created an issue to document this feedback: https://github.com/xitanggg/open-resume/issues/4 https://github.com/xitanggg/open-resume/issues/4. Can you share more about your use case of mark in bold in parts of a sentence and what are the things you would like to mark in bold?
- pratio 3y agoAlso checkout https://jsonresume.org/ https://jsonresume.org/ not my project but also amazing work
- Alifatisk 3y agoI vouch for this
- xavdid 3y agoMy resume has been backed by JSON resume for ages. Great little project, though I'm not sure how maintained it is these days.
- xitang 3y agoAgree that JSON Resume is a great project. I had looked into the project before building this and they have been an inspiration.
- agumonkey 3y agoit's cool, you host your json on a github gist and it's available online that said my resume is not working anymore, even though the gist is still there. I wonder if others have the same issue.
- thomasfromcdnjs 3y agoThe creator here, can help you out. I moved it all to vercel functions running on node 18. Broke a bunch of themes in the process.
- agumonkey 3y agoOh ok, is there a list of working ones ? thanks and good luck
- thomasfromcdnjs 3y agoI updated the themes page a couple weeks ago -> https://jsonresume.org/themes/ https://jsonresume.org/themes/ But I could also try resurrect the theme that you were using.
- moffkalast 3y agoSo in a sense, you've made a resume builder you can now put on your resume that you've built with the builder itself? Very meta.
- xitang 3y agoYeah haha, and it is true. I actually personally use this resume template to apply for jobs during my last job search and was invited to interview with companies like Dropbox, Meta, Amazon. Now I translate the template to be creatable with the builder so I can edit it easier and other folks can use it too.
- moffkalast 3y ago"Meta Eyes Resume Builder Builder's Meta Resume, Builder Resumes Resume Builder Building"
- jedberg 3y agoInteresting. I put my LinkedIn generated resume into the parser, and it only parsed it about 1/2 right. Which makes me wonder, who is doing the wrong thing here? Is LinkedIn generating a bad resume, or is the ATS parser not able to parse what I assume should be pretty standard, as I imagine a lot of people use that feature of LinkedIn.
- xitang 3y agoThis is very helpful to know. Thanks for sharing this. I haven't tested the resume parser with the resume pdf generated from LinkedIn. I just create an issue and will test it next: https://github.com/xitanggg/open-resume/issues/5 https://github.com/xitanggg/open-resume/issues/5. I will share more once I look more into it.
- keyle 3y agoNot a bug, it's a feature, at least half of what's on linkedin is fabricated! ;)
- leodler 3y agoI'm only asking because you reference it specifically, but were you actually able to find a copy of ISO 32000??
- xitang 3y agoYeah I did. I am not sure which link I used before but this one seems to also work: https://www.pdfa-inc.org/product/iso-32000-22020-document-management-portable-document-format-part-2-pdf-2-0-sponsored/ https://www.pdfa-inc.org/product/iso-32000-22020-document-ma.... It is free but you have to get through paywall first. It is ~1000 pages doc and I skimmed through it before. The resume parser uses PDF.js to read the pdf, I have also watched the presentation by Julian Viereck https://www.youtube.com/watch?v=Iv15UY-4Fg8 https://www.youtube.com/watch?v=Iv15UY-4Fg8 that explained some of parts inside a PDF doc
- eikenberry 3y agoIMO if you're targeting software developers you might want to consider including the github or similar link to their portfolio in the top section. It is one of the more important items to include, more so than linked-in for devs.
- xitang 3y agoThank you for this great feedback. I agree with this 100% and I personally use github link in my resume instead of linkedin link. Currently, it shows a GitHub logo if you pass in a github link, e.g. github.com/eikenberry. I just create an issue to keep track of this on how to make it more noticeable: https://github.com/xitanggg/open-resume/issues/6 https://github.com/xitanggg/open-resume/issues/6
- xyst 3y agoLooks like the LaTeX template I use
- xitang 3y agoNice, did you build that LaTeX template?
- Andrew_nenakhov 3y agoMany years ago we were posting jobs on a local bulletin boards and received applicant resumes on an email. The composition of a resume acted as a primary filter from people who couldn't even organize a few lines of information about themselves. Then, an internet company in our country took over the market and almost all jobs are searched through it. Of course,it features a very nice resume builder, so now everyone has a nice resume and we can't even filter out the worst candidates without an investigative effort. Thus, this work is commendable, but might have harmful effects.
- robobro 3y agoIf your primary filter is whether or not someone can produce a resume or not, do better.
- Andrew_nenakhov 3y agoIt suited me quite fine for many years. If an intellectual worker can't take a text editor and produce a coherent text about his skills and job experience, it is unlikely he'll be good at any job that requires thinking.
- least 3y ago> If an intellectual worker can't take a text editor and produce a coherent text about his skills and job experience, it is unlikely he'll be good at any job that requires thinking. I'd argue that if a resume builder threatens your ability to filter out good and bad resumes, you're probably not a good hiring manager and also are unlikely to be fit for a job that requires thinking.
- bee_rider 3y agoYou could try to argue that, but I think you’d need more information about how successful this person’s career has been to present much of an argument. A quick dumb filter that works isn’t dumb, right?
- 3y ago
- goncalomb 3y agoLooks good, definitely an impressive "weekend project". I'll probably use it in the future. I don't mean to sound rude. But, can you explain what you mean by "trusted by students and employees from top universities and companies worldwide" while showing some university/company logos? How can such a new project make those claims? Was it released elsewhere privately? Looking at the git history, I see it was created 2 days ago, in a single commit.
- tornato7 3y agoHe could have just sent it to a few friends at those universities/companies. Nobody should take those sorts of 'trusted by' sections seriously anyway.
- throwaway2037 3y agoReal question: How much do you think young start-ups pay majors to add their name to the 'trusted by' sections? For me, it feels like paid adverts in search results. I always ignore/discount them. That said, 'trusted by' sections are targeting The Suits (CTOs, etc.), not hands-on folks like me.
- vasco 3y agoThey're targeting the marketing person that put them there because the landing page template they bought to customize had such a section. Nobody gets paid anything for it.
- dustincoates 3y agoI once came across a landing page for a well known (to the HN crowd, at least) that claimed us as a customer, even though we weren't using the products they were advertising us on. It took a month or so for them to remove it, and since then I've been a lot more cynical about what I see there.
- xitang 3y agoThanks for you kind word and for asking this great question. I have to admit that the claim is more for marketing purpose to make it look impressive. The truth is that we tested the design with a small group of folks, including myself, students, a career coach and friends. We use this design during our job searches and we have landed interviews/offers from the companies listed in the logo clouds. It works for a small sample size of us, so we include the logos up there to enhance its credibility that it at least has proven to work for some companies out there.
- pachico 3y agoI would allow people to scrape a LinkedIn profile and get the resume from there.
- xitang 3y agoGreat idea. The app currently only supports import from pdf but not linkedin since it is a client side local app and isn't able to do any server side scrape work.
- roetlich 3y agoI'd also love import from LinkedIn. Might be possible to do it client side by loading the .pdf generared by LinkedIn's CV export. There is also a browser extension to get a LinkedIn CV as json, maybe you could load that?
- razemio 3y agoJust as a thought. For me, AsciiDoc was perfectly fine. No modifications needed, and it is compatible with GitHub's build in preview. That's what it could look like: https://github.com/razem-io/resume https://github.com/razem-io/resume Also, by no means is this a good resume. It just works for me as a developer. Using it since 7 years to apply for jobs. Did not disappoint yet ;).
- xitang 3y agoThanks for sharing another great tool! Agree that there are many great tools out there.
- rosebay 3y ago[dead]
- kalverra 3y agoThis is great! I enjoyed the breakdown of the ATS logic you use. Did you look at how others like Lever use ATS and replicate that? Or was this a green field build?
- xitang 3y agoThanks for your support and kind words. I tested the resume design with ATS platforms like greenhouse and lever to ensure they are parsed correctly, but their algorithm remains a black box and I am not aware of how it actually works. The resume parser I created is my attempt to create a simple version of the parser. I would think their approach might be something similar but definitely more sophisticated and better tested, but I hope this simple resume parser can help give some ideas on how your resume perform and what is going on behind the scene, e.g. having explained how it works in the article, it might be more clear why some fancier resume designs, such as two columns resume, are not ATS friendly, since it would require more complicated parsing logics and most platforms might not offer it.
- deleted 3y ago[deleted]
- theyknowitsxmas 3y agoA dad’s resume from the 1980’s https://github.com/runvnc/dadsresume https://github.com/runvnc/dadsresume
- xitang 3y agoNice well formatted resume to look back in time, thanks for sharing this
- donaldbough 3y agoThis is the most touching repo I've seen thus far
- throwaway2037 3y agoGosh, this is such a gem. Thank you to share. Putting on my meme cap for a moment: Page two, first work history entry says: (1956-1980) Duties included: Telemetry Data Processing Programmer Send his resume to Facebook or Cambridge Analytica. Hiring manager will think: "He's seen everything!"
- t3pfaff 3y agoI have liked the outputs and organization of [Reactive Resume](https://rxresu.me https://rxresu.me) in the past but I have realized it gets parsed unintelligibly by most ATS and seems to rasterize some sections as well. Is there a way to directly import json into the builder on this?
- xitang 3y agoI have looked into Reactive Resume. It is a great tool and an inspiration for this project. How well the resume is parsed depends largely on the format you choose. Two column resume designs look good but aren't ATS friendly. You should be able to get better results with a single column resume. Import from JSON Resume hasn't been supported, but an issue has been created to track it: https://github.com/xitanggg/open-resume/issues/12 https://github.com/xitanggg/open-resume/issues/12
- linusha 3y agoA general question: What do you all think about this Skill representation as points out of 5 (or 7 or 10 for that matter)? These arbitrary scales always hit me as kind of...useless? There is no frame of reference what a specific amount of points mean. Of course, with this kind of skill-self-description there will always be difficulties, i.e., one does not always know what one does not know etc. But it seems to me that e.g., a duration of full-time or equivalent experience with a technology would provide a better way of measuring experience than these arbitrary scales?
- ghosty141 3y agoThey are arbitrary in a way but remember that the people scanning over the resumes are not technical people, for them its important that a skill is there and thats about it. Finding a job is more about social skills than technical ones.
- linusha 3y agoBut why spent valuable estate on the CV by providing a made-up scale, when just putting the skill would be enough to satisfy your argument?
- evilduck 3y agoBecause resumes aren't evaluated on maximum information density (and sometimes sparser resumes even do better). I don't care for skill self-ratings as a concept either but these are placed in what would need to be negative space anyways. If you're committing to a skills list, removing the rating dots and stuffing more skills in their place probably wouldn't have a positive effect.
- kulikalov 3y agoIMO it makes more sense to simply mention the most important skills inside the position description bullet points.
- clnq 3y agoThe skill bars or skill meters are completely useless because one person's 10/10 is another person's 2/10. Moreover, the more junior the engineer, the higher they score themselves in their discipline. I am an older engineer and I would rank myself 6-7/10 in most aspects of my work, even if I have architected and built some trend-setting systems in my corner of tech. I have never seen a junior score themselves so low on average. My experience is also that companies that care about these things (where hires are mainly filtered by HR and not SWEs) tend to build very mediocre teams. I am probably old enough to eschew the whole resume padding or prettifying thing all together. My last resume was written in Notepad, and it worked just fine for its purpose.
- jamietanna 3y agoLooks pretty interesting - unfortunately my CV (https://hire.jvt.me https://hire.jvt.me) couldn't get parsed fully, but would definitely be up to chat about if you'd be interested in supporting things like Microformats, as my CV (in HTML form) is marked up with them to make it easier to parse
- hmmokidk 3y agoReally amazing! When I tried to re-import what I created it had some issues though... Namely the descriptions got moved around.. and some other stuff. But otherwise this is amazing! I might use my resume I made here.
- xitang 3y agoThanks so much for your kind words and support! Apologize for the re-import issue, the resume parser is workable but might still have some bugs here and there. Can you elaborate more on how the descriptions got moved around so I can take a closer look?
- woodylondon 3y agoOverall, I think the project looks great, and the fact that it's open-source is a big plus. However, there are a few issues that I noticed: - The web editor doesn't seem to display pages 2, 3, etc. - The biggest concern I have is how the platform handles the end of a page and page breaks. Specifically, the text seems to be too close to the bottom of the page, with no footer padding. If I were to add a new role to the CV and include the company name, I'd expect the platform to be smart enough to recognise that there isn't enough room for the entire entry and to move the name and the first couple of associated bullets to the next page instead of awkwardly splitting them across two pages. - I also noticed that my Word CV fits on 2.7 pages, while the document on your editor spans 3.5 pages, with identical font sizes and types. Is there any way to adjust the text width which is what i think the issue is.
- velosol 3y agoMuch of your second issue is broadly widow/orphan control in case that helps with solutions for OP or for your interest. https://practicaltypography.com/widow-and-orphan-control.html https://practicaltypography.com/widow-and-orphan-control.htm...
- xitang 3y agoThanks so much for your kind words and feedback, and for creating the issues on Github: https://github.com/xitanggg/open-resume/issues/9 https://github.com/xitanggg/open-resume/issues/9 Re-posting my comment from the github issue: Agree that the app is currently buggy for multi page layouts. Its initial target audience is for students and early-career professionals who can fit their experiences in one page, and multi page layouts haven't been well thought and implemented.
- mewonderswhy 3y agoReally impressive work, although I was wondering, could this be made as a static HTML "application"? No NextJS, no ReactJS, not even TypeScript. Pure HTML/JS/CSS hosted statically.
- xitang 3y agoIt is definitely possible to build all of these with vanilla HTML/JS/CSS, but it would be much more work to build everything from scratch instead of leveraging frameworks that can speed up development, e.g. react, tailwind.
- tap-snap-or-nap 3y agoOverall, a very good, useful and simple project.
- hansoolo 3y agoGood one! I just tried it out because I need a resume and my old one was done really weirdly in InDesign ages ago. One thing I noticed was the really weird (I am on Firefox) : When I tried to enter text in the additional box and bullet points were activated it would create a bullet point after every space I pressed....
- xitang 3y agoThanks so much for your kind words and feedback. Apologize for the issue on Firefox. I only tested it on Chrome and have missed it on Firefox. I just created an issue to keep track of this: https://github.com/xitanggg/open-resume/issues/15 https://github.com/xitanggg/open-resume/issues/15. Would you mind sharing the OS you are in, is it Mac or Windows?
- hansoolo 3y agoThanks! I was having this particular issue on a Windows PC.
- geuis 3y agoThat resume parser needs some work. Other than my name and contact info, it didn't correctly parse anything. It added my most recent work history as schools with no names or GPA's and no company names.
- xitang 3y agoThe resume parser is still a simple WIP tool and I apologize that it doesn't work well on your existing resume. Did you use some resume template to create your resume and if so would you mind sharing a link to the template so I can take a closer look?
- ElFitz 3y agoDo you have any plans to support something like json resume, or fresh, both import and export? It’s my main quibble with various resume tools; ending up with something I won’t be able to reuse when I have to update it, and thus will need to do it all over again by hand, from scratch. No a criticism; just candid hope and curiosity.
- shaoner 3y agoI have a python script that builds the pdf from a Yaml file https://github.com/shaoner/resumy/ https://github.com/shaoner/resumy/
- deleted 3y ago[deleted]
- donaldbough 3y agoImpressive weekend project! How'd you guys build it so fast??
- twostorytower 3y agoThis is really awesome, great work. Some feedback: Your parser wasn't able to properly parse out my education from the resume I just made from your own builder (PDF'd). It's just blank, and my education is showing up as a company. Also, it doesn't seem to show multiple pages in the preview (of the builder).
- todotask 3y agoNice idea for a project and here what I found: Buggy input which break characters into bullet points while filling resume from scratch, could have been spotted before it's shipped.
- realitysballs 3y agoThis is Foss project…
- todotask 3y agoI'm aware, it's also published in Product Hunt and is meant as a feedback and nothing else. https://www.producthunt.com/posts/openresume https://www.producthunt.com/posts/openresume
- tagyro 3y agoReally nice! I like the simplicity and resume building UI/UX. Focusing on the ATS part, I'm building rolematch.me to allow candidates to better align their resumes with a specific job ad.
- adog91 3y agoHas trouble getting links from my resume hyperlinks (latex Jake’s resume template)
- daniel-cussen 3y ago[dead]
- TsukiZombina 3y agoThat's Modern CV
- VoidWhisperer 3y agoThis might be a bit of an edge case, but how often are ATS systems focusing solely on vertical grouping like suggested in the parser deep dive in order to group information? I ask this because I have seen resumes that employ a two column layout where the section title is on the left and the information for that section is on the right (possibly with multiple lines in the same section) separated by a 1 line gap between sections in most cases (the experience section is the one exception to that on my resume). My resume is also like this and I haven't had too much trouble with it (yet). When I ran an example of this type of resume through the tool, it found the basic profile information but blanked on everything else - I would imagine that some other tools might employ things like OCR to solve this case as the text would be mostly reasonably grouped together in OCR output. Edit: Fixed saying right twice instead of left and right. I guess the only direction is right when you are barely awake at 1AM
- kylegalbraith 3y agoSeems like an awesome idea you have here. However, I uploaded my partners resume as a PDF and it didn't parse out any of the relevant details. Meaning they would pretty much need to redo the entire resume in this tool.
- EGreg 3y agoI spent time to put together a resume like this about myself: https://magarshak.com/resume.html https://magarshak.com/resume.html It performs well with humans, but not so well with computer-based filters. And often you don't know which one you're going to get when you submit. Would like to get some feedback. Maybe I shouldn't call it a resume, but something else?
- notpushkin 3y agoUploaded my current CV (a printout of https://notpushk.in/ https://notpushk.in/) and for some reason it picked up Python, IS as my location :-) Didn't parse any work experience at all though.
- garfieldnate 3y agoI absolutely loath having to type in my resume on every site form for companies I'm applying to. During a job search, I think I would pay to have a feature that auto-fills these for me. Also, I'd love to be able to fill in translations for my resume. I maintain a basic resume in three languages.
- bluedemon 3y agoI really like this and would recommend being able to add extra field(s) when doing a custom one. I know that it had a custom one, but I couldn't format the text. It only adds bullet points. And, I could only use 1 custom field. I'd like to be able to add multiple. Also, it would be great if one can format with markdown syntax. The other thing is that I imported my resume (pdf) and it didn't pick up things for the right fields. I know it's a WIP, but hopefully the kinks get worked out soon as I'd like to use it.
- imtemplain 3y ago[dead]
- ShannonMita 3y agoWeekend project, nice work! My background is in this space and another potential feature you could look to utilise is allowing the user to input a specific job advert and it revises the resume to pull out anything specific within it to make it as relevant as possible to that job advert.