Hi everyone 👋
I'd like to share a project I've been building over the past few months.
AI Resume ATS Scanner & Optimizer
🔗 Live Demo:
https://ai-resume-ats-scanner.vercel.app/
🔗 GitHub:
https://github.com/dataassemblehub-cpu/resume_ats_scanner
The goal wasn't to build another resume keyword checker.
I wanted to build something closer to how modern ATS systems evaluate resumes.
Tech Stack
Frontend
- Next.js (App Router)
- TypeScript
- Tailwind CSS
- next-themes
Backend
- FastAPI
- Python
- PostgreSQL
- Supabase
- Pydantic
AI / NLP
- TF-IDF
- Semantic Similarity
- Google Gemini
- Resume Parsing
Features
✅ Resume Upload (PDF & DOCX)
✅ Job Description Parsing
✅ Keyword Extraction
✅ Semantic Matching
✅ ATS Score (0–100)
✅ Formatting Analysis
✅ AI Resume Suggestions
✅ Scan History
✅ Authentication
✅ Export Support
✅ SEO-ready Marketing Pages
Interesting Engineering Challenges
Building a Hybrid Scoring Engine
Instead of relying solely on keyword frequency, the score combines:
- Keyword coverage
- Semantic similarity
- Formatting quality
- Resume completeness
This produced significantly more meaningful results than a traditional keyword checker.
Resume Parsing
Extracting structured data from real-world resumes was surprisingly difficult.
No two resumes are formatted the same way.
The parser had to handle:
- PDFs
- Word documents
- Missing section headers
- Different education formats
- Multiple layouts
Production Improvements
The project now includes:
- Route-group architecture
- Dynamic sitemap
- JSON-LD
- Open Graph metadata
- Secure authentication
- Row Level Security
- Backend rate limiting
- Contact workflow
- Scan history
- Responsive dashboard
Repository
I'd love feedback on:
- Architecture
- Code quality
- ATS scoring approach
- Feature ideas
- UI/UX improvements
Issues and pull requests are always welcome.
GitHub:
https://github.com/dataassemblehub-cpu/resume_ats_scanner
Live Demo:
https://ai-resume-ats-scanner.vercel.app/
If you're building AI products, FastAPI projects, or Next.js applications, I'd be happy to discuss implementation details in the comments.
Thanks for checking it out!
Top comments (0)