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

Share this project:

Updates