Trust your hiring process again.
Unmask is an intelligent hiring verification platform that helps you verify candidate authenticity through comprehensive analysis of CVs, LinkedIn profiles, GitHub accounts, and automated reference calls. Built for RAISE YOUR HACK 2025 β’ Vultr Track.
π Live Demo: unmask.click
- CV Processing: Extracts and analyzes professional experience, education, skills, and credentials
- LinkedIn Integration: Cross-references LinkedIn data with CV information for consistency
- GitHub Analysis: Evaluates coding activity, repository quality, and technical skills
- Credibility Scoring: AI-powered authenticity assessment with detailed flags and recommendations
- AI-Powered Calls: Automatically calls references using ElevenLabs Conversational AI
- Natural Conversations: Professional, human-like interactions with references
- Transcript Analysis: Real-time transcription and AI-powered summarization
- Reference Validation: Cross-checks reference feedback with candidate claims
- Live Feedback: Get real-time prompts during candidate interviews
- Inconsistency Detection: Flags discrepancies between sources on-the-fly
- Suggested Questions: AI-generated follow-up questions based on analysis
- Interview Transcripts: Live transcription with highlighted concerns
- Candidate Profiles: Unified view of all candidate information
- Processing Pipeline: Real-time status tracking from upload to analysis
- Flag Management: Visual indicators for potential concerns
- Export Reports: Detailed hiring decision support documents
- Next.js 15 - React framework with App Router
- TypeScript - Type-safe development
- Tailwind CSS - Modern styling framework
- Radix UI - Accessible component primitives
- Framer Motion - Smooth animations
- Groq API - Fast AI inference for document analysis
- OpenAI GPT-4 - Advanced reasoning and summarization
- ElevenLabs - Natural voice AI for reference calls
- PDF Processing - Automated document parsing and extraction
- Docker - Containerized deployment
- Vultr - Cloud hosting platform
- File Storage - Local JSON-based data persistence
- Real-time Processing - Async job processing
- Node.js 18+
- Docker (for production deployment)
- API keys for external services
-
Clone the repository
git clone https://github.com/le-commit/unmask.git cd unmask -
Install dependencies
cd frontend npm install -
Configure environment variables
cp .env.example .env.local
Required environment variables:
# AI Services GROQ_API_KEY=your_groq_api_key OPENAI_API_KEY=your_openai_api_key # Reference Calling (ElevenLabs) ELEVENLABS_API_KEY=your_elevenlabs_api_key ELEVENLABS_AGENT_ID=your_agent_id ELEVENLABS_AGENT_PHONE_ID=your_phone_id # Twilio (via ElevenLabs) TWILIO_ACCOUNT_SID=your_twilio_sid TWILIO_AUTH_TOKEN=your_twilio_token TWILIO_PHONE_NUMBER=your_twilio_number
-
Start development server
npm run dev
-
Open your browser
http://localhost:3000
We provide automated deployment scripts for seamless production deployment:
-
Make scripts executable
chmod +x deploy.sh rollback.sh check-status.sh
-
Deploy to production
./deploy.sh
-
Check deployment status
./check-status.sh
-
Emergency rollback (if needed)
./rollback.sh
-
Build the Docker image
docker build -t unmask:latest . -
Run the container
docker run -d \ --name unmask-app \ -p 3000:3000 \ --env-file .env.local \ unmask:latest
-
Build the application
cd frontend npm run build -
Start production server
npm start
GET /api/applicants- List all applicantsPOST /api/applicants- Create new applicant with CV/LinkedIn/GitHubGET /api/applicants/[id]- Get specific applicantPUT /api/applicants/[id]- Update applicant informationDELETE /api/applicants/[id]- Delete applicant
POST /api/reference-call- Initiate automated reference callGET /api/get-transcript?conversationId=- Retrieve call transcriptPOST /api/summarize-transcript- AI analysis of reference call
- File upload β CV/LinkedIn parsing β GitHub analysis β AI credibility assessment β Reference verification
- Navigate to the dashboard:
/board - Click "Add New Applicant"
- Upload required documents:
- CV (PDF, DOC, DOCX) - Required
- LinkedIn Profile (PDF, HTML, TXT) - Optional
- GitHub Profile URL - Optional
- Submit and wait for processing
- Open the reference call interface:
/call - Fill in reference details:
- Phone number (with country code)
- Candidate name
- Reference name
- Company context (optional)
- Role and duration (optional)
- Initiate the call
- Review transcript and AI summary
- Navigate to candidate profile
- Click "Start Interview"
- Use real-time suggestions during the call
- Review flagged inconsistencies
- Primary Analysis: Groq Llama models for speed
- Summarization: GPT-4o-mini for cost efficiency
- Voice AI: ElevenLabs for natural conversations
- GitHub Repositories: 50 per analysis
- Content Analysis: 3 repositories max
- File Size: 10MB per document
- Concurrent Processing: 3 applicants
- Environment variable validation
- File type restrictions
- Input sanitization
- Rate limiting on API endpoints
"Permission denied" when running deployment scripts
chmod +x deploy.sh rollback.sh check-status.shCV processing fails
- Ensure PDF is not password protected
- Check file size is under 10MB
- Verify GROQ_API_KEY is set correctly
Reference calls not working
- Verify ElevenLabs agent is configured
- Check Twilio phone number permissions
- Ensure all environment variables are set
Docker deployment issues
# Check logs
docker logs unmask-app
# Restart container
docker restart unmask-app
# Check environment variables
docker exec unmask-app env | sortWe welcome contributions! Please see our development guide for:
- Code style guidelines
- Testing procedures
- Feature request process
- Bug reporting
This project is built for RAISE YOUR HACK 2025 hackathon submission.
Event: RAISE YOUR HACK 2025 Track: Vultr Infrastructure Challenge Team: le-commit Live Demo: unmask.click