PlacementOS is a comprehensive, local-first career management platform. It transcends traditional job application tracking by leveraging a multi-agent Retrieval-Augmented Generation (RAG) architecture. By actively analyzing your source code, professional portfolio, and real-time job market data, PlacementOS provides targeted insights to optimize your application funnel, accelerate interview preparation, and maximize compensation negotiations.
At the core of PlacementOS is the Global Candidate Profile, synchronized in real-time via Firebase. Build your profile onceβincluding biometrics, contact details, repository links, and technical competencies. Our suite of AI agents directly consume this living profile as contextual memory, dynamically formatting it into markdown for prompt injection. This eliminates redundant data entry and ensures the AI operates strictly on your latest accomplishments. (Manual PDF uploads are supported as an override).
An interactive Kanban board designed to organize, track, and prioritize your application funnel. Monitor roles by lifecycle status (Applied, Interviewing, Offered, Rejected), track chronological progression, document compensation ranges, and log interview focus areas.
A specialized workspace engineered for Data Structures & Algorithms preparation. It monitors proficiency across core paradigms (Arrays, Strings, Trees, Graphs, DP, System Design). Our built-in LeetCode submissions proxy automatically syncs your accepted solutions, resolving difficulty parameters and topic tags via public GraphQL integrations.
A pervasive chat interface accessible across all module screens. Powered by Gemini, the assistant provides immediate contextual heuristics for DSA strategies, resume optimization, career trajectories, and interview defense tactics, dynamically scoped to your unified profile.
PlacementOS is driven by a localized FastAPI backend orchestrating 10 specialized autonomous agents. This system harmonizes Large Language Model (LLM) reasoning, semantic search, and custom neural networks.
- Agent 1 (JD Extractor): Asynchronously parses raw Job Description text. Leverages structured outputs to extract explicit hard skills, soft skills, and latent engineering requirements.
- Agent 2 (RAG Matcher): Computes query embeddings to fetch semantically similar project descriptions from ChromaDB. Defaults to remote
gemini-embedding-2queries to preserve RAM, with offline fallback to a localall-MiniLM-L6-v2SentenceTransformer. - Agent 3 (Synthesis Strategist): Cross-references extracted requirements against retrieved project metadata. Calculates a strict compatibility index (0-100), outputs an alignment checklist, drafts tailored resume bullets using the Google X-Y-Z formula, and synthesizes a targeted study plan.
- Agent 4 (The Networker): Ingests analysis results to draft highly personalized LinkedIn outreach sequences (under 300 characters) and cold email campaigns tailored to Casual, Professional, or Confident tonalities.
- Agent 8 (Cover Letter Forge): Consumes the Candidate Profile and tailored resume bullets to programmatically generate compelling, non-generic cover letters supporting Professional, Story-Driven, or Data-First structures.
- Agent 5 (Career Compass): Utilizes the unified profile to map competencies against ideal career pathways, outputting an ordered learning roadmap to bridge identified skill gaps.
- Agent 6 (Project Auditor): Scans local codebase directories or public GitHub repositories. Generates architectural overviews, writes valid
Mermaid.jsflowcharts, formulates defensive interview questions, and provides optimization recommendations. - Agent 9 (ATS Scorer): Simulates an Applicant Tracking System (ATS) parsing engine. Compares the profile against target JDs to generate a Match Score, parsing heuristics, and granular keyword gap analysis.
- Agent 7 (Salary Intelligence): Feeds parameters into a locally trained TensorFlow/Keras neural network regression model to predict base salary bands (P25-P75), total compensation, and equity norms, supplemented by a generated negotiation script.
- Agent 10 (Mock Interviewer): Functions as an interactive technical or behavioral interviewer. Evaluates responses using the STAR method and dynamically generates progressive follow-up questions.
flowchart LR
%% Modern Styling
classDef input fill:#1e293b,stroke:#475569,color:#fff,stroke-width:2px,rx:8px,ry:8px
classDef agent fill:#6366f1,stroke:#4338ca,color:#fff,stroke-width:2px,rx:8px,ry:8px
classDef db fill:#0ea5e9,stroke:#0369a1,color:#fff,stroke-width:2px,rx:8px,ry:8px
classDef output fill:#10b981,stroke:#047857,color:#fff,stroke-width:2px,rx:8px,ry:8px
%% Primary Inputs
JD["π Job Description"]
Profile["π€ Global Profile"]
Code["π» Local Codebase"]
%% Database
Chroma[("ChromaDB Vector Store")]
%% Orchestration Engine
A1["βοΈ Agent 1: JD Extractor"]
A2["π§ Agent 2: RAG Matcher"]
A3["π― Agent 3: Synthesis Strategist"]
%% RAG Pipeline Flow
JD --> A1
A1 --> A2
A2 <--> Chroma
A2 --> A3
Profile --> A3
%% Output Generation Flow
A4["π€ Agent 4: The Networker"]
A8["βοΈ Agent 8: Cover Letter Forge"]
O1["LinkedIn DMs"]
O2["Cover Letters"]
A3 --> A4
A3 --> A8
A4 --> O1
A8 --> O2
%% Career & Code Auditors
A5["π§ Agent 5: Career Compass"]
A9["π Agent 9: ATS Scorer"]
A6["π Agent 6: Project Auditor"]
O3["Career Roadmaps"]
O4["Match Score"]
O5["Code Review & Flowcharts"]
Profile --> A5
Profile --> A9
Code --> A6
A5 --> O3
A9 --> O4
A6 --> O5
%% Interview & Salary Intel
A10["ποΈ Agent 10: Mock Interviewer"]
O6["Live Practice"]
A7["π° Agent 7: Salary Intel"]
O7["Neural Net Prediction"]
O5 --> A10
A10 --> O6
JD --> A7
A7 --> O7
%% Apply Classes
class JD,Profile,Code input
class Chroma db
class A1,A2,A3,A4,A5,A6,A7,A8,A9,A10 agent
class O1,O2,O3,O4,O5,O6,O7 output
- React 19 & Vite 8: High-performance rendering and hot-module reloading.
- Tailwind CSS v4: Utility-first styling toolchain integrated into Vite.
- Vanilla CSS 3: Custom layout components leveraging HSL tokens, glassmorphism, dynamic micro-animations, and theme variables.
- Firebase SDK: Secure authentication and real-time syncing.
- React Context API: Global state management for seamless agent data sharing.
- FastAPI: Asynchronous, high-performance Python web framework.
- Google GenAI SDK: Configured for
gemini-1.5-flashfor multi-agent reasoning, safety filtering, and JSON schema enforcement. - PyTorch & Hugging Face: Powers local token classification (BERT NER), sentence embeddings, Cross-Encoders, and local Causal Language Models (Qwen).
- Scikit-Learn: Classical machine learning pipelines (Random Forest classification).
- ChromaDB: SQLite-backed local vector database for portfolio indexing.
- TensorFlow & Keras: Local model inference engine supporting neural networks trained on market compensation datasets.
- pdfplumber: Python package for local PDF text extraction.
git clone https://github.com/vansh070605/PlacementOS.git
cd PlacementOS- Navigate to the
backend/directory:cd backend - Create and activate a Python virtual environment:
# On macOS/Linux: python -m venv .venv source .venv/bin/activate # On Windows: python -m venv .venv .venv\Scripts\activate
- Install dependencies:
pip install -r requirements.txt
- Configure environment variables in
backend/.env:GEMINI_API_KEY=your_gemini_api_key_here GEMINI_MODEL=gemini-1.5-flash LOCAL_EMBEDDING_MODEL=all-MiniLM-L6-v2 HOST=0.0.0.0 PORT=8000 CHROMA_DB_DIR=data/chroma PORTFOLIO_JSON_PATH=portfolio.json
- Start the FastAPI development server:
uvicorn app.main:app --reload --port 8000
Note: On startup, the backend reads
portfolio.json, generates embeddings, and indexes them in ChromaDB.
- Navigate to the project root in a new terminal:
cd frontend - Install npm packages:
npm install
- Configure environment variables in
frontend/.env:VITE_FIREBASE_API_KEY=your_firebase_api_key VITE_FIREBASE_AUTH_DOMAIN=your_firebase_auth_domain VITE_FIREBASE_PROJECT_ID=your_firebase_project_id VITE_FIREBASE_STORAGE_BUCKET=your_firebase_storage_bucket VITE_FIREBASE_MESSAGING_SENDER_ID=your_firebase_sender_id VITE_FIREBASE_APP_ID=your_firebase_app_id
- Start the Vite development server:
npm run dev
Open http://localhost:5173 in your browser. The application runs locally, storing trackers in Firebase and vector data inside backend/data/chroma.
Each agent in the pipeline relies on the official google-genai SDK using structured JSON output modes. By enforcing Pydantic response models, PlacementOS guarantees output structure validation. All external LLM calls are throttled and protected from rate-limiting at a centralized entry point.
- Zero-Footprint Embeddings: Offloads embedding tasks to the Gemini API (
gemini-embedding-2) by default, drastically reducing server RAM usage for low-spec deployment. - Concurrency Throttling: An
asyncio.Semaphore(3)cap prevents concurrent threshold breaches. - Exponential Backoff: Implemented via
tenacityretries (up to 5 attempts) specifically targeted at429 Resource Exhaustedexceptions. - Strict Security Posture: Implements strict Gemini
safety_settingsto prevent prompt injections and policy violations.
The Salary Intelligence module references a local Deep Learning regression model compiled with Keras. Feature columns (role, location, seniority) are preprocessed via one-hot encoding, strictly matching the training schema configured in backend/scripts/train_salary_dl_model.py. This system operates entirely offline, prioritizing user privacy.
To ensure reliability under offline constraints or API rate limits, PlacementOS utilizes a centralized LocalModelRegistry that lazily loads models onto CUDA (GPU) or CPU:
- Generative LLM: Hugging Face pipeline wrapping
Qwen/Qwen2.5-1.5B-Instructfor local agent inference. - ATS Cross-Encoder Scorer: Employs
cross-encoder/ms-marco-MiniLM-L-6-v2for high-precision semantic matching. - Career Compass Classifier: Scikit-Learn
RandomForestClassifierpipeline predicting job families based on keyword vectors. - BERT NER Extractor:
dslim/bert-base-NERfor local entity extraction on job descriptions.
We welcome contributions from the community. Please review our Contributing Guide to understand our development workflow, branch naming rules, and pull request guidelines. By participating, you agree to abide by our Code of Conduct.
This project is licensed under the MIT License - see the LICENSE file for details.
Encountered an issue or have a question?
- Read our Support Document
- Open an Issue
Built to conquer the modern job market.