Smart ATS Backend is a Flask-based REST API designed to evaluate resumes against job descriptions using Google Generative AI. The API provides endpoints for analyzing resumes and returning structured data about job matching, missing keywords, and profile summaries.
- REST API Endpoints: RESTful API for resume analysis
- PDF Processing: Extract text from PDF resumes
- AI-Powered Analysis: Uses Google Gemini AI for intelligent matching
- Job Description Matching: Analyzes alignment between resume and job requirements
- Keyword Analysis: Identifies missing keywords for ATS optimization
- Profile Summary: Generates comprehensive resume summaries
- CORS Support: Cross-origin requests enabled for frontend integration
- Flask: Web framework for creating REST API
- Flask-CORS: Cross-origin resource sharing support
- Google Generative AI (Gemini 2.0): Latest AI model for intelligent resume analysis
- PyPDF2: PDF text extraction and processing
- python-dotenv: Environment variable management
- Gunicorn: WSGI HTTP server for production deployment
Ensure you have Python installed on your machine. Then, clone the repository and install the necessary dependencies.
-
Clone the repository:
git clone https://github.com/your-repository-url
-
Navigate to the project directory:
cd your-project-directory
-
Set up a virtual environment (optional but recommended):
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install dependencies:
pip install -r requirements.txt
Create a .env
file in the project root directory and add your Google API key:
GOOGLE_API_KEY=your_google_api_key
python start_server.py
python app.py
The API will be available at http://localhost:5000
python test_api.py
- GET
/
- Response:
{ "status": "healthy", "message": "Smart ATS API is running", "version": "1.0.0" }
- POST
/analyze
- Content-Type:
multipart/form-data
- Form Data:
job_description
: Job description text (required)resume
: PDF file (required)
- Response:
{ "jd_match": "85%", "missing_keywords": ["python", "docker", "kubernetes"], "profile_summary": "Experienced software developer with strong background in web development..." }
Send a POST request to /analyze
with:
- job_description: The job posting text
- resume: PDF file of the candidate's resume
The API will return structured analysis data including match percentage, missing keywords, and profile summary.
Here’s an example of how the app generates responses:
{
"JD Match": "85%",
"MissingKeywords": ["Python", "Data Science", "Machine Learning"],
"Profile Summary": "The resume is strong in software engineering but lacks significant keywords related to data science..."
}
app.py
: The main application file that handles the logic and interaction with Streamlit and Google Generative AI.requirements.txt
: A list of Python dependencies required for the project..env
: Stores sensitive environment variables, such as API keys (not included in the repository for security reasons).
Special thanks to the open-source libraries and tools that made this project possible: Streamlit, Google Generative AI, PyPDF2, and Python Dotenv.