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
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.
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 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 |
- 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
- 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
- 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
- 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
- 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
- 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
- Recruiter dashboard: live/upcoming/past tests, total attempts, draft stats, placement rates
- Candidate dashboard: completed tests, available opportunities, ATS score history, skill progress
candidateβ Students with academic profiles, skill tests, resume uploads, applicationsrecruiterβ Companies/institutions with test creation, postings, ATS pipeline, analytics
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β 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 β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
| 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 |
| 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 |
- Node.js 20+
- A Supabase project
- An OpenRouter API key (free tier works)
# 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# 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# Apply the full schema to your Supabase project
# Go to Supabase Studio > SQL Editor and run:
schema_recruiter.sql # Full production schemanpm run dev
# App runs at http://localhost:3000cd git-scraper
pip install -r requirements.txt
python app.py
# Scraper API runs at http://localhost:5000Every 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.
- 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
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.
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
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 |
- π 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
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.