Developed for the Samsung Innovation Campus (SIC) Hackathon, RankedIn is a full-stack automated recruitment and candidate-vetting platform. Unlike visual-only keyword screeners, RankedIn evaluates technical candidates objectively by utilizing structured mathematical alignment scores, manual
Our project represents a collaborative effort with distinct areas of ownership. Below is the breakdown of responsibilities and individual module contributions:
- Express API backend (
server.ts): Built and configured the Express application routing, middleware, and request/response pipelines. - Database & File Synchronization: Implemented local CSV storage sync logic to read and write records to
data/candidates.csvanddata/jobs.csvwith safe formatting and error boundaries. - Dashboard Client Integration (
src/App.tsx): Configured the frontend-to-backend communication layer, enabling real-time UI state refreshes from server responses. - Serverless Deployment configuration: Set up and configured
vercel.jsonrouting rewrites andapi/index.tsadapters for serverless deployment.
- Gemini AI Integration: Coded the
gemini-3.5-flashclient SDK calls inserver.tsusing structured parsing JSON schemas to extract developer details. - Heuristic Parser Fallback: Developed the regular expression parser and string compiler fallback mechanisms to process resumes in offline/air-gapped systems.
- Dashboard Visual Elements: Implemented interactive React views, including the Extract Resume interface (
src/components/UploadView.tsx) and the SVG distributions dashboard (Talent Analytics widget atsrc/components/AnalyticsView.tsx).
-
Custom Algorithms & Data Structures: Hand-crafted the core algorithms from scratch to prove technical depth:
-
Stable Merge Sort ($O(N \log N)$): Written manually to rank candidate score matrices deterministically without native sort instability (
src/services/ranking.py). - Inverted Index Hashing ($O(1)$): Programmed skills inverted hashing maps for instant filter operations.
- Binary Search ($O(\log N)$): Coded the experience years lower-bound quick-finder.
-
Stable Merge Sort ($O(N \log N)$): Written manually to rank candidate score matrices deterministically without native sort instability (
- Alignment Math & Vetting: Formulated the weighted HR scoring models (Skills 70%, Experience 20%, Education 10%).
-
Feature Services: Implemented the standalone Skill Gap Analysis courses suggester (
src/services/skill_gap.py) and Resume Structural Strength Evaluator (src/services/resume_score.py).
RankedIn behaves as a single cohesive unit:
- Frontend Trigger: The React frontend (
App.tsx) triggers requests based on user actions (e.g., inputting a resume, selecting a job, or setting search filters). - API Delegation: The Express API router (
server.ts) captures the action and directs it to the appropriate subsystem:- Resumes go through Achintya's AI/Regex parsing engine.
- Filtering operations invoke Gautam's Inverted Index & Binary Search services.
- Profile sorting redirects into Gautam's Merge Sort service.
- Data Sync: Read and write transactions are synchronized against the CSV/JSON data files using Sushil's storage routines, keeping the data pool and CLI console inputs aligned in real time.
Each candidate profile and job opening is governed by explicit typed constructors (Candidate and Job models), maintaining runtime data validation, sanitizing incoming values, and ensuring secure file synchronization.
The candidate alignment scoring formula matches our recruitment specifications:
-
Skills Alignment (70%)
$$\text{Skills Contribution} = \left( \frac{\text{Skills Matched}}{\text{Required Skills}} \right) \times 70.0$$ -
Experience Suitability (20%)
$$\text{Experience Contribution} = \min\left(1.0, \frac{\text{Candidate Experience}}{\text{Job Min Experience}}\right) \times 20.0$$ -
Education Alignment (10%)
Education is mapped to numeric weight ranks:-
PhD/Doctor= 4 -
Master= 3 -
Bachelor= 2 -
High School= 1 -
None= 0
If
$\text{Candidate Level} \ge \text{Preferred Level}$ , score is 10.0. If$\text{Candidate Level} = \text{Preferred Level} - 1$ , score is 5.0. Otherwise, 0.0. -
RankedIn bypasses native library wrappers to guarantee technical depth of manual implementations:
-
Merge Sort Ranking (
$O(N \log N)$ Stable): Divides candidate matrices into recursive binary split blocks. Ensures deterministic stable alignments under leaderboard rankings. -
Inverted Index Hashing (
$O(1)$ Average): Maps skills keywords into mapped index hashes, returning matched candidate ID lists in constant sub-linear periods. - Binary Search experience lower-bounds ($O(\log N)$): Maps range filters on sorted subsets.
Integrates the gemini-3.5-flash model utilizing constrained schema responses, mapping unstructured text resumes directly into validated structures. Falls back gracefully to a robust, regex-pattern matched compiler in air-gapped systems.
├── data/
│ ├── candidates.csv # 20+ realistic compiled engineering applicants
│ ├── jobs.csv # Target vacancies specification requirements
│ └── rankings.json # Persistent manual rankings logging
├── src/
│ ├── models/
│ │ ├── candidate.py # Python Candidate OOP class with file validation
│ │ └── job.py # Python Job OOP specification model
│ ├── services/
│ │ ├── parser.py # Python resume text regex matching engine
│ │ ├── matcher.py # Candidate matching weighting score logic
│ │ ├── ranking.py # Manual stable Merge Sort array system
│ │ ├── search.py # Hash Index mapping + Binary search years experience
│ │ ├── storage.py # CSV and JSON robust IO persistence handles
│ │ ├── analytics.py # Aggregated Pandas math calculators data
│ │ ├── skill_gap.py # Skill gap analysis with training recommended courses
│ │ ├── recommender.py # Job recommendation matching engine
│ │ └── resume_score.py # Resume structural layout health evaluator
│ └── App.tsx # React SaaS master dashboard interface
├── app.py # Python menu-driven CLI interactive app controller
├── server.ts # Custom full-stack Express server API route entries
└── package.json # Build configuration scripts
- Install Dependencies
npm install
- Start the Web App (Server + Frontend Middleware)
npm run dev
- Open http://localhost:3000 in your browser.
- Run the script:
python app.py
- Follow the user prompts to parse resumes, rank applicants, trigger skill searches, inspect metrics, or save data updates directly.