Skip to content

pushkar2510/SkillBridge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

22 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation



πŸŽ“ SkillBridge

The Bridge Between Academia and Industry β€” Rebuilt from the Ground Up

A centralized, blockchain-verified portal for intelligent opportunity discovery, skill-gap analysis, and end-to-end academic project lifecycle management.

πŸš€ Live Demo Β· πŸ“Ή Video Walkthrough Β· πŸ“„ Docs


πŸ“Œ Problem Statement

The bridge between academia and industry is currently fragmented. Internship opportunities are scattered across siloed job boards, and academic projects often lack real-world relevance because students cannot easily find industry mentors or datasets. There is a significant skills gap mismatch, and recruiters struggle to verify the authentic contribution of students in group-based academic work.

AcadLedger is our answer to this challenge β€” a unified, AI-powered, blockchain-verified platform that closes the academia-industry gap at every stage of a student's career journey.


🎯 Objective

Create a centralized, blockchain-verified portal for:

  • πŸ” Intelligent, skill-based opportunity discovery
  • πŸ“Š Automated skill-gap analysis with AI
  • πŸ—‚οΈ End-to-end project and application lifecycle management
  • 🀝 Transparent, verifiable student-recruiter collaboration

βœ… Expected Outcomes (How We Deliver Them)

Expected Outcome AcadLedger Implementation
Skill-based, hyper-personalized opportunity matching using NLP-driven resume-to-JD parsing AI Resume Analyzer β€” GPT-4 class LLM parses resumes against JDs, produces ATS scores, keyword gap analysis, and section-by-section feedback
Simplified, transparent application tracking and milestone management Recruiter ATS Kanban Board β€” drag-and-drop pipeline with status: pending β†’ reviewing β†’ shortlisted β†’ hired/rejected
Strengthened industry-academia collaboration through co-sponsored projects Recruiter Postings Portal β€” recruiters publish skill-tagged opportunities; students apply directly within the platform
Higher student placement rates and verifiable digital project portfolios Blockchain-Verified Profiles β€” SHA-256 hashed academic portfolios with Git-scraper integration for authentic contribution tracking

🌟 Key Features

πŸ€– AI-Powered Resume Analyzer

  • Upload resume PDF β†’ select a Job Description β†’ get instant AI analysis
  • Returns: ATS Score (0–100), matched/missing keywords, skill gap breakdown (technical, tools, soft), section-level feedback, improved bullet points, and a shortlist verdict
  • Multi-model fallback chain (Gemini 2.5 Flash β†’ Llama 4 β†’ Gemini 2.0 β†’ DeepSeek β†’ Llama 3.3 β†’ Qwen3) via OpenRouter β€” zero downtime even under rate limits
  • PDF text extraction with pdf-parse; truncation safety for large resumes

πŸ•·οΈ Git Scraper β€” Authentic Contribution Tracking

  • Scrapes public GitHub repositories linked to academic projects
  • Extracts commit history, file-level contributions, and PR/issue activity
  • Maps contributions per-student in group projects β€” solving the "free rider" problem
  • Results are hashed and stored as verifiable blockchain records

πŸ”— Blockchain-Verified Portfolios (SHA-256)

  • Every academic milestone, test score, project contribution, and certification is hashed using SHA-256
  • Hash is stored on-chain, making credentials tamper-evident and independently verifiable
  • Recruiters can one-click verify any student's portfolio authenticity
  • Eliminates resume fraud and ghostwritten project submissions

πŸ“‹ Recruiter ATS Kanban Board

  • Full drag-and-drop Kanban (pending β†’ applied β†’ reviewing β†’ shortlisted β†’ rejected β†’ hired) built with @dnd-kit
  • Optimistic UI updates with server-side sync
  • Applicant detail drawer with resume, cover letter, and profile
  • Bulk status management, search, and filter

πŸ“’ Opportunity Posting & Discovery

  • Recruiters create structured postings: skills required, stipend, duration, location/remote, deadline, max applications
  • Optional skill gate: attach a proctored test that candidates must pass before applying
  • Students browse and filter opportunities matched to their verified skill profile

πŸ§ͺ Proctored Skill Assessment Engine

  • Recruiters build dynamic MCQ tests (single correct, multiple correct, true/false)
  • Features: shuffle questions/options, strict mode (tab-switch detection), configurable time limits, negative marking
  • Server-side auto-grading via PostgreSQL stored procedures (grade_attempt_v2)
  • Session resume β€” if a student loses connection, they pick up exactly where they left off

πŸ“ˆ Analytics Dashboards

  • Recruiter dashboard: live/upcoming/past tests, total attempts, draft stats, placement rates
  • Candidate dashboard: completed tests, available opportunities, ATS score history, skill progress

πŸ‘€ Dual-Role Architecture

  • candidate β€” Students with academic profiles, skill tests, resume uploads, applications
  • recruiter β€” Companies/institutions with test creation, postings, ATS pipeline, analytics

πŸ—οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                        Frontend                             β”‚
β”‚   Next.js 15 (App Router) + React 19 + Tailwind CSS v4     β”‚
β”‚   β”œβ”€β”€ /auth         β€” Sign in / Sign up                    β”‚
β”‚   β”œβ”€β”€ /~/home       β€” Role-aware dashboard                 β”‚
β”‚   β”œβ”€β”€ /~/jobs       β€” Opportunity discovery (students)     β”‚
β”‚   β”œβ”€β”€ /~/postings   β€” ATS management (recruiters)         β”‚
β”‚   β”œβ”€β”€ /~/tests      β€” Proctored assessment engine          β”‚
β”‚   β”œβ”€β”€ /~/resume     β€” Resume builder                       β”‚
β”‚   β”œβ”€β”€ /~/resume-analyzer β€” AI resume ↔ JD parser          β”‚
β”‚   β”œβ”€β”€ /~/analytics  β€” Placement analytics                  β”‚
β”‚   └── /~/candidates β€” Talent pool (recruiters)             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                         β”‚
                         β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                       Backend                               β”‚
β”‚   Supabase (PostgreSQL 15 + Auth + Storage + RLS)          β”‚
β”‚   β”œβ”€β”€ Row-Level Security on every table                    β”‚
β”‚   β”œβ”€β”€ Stored Procedures (grade_attempt, save_test_v2…)     β”‚
β”‚   β”œβ”€β”€ Triggers (auto-profile creation, session sync)       β”‚
β”‚   └── Edge Functions for webhook integrations              β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                         β”‚
                         β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    External Services                        β”‚
β”‚   β”œβ”€β”€ OpenRouter AI  β€” Multi-LLM resume analysis           β”‚
β”‚   β”œβ”€β”€ Git Scraper API β€” GitHub contribution extraction     β”‚
β”‚   └── SHA-256 Hasher β€” Blockchain credential verification  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Database Schema Highlights

Table Purpose
profiles Unified user identity (candidate / recruiter)
candidate_profiles Academic details, skills, institution linkage
recruiter_profiles Company info, branding
opportunities Job/internship postings with skill requirements
applications Application lifecycle with status tracking
tests Proctored assessments linked to opportunities
questions / options MCQ bank with tagging
test_attempts Secure attempt tracking with expiry & resume
attempt_answers Per-question answer records for grading
blockchain_records SHA-256 hashed credential store
git_contributions Per-student GitHub activity from scraper

πŸ› οΈ Tech Stack

Layer Technology
Framework Next.js 15 (App Router, Server Actions)
Language TypeScript 5
UI Tailwind CSS v4, Radix UI, shadcn/ui
Animations Motion (Framer Motion v12), dnd-kit
Database Supabase (PostgreSQL 15)
Auth Supabase Auth (JWT + OAuth)
AI/LLM OpenRouter (Gemini, Llama, DeepSeek, Qwen)
PDF Processing pdf-parse (server-side)
Blockchain SHA-256 (Node.js crypto)
Git Scraper Python Flask API + PyGitHub
Export jsPDF + jspdf-autotable
Deployment Vercel (Frontend) + Supabase Cloud

πŸš€ Getting Started

Prerequisites

  • Node.js 20+
  • A Supabase project
  • An OpenRouter API key (free tier works)

Installation

# Clone the repository
git clone https://github.com/pushkar2510/AcadLedger.git
cd AcadLedger

# Install dependencies
npm install

# Configure environment variables
cp .env.local.example .env.local

Environment Variables

# Supabase
NEXT_PUBLIC_SUPABASE_URL=your_supabase_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_anon_key

# AI (OpenRouter)
OPENROUTER_API_KEY=your_openrouter_key

# Git Scraper Backend
NEXT_PUBLIC_GIT_SCRAPER_URL=http://localhost:5000

Database Setup

# Apply the full schema to your Supabase project
# Go to Supabase Studio > SQL Editor and run:
schema_recruiter.sql   # Full production schema

Run Locally

npm run dev
# App runs at http://localhost:3000

Running the Git Scraper

cd git-scraper
pip install -r requirements.txt
python app.py
# Scraper API runs at http://localhost:5000

πŸ” Security & Trust Architecture

Row-Level Security (RLS)

Every database table is protected by PostgreSQL RLS policies β€” users can only access their own data. Recruiters cannot see other recruiters' candidates; candidates cannot see other candidates' applications.

Proctoring

  • Tab-switch detection with server-recorded tab_switch_count
  • Strict mode locks the browser viewport
  • Server-side expiry: if a student's timer runs out, the attempt is auto-submitted and graded server-side via a stored procedure β€” no client-side manipulation possible

Blockchain Verification (SHA-256)

Student completes milestone
        ↓
Platform serializes: { student_id, milestone_type, result, timestamp }
        ↓
SHA-256 hash generated on server
        ↓
Hash stored in `blockchain_records` table
        ↓
Recruiter verifies: recomputes hash from public data β†’ compare β†’ βœ… or ❌

This makes every score, certificate, and project contribution independently verifiable without trusting AcadLedger's servers.


πŸ“‚ Project Structure

AcadLedger/
β”œβ”€β”€ app/
β”‚   β”œβ”€β”€ (dashboard)/~/
β”‚   β”‚   β”œβ”€β”€ home/            # Role-aware landing dashboard
β”‚   β”‚   β”œβ”€β”€ jobs/            # Opportunity discovery (students)
β”‚   β”‚   β”œβ”€β”€ postings/        # Recruiter posting management + ATS Kanban
β”‚   β”‚   β”œβ”€β”€ tests/           # Test creation & attempts
β”‚   β”‚   β”œβ”€β”€ resume/          # Resume builder
β”‚   β”‚   β”œβ”€β”€ resume-analyzer/ # AI resume ↔ JD analyzer
β”‚   β”‚   β”œβ”€β”€ analytics/       # Placement analytics
β”‚   β”‚   β”œβ”€β”€ candidates/      # Recruiter talent pool
β”‚   β”‚   └── settings/        # Profile & preferences
β”‚   β”œβ”€β”€ auth/                # Sign in / Sign up
β”‚   └── page.tsx             # Marketing landing page
β”œβ”€β”€ components/
β”‚   β”œβ”€β”€ app-sidebar.tsx      # Navigation sidebar
β”‚   β”œβ”€β”€ feature-section.tsx  # Landing page features
β”‚   └── ui/                  # Design system components
β”œβ”€β”€ lib/
β”‚   └── supabase/            # Server & client helpers
β”œβ”€β”€ schema_recruiter.sql     # Full production database schema
└── schema.sql               # Original schema dump

🀝 Team

Built at [Hackathon Name] β€” [Date]

Name Role
[Team Lead] Full-Stack & AI Integration
[Member 2] Blockchain & Git Scraper
[Member 3] UI/UX & Frontend
[Member 4] Database & Backend

πŸ“Š Impact Metrics (Target)

  • πŸŽ“ Students β€” Reduce time-to-first-internship by 40% via personalized matching
  • 🏒 Recruiters β€” Cut screening time by 60% with AI-ranked, skill-verified candidates
  • πŸ”’ Trust β€” 100% verifiable credentials via SHA-256 blockchain hashing
  • 🌐 Opportunities β€” Real-time aggregation from GitHub activity + job postings

πŸ“œ License

This project is licensed under the MIT License β€” see LICENSE for details.


Built with ❀️ to close the gap between students and their dreams.

AcadLedger β€” Where academic achievement meets industry opportunity.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors