Check it out at http://job-match.herokuapp.com/
###Object The object of the web application is to enhance job searching through visual display and auto-generated analysis. The site generates a "match score" by comparing a user's resume to the language used in job postings of the user's choice.
###Technologies Used I used Ruby on Rails, jQuery, Ajax, the jqCloud library, the Indeed API, Twitter Bootstrap, Indeed gem, Nokogiri gem, Bcrypt gem, among others.
###Approach I built job-match with two models, Users and Jobs, which both utilize the Indeed API. I also built methods to scrape additional data that was not included with the API - namely the full job description. The data is then manipulated to be received by jqCloud in JavaScript, and to provide an array of words to compare to the user's resume. Once the user enters their resume, an array of the words is processed and compared with the job description array, and together they are used to calculate a "match score." The match score is currently calculated by dividing the number of meaningful (not ignored) shared words between a user's resume and the job description, dividing that number by the number of words in the job posting, multiplying by 100, and then adding the number of shared keywords (meaningful words that occur more than once in the resume and job posting) times two. This still needs revision, which I address below.
###Installation Instructions Download the files. Run bundle, db:migrate, and Foreman Rails S to run the app on a local server.
###Unsolved Problems The first area for future development should be the algorithm which generates the match scores. I initially developed a very simplistic equation to get the app working, and then incorporated additional factors into my calculations, such as giving weight to shared words that appear more than oncein the resume and job posting. It would still be beneficial to give weighting to certain types of shared words (such as words that appear in the title).
The seocond area that needs to be addressed is the routing for jobs. Initially when I planned the website, I anticipated displaying the resume and jobs on the same page, which I called the "Profile page." I decided to separate the two towards the end of the development process, which left my routes rather confusing.
Additional areas needing future work include:
- Regarding job searching on the main page:
- search results need to be displayed with ajax - some actions are currently very slow
- show additional results up to 25 on scroll
- visually identify jobs within search results that already appear on a user's board
- Usability issues with modals when user causes a form error
- Add ability for users to upload resume instead of pasting in text
- Cause values of search fields to remain after user clicks search
- Make word clouds adaptive for mobile
- Clean up methods to improve speed
- Improve list of words to ignore in JDs and resumes
- Order jobs on Job Board by match score
###Wireframe Links
###User stories - main ideas:
- As a job-seeker I want to find a job that fits my skills, experience, and goals, so that I can be employed in an appropriate position.
1 v2) As a job-seeker I want to find a job that fits my skills, experience, and goals, so that I can explore/identify how my skills, experience, and goals could translate into satisfying work
- As a student I want to explore the job market, so that I can find out what type of job might suit me after graduation.