A simple Flask recruitment platform connecting companies with students for placement drives. Integrated with AI Pipe OpenAI API for smart features like resume analysis, job enhancement, and application scoring.
- Browse job openings (drives) from companies
- Apply to jobs instantly
- Upload your resume
- Get AI feedback on how you fit a job
- Manage all your applications
- Create job openings (drives)
- Get AI help writing better job descriptions
- Review student applications
- Score applications using AI
- Make hiring decisions
- Approve new companies joining the platform
- Manage all students and companies
- Oversee all job drives and applications
- See platform statistics
# Create virtual environment
python -m venv .venv
# Activate it
.\.venv\Scripts\activate # Windows
source .venv/bin/activate # Mac/Linux
# Install packages
pip install -r requirements.txtpython app.pyAdmin Login:
- Username:
admin - Password:
admin123
Create Test Accounts:
- Go to Register page
- Try as Student or Company
To use AI features (resume analysis, job enhancement, application scoring):
- Get token: https://aipipe.org
- Create
.envfile with:AIPIPE_TOKEN=your_token_here - Restart app - AI features now active!
Without token, app runs but AI features show "token not configured" message.
- Login/Register as Student
- Go to Dashboard → Browse drives
- Click "Apply" on any job
- Upload resume in My Profile
- Use "AI Resume Analyzer" to check fit for a job
- Register as Company (needs admin approval)
- Go to Dashboard → Create Placement Drive
- Fill in job title, description, deadline
- Option: Use "AI Enhance Description" to improve it
- Wait for admin approval
- Once approved, students can apply
- Review applications → Click "AI Score" to rate candidates
- Login with admin account
- Dashboard shows all stats
- Pending Companies: Approve or reject
- Pending Drives: Approve or reject
- Manage Students/Companies pages for oversight
app.py ← Main Flask app (all code is here now!)
models.py ← Database tables
requirements.txt ← Python libraries needed
.env.example ← Template for tokens
README.md ← This file
static/
css/AIP_styles.css ← Styling for AI components
js/AIP_client.js ← JavaScript for AI calls
uploads/resumes/ ← Where resumes are saved
templates/
base.html ← Header/footer for all pages
login.html ← Login page
register.html ← Sign up page
admin/dashboard.html ← Admin overview
company/ ← Company pages
student/ ← Student pages
Everything is stored in database.sqlite3 (created automatically):
- Users: Logins, roles (admin/company/student), approval status
- Company Profiles: Company name, HR email, website
- Student Profiles: Name, roll number, resume, department
- Drives: Job postings with title, description, deadline
- Applications: Student applications to drives
# Make sure virtual environment is on
.\.venv\Scripts\activate
# Clear old database and restart
del database.sqlite3
python app.py- Get token from https://aipipe.org
- Create
.envfile withAIPIPE_TOKEN=your_token - Restart app
- Check username/password
- Use
admin/admin123for admin account - New companies need admin approval
Change in app.py last line:
app.run(debug=True, port=5001) # or any other port- All routes and logic in
app.py(no separate files jumbled around) - AI functions:
analyze_resume(),enhance_job_description(),score_application(),generate_interview_questions() - Database made easy with SQLAlchemy ORM
- Templates use Bootstrap 5 for styling
- JavaScript uses API calls for AI features
- Passwords hashed with bcrypt (never stored plain)
- Flask: Web framework (simple and fast)
- SQLAlchemy: Database
- SQLite: File-based database (no server needed)
- Bcrypt: Password security
- Bootstrap 5: Styling (responsive design)
- JavaScript: Interactive features
- AI Pipe: OpenAI API proxy
- GPT-4o-mini: AI model for smart features
GET / Home (redirects to dashboard)
POST /login, GET /logout Authentication
POST /register Sign up
GET /admin Admin dashboard
GET /admin/std, /admin/co Manage users
GET /admin/act_u/<id>/<action> Approve/block users
GET /admin/act_d/<id>/<action> Approve/reject drives
GET /company Company dashboard
POST /company/mk_drv Create job posting
GET /company/drv/<id>/apps View applications
POST /company/app/<id>/<status> Change application status
GET /student Student dashboard
POST /student/app/<id> Apply to job
GET /student/prof Profile page
POST /student/prof Update profile/resume
POST /ai/analyze-resume AI resume analysis
POST /ai/enhance-job AI job description improvement
POST /ai/score-app AI application scoring
POST /ai/generate-questions AI interview question generation
GET /api/drives All approved drives (JSON)
GET /api/students All students (JSON)
The code is intentionally kept simple with:
- Minimal variable names where context is clear (u for user, a for application, d for drive)
- All AI functions in one file (app.py)
- Combined database models (models.py)
- Clear function names matching routes
- Comments where logic might be unclear
- Passwords encrypted with bcrypt
- AI tokens hidden in .env
- SQL injection protection (SQLAlchemy)
- User roles & permissions
- CSRF protection on forms
For production: Change SECRET_KEY, use real database, add HTTPS
- Complete authentication system
- Role-based access (Admin/Company/Student)
- Database with relationships
- Job posting workflow
- Application management
- Resume upload
- AI-powered features (4 functions)
- Admin approval system
- Interactive UI with Bootstrap
All the Best!