webcodelab's picture
Update README.md
fe867eb verified
|
Raw
History Blame Contribute Delete
5.23 kB
metadata
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 .env to 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)