Campus Employability Signal Infrastructure
SignalBridge is a production-ready full-stack web application that revolutionizes campus recruitment by replacing static resumes and cutoffs with continuous, verifiable employability signals. The system models employability as a dynamic system using time-weighted skill evidence, failure and recovery signals, skill provenance, signal decay, and counterfactual hiring simulation.
- Employability Signal Engine - Computes role-specific readiness scores with confidence intervals and volatility metrics
- Skill Signal Half-Life Model - Tracks skill decay over time with exponential time-weighting
- Skill Provenance Graph - Tracks where each skill originated (course, project, self-learning, company task)
- Negative Signal Capture - Tracks failed attempts, abandoned tasks, and misconception patterns
- Adversarial Skill Validation - Uses Gemini AI to generate unseen task variants and evaluate process quality
- Readiness Volatility Score - Measures stability of readiness over time
- Counterfactual Hiring Simulator - Simulates hiring with/without filters to expose bias
- Placement Cell Early-Warning Radar - Predicts oversupply/undersupply months before placement season
- Frontend: Next.js 14 (React, TypeScript), Tailwind CSS, Recharts
- Backend: Node.js with Express, TypeScript
- Database:
- PostgreSQL (users, roles, hiring rules)
- Firebase Firestore (real-time signals, events, skill evidence)
- AI & Agents:
- Google Gemini API for analysis
- Multi-agent orchestration (ADK pattern)
- Auth: Firebase Authentication (Google + GitHub)
signalbridge/
βββ frontend/ # Next.js application
βββ backend/ # Express API server
βββ agents/ # AI agent implementations
βββ shared/ # Shared TypeScript types
βββ firebase.rules # Firestore security rules
- Node.js 18+ and npm
- PostgreSQL 14+
- Firebase project with Firestore enabled
- Google Cloud account with Gemini API access
Create .env files in backend/ and frontend/:
backend/.env
PORT=3001
NODE_ENV=development
# PostgreSQL
DATABASE_URL=postgresql://user:password@localhost:5432/signalbridge
# OR
DB_USER=postgres
DB_PASSWORD=postgres
DB_HOST=localhost
DB_PORT=5432
DB_NAME=signalbridge
# Firebase
FIREBASE_PROJECT_ID=your-project-id
FIREBASE_SERVICE_ACCOUNT={"type":"service_account",...}
# OR use application default credentials
# Gemini API
GEMINI_API_KEY=your-gemini-api-key
# Frontend URL
FRONTEND_URL=http://localhost:3000frontend/.env.local
NEXT_PUBLIC_API_URL=http://localhost:3001
NEXT_PUBLIC_FIREBASE_API_KEY=your-api-key
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=your-project.firebaseapp.com
NEXT_PUBLIC_FIREBASE_PROJECT_ID=your-project-id
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=your-project.appspot.com
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your-sender-id
NEXT_PUBLIC_FIREBASE_APP_ID=your-app-id- Install dependencies
# Root
npm install
# Backend
cd backend
npm install
# Frontend
cd ../frontend
npm install
# Agents
cd ../agents
npm install- Set up PostgreSQL
# Create database
createdb signalbridge
# Tables will be created automatically on first run-
Set up Firebase
- Create a Firebase project
- Enable Firestore
- Enable Authentication (Google + GitHub providers)
- Deploy security rules:
firebase deploy --only firestore:rules
-
Run seed script (optional)
cd backend
npm run build
node dist/scripts/seed.jsDevelopment mode:
# From root directory
npm run dev
# Or run separately:
# Terminal 1 - Backend
cd backend
npm run dev
# Terminal 2 - Frontend
cd frontend
npm run devProduction build:
npm run build
# Start backend
cd backend
npm start
# Start frontend
cd frontend
npm startThe application will be available at:
- Frontend: http://localhost:3000
- Backend API: http://localhost:3001
- Skill Trajectory Timeline - Visualize readiness over time
- Signal Decay Visualization - See how skills decay without reinforcement
- Failure-to-Recovery Graph - Track learning from mistakes
- Provenance Map - See where each skill came from
- Capability-Based Search - Search by readiness, volatility, evidence
- Candidate Comparison - Compare multiple candidates side-by-side
- Counterfactual Hiring Insights - See bias metrics and false negatives
- Bias Simulation - Run simulations with/without filters
- Cohort Readiness Heatmaps - View readiness by role and batch
- Early-Warning Alerts - Get notified of supply/demand gaps
- Training ROI Insights - See which courses generate employable skills
The system includes four autonomous agents:
- SkillDecayAgent - Calculates decay-adjusted readiness scores
- FailureAnalysisAgent - Clusters misconception and recovery patterns
- HiringBiasSimulationAgent - Runs counterfactual simulations
- PlacementRiskForecastAgent - Predicts cohort placement risks
Agents run independently and write structured outputs to Firestore. They can be triggered via API:
POST /api/agents/trigger
{
"agentName": "SkillDecayAgent",
"input": { "studentId": "student_1" }
}- Role-based access control (RBAC)
- Firebase security rules for Firestore
- Input validation using Zod
- JWT token authentication
- SQL injection protection via parameterized queries
POST /api/auth/profile- Register/update user profileGET /api/auth/me- Get current user
GET /api/students/dashboard- Get dashboard dataGET /api/students/provenance- Get skill provenance mapPOST /api/students/evidence- Add skill evidence
POST /api/recruiters/search- Search candidatesPOST /api/recruiters/compare- Compare candidatesPOST /api/recruiters/simulate- Run hiring simulationGET /api/recruiters/bias-metrics- Get bias metricsPOST /api/recruiters/roles- Create role
GET /api/placement/cohort-readiness- Get cohort readinessGET /api/placement/early-warnings- Get early warningsGET /api/placement/training-roi- Get training ROIGET /api/placement/courses-roi- Get all courses ROI
POST /api/signals/recompute/:studentId- Recompute signalsGET /api/signals/skill/:studentId/:skillName- Get skill signalGET /api/signals/trajectory/:studentId/:roleId- Get trajectory
POST /api/agents/trigger- Trigger agentGET /api/agents/status/:executionId- Get execution statusGET /api/agents/executions- List executions
# Backend tests (when implemented)
cd backend
npm test
# Frontend tests (when implemented)
cd frontend
npm test- Deploy to Heroku, Railway, or AWS Elastic Beanstalk
- Set environment variables
- Ensure PostgreSQL connection
- Configure Firebase service account
- Deploy to Vercel (recommended) or Netlify
- Set environment variables
- Configure Firebase client config
- PostgreSQL: Use managed service (AWS RDS, Heroku Postgres, etc.)
- Firestore: Automatically managed by Firebase
firebase deploy --only firestore:rules- Backend: Modular service architecture with clear separation of concerns
- Frontend: Component-based React with TypeScript
- Agents: Independent agent modules with shared Firebase config
- Shared Types: Common TypeScript interfaces
- Define types in
shared/types/index.ts - Implement backend service in
backend/src/services/ - Add API route in
backend/src/routes/ - Create frontend component in
frontend/src/components/ - Update dashboard if needed
This project is proprietary and confidential.
This is a production system. All changes should be:
- Fully tested
- Documented
- Reviewed before deployment
For issues or questions, contact the development team.
SignalBridge - Transforming campus recruitment through dynamic employability signals.