Inspiration
It's that time of the season again, and between all the research responsibilities, club responsibilities, coursework, and other commitments that we all have, everyone's been dreading the idea of having to keep job applications to their plate. On top of that, we all want to make sure that we give ourselves the best shot to each job application, but with all the different roles in today's world, we've had to diversify our projects. A byproduct of this is that we have so many different types of experiences, and we can't add all of them to our resume at once, however personalizing our resumes to each job application very quickly becomes unbearable. Sometimes, we just need a little bit of a helping hand to take some of the tedium and stress away so that we can focus more on the projects that really matter to us.
What it does
Our product has 3 primary features to help make your life easier: skills builder, resume tailor, and the jobs dashboard
Jobs Dashboard
The Jobs Dashboard provides a personalized list of jobs that are tailored to your skillset that you have displayed in your previous projects (found through your public Github repositories) or resume. It includes all the essential information about the job, along with a streak and daily goal to help you stay motivated. Likewise, it also syncs with your Gmail to automatically detect and update whenever you have submitted a job application, received an OA, or any other pertinent update.
Resume Tailor
This feature allows you to easily personalize your resume to any set of job descriptions, or just improve it overall. After uploading your resume, you can edit it via LaTeX, via a premade template we've adopted, or by letting our application scan your Github repositories and generating bullet points (fitted to Google's XYZ format) that get reviewed for ATS optimization. Likewise, it tracks your existing projects and experiences on your resume, and can automatically update them with the generated bullet points.
Skill Analyzer and Mapper
The Skill Analyzer allows for a newfound way to upskill your resume and your knowledge. It takes in information from the jobs that you actually apply to (or can apply to as a reach goal) and creates a list of skills and engineering concepts that are the most prevalent across your applications. It then determines which of these skills you are lacking and suggests relevant projects to build in order to upskill. The most important part is that, not only does it suggest the projects, but it also provides you with a list of requirements for the project to be considered complete. And, after building them, it prompts you to input your Github repository, so that it can read and validate that you have effectively learned that skill.
How we built it
We started by identifying the core features we would want out of a platform like this, then deeply researched how to implement each one. On the backend, we used FastAPI for our services, pulling skill profiles from a combination of GitHub repositories (via the GitHub MCP) and parsed resumes. The Jobs Dashboard used this profile to rank job listings and relied on a Gmail-connected agent to detect and log application updates automatically. The Resume Tailor stored resumes in a shared structured format so that LaTeX edits, template edits, and GitHub-generated bullets (written in Google's XYZ format) all stayed in sync, with a second agent pass scoring bullets against ATS rules. The Skill Analyzer built on top of both, extracting common skills from a user's target jobs, identifying gaps against their existing profile, generating project ideas with completion criteria, and validating finished projects against those criteria via GitHub. We used LangChain to chain these agents together, and it ended up being what let us split the work up and build each feature on our own before bringing it all back together at the end.
Challenges we ran into
We ran into some scope creep along the way, compounded by the fact that this was our first 36-hour hackathon and we weren’t fully sure how we were going to balance our time. As a result, we struggled with time chunking and figuring out how to structure our hours effectively. We spent a large majority of our time planning out features and only really started to build ~30-40% of the way through.
Accomplishments that we're proud of
One of the things that we are the most proud of is the fact that we were able to successfully work through a 36-hour hackathon and push through all of the different issues that we faced in going to a hackathon so far away. Most of the time we had participated in hackathons close enough to home that we were able to return there to work, but, in contrast, we had to work in a completely different environment this time. On top of that, in previous hackathons, we usually ended up coding until we were only an hour away from the deadline, and then had to rush the devpost and the video. However, this time we were able to plan out the video, along with all the scenes, and didn’t wait till the last hour to edit it, which made the final hours of the hackathon so much more enjoyable.
What we learned
We learned quite a bit more about building agents and how we could evaluate agentic output, as we hadn’t had nearly as much experience with those in previous hackathons. Likewise, we got to work with a variety of different technologies, such as LaTeX parsing into PDFs, the Gmail and Github MCPs (to be able to automatically detect emails and to browse through repositories), and with combining together agent and tool outputs through LangChain.
What's next for UpJob
There's a lot more we’d like to work on. For the Jobs Dashboard, we want to pull in more data when fetching job listings, like salary ranges, company culture signals, and more accurate remote/hybrid tagging, so the recommendations feel less like a generic feed and more tailored to what someone actually cares about. We'd also like to build out OA and behavioral interview prep, using the same job-description parsing we already do for the Skill Analyzer to generate practice questions specific to the role and company someone is applying to, rather than generic interview prep. Beyond that, we're interested in expanding the Skill Analyzer to track progress over time, so users can actually see their skill profile change as they complete projects. We'd also like to support more resume formats and integrate with LinkedIn in addition to GitHub, since not everyone's best project exists in a public repo.
Built With
- agentic
- docker
- fastapi
- langchain
- nextjs
- postgresql
- python
- scraping
- tigercloud
- vultr
Log in or sign up for Devpost to join the conversation.