Inspiration

As a student preparing for placements, I constantly struggled with the same problems — my resume wasn't getting past ATS filters, my LinkedIn profile looked generic, and professional resume building were expensive. I realized these pain points are universal for every student and job seeker. That inspired me and my team-mate to build CareerAI — a single platform that solves all career-related content problems using AI, without requiring any expensive subscriptions .

What it does

CareerAI is a full-stack SaaS platform with 6 AI-powered tools:

  • ATS Resume Checker — Analyzes your resume against any job description using NLP-based keyword matching and TF-IDF cosine similarity. Returns a score out of 100, matched/missing keywords, and personalized improvement suggestions.
  • Resume Builder — A 5-step wizard that generates a professional resume with 3 templates (Classic, Modern, Minimal) with live A4 preview and PDF download. Uses AI to enhance each section.
  • LinkedIn Post Generator — Generates engaging LinkedIn posts with customizable tone and content type using Mistral AI with Gemini as fallback.
  • About Section Generator — Creates compelling LinkedIn About/Summary sections tailored to your role, skills, and career goals.
  • Background Remover — Removes image backgrounds instantly using the remove.bg API with zero local model installation.
  • AI Headshot Generator — Transforms casual photos into professional headshots with 5 background styles using PIL image processing.

Users can sign in with Clerk authentication and view their complete generation history in a dedicated History page.

How we built it

Frontend — React + Vite deployed on Vercel. Uses Tailwind CSS for styling and Clerk for authentication. Each tool is a separate page with a clean two-column layout.

Backend — Express.js deployed on Render. Separate controllers for each feature with Mistral AI as primary and Gemini AI as fallback for all text generation. MySQL database stores user outputs linked to Clerk user IDs.

Python AI Microservice — A lightweight Flask service deployed separately on Render. Uses the remove.bg API for background removal and PIL for image enhancement and compositing. Kept deliberately lightweight (no rembg/OpenCV) to stay within Render's free tier storage limits.

ATS Checker — Built entirely in pure JavaScript using TF-IDF cosine similarity and keyword extraction — no external AI API needed, runs directly in Express.

Challenges we ran into

  • Render storage limits — The original Python service used rembg (U2-Net model, ~170MB) and OpenCV (~50MB) which exceeded Render's free tier. Solved by switching to the remove.bg API, reducing the service to ~50MB total.
  • Python version compatibility — Render's environment runs Python 3.14 which broke spaCy and Pillow. Resolved by pinning compatible package versions and removing spaCy entirely in favor of pure Python NLP.
  • node-fetch compatibility — Node.js v24 has built-in fetch but node-fetch v3 is ESM-only and breaks with require(). Fixed by removing node-fetch and using the native global fetch.
  • Hugging Face model deprecations — briaai/RMBG-1.4 was dropped from HF inference providers mid-development. Pivoted to remove.bg API.
  • History saving — Getting Clerk user IDs to flow from frontend through Express controllers to the database required careful wiring of clerkUserId through every API call.

Accomplishments that we're proud of

  • Built a fully deployed production SaaS with 6 working AI features as a student project
  • Dual AI fallback system (Mistral → Gemini) ensuring 99%+ uptime for generation features
  • Complete user history system with per-feature filtering and expandable output cards
  • Kept the entire stack on free tiers — Vercel, Render, Clerk, MySQL

What we learned

  • How to architect a multi-service backend (Express + Python Flask) and connect them reliably in production
  • Real-world debugging of deployment issues — version mismatches, storage limits, cold starts, CORS, and timeout handling
  • How ATS systems actually work — TF-IDF similarity, keyword density, and why resume formatting matters
  • Managing AI API fallbacks gracefully so users never see a failure even when one provider is down
  • How Clerk authentication works end-to-end from frontend session to backend user identification

What's next for CareerAI

  • Cover letter generator — AI-generated cover letters tailored to specific job descriptions
  • Interview preparation — Mock interview questions generated based on your resume and target role
  • Resume scoring history trends — Track how your ATS score improves over multiple attempts
  • Multi-language support — Generate LinkedIn posts and bios in Hindi and other regional languages
  • Premium templates — Additional resume templates with more design options
  • Chrome extension — Analyze any job posting directly from LinkedIn or Naukri with one click

Built With

Share this project:

Updates