Inspiration
Recently, I'm finding the job/internship search process pretty overwhelming for a student. Trying to remember which jobs I applied to on which website and adding them to excel and gets messy fast, and writing slightly different answers to the same questions over and over is a real drain. So, I thought, what if I could build a little helper, like a genie, right in my browser to make the whole thing smoother and smarter? That's where the idea for JobGenie originated.
What it does
JobGenie is my personal career assistant packed into a Chrome Extension. It takes the "admin work" out of job hunting so I can focus on the actual opportunities. Track Applications Easily: When I'm on a job board, I can click "Auto-fill," and it grabs the company name, position, and location and saves it. Or, I can just type the details in myself for any site.
Keep Things Organized: There's a dashboard page where I can see all the jobs I've saved in one place.
Get AI Help with Answers: This is the best part! I can paste a common question from an application (like "Why are you a good fit?"), and JobGenie uses the Google Gemini API, coupled the resume I saved in my profile, to write a pretty good professional answer tailored to me.
Prep for Interviews: On the dashboard, for any job I've saved, I can click "AI Prep" to get talking points for that "Why are you a good fit?" question, or click "AI Score" to see how well my resume seems to match the job description, according to Gemini.
Keep My Stuff Secure: I used Auth0 so I can log in securely. My resume, my saved jobs, and even my Gemini API key are all stored privately in Chrome's local storage, linked just to my account.
Export Everything: If I want my list offline, I can just download it all as a CSV file.
How I built it
Frontend: Just standard HTML, CSS, and JavaScript for the popup and the separate dashboard page.
Authentication: I used Auth0 using their auth0-spa-js library. This was key for handling logins securely (allowing users to sign in with Google or GitHub) and making sure my saved resume and job list are tied only to my account.
AI Smarts: The Google Gemini API does all the heavy lifting for generating answers, prepping interview points, and calculating the match score. I used standard fetch requests in JavaScript to talk to the API, sending my resume and job details as context.
Data Storage: Chrome's chrome.storage.local API was perfect for this. It lets me save the resume, API key, and application list right on my computer, and I made sure to use the Auth0 user ID (user.sub) in the storage key so different users' data stays separate.
Getting Job Details: For the "Auto-fill" button, I used Chrome's chrome.scripting.executeScript API to run a small script on the current job page to try and grab the title, company, etc.
Challenges I ran into
Getting Auth0 to play nice in a chrome extension was definitely a struggle! , My first few hours went to scraping logic and next thing is Auth0 authentication. This is my first time using the authentication but the documentation and searching helped me to add links "Allowed Callback URLs" and "Allowed Web Origins" exactly right in the Auth0 dashboard
Making the "Auto-fill" scraping work decently on different job sites was also tricky. Every site structures its HTML differently, so I had to guess common patterns and add some backup logic.
Also, just making sure the extension had the right permissions in manifest.json to actually call the external Gemini API without getting blocked by Chrome's security policies (CSP) took some debugging. and also finally I had lot of features to add but there is a bit of time constraint !
Accomplishments that I'm proud of
I’m really proud that I managed to bridge the gap between a local-first utility and cloud-based AI. But the best moment was when I tested the "AI Prep" feature on a real job posting. It generated an answer that said, "I am a good fit because of my experience building the XYZ project..."—referencing a real project from my resume. Seeing the AI "understand" my experience and apply it to a job description was a huge "Yes!" moment.
What I learned
- Figuring out Auth0 outside of a normal web app context, particularly handling those tricky redirects and popups.
- Making practical calls to the Google Gemini API and structuring prompts to get useful, context-aware results back.
- Debugging Content Security Policy (CSP) errors in extensions – that was new!
- How to structure an extension with multiple parts (the popup and the dashboard) that share data.
- Prompt Engineering is a skill I learned that how you ask the model is just as important as the model itself.
What's next for JobGenie
Smarter Scraping: Right now it works on basic sites, but I want to improve the DOM scraping to handle complex SPAs like LinkedIn or Workday automatically.
Cloud Sync: I want to add an optional Firebase backend so I can see my saved jobs on my laptop and my desktop.
Resume Versioning: I plan to let users upload multiple resumes (e.g., "Frontend Resume" vs "Backend Resume") and have the AI pick the best one for the context.
Log in or sign up for Devpost to join the conversation.