Inspiration
When we were in Year 2, we realized that finding the right job was harder than we expected.
We had to check different job postings, read through all the requirements, and manually compare them to our own skills, education, experience, and location to figure out which job suited us best.
We thought why can't a system do this comparison for us?
That's how we came up with Job Matcher, a tool that helps job seekers find jobs that actually fit their background.
What It Does
Job Matcher lets users enter their skills, work experience, education, languages, and preferred location.
It then compares their profile with job postings and ranks them based on how well they match.
Job Matcher understands related skills and job requirements. Users can also see a match breakdown and identify skills they may be missing.
How We Built It
We built Job Matcher using Python, Django, and PostgreSQL.
We collected and processed around 1,400 real job postings and created a skill vocabulary of around 380 skills and aliases to make messy job data easier to compare.
For semantic matching, we use AI embeddings with fastembed and BAAI/bge-small-en-v1.5. PostgreSQL with pgvector helps us search and compare job information efficiently.
Challenges We Faced
Messy Data
Real job postings are not always clean. They can contain irrelevant text, inconsistent skill names, Khmer text fragments, and confusing abbreviations. We had to build a cleaning and normalization process before the data could be used reliably.
Limited Data Access
Not every website allows us to collect their job listings. This limited the number of sources we could use, so we focused on sources that we could access and process responsibly.
Running AI on Limited Resources
Our first AI approach required more memory than our free hosting environment could provide. We switched to a lighter ONNX-based solution using fastembed, which allowed us to run the model with much lower memory usage.
Deploying an AI Application
Getting the project working locally was easier than running it online. We faced issues with memory limits, slow startup times, and sleeping servers. We had to optimize the application to make it work reliably on free-tier infrastructure.
What We Learned
We learned that building an AI application is not just about choosing a good model. Data quality, performance and user experience are equally important.
Most importantly, we learned how to turn a problem we personally experienced into a working product.
What's Next
We want to make Job Matcher more useful by adding:
- User authentication
- Resume upload and automatic profile creation
- More Cambodian job sources
- Saved jobs and schedule to collect data
- Better matching
Our goal is simple: help job seekers spend less time comparing job postings and more time finding opportunities that fit them.
Built With
- baai/bge-small-en-v1.5
- camhr-api
- fastembed
- keybert
- ner
- python
- regex-based
- render
Log in or sign up for Devpost to join the conversation.