Spaces:
Runtime error
title: AI Resume Ranker
emoji: π
colorFrom: blue
colorTo: green
sdk: docker
app_file: main.py
pinned: false
π§ AI Resume Ranker API
An intelligent, production-ready Resume Ranking API for developers, recruiters, and HR tech platforms.
Inspired by Stripe & Paystack API experiences β complete with authentication, dashboard, and live testing interface.
Built with Flask + Sentence Transformers + PDF Parsing + Semantic AI, this API helps you automatically score and rank resumes against any job description using powerful language understanding models.
π Features
- β API Key Authentication with secure Bearer token format
- π§Ύ Semantic Resume Ranking using transformer embeddings (not just keyword matching)
- π€ Supports batch PDF uploads
- π¬ JSON API responses with ranked relevance scores
- π§ͺ Live Testing Interface on the dashboard
- π Secure User System with login, signup, hashed passwords
- π API Key Regeneration from the dashboard
- π Beautiful API Documentation Page with copyable code samples
- π§° Try It Now: Upload resumes + job text and see live scoring
- π Ready for usage tracking, analytics, or rate limiting
- πΌ Built for scaling into a full SaaS product
π Live Demo
Coming soon: hosted on Render or Railway (e.g., https://resume-ranker.example.com)
π¦ API Overview
π Endpoint
POST /api/rank-resumes
π Authentication
Send your API key in the request header:
Authorization: Bearer amn=your\_api\_key\_here
π€ Request Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| resumes | file[] (PDF) |
β Yes | One or more PDF resumes |
| job_description | string |
β Yes | Job description text to compare with |
π₯ Example Usage
π§ͺ Try It via cURL
curl -X POST https://yourdomain.com/api/rank-resumes \
-H "Authorization: Bearer amn=sk_live_abc123xyz" \
-F "resumes=@resume1.pdf" \
-F "resumes=@resume2.pdf" \
-F "job_description=We are hiring a backend Django developer..."
π¦ Sample Response
{
"results": [
{
"filename": "resume1.pdf",
"score": 0.8745
},
{
"filename": "resume2.pdf",
"score": 0.6721
}
],
"count": 2,
"requested_by": "user@example.com"
}
π Tech Stack
- Backend: Flask, Blueprints, Jinja2
- AI: SentenceTransformers (
all-MiniLM-L6-v2) - PDF Parsing: PyMuPDF
- Auth: Flask sessions + hashed passwords
- Database: SQLite (dev) / PostgreSQL-ready
- Frontend: Bootstrap 5 + custom Jinja templates
- Hosting: Render / Railway / PythonAnywhere
- Docs UI: Fully embedded HTML + live form
π§ͺ Try It Now (via Dashboard)
- Register/Login
- View and copy your API Key
- Paste a job description
- Upload 1β5 resumes (PDF)
- Get AI-scored ranking results instantly
π§βπ» Developer Setup
git clone https://github.com/yourusername/resume-ranker-api.git
cd resume-ranker-api
python -m venv venv
source venv/bin/activate # or venv\Scripts\activate on Windows
pip install -r requirements.txt
flask run
Perfect β thanks for the clarification.
You're right to remove the real email password before pushing to GitHub β sensitive credentials should never be committed. Instead, include placeholder values in the .env section of your README.md.
β
Updated .env Example for README
Here's the correct .env block to include in the README.md:
FLASK_ENV=development
SECRET_KEY=your_secret_key_here
DATABASE_URL=sqlite:///db.sqlite3
# β
Email credentials for verification system
EMAIL_USER=your_email@gmail.com
EMAIL_PASS=your_app_password_here
π Note: Use an App Password (not your actual Gmail password) if you're using Gmail SMTP. App passwords are safer and Gmail-compliant.
π Additional Security Tip
To prevent accidental exposure:
- Add
.envto your.gitignore - Use environment variables in production (Render, Railway, Fly.io all support this)
.gitignore entry:
.env
---
## β
Bonus (Optional): Mention in README
You can also add a small note under **Developer Setup** in your README:
> π§ **Note:** To enable email verification links, set `EMAIL_USER` and `EMAIL_PASS` in your `.env`. We recommend using an App Password with Gmail or a transactional email provider like Mailgun or SendGrid.
## π‘ Future Features
* β
API usage tracking
* β³ Rate limiting (per API key)
* π Dashboard analytics
* π§ Resume summarization API
* π CSV/JSON result export
* π§© SDKs for Python & JS
---
## π€ Contributing
Pull requests are welcome! Let's build the future of AI recruiting tools together.
---
## π License
MIT License
---
## π¬ Contact
Made with β€οΈ by [Muhammad Aminu Umar](mailto:webcodelabb@gmail.com)
π [LinkedIn](https://linkedin.com/in/webcodelab) | [GitHub](https://github.com/webcodelabb)