Inspiration

The average job seeker spends 45 minutes on every single application — rewriting resumes, crafting cover letters, researching recruiters, and answering the same questions over and over. After going through this process myself while applying for internships, I realized this was a completely solvable problem. If AI can write code, review documents, and answer complex questions — why can't it handle the most repetitive parts of job searching? I built OneStopJob to be the tool I wished existed when I was applying.

What it does

OneStopJob is a one-stop platform that automates the most time-consuming parts of every job application. Here's what it does: Fit Score Engine — Paste a job description or drop a URL. OneStopJob uses Claude AI to analyze your resume against the job and return a detailed fit score (0–100%) with a breakdown across technical skills, experience match, education, and soft skills — plus specific strengths and gaps. Resume Optimizer — Claude rewrites your resume bullets for the specific job. It uses stronger action verbs, quantifies impact, removes weak filler phrases, and improves ATS alignment — without fabricating experience. You see a before/after diff with an improved fit score. Cover Letter Generator — A tailored, human-sounding 3-paragraph cover letter is generated for the specific role and company. It's fully editable in the app and exports to PDF or .txt with one click. Recruiter Outreach — Powered by Hunter.io, the app finds real email addresses of people at the target company. For each contact, it generates a personalized cold intro email and a follow-up — ready to send. Application Q&A — When filling out job application forms, users paste questions they encounter (like "Why do you want to work here?") and get a personalized 50-100 word answer generated from their resume and GitHub profile. GitHub Integration — Users can optionally connect their GitHub profile. The app pulls their top repositories, languages, and project descriptions to make Q&A answers and outreach emails more specific and authentic.

How we built it

Frontend: Next.js 14 with Tailwind CSS — a single-page app where users paste their resume and job info, then get all 5 features in a tabbed results dashboard. AI Layer: Anthropic's Claude Sonnet (claude-sonnet-4-5) powers all AI features — fit scoring, resume optimization, cover letter generation, and Q&A answering. Each feature uses a carefully engineered prompt with strict output constraints. Database: Firebase Firestore stores every job analysis as a jobContext document, enabling real-time loading of results and persistent access to previous analyses. Authentication: Firebase Auth with Google OAuth for seamless sign-in. Recruiter Discovery: Hunter.io API finds verified email addresses at target companies, sorted by confidence score. Job Scraping: A custom Next.js API route scrapes job posting URLs using Claude to extract the job title, company, and description automatically. Google Technologies Used:

Firebase Firestore — real-time database Firebase Auth — Google OAuth login Firebase Admin SDK — server-side database writes Google Cloud (deployment-ready on Cloud Run) Gemini API (integrated as an alternative AI layer)

Challenges we ran into

The biggest technical challenge was getting Claude to return consistently valid JSON for structured data like fit scores and resume changes. Claude's responses sometimes included escaped characters or newlines inside JSON strings that caused parse failures. I solved this with a safeParseJSON utility that strips markdown fences, finds JSON boundaries, and sanitizes control characters — with a meaningful fallback when parsing fails completely. Another challenge was PDF text extraction — many PDF resumes use encoded fonts that simple parsers can't read. I solved this by building a paste-mode input as the primary interface, which is actually more reliable and faster than file parsing. Finally, managing the Next.js Turbopack development environment with multiple concurrent projects caused persistent port conflicts and module resolution issues. I resolved this by rebuilding on a clean project scaffold.

Accomplishments that we're proud of

Built a working end-to-end AI pipeline that goes from a job URL to a complete application package in under 60 seconds The fit score is genuinely accurate — it correctly identified that my resume was missing Kubernetes experience for a DevOps role and that my LLM projects were a strong match for an AI engineering role The cover letter generator produces output that sounds human — not like an AI template The Hunter.io integration returns real, verified email addresses with confidence scores Built everything solo in one hackathon session

What we learned

How to design multi-agent AI pipelines where each Claude call builds on the output of the previous one How to engineer prompts for structured JSON output at production reliability The value of progressive enhancement — building the core loop first (paste → analyze → results) and layering features on top Firebase Admin SDK vs client SDK and when to use each in a Next.js App Router context

What's next for OneStopJob

Application Tracker — A Kanban board synced to Google Sheets to track every application from applied to offer Interview Prep — AI-generated behavioral, technical, and company-specific questions based on the role and resume Chrome Extension — Apply to jobs directly from LinkedIn or Indeed with one click Google Calendar Integration — Auto-schedule interview prep reminders and follow-up dates Monetization — Freemium SaaS at $19/month Pro, plus white-label licensing for university career centers

Built With

Share this project:

Updates