Skip to content

VishalBHANOPIYA/Be_your-

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

27 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Be Your β€” AI-Powered Career Platform

Python Flask PostgreSQL scikit-learn License PRs Welcome

"Discover Yourself. Land Your Dream Job."

πŸ”΄ Live Demo / Development Tunnel

For development, you can expose the local application using Cloudflare tunnels:

npm run tunnel

This runs a local tunnel pointing to your active port, exposing the site via a dynamically generated Cloudflare URL. You should configure this generated URL as SITE_URL in your .env configuration file so that LinkedIn share links, verification emails, and other absolute URLs redirect correctly.

What is Be Your?

Be Your is a next-generation AI-powered career platform designed to bridge the gap between human potential and industry expectations. It intelligently analyzes user profiles against market demands to generate personalized roadmaps, dynamic cover letters, and actionable feedback. By integrating advanced natural language processing with a sleek, distraction-free interface, it serves as the ultimate ecosystem for job seekers and recruiters alike.

✨ Key Features

🧠 AI Intelligence

  • Resume Scoring: Instantly evaluate resumes against job requirements.
  • Skill Gap Analysis: Identify exactly what skills you're missing for a role.
  • Job Matching: Intelligent recommendation engine matching your profile.
  • Cover Letter: Automatically generate highly-tailored cover letters.

πŸš€ Career Growth

  • Career Roadmap: Step-by-step, 10-phase learning paths for specific roles.
  • Mock Interview: AI-driven aptitude, behavioral, and technical interviews.
  • Code Playground: Real-time problem solving with AI solution analysis.
  • Portfolio Analyzer: Deep analysis of GitHub projects for credibility.

🏒 Platform Features

  • Recruiter Dashboard: Seamlessly post, manage, and view job applications.
  • Admin Panel: Complete system oversight, logs, and CSV reporting.
  • Badge System: Earn exclusive badges by acing interviews and building portfolios.
  • Notifications: Real-time alerts for application status updates.

πŸ”’ Security & Reliability

  • Authentication: Secure local auth + Google OAuth2 integration.
  • Rate Limiting: Protection against spam and brute-force attacks.
  • CSP Headers: Strict content security policies applied platform-wide.
  • Role-Based Access: Isolated routes for Seekers, Recruiters, and Admins.

πŸ“Έ Screenshots

Landing Page Seeker Dashboard
Landing Dashboard
AI Career Roadmap Job Listings
Roadmap Jobs
Recruiter Dashboard AI Mock Interview
Recruiter Interview
Portfolio Analyzer Daily Sprint
Portfolio Sprint

🎯 How It Works

Be Your supports three distinct user journeys, each with its own tailored experience:

πŸ‘¨πŸŽ“ For Job Seekers (Students)

Sign up β†’ Upload resume β†’ Get AI-powered resume analysis β†’ Generate a personalized career roadmap for your target role β†’ Track daily learning progress with Daily Sprint streaks β†’ Practice with AI mock interviews β†’ Apply to jobs with auto-generated cover letters β†’ Showcase your portfolio analyzed by AI.

🏒 For Recruiters

Sign up as recruiter β†’ Post jobs with detailed requirements β†’ View ranked applicants sorted by AI match score β†’ Filter by skills, experience, and portfolio strength β†’ Access deep analytics on applicant trends β†’ Communicate with candidates through built-in notifications.

πŸ›‘οΈ For Admins

Oversee the entire platform with role-based dashboards β†’ Manage users and recruiter accounts β†’ Moderate job postings β†’ View system logs and audit trails β†’ Export CSV reports for analysis.

πŸ—οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    Browser / Client                     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                         β”‚ HTTPS
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚              Flask Application (Gunicorn)               β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚  Routes Layer:                                          β”‚
β”‚  /auth  /user  /jobs  /recruiter  /admin  /ai  /sprint  β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚  Services Layer:                                        β”‚
β”‚  AIService Β· MatchService Β· ResumeService               β”‚
β”‚  PortfolioService Β· SprintService Β· NotifyService       β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚  Models Layer (SQLAlchemy ORM):                         β”‚
β”‚  User Β· Job Β· Application Β· Roadmap Β· Interview         β”‚
β”‚  Portfolio Β· Sprint Β· Notification                      β”‚
β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
       β”‚               β”‚              β”‚
       β–Ό               β–Ό              β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚PostgreSQLβ”‚    β”‚ Gemini AI   β”‚  β”‚ External APIs   β”‚
β”‚ Database β”‚    β”‚ (Roadmaps,  β”‚  β”‚ GitHub Β· SMTP   β”‚
β”‚          β”‚    β”‚  Interview) β”‚  β”‚ Google OAuth    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Key Design Decisions:

  • Role-based access control with @role_required decorator on every protected route β€” seeker, recruiter, and admin routes are fully isolated
  • AI fallback strategy β€” Gemini API for dynamic roadmaps with hardcoded cache for popular roles to reduce cost
  • Async email via Flask-Mail with threading
  • JSONB columns for flexible storage of roadmap progress and AI outputs

πŸ› οΈ Tech Stack

Category Technology Purpose
Backend Python 3.11, Flask Core server + REST API
Database PostgreSQL, SQLAlchemy Relational data + ORM
AI/ML scikit-learn, TF-IDF Matching + scoring engine
Auth Flask-Login, Authlib Sessions + Google OAuth2
Frontend Tailwind CSS, Vanilla JS Dark glassmorphism UI
File Handling pdfplumber, python-docx Resume text extraction
DevOps Gunicorn, Render WSGI + cloud deployment
Testing pytest 18+ automated tests

πŸ“ Project Structure

be_your/
β”œβ”€β”€ app/
β”‚   β”œβ”€β”€ routes/     (9 blueprints: auth, user, jobs, recruiter, admin, ai, portfolio, resume, playground)
β”‚   β”œβ”€β”€ models/     (11 SQLAlchemy models)
β”‚   β”œβ”€β”€ services/   (8 service classes)
β”‚   β”œβ”€β”€ utils/      (decorators, email, validators, resume_parser, notify)
β”‚   └── templates/  (33 Jinja2 templates)
β”œβ”€β”€ tests/          (conftest + 3 test files, 18 tests)
β”œβ”€β”€ migrations/
β”œβ”€β”€ requirements.txt
β”œβ”€β”€ Procfile
└── README.md

πŸš€ Local Setup

Step 1 β€” Clone:

git clone https://github.com/VishalBHANOPIYA/Be_your-.git
cd Be_your-

Step 2 β€” Virtual environment (IMPORTANT: do NOT use Anaconda):

python -m venv venv
venv\Scripts\activate        # Windows
source venv/bin/activate     # Mac/Linux

Step 3 β€” Install dependencies:

pip install -r requirements.txt

Step 4 β€” Environment setup:

cp .env.example .env
# Edit .env with your values (see Environment Variables section below)

Step 5 β€” Database setup:

# Make sure PostgreSQL is running locally
flask db upgrade
python seed.py           # Creates test data
python seed_jobs.py      # Seeds sample jobs

Step 6 β€” Run:

flask run
# Open http://localhost:5000

βš™οΈ Environment Variables

Variable Description Required
SECRET_KEY Flask secret key (random string) Yes
JWT_SECRET_KEY JWT signing key Yes
GEMINI_API_KEY Google Gemini API key for AI roadmap generation. Get free key at https://aistudio.google.com/app/apikey Yes
DATABASE_URL postgresql://user:pass@localhost/be_your Yes
GOOGLE_CLIENT_ID Google OAuth (console.cloud.google.com) Optional
GOOGLE_CLIENT_SECRET Google OAuth secret Optional
MAIL_USERNAME Gmail address for sending emails Optional
MAIL_PASSWORD Gmail App Password (not your real password) Optional
UPLOAD_FOLDER Path for resume uploads (app/static/uploads/resumes) Yes

πŸ§ͺ Test Accounts (after running seed.py)

Role Email Password
Job Seeker seeker@example.com Seeker@123
Recruiter recruiter@example.com Recruiter@123
Admin Create manually (see below) β€”

Create admin user manually:

flask shell
>>> from app.models.user import User; from app.extensions import db
>>> u = User(name="Admin", email="admin@beyour.com", role="admin")
>>> u.set_password("Admin@1234"); u.is_verified = True
>>> db.session.add(u); db.session.commit()

πŸ”Œ Key API Endpoints

Method Endpoint Description Auth
POST /auth/register Create account No
POST /auth/login Login No
GET /jobs/ List all active jobs No
POST /jobs/<id>/apply Apply to a job Seeker
GET /ai/recommendations AI job recommendations Seeker
GET /ai/interview/start Start mock interview Seeker
POST /ai/cover-letter/generate Generate cover letter Seeker
GET /portfolio/dashboard Portfolio analyzer Seeker
GET /playground/playground Code challenges Seeker
GET /admin/dashboard Admin overview Admin
GET /admin/reports/export Download users CSV Admin

πŸ§ͺ Running Tests

pytest tests/ -v
pytest tests/test_ai.py -v     # AI engine only
pytest tests/test_auth.py -v   # Auth only

🚒 Deploy to Render

  1. Push to GitHub (make sure .env is in .gitignore)
  2. Go to render.com β†’ New Web Service
  3. Connect your GitHub repo
  4. Build command: pip install -r requirements.txt
  5. Start command: gunicorn run:app (already in Procfile)
  6. Add Environment Variables in Render dashboard
  7. Add PostgreSQL database in Render β†’ copy DATABASE_URL
  8. Deploy β†’ wait ~2 mins β†’ live!

πŸ“Š Platform Stats

  • 11 database models Β· 9 Flask blueprints Β· 33 templates
  • 12 AI methods Β· 18+ automated tests Β· 704-line AI engine

πŸ‘€ Author

Vishal Bhanopiya | LinkedIn | GitHub

🀝 Contributing

Contributions are welcome! Here's how:

  1. Fork the repository
  2. Create your feature branch: git checkout -b feature/amazing-feature
  3. Commit your changes: git commit -m 'Add some amazing feature'
  4. Push to the branch: git push origin feature/amazing-feature
  5. Open a Pull Request

Please make sure your code:

  • Follows existing patterns (Flask blueprints, service layer)
  • Includes tests for new features
  • Passes existing tests: pytest
  • Uses proper logging instead of print statements

πŸ“„ License

MIT β€” feel free to use, modify, and build on this project.

About

AI-powered full stack career platform built with Flask, PostgreSQL, and NLP for resume analysis, job recommendations, mock interviews, and recruiter management.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages