Inspiration
Applying for jobs felt like repeating the same mundane steps: editing resumes, rewriting cover letters, and finding recruiter contacts. We wanted to automate and personalize this process using AI.
What it does
Our Chrome extension extracts the full HTML of a LinkedIn job page and sends it to a FastAPI backend. The backend parses the job description and recruiter info, then uses LLMs to generate: Categorized skill keywords A resume summary A tailored resume A cover letter A LinkedIn connection message A cold outreach email draft
How we built it
Frontend: TypeScript, React, ESBuild (Chrome Extension) Backend: FastAPI + OpenAI GPT-4 Storage: Google Cloud(Not yet done) Bundling: HTML extraction, content parsing, OpenAI prompt chaining
Challenges we ran into
DOM inconsistencies in LinkedIn's recruiter panel Extracting top-layer modal HTML reliably Prompt tuning for meaningful LLM outputs Dealing with long job HTML structures and size limits
Accomplishments that we're proud of
A robust DOM watcher that captures updated LinkedIn job panel content Reliable recruiter info scraping even from modals Seamless integration with OpenAI for multiphase content generation Generating a tailored resume that matches 80% of the keywords of the job description leading to higher chances of getting picked by ats Generating job-specific LinkedIn messages under 300 characters
What we learned
Building resilient browser extensions requires patience and precision GPT output quality depends heavily on structured context
What's next for Job Application Bot: Automating Job Applications
Dashboard for viewing generated content history Auto-apply pipeline integration Multi-platform scraping (Indeed, Handshake) Feedback-based resume tailoring loop
Built With
- fastapi
- openai
- python
- typescript
Log in or sign up for Devpost to join the conversation.