DEV Community

Priyadharshiny J
Priyadharshiny J

Posted on Originally published at coderlegion.com AI-assisted

Building an ATS Resume Scorer API with FastAPI, Celery, and Docker

Most resumes are filtered by ATS software before a human ever reads them. This project is a backend API that checks how well a resume matches a job description and suggests how to improve it.

What it does

  • PDF resume parsing: extracts text from uploaded resumes using pdfplumber
  • ATS keyword matching: compares the resume against a job description and calculates a match score
  • Smart suggestions: generates actionable tips to improve the resume for a specific role
  • JWT authentication: secured endpoints with role-based access for Job Seekers and Recruiters
  • Batch scoring: recruiters can score many resumes at once, handled in the background by Celery + Redis

Tech stack

Layer Technology
Backend Python, FastAPI
Auth JWT (python-jose, passlib)
Database MySQL 8.0, SQLAlchemy ORM, Alembic
Task queue Celery + Redis
PDF parsing pdfplumber
DevOps Docker, Docker Compose, AWS EC2
CI/CD GitHub Actions
Testing Pytest

Design highlights

  • Background processing: batch scoring runs through a Celery queue, so the API stays responsive while many resumes are processed.
  • Role-based access: Job Seekers and Recruiters get separate permissions on the same API.
  • Reproducible setup: the whole stack (API, MySQL, Redis) starts with a single Docker Compose command.
  • Automated deployment: a GitHub Actions pipeline deploys automatically to AWS EC2.
  • Database migrations: schema changes are managed with Alembic.

Source code

https://github.com/priyadharshiny13/ats-resume-scorer

Feedback is welcome. If you were using a tool like this, what would matter more: a more accurate match score or more detailed improvement suggestions?

Top comments (0)