Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: Open-source resume builder and parser (open-resume.com)
656 points by xitang on June 25, 2023 | hide | past | favorite | 198 comments
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).

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

Github Repo: https://github.com/xitanggg/open-resume

Product Hunt: https://producthunt.com/posts/openresume




Looks 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.


He could have just sent it to a few friends at those universities/companies. Nobody should take those sorts of 'trusted by' sections seriously anyway.


I 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.


Real 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.


They'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.


Thanks 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.


>I have to admit that the claim is more for marketing purpose to make it look impressive.

If you are going to be honest about lying by admitting to us that you lied, just state that it was a lie, don't euphemize it as marketing. Otherwise the "honesty" just comes of as manipulation.


I apologize for the confusion the statement has caused and comes off as lying. The statement is accurate and is in fact tested & likened by students and employees listed in the logo cloud. I appreciate the feedback that given it is only a handful of us, this statement can give the wrong impressions that it is more widely used than people perceive. I want to keep the project honest, clear and transparent as much as possible and I just create the issue to track this: https://github.com/xitanggg/open-resume/issues/7. I will remove the statement next to not mislead anyone and might consider adding it back only if we have more social proofs from more users in the future.


I guess you could just be totally open about it, and change the wording to something like "the open-resume design already helped some people land positions at", then show the logos. That way you are being honest, and doesn't look like a direct endorsement from those companies. You get your logos for "marketing", and you are safe from misinterpretation. IANAL.


Love this suggestion!


>The statement is accurate and is in fact tested & likened by students and employees listed in the logo cloud.

I have no doubts your claim as it was written in text was correct. The lie was by layout and usage of company and university logos. These kinds of "we are trusted by" and "in cooperation with" sections are common, it's what you're making in that section, and the usage of logos in those sections always mean the same thing: these organisations use/trust our software.


Where was the lie? It’s pretty crappy to baselessly accuse someone of lying.


They claimed companies like Google and some universities trusted their software. If you read it word by word, it was only a claim that people who worked at the companies and who studied at the universities trusted their software, but the usage of company and university logos also made clear claim that the companies and universities themselves had endorsed it.

They admitted it was for marketing purposes, and I added that rather than to euphemize it as marketing, they should instead admit that they lied, otherwise their attempt at honesty comes of as manipulative. It is possible to tell a lie by the usage of logos and layout, not only in text.

This has now been removed from their website, you can see their original layout here: https://web.archive.org/web/20230625170119/https://www.open-...


I don't really attribute this maliciously. Yeah, it may be overstepping it a bit but the wording can make sense (but they should definitively change it). Developers generally aren't great marketers and these guys aren't native in english.


>I don't really attribute this maliciously.

I don't attribute it to stupidity. (Never attribute to malice that which is adequately explained by stupidity.)

They tried to use other organizations logos in their "loved by section" to make their product seem more trustworthy than it was. By using smart language they could have gotten away with it in case of a lawsuit, and most companies don't even bother to go after stuff like this. By the time a lawsuit could have been relevant, their landing page would have changed. It's because I respect their competence that I attribute it as intentional.

Don't get me wrong, I don't give a rats ass about what someone does with some large company/organization logos on their website, it's not that I'm trying to stop some misuse of their trademarks. But if you chat with us about your page, and try to be honest about that the section there is toeing the line of truth, don't call it marketing, just tell us you lied on your webpage. It's not the end of the world to tell a lie on the internet.


> Never attribute to malice that which is adequately explained by stupidity.

Sorry, this false dichotomy is one of my pet peeves. It should read "Never attribute to something that which is adequately explained by something else."


The observation that stupidity and incompetence is more common than malice (by many degrees) is correct. It's not a true logical dichotomy, it's just a saying.


The saying presents it as a dichotomy, which is why the saying is wrong. It is also parroted way too often on HN.

It might as well be, "Never attribute to hunger that which can be explained by incompetence." Is it easier to see why that fails as any sort of useful proverb?


It is not a dichotomy, as the saying doesn't say "it must be either malice or stupidity" - it only proposes to also keep supidity in mind in case malice is assumed. Nobody is saying there can't be a third cause - you're fighting a strawman. Besides, what third reason would be relevant in this case, exactly?


>It is not a dichotomy, as the saying doesn't say "it must be either malice or stupidity"

It doesn't need to. The false dichotomy is presented in the phrasing.

>what third reason would be relevant in this case, exactly?

It's not a third reason, which is why you are confused. It is a third possibility, not a third reason. That third possibility is that both malice and stupidity are present. In such a case, if stupidity could adequately explain the action, the saying suggests ruling out malice, which would be incorrect. That is precisely why it is a false dichotomy.

It's not a strawman, you just haven't thought about it correctly.


> The false dichotomy is presented in the phrasing.

No, it isn't, the phrasing is very clear: if you think it's malice, also consider stupidity. It's an implication - if "A", then "B". It doesn't say anything about the case of "not A".

You're just making shit up now, with personal insults ("you're confused", "you haven't thought about it correctly") added as a filler for your weak reasoning.


>if you think it's malice, also consider stupidity.

That is not what it is saying. "Never attribute to malice..." has an entirely different meaning from merely considering stupidity as an alternative as you're suggesting.

It means exactly what it says: never attribute [action] to malice. That rules out malice as an explanation. It doesn't say, "maybe don't attribute [action] to malice," or "also consider stupidity," it says, very clearly, "never attribute to malice", which means "do not ever attribute to malice..." So yes, you do seem to be confused about the very clear meaning of this saying.


> It means exactly what it says: never attribute [action] to malice

No, it does not. You are blatantly misquoting the original statement. Since you're so stuck up on the literal phrasing, let's be precise: never attribute to malice what can be adequatly explained by stupidity.

Which means, if you are attributing some action to malice, then stop and consider whether stupidity is an adequate explanation. And if it is, then don't attribute it to malice. And if not, then feel free to attribute it to malice! This is in no way "rules out" malice as an explanation. If there is any evidence of malice, then by definition stupidity will not explain that evidence, and thus will not be an adequate explanation. So there is no dichotomy either.

The very sentence is merely a statement on how to evaluate intentions in light of limited evidence - it says nothing about the truth, as human knowledge is always limited by available information, especially in human relations.


> Which means, if you are attributing some action to malice, then stop and consider whether stupidity is an adequate explanation. And if it is, then don't attribute it to malice.

Yes, this is exactly what I am saying. We agree, and you finally get it. You are describing the false dichotomy perfectly: "If it is adequately be explained by stupidity, then don't attribute it to malice." That is the false dichotomy, because both could be present at the same time.

>You are blatantly misquoting the original statement

No, I used ellipses for a reason: "Never attribute to malice..." means there is more to the quote, but I am focusing on this specific part. I could have made that more clear in my writing though. At any rate, we're done here, because we agree on the meaning of the saying.


> We agree, and you finally get it.

No, we don't agree, and it is not me who finally got it. You explicitly wrote: "It means exactly what it says: never attribute [action] to malice" which I explicitly disagreed with. Either you have changed your mind, in which case you have no business acting as if you were right all along, or we don't agree.

> I could have made that more clear in my writing though

Yes, you could. Nobody can read your mind, only your words. Try not being so arrogant next time.


>No, we don't agree, and it is not me who finally got it.

Well, which is it? Do we not agree, or have I "finally got it" ("it" being, I assume, what you're trying to convey)? Because if I finally got what you're saying, then that suggests we would be in agreement. Or maybe you mean you've changed your position and I "finally got" your original argument, but now you're onto a new one. If that is the case, then please clarify your new position so I can finally get that one as well.

The saying presents a false dichotomy, which is highlighted here:

>...stop and consider whether stupidity is an adequate explanation. And if it is, then don't attribute it to malice

This is a false dichotomy because it is saying if stupidity is present, then don't attribute it to malice. But both can be present at the same time, in which case rejecting malice would be incorrect. Do you understand now? It is very simple, and this is what I wrote toward the top of the thread. You're grasping at straws here, and my position has not changed the entire time.

Please, read the saying again, read our discussion again, and think about it before you respond. What you're writing is incorrect.


Do you also believe that the saying "An apple a day keeps the doctor away." means to persuade people to increase their consumption of specifically apples, once each day? Rather than meaning to explain that fruits (and even vegetables) are good for your health in general, with no specific amounts prescribed?


You have to understand, the world is probabilistic and when working with people even more so. No one here is making an absolutely logical dichotomy which is ripe to be disproven by someone like Diogenes exclaiming "Behold! A man!" whilst holding up a featherless biped.


It's false advertising. This can get expensive quickly.


This thread is making me understand why they have to teach ethics.


It's not a lie if people from those companies are endorsing the product

Now, I know from experience, you probably want to hear from their legal team (or have a contract which make it explicit) before putting a company's logo on your website as an endorsement - but I doubt they'll sue you


Just remember, it's not a lie, if you believe it.


I’d take as “99% of dentists agree”. Maybe she/he should have said that haha.

I see nothing wrong with this lighthearted marketing. It’s a single dev project, it’s just fun to market it this way. It’s easy to see it should be take with a small grain of salt.


Its just bad tacky thing to do the author is trying to just make organized resumes and the skill gains for those who have figured it out have negligible talent. Those that can truly represent themselves without the crutches of this OP will easily shine through as a better hire. And in-fact if I see this template I am going to think the candidate is cheating.


It’s an interesting claim - out of interest I looked up how many countries actually use a resume over a CV and some sources say only United States, Australia, and Canada.


What's the difference between a CV and a résumé? I understand academia uses longer CVS, but I thought they were synonymous terms for general job hunting.


CV is your life's work (all of it). It tends to get longer as you live. Résumé is a summary. It typically is one or two pages[1], and can omit anything not deemed relevant to the recipient.

[1] Sidebar: Every bit of résumé advice is "fighting words", with diehard adherents on opposing sides. In this instance, "1 page" can be taken as "What have they been doing with their life? Discard it.", while "2 page" can be taken as "Wasting my time. Discard it.". The most successful strategy is hard to achieve: know the personal pet-peeves of the recipient, and adjust accordingly.


It's lots of minor things:

* CVs are generally longer - 2-4 sides. Resumes are more of a one page and done thing.

* Resumes often include a mission statement or similar. CVs don't - you'd put that stuff on a 'cover letter', if at all

* CVs are generally not adjusted per job - it's everything, with only the older stuff abbreviated. Whereas resumes are tailored.


Ah, I didn't realize all CVs are longer. Yeah, a résumé longer than a page is considered bad practice.

However, as an American, I've never heard of a résumé including a mission statement or being adjusted per job. As you said, they're very short documents. I've always seen them just giving the same factual history of the person's employment/education, and the person similarly attaches a cover letter tailored to the specific job, repeating some highlights and how it qualifies him and saying how perfect this job is for him.


Well I am Dutch and I personally don't differ between the two. Just different names. Btw my CV is now 7 pages long but I am a consultant.


OR it could be simply regional.

In the UK I created CVs, in the US I created Resumes.

Same thing, different names.


The two words are pretty much synonymous now, there isn't an effective difference.


Many 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.


You are discriminating against the candidates who might have some disabilities (whether they know they have or not) like dyslexia, you are also discriminating against candidates whose English (or whatever that language in your country) isn’t their first, even though they might be the best suited candidates, best programmers/engineers/etc., I have seen this first hand in some interviews, where some candidates eliminated from the first round by hiring managers because of similar issues or even silly ones like having an accent, after I -as the technical interviewer- gave the green light thay they are qualified for the second one.


Yes, when hiring I do discriminate against candidates with bad skills.

Reading and writing, communication in written form is a critical skill for a software developer, more important than even coding skills (btw, I'm yet to see a person who can code and can't write, or even hear about such person). It is irrelevant, what is the reason for the lack of skill - innate disability or low intelligence - if you can't clearly and precisely communicate with your coworkers, you'll create more problems for the team than you will solve.

And speaking of discrimination, you wouldn't hire a paraplegic person as a nurse or firefighter, right?


As I mentioned in the comment below, this is the first excuse for such discrimination, as most of the times they do properly communicate and can effectively communicate the idea, but it’s the covert way of discriminating them. One of the examples I witnessed, someone was from Singapore -and in Singapore just like a lot of other countries, English IS native, i.e. taught early in life- but they do have a thick accents, and the candidate was eliminated because of that, and obviously the hiring manager made the same silly excuse like you so he can feel better about himself, that it will “hinder” the communications. As long as the communication can be conducted, anything else is pure linguistics bias, you don’t see such bias when an international team of scientists are working in a space station or similar projects for example, even though in a lot of cases they lack the vocabulary per se, and lacking such vocabulary did not indicate a lack of skill or intelligence either, let alone to be evaluated by an average IQ hiring manager.

Another case I witnessed was in Canada, where French is an official language, yet the hiring manager excluded one candidate because he had a thick French accent..

Technically speaking too, there’s nothing as “native English”, we all do have an accent to some degree, a lot of English vocabulary are taken from other languages, and even English speakers do have a lot of silly typos and mistakes in their writing all the time, including my writings in here, so it’s never an excuse.

>And speaking of discrimination, you wouldn't hire a paraplegic person as a nurse or firefighter, right?

That’s a poor analogy, you do have the tools to properly and easily compensate such linguistic disability, as easy as having someone double checking their writing or having one of these new AI spell check tools, etc., but we don’t have the proper technology and tools to compensate for a paraplegic to be a firefighter, yet, say in the future there are proven ex-skeletons that can help, then yes you are discriminating.


I'm talking about people writing in their native language. Also, thick accent is not noticeable when someone is writing. But low intelligence is.

> you do have the tools to properly and easily compensate such linguistic disability

No, I do not have such tools, and neither do you.


> That’s a poor analogy, you do have the tools to properly and easily compensate such linguistic disability, as easy as having someone double checking their writing or having one of these new AI spell check tools, etc.

If the hypothetical person in question had such tools, then we would not see their "handicap" right? So the discrimination would not have occurred...


If only there were a word for a level of language proficiency where the person's speech is perfectly intelligible, but where there are still audible clues about the person's linguistic background that could be used to discriminate against them, and if only this weren't a "hypothetical person" but OP said they were talking about strong engineers with mild accents in their very first post? To act like the candidates' english is too poor for them to be employable is being willfully obtuse at best and outright racist at worst. There's nothing particularly difficult about working with someone who has a bit of a lilt or a twang or what have you; in fact it is more fun than working at a workplace where everyone sounds the same.


I like this post. I too have sadly seen this many times in my career. The (supposedly non-discriminatory) "preferences" of the hiring managers are frequently... discriminatory! It's the worst when the hiring manager is mono-cultural and only speaks a single language (English). Most middle managers are looking to hire people that are a dumber version of themselves and easy to control -- "sheep", if you like. The rare middle managers try to hire people smarter than themselves.

The bit about:

    hire a paraplegic person as a nurse or firefighter
I like how they picked a tiny sliver of jobs that might require full mobility. Thinking deeper: I am sure there are many nursing jobs that can be done from a wheelchair. And why not doctors? (See Dr. House, with a limb, a cane, and an on-again-off-again opioid addiction!) There are plenty of jobs that can done in a hospital and fire department that do not require all of your limbs. A lot of the work involves sitting in an office, typing on a PC.

Once, I had an office mate who had a single hand. Incredibly, he was a member of a "fast reaction" front-line support team. It was a small miracle watching him dash about the keyboard. It helped to open my mind about what was possible with modern technology.


>>See Dr. House

I dont really disagree with your post over all, but you really should refrain from using fictionalized stories to support your real world public policy it never works out well. That is aside from the fact that that example is pretty poor as something that should be aspirational.


> and even English speakers do have a lot of silly typos and mistakes in their writing all the time

Interestingly, the mistakes non-native English speakers make are different from the ones native speakers make. Thus, excluding non-natives makes it more likely for certain kinds of mistakes to slip by. "There" vs "Their", etc.


Get this person a medal!


In my field communicating with other English-speaking people is probably 80% of the job. Someone who cannot read and write clear English prose will not be successful. Serious question: if I eliminate someone from contention because they struggle to read, write, and speak English, is that “discrimination”?


No one said anything about the ability to communicate, but the discrimination against candidates with some disability like dyslexia, it is YOUR job as an employer to provide the proper tool -either during the interview process or even after hiring- to make sure the work isn’t affected, and having a proper process to address it. Same goes with accent, it isn’t about the ability to communicate but rather the accent or linguistics bias either by not hiring these candidates, or excluding them later from meetings, presentations, etc., or eliminating any future career growth.

Obviously those discriminations are illegal so it goes passive most of the times, by continuous interruption during meetings or intentionally asked to repeat or elaborate themselves, among other.

It’s not about communication abilities as this is usually the covert passive response for such discriminatory behaviors, a lot of these candidates can speak “better” in terms of clarity than people with Australian accent for example, it’s just another episode of “I’m better than you”, you can read more about that in here:

https://www.bbc.com/worklife/article/20210528-the-pervasive-...

https://www.forbes.com/sites/janicegassam/2022/11/18/accent-...

https://exceptionalindividuals.com/about-us/blog/what-is-dys...


> it is YOUR job as an employer to provide the proper tool

I love it when people from internet forums are telling me what my job is.

You know, your way of thinking will eventually lead to understanding that interviewing is inherently discriminatory against everyone but the best candidate, and thus must be abolished. This will lead to a creation of some kind of government agency that you'll ask for a worker and it'll appoint someone who would be considered as acceptable by some clerk. You wouldn't have the freedom to refuse to hire the appointee and would be obliged to pay him.


> You know, your way of thinking will eventually lead to understanding that interviewing is inherently discriminatory against everyone but the best candidate

That's not discrimination. The problem is when you assume someone isn't the best candidate because of (pick (religion, origin, language, disability, ...)) but you don't know that.

A lot of people have used your way of thinking to justify discrimination. "Obviously foreign people are less educated. I'm just looking for the best candidate so I should not interview someone with a foreign name". How can you be sure that _you_ are not discriminating ?

> I love it when people from internet forums are telling me what my job is.

So you don't agree that your job is to hire the best person without discrimination ? Or you don't agree that giving people the proper tools allow them to be the best version of themselves ?


> The problem is when you assume someone isn't the best candidate because of (pick (religion, origin, language, disability, ...)) but you don't know that.

I assume that someone who can't throw up a few lines of text about himself is not worth even considering for an interview for a job that ultimately requires producing text, in a form of computer code, documentation and communication with co-workers. Yes, I'm pretty sure I'm discriminating against mentally handicapped and illiterate people. That's the intent.


It is and it's perfectly fine to do as long as you don't leave the wrong kind of paper trail.


Depends on how good their lawyer happens to be, swording arguments with the employment law for people with disabilities.

https://www.dol.gov/agencies/odep/publications/fact-sheets/e...


Yes, by definition. Whether or not it's legal depends on where you live, and whether or not it's ethical depends on who you ask.


Communication is a lot more than just competency in a language. It is correlated (especially at the low end of competency) but has a lot more to do with empathy and making an effort. There are plenty of native English speakers I’ve worked with that I would score low on communication ability because they can’t explain themselves unambiguously and I end up having to ask a lot of follow up questions.

As long as it’s not a catastrophic mental disability, having a disability should not preclude someone from communicating clearly. As long as they slow down and actually take time to make themselves clear, it shouldn’t be a problem.


> I have seen this first hand in some interviews, where some candidates eliminated from the first round by hiring managers because of similar issues or even silly ones like having an accent

You have first-hand experience of hiring managers telling you they eliminated someone b/c they had a foreign accent?


Pretty firmly with you on this one and not with the detractors.

Ultimately, engineers are solving business problems, working with other departments and untangling technical ideas.

Often they need to explain those ideas to non-technical folks, and just as often, they need to justify their decisions to technical and non-technical colleagues.

In every area and task having solid writing skills including documentation, emails, and putting together reports, is extremely important.

Frankly if engineers lack the care and attention to detail to put together a decent resume that's a pretty strong signal their other writing is probably sloppy as well.

To the detractors: writing code is the easiest part of the job, figuring out what code to write to solve the right business problem in concert with other areas is what is important. I do not care if you are a wiz kid mega coder, if your writing is sloppy it casts doubt on everything you _are_ trying to say.


Are you hiring for a writing gig?

If not, the bias could hurt. It's like a leet code interview - artificial bar from highly biased interviewers which kinda sorta works but is buggy and a bit discriminatory.


Most of my job as a software developer is communicating with other people (stakeholders, peers, management), including written (pr comments, emails to various people, Teams chats, design documents) and vocal. Even writing code is ultimately a form of communication (code structure, variable names, comments, etc...).

Even new developers who are primarily going to be mentored greatly benefit from being able to effectively communicate with their mentor and the rest of the team (plus being able to grow into more senior roles).

Someone doesn't need to be perfect at communicating or anywhere close, but just like I wouldn't hire someone who cannot show a baseline of programming skills and knowledge, I also wouldn't hire someone who cannot show a baseline of communication skills (and I have regretted getting swayed by other interviewers when a candidate did well in other aspects).


I agree. I'd assess a technical writing sample though. I'm actually shocked this doesn't occur. Some months I spend 75% of my time thinking, writing about designs, diagramming, then meeting, communicating, reviewing and iterating on the doc. Coding is the easy part.


Damn shame the recruiter world moved to ATS's, which force folks to use tools like this to ensure their resume can be gobbled up and understood by those systems.

Personally, I love my bespoke, beautifully typeset CV. But I also recognize it's useless if I ever want to get through the ATS screening process. I'm far better off using a tool like this so I have confidence the damn thing will get read properly.

Or: your profession is now reaping what they've sown. Force resumes through a machine and we'll start building them with machines.


> The composition of a resume acted as a primary filter from people who couldn't even organize a few lines of information about themselves.

That's fine...but you have no way of knowing if the people you filtered out would have been low or high performing employees.


If your primary filter is whether or not someone can produce a resume or not, do better.


It 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.


> 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.


You 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?


A good looking and easy to read resume take more than coherent text. It requires good typography, font choice, spacing etc. These generators with template designs take care of this problem so I can focus on the content not on designing my CV.


Actually, back in the day we specifically wrote in the job description to put CV text in the email body, not in an attached Word document. So, template design and typography were absolutely irrelevant.

Also, many people failed to notice this and attached files with their CVs anyway. I had a special tag 'dyslexic' for those in my email client.


I think this mindset is vastly more harmful than an open source resume builder.


Thanks for sharing this feedback. Very interesting to learn that the resume composition was a primary filter back then.

As you note, with the advancement of internet and proliferation of internet companies/tools, it is much easier to get a nice resume design than ever before, e.g. one can easily look it up on google and pay to use it. A problem I see and motivates me to create this tool is that this can create an unequal playing field, where students/folks with more resources can easily afford to pay for such tool and have their resume well formatted and ATS tested. I created this tool in hopes to eliminate this barrier and to allow anyone to have a good starting resume design with built-in best practices so they are in the level playing field.

Having a well formatted resume is only the first step, as it still requires a lot of works and thinking for someone to write down their experiences and descriptions, where it should yield more signals on the candidates. I can see how resume format might be used back then, but in current days, it might be helpful to consider ways to gain deeper insights into candidates, e.g. assessments, interviews


Of course, that ship has sailed long ago. The days of hand prepared resumes sent by an email were over a decade ago. Just wanted to share the value that was brought by not having such tools.

Keep up the good work and good luck!


Require applications to be sent by post. You'll filter out a lot of people who can't even send a letter properly that way.


You'll also filter a bunch of people who respect their time enough to say "fuck that lmao"

You can probably get away with it you're the only place hiring


I was literally just writing a comment about this. Good calls. It does have harmful effects, its just like a fake fake deep fake.


Also checkout https://jsonresume.org/ not my project but also amazing work


I still maintain the project, currently rebuilding a lot of the infrastructure.

Ive been having fun integrating AI stuff into it. Going to polish them more soon.

https://registry.jsonresume.org/thomasdavis/jobs <- this is purely a prototype i built on the weekend, it uses vector databases to match your resume to Who is Hiring hn post.

https://registry.jsonresume.org/thomasdavis/interview <- this one preprompts your resume so you can interview yourself

https://registry.jsonresume.org/thomasdavis.letter <- Cover Letter (attempts to write a cover letter that matches your resume)

https://registry.jsonresume.org/thomasdavis.suggest <- Resume Suggestions (it asks ChatGPT to give precide feedback for improvements you could make to your resume)


Nice, using a language model AI is the perfect tool to simulate interviews and generate cover letters. Good stuff.

I wonder how many companies actually use LLMs for what they're good at instead of jumping onto the AI hype with random use-cases where anything is possible.


Omg, Thomas, great to meet you virtually. Your JSON Resume project is epic and has been an inspiration to this project. Look forward to the exciting updates upcoming


Great work. Resume parsing is hard business. I've been using https://turbo.build/repo in recent projects, looking through your setup, it would probably be worth checking out.


Thanks for your kind words and for sharing about the turbo repo. I will look more into it next


Amazing, Looking forward to the new updates. Huge fan of jsonresume and your work in general.


Oh I love this project. It made maintaining my CV tolerable. Here's mine, in case anyone wants to see what a finished article looks like: http://geoff-clayton-cv.s3-website-eu-west-1.amazonaws.com/ (not currently looking for work though).

I used `sed` in the build pipeline to change the page title on the html version (see line 16 here: https://github.com/jefc1111/cv/blob/master/.github/workflows...). I expect there is a better way though.


it'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.


The 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.


Oh ok, is there a list of working ones ?

thanks and good luck


I updated the themes page a couple weeks ago -> https://jsonresume.org/themes/

But I could also try resurrect the theme that you were using.


I love JSON Resume. I even built a project leveraging it!


My resume has been backed by JSON resume for ages. Great little project, though I'm not sure how maintained it is these days.


Agree that JSON Resume is a great project. I had looked into the project before building this and they have been an inspiration.


I've used this for my personal web-resume. Pretty good!


I vouch for this


No marketing on the website <3


A 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?


The 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.


It also sickens me when I see a posting stating something like, "Must be an expert in these 6 disparate technologies". Like, I already hesitate to call myself an expert in my bread-and-butter, day-to-day tech stack. Now I have to over-analyze, "Do they mean expert? Is that flexible? Or am I really just that unqualified? Did the hiring manager just spend four seconds putting this together and will take whatever?"


I like this post. When you get past 10 years experience, you will have gone through phases of technology. Who is going to put "expert" for PHP 2023? Few. How about "expert" for Excel/VBA in 2023? Fewer. (Perl from mid-2000s!) Yet, 10-15 years ago these were important languages and ecosystems; today, much less.

I just saw a new hire at my company introduce themselves by email as a "senior developer" with two years experience. After reading that email, I cringed all the way under my desk...


It's a huge problem in this industry, especially for junior level people. Imposter Syndrome is real, so there's no need to throw gasoline on that particular fire. And usually they really don't need expert level experience in six different technologies or platforms, they need someone who is competent at two or possibly three of them and learning the rest on the job.


I wrote my last cv in markdown and named it my_name.cv

Disappointedly, lots of "resume uploaders" refused to accept my file, even as .txt.

Had to retreat back to pdf. Hard times we live in.


I do something like that, but use pandoc to get whatever format they ask for. It's not always nice looking, but it's seldom me who is initiating the contact (ie they already have an interest in me, and they need a resume "for the process").


I wrote mine in markdown and convert it to pdf (well, first html then pdf). It's worked well

   markdown resume.md > resume.tmp.html
   cat template/header.html resume.tmp.html template/footer.html > resume.html
   cp resume.html resume.tmp.html
   sed -i -e 's/"normal"/"pdf"/g' resume.tmp.html
   xvfb-run -a -s "-screen 0 640x480x16" wkhtmltopdf resume.tmp.html resume.pdf
   rm resume.tmp.html*


Similar, I wrote mine[0] with Typst (alternative to LaTeX) and YAML. It's source is still plain text but I get a nice PDF with the beautiful typesetting reminiscent of LaTeX and an easier scripting language.

edit: The generated PDF from the template mostly works with OP's resume-parser[1]. There's just fields lacking like Certifications, Awards, and Skills which are parsed under the Projects Category.

[0]: https://github.com/jskherman/cv.typ

[1]: https://www.open-resume.com/resume-parser


Yeah, the problem with self-ranking is that humbleness is actively harmful. 4/5 for everything is the only safe bet -- not the best, but one notch below. You would probably have people like Howard Hinnant or Dave Abrahams come to a similar question about C++ and rank themselves as a 3/5, thinking: "There must be so many edge cases that I don't know about!". Robot HR or dumb middle managers: "Ah, they are weak. Next!"


The optimal approach is to rate yourself high in everything because you can. It is clearly in your best interest to do so.


Not for everyone. Resume-padding gets you into teams with resume-padding members.


I emphatically disagree. Unless a team is throwing out resumes that look "too good", in which case that team is purposefully picking mediocre developers, being confident does not mean you'll only be hired by places with exaggerators.


I used to say this (when asked about my Perl skills):

"In terms of the whole world? I'm probably a 5-6 out of 10. In terms of people in finance, I'm probably a 8 out of 10."

And I put it this way to show: - I'm not a Perl guru - I also know, roughly, the spectrum of Perl skills in my industry - I'm therefore closer to the upper end for my role + industry match


In my experience, recruiters and hiring managers have barely any capability to read and comprehend a text, so I write my resume for them, with many buzzwords as possible hoping to make it to the stage to discuss the position with someone who has an opposable thumb and then discuss actual requirements for the position and how what I know can help, so yeah those matrix are useless, but there is a gate of id10ts at the entrance to any company and so we need to put them on the resume


I think it's useful for a junior engineer to display I have experience in x, y, and z, and this is how I rate my personal proficiency in each.

I wouldn't take a 9/10 to mean I am in the top 10% world wide in this skill, rather it is where I consider myself most proficient.

For more senior roles I might see it as a slight red flag to be honest.


Stack rank your skills. It’s valuable to know which you know better than others. Ranking against peers is pure folly.


Exactly. That's what i'm doing. I also rank the tech that i really do not like to work with lowest ;)


Agree with others' points that this skill meter is subjective, arbitrary and might not add much value. I created it initially more as a option to make the resume design to look more creative and appealing in design. I did called it out that it is an optional section, but yeah, agree that this section seems to require more thoughts. I create an issue to keep track of this: https://github.com/xitanggg/open-resume/issues/11


IMO it makes more sense to simply mention the most important skills inside the position description bullet points.


They 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.


But 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?


Because 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.


I decided that I'd track my time on any project that I work on, and put those projects into categories that I want to be represented in my CV. Whenever I generate a resume, I'll aggregate the time spent on those projects, by category. So I'll get a neat little thing that says "6 months hands-on experience with Ruby on Rails", or something similar.


Depends on details.

If somebody has experience in different areas (not just "Java and c++" but e. G. Project management and technical development), it may be useful to understand their relative ranking or focus or priority or direction.

All data is data.


If you put something on your resume I assume that you’ll be able to defend it when pressed.

At the end of the day that’s all that matters. If it is a skill you have just list it, don’t fluff it up.


IMO 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.


Thank 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


A dad’s resume from the 1980’s https://github.com/runvnc/dadsresume


Gosh, 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!"


Nice well formatted resume to look back in time, thanks for sharing this


This is the most touching repo I've seen thus far


Interesting. 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.


This 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. I will share more once I look more into it.


Awesome! I attached my PDF to the ticket for you to use for testing.


Thanks, much appreciate it.


Not a bug, it's a feature, at least half of what's on linkedin is fabricated! ;)


This 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).


This 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.


Thank 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


This 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


Overall, 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.


Thanks so much for your kind words and feedback, and for creating the issues on Github: 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.


Much 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.htm...


Good 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....


Thanks 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. Would you mind sharing the OS you are in, is it Mac or Windows?


Thanks! I was having this particular issue on a Windows PC.


Seems 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.


That 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.


The 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?


I would allow people to scrape a LinkedIn profile and get the resume from there.


Great 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.


I'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?


I 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.


Just 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.


Thanks 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. 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?


Yeah, 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).


Weekend 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.


I spent time to put together a resume like this about myself: 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?


Just 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

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 ;).


Thanks for sharing another great tool! Agree that there are many great tools out there.


So 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.


Yeah 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.


"Meta Eyes Resume Builder Builder's Meta Resume, Builder Resumes Resume Builder Building"


Looks pretty interesting - unfortunately my CV (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


I 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.


I have liked the outputs and organization of [Reactive Resume](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?


I 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


I'm only asking because you reference it specifically, but were you actually able to find a copy of ISO 32000??


Yeah 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-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 that explained some of parts inside a PDF doc


Do 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.


Uploaded my current CV (a printout of https://notpushk.in/) and for some reason it picked up Python, IS as my location :-) Didn't parse any work experience at all though.


Really 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.


Thanks 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?


Really 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.


It 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.


I have a python script that builds the pdf from a Yaml file https://github.com/shaoner/resumy/


Really 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.


Nice 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.


This is Foss project…


I'm aware, it's also published in Product Hunt and is meant as a feedback and nothing else.

https://www.producthunt.com/posts/openresume


I 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.


Amazing 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.


This 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?


Thanks 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.


Awesome work! The builder is super comfy and intuitive. Just one request - would really like to mark in bold parts of a sentence.


Thanks 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. 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?


Very nice, thanks for making this open source!


Thank you for your support! I am so glad you find it nice.


Looks like the LaTeX template I use


Nice, did you build that LaTeX template?


Has trouble getting links from my resume hyperlinks (latex Jake’s resume template)


Nice work, Xitang. Curious to know if this supports the JSON Resume format.


Thanks 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.


This sounds reasonable. If exporting a JSON resume is not possible, maybe you could support importing one?


Great 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


Impressive weekend project! How'd you guys build it so fast??


Overall, a very good, useful and simple project.


That's Modern CV




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: