deeep-sec's picture
docs: update to hybrid public cloud & institutional deployment
35e8172 verified
|
Raw History Blame Contribute Delete
13.6 kB
# Institutional Campus Placement Eligibility & Scheduling Engine
[![FastAPI](https://img.shields.io/badge/FastAPI-0.115+-009688.svg?style=flat-square&logo=fastapi&logoColor=white)](https://fastapi.tiangolo.com)
[![React 18](https://img.shields.io/badge/React-18.3-61DAFB.svg?style=flat-square&logo=react&logoColor=black)](https://reactjs.org/)
[![Vite 6](https://img.shields.io/badge/Vite-6.0-646CFF.svg?style=flat-square&logo=vite&logoColor=white)](https://vitejs.dev/)
[![Tailwind CSS](https://img.shields.io/badge/TailwindCSS-3.4-38B2AC.svg?style=flat-square&logo=tailwind-css&logoColor=white)](https://tailwindcss.com/)
[![Google OR-Tools](https://img.shields.io/badge/Google_OR--Tools-CP--SAT_v9.11-4285F4.svg?style=flat-square&logo=google&logoColor=white)](https://developers.google.com/optimization)
[![SQLite](https://img.shields.io/badge/SQLite-WAL_Mode-003B57.svg?style=flat-square&logo=sqlite&logoColor=white)](https://sqlite.org/)
[![Public Cloud & Local Ready](https://img.shields.io/badge/Deployment-Public_Cloud_%26_Local-10B981.svg?style=flat-square)](#deployment-options)
[![Hugging Face Space](https://img.shields.io/badge/🤗_Hugging_Face-Live_Demo-blue.svg?style=flat-square)](https://huggingface.co/spaces/deeep-sec/campus-placement-engine-demo)
[![Tests Passing](https://img.shields.io/badge/Tests-149_Passing-10B981.svg?style=flat-square)](#verification--testing)
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg?style=flat-square)](LICENSE)
An institutional-grade campus recruitment operations and scheduling engine designed for collegiate Training & Placement Cells (TPO) and enterprise recruitment. Coordinates recruitment drives, thousands of student academic profiles, institutional multi-offer policies, and conflict-free interview scheduling. **Deployable anywhere**: publicly on cloud platforms (Hugging Face Spaces, Docker containers, cloud VMs) as well as private institutional networks with complete data sovereignty and privacy.
---
## Executive Overview
College placement offices face massive logistical hurdles every recruitment season:
1. **Drive Announcement Chaos**: JDs arrive via unstructured emails with conflicting cut-offs, branch aliases ("CS", "CSE", "CompSci"), and backlog requirements.
2. **Deterministic Eligibility**: Manual filtering leads to human error, missed cut-offs, and student disputes.
3. **Offer Policy Enforcement**: Tracking "one student, one offer" vs. Dream Company CTC multipliers is nearly impossible on spreadsheets.
4. **Interview Clashes**: Manually assigning hundreds of students to multi-panel interviews across physical cabins leads to double-bookings and room overlap.
5. **Data Privacy**: Student transcripts and academic records require strict role-based access control and encryption.
**The Placement Engine** solves all five challenges through a modern hybrid, mathematically verified software architecture.
---
## Architectural Workflow
```mermaid
flowchart TD
subgraph INGESTION ["1. Ingestion & Roster Normalization"]
CSV["Student Roster (CSV / XLSX)"] --> Importer["Multi-Format Student Importer"]
Importer --> Normalizer["Alias Resolver & Degree Mapper"]
Normalizer --> DB[("Local SQLite WAL Store")]
Notice["Unstructured Announcement"] --> NLP["AST Sentence-Level Extractor"]
NLP --> Provenance["Provenance & Quote Tracker"]
Provenance --> DriveReq["Versioned Drive Requirements"]
end
subgraph POLICY ["2. Eligibility & Policy Reasoning"]
DB --> Eval["Pure AST Eligibility Evaluator"]
DriveReq --> Eval
PolicyEngine["Institutional Offer Policy Engine"] --> Eval
Eval --> DecTable["Eligible Candidates & Audit Snapshots"]
end
subgraph SOLVER ["3. Constraint Optimization"]
DecTable --> CPSAT["Google OR-Tools CP-SAT Discrete Solver"]
Rooms["Physical Rooms & Interview Cabins"] --> CPSAT
CPSAT --> Verifier["Independent Non-Overlapping Verifier"]
Verifier --> Grid["0-Clash Multitrack Interview Schedule"]
end
subgraph DEPLOYMENT ["4. Air-Gapped Multi-Persona Access"]
Grid --> OfficerUI["TPO Officer Workspace"]
Grid --> StudentUI["Student Mobile / Laptop LAN Portal"]
Grid --> RecruiterUI["Corporate Recruiter Dashboard"]
Grid --> Exporter["Lossless Company Format Exporter"]
end
```
---
## Key Features
### 1. Deterministic NLP Requirement Extractor
- Paste unstructured announcement emails or upload PDFs/DOCXs.
- Automatically isolates CGPA thresholds, branch aliases, backlog tolerances, and gap-year limits.
- **Provable Provenance**: Every extracted criterion references the exact sentence and character offset in the source document.
- Interactive side-by-side review window allowing officers to accept, edit, or reject values with confidence ratings.
### 2. Live Visual Rule Editor & Policy Simulator
- Real-time interactive sliders for CGPA, 10th %, 12th %, and backlog tolerances.
- **In-Memory Instant Counter**: Displays the exact number and percentage of eligible candidates as sliders move without writing to disk.
- Interactive Simulator allowing officers to test edge cases (e.g. lateral entry diploma vs. 12th math, cleared backlogs) without mutating production state.
### 3. Google OR-Tools CP-SAT Discrete Scheduler
- Formulates multi-room, multi-panel interview scheduling as an exact Integer Linear Programming (ILP) satisfaction model.
- **Zero-Clashes Verification**: Mathematically enforces continuous interval non-overlapping constraints:
- A student cannot be in two interviews at the same time.
- An interview panel or room cannot host more than one candidate at the same time.
- Enforces lunch breaks, panel capacity, and round durations.
- Provisions additional parallel cabins automatically for large batches.
### 4. What-If Simulation & Atomic Publishing
- Test requirement adjustments in-memory before committing.
- Generates impact headlines (e.g., *"Lowering cut-off from 7.5 to 7.0 adds 32 students; 0 schedule clashes detected"*).
- Versioned atomic publishing with one-click instant rollback protection.
### 5. Candidate Dispute Comparative Explainer
- Plain-English comparative breakdowns answering: *"Why was I not shortlisted for Google while my classmate was?"*
- Side-by-side rule criteria comparison showing exact metric deltas, cleared backlog records, and institutional offer tier blocks.
### 6. Recruiter Custom-Format Lossless Exporter
- Upload company-specific spreadsheet templates.
- Maps database fields to custom company column headers.
- Round-trip fidelity testing asserting lossless data round-trips with zero data truncation.
### 7. 100% Offline Architecture Self-Check
- Real-time network interceptor asserting **strictly 0 outbound HTTP telemetry**.
- System-font fallback typography (no Google Fonts / CDN queries).
- Local Argon2 password hashing and SQLite WAL mode on localhost loopback.
### 8. Luxury Dark Enterprise Theme
- Midnight Navy (`#060b14`) canvas with dark blue surfaces (`#0d1527`) and hairline slate borders (`#1b2b4d`).
- Vibrant emerald (`#10b981`) and cyan-green status accents.
- Unified blue-to-emerald gradient action buttons across all views.
- Fully responsive across desktop workstations, tablets, and mobile phones.
---
## Multi-User Institutional Personas
| Persona | Default Username | Default Password | Access Scope |
| :--- | :--- | :--- | :--- |
| **TPO Officer** | `officer` | `officer123` | Full Administrative Access: Roster, Rules, Policies, Solver, Publishing, Rollbacks |
| **Student Coordinator**| `coordinator` | `coord123` | Operational Access: View Roster, Monitor Live Schedule, Issue Access Codes |
| **Candidate (Eligible)**| `PIPE_001` | `123456` | Student Portal: Personal Drive Eligibility, Rule Explanations, Venue Timetable |
| **Candidate (Lateral)** | `PIPE_002` | `123456` | Student Portal: Diploma vs. 12th Grade Equivalence & Cleared Backlog Standing |
| **Candidate (Blocked)** | `PIPE_003` | `123456` | Student Portal: Institutional Offer Policy Standing (Existing Offer Blocked) |
| **Recruiter (Google)** | `recruiter_google`| `recruiter123` | Recruiter Portal: Company Shortlist Table & Print-Ready Interview Schedule |
---
## Quickstart
### Prerequisites
- **Python 3.11+**
- **Node.js 18+** & **npm**
### Single-Command Unified Launcher (Recommended)
```bash
# 1. Clone repository
git clone https://github.com/<your-username>/campus-placement-engine.git
cd campus-placement-engine
# 2. Setup virtual environment
python -m venv .venv
# Windows:
.\.venv\Scripts\activate
# Linux/macOS:
source .venv/bin/activate
# 3. Install dependencies
pip install -e ".[dev]"
# 4. Build frontend
cd frontend
npm install
npm run build
cd ..
# 5. Launch unified server
python scripts/lan_launcher.py
```
The launcher verifies the database schema, compiles the frontend bundle, and hosts the portal across public or private interfaces:
```text
============================================================================
INSTITUTIONAL PLACEMENT ELIGIBILITY & SCHEDULING ENGINE
HYBRID PUBLIC CLOUD & INSTITUTIONAL NETWORK DEPLOYMENT
============================================================================
[+] Status: ONLINE (READY FOR TRAFFIC)
[+] Security: Encrypted PII & Role-Based RBAC
[+] Storage Engine: SQLite WAL Mode (Concurrent Multi-User Access)
[+] Constraint Solver: Google OR-Tools CP-SAT
----------------------------------------------------------------------
--> TPO Officer Local: http://localhost:8000
--> Network / Cloud URL: http://0.0.0.0:8000
----------------------------------------------------------------------
```
---
## Deployment Options: Public Cloud & Local Networks
The engine is engineered for flexible deployment across both public internet and private institutional infrastructure:
### 1. Public Cloud & Hugging Face Spaces
- **Live Demo Space**: Accessible online at [deeep-sec/campus-placement-engine-demo](https://huggingface.co/spaces/deeep-sec/campus-placement-engine-demo).
- **Hugging Face Model / Container Engine**: Available at [deeep-sec/campus-placement-engine](https://huggingface.co/deeep-sec/campus-placement-engine).
- Run on any public cloud container platform (Docker, AWS ECS, Google Cloud Run, Render, or VPS) using port `7860` or `8000`.
### 2. On-Premise & Campus Local Network (Wi-Fi / Ethernet)
- For university placement offices conducting on-campus recruitment seasons, the engine can be hosted locally without mandatory internet dependency.
- **Shareable URL**: Look for the **"LAN Host"** pill in the top navigation bar or on the login screen to copy the server address for student mobile devices and recruiter laptops.
---
## Docker Deployment
Build and run a production-ready container in a single command:
```bash
# Build multi-stage container
docker build -t placement-engine .
# Run on port 8000
docker run -p 8000:7860 placement-engine
```
Access the portal at `http://localhost:8000`.
---
## Verification & Testing
The system includes a test suite covering unit logic, property-based invariants, AST parsing, and end-to-end integration workflows.
```bash
# Run complete test suite (149 tests)
pytest backend/tests -v
# Run with test coverage report
pytest --cov=backend/app --cov-report=term-missing backend/tests
# Run performance benchmarks (1,800 students)
python scripts/benchmark_scheduler.py
```
### Test Coverage Highlights
- **149 / 149 Unit & Integration Tests Passing**: 100% pass rate.
- **Air-Gap Guardrails**: Asserts that sockets attempting outbound external internet communication raise strict security errors.
- **CP-SAT Invariant Tests**: Mathematically verifies that schedule collision count is strictly zero across randomized multi-panel configurations.
- **Property-Based Testing**: Uses `hypothesis` to test AST rule evaluation across synthetic permutations of CGPAs, branches, and backlog counts.
---
## Technology Stack
| Layer | Technology | Purpose |
| :--- | :--- | :--- |
| **Backend API** | FastAPI 0.115+, Python 3.13 | High-throughput async REST endpoints & static file serving |
| **Constraint Solver** | Google OR-Tools 9.11 (CP-SAT) | Discrete optimization for non-overlapping interview timetable |
| **Database** | SQLite 3 with WAL Mode | ACID persistence, concurrent reads, optimistic version locking |
| **ORM & Migrations** | SQLAlchemy 2.0, Alembic | Schema versioning and relational mapping |
| **Frontend UI** | React 18, Vite 6, TypeScript | Interactive SPA with role-based routing and dark theme |
| **Styling** | Tailwind CSS 3.4 | Custom luxury dark palette, glass surfaces, matching buttons |
| **Icons** | Lucide React | Consistent UI iconography |
| **Security** | Argon2id, Cryptography (Fernet) | Zero-telemetry password hashing and encrypted audit trails |
---
## Security & Privacy Guarantee
- **Zero Outbound Telemetry**: Strict socket interceptor ensures no analytics, CDN fonts, or telemetry are transmitted outside the machine.
- **FERPA & DPDP Ready**: Demographic and protected attributes are strictly decoupled from academic cut-off evaluation.
- **Tamper-Evident Event Log**: All overrides, version publishing, and roster modifications are cryptographically recorded in an append-only audit replay log.
- **CSRF & Session Protection**: Cryptographic double-submit cookie validation on all state-mutating requests (`POST`, `PUT`, `DELETE`).
---
## License
This project is licensed under the [MIT License](LICENSE).