A high-performance, AI-powered Resume ATS Analyzer and Career Intelligence platform. ResuMetric leverages neural analysis and proprietary heuristics to optimize professional profiles for modern recruitment systems.
Mission: To bridge the gap between professional experience and systemic recruitment heuristics, ensuring candidates are both machine-readable and recruiter-optimized.
- Dual-AI Inference Engine
- Primary: Groq LPU (Llama-3) for ultra-low latency, sub-second diagnostics.
- Fallback/Rewrite: Google Gemini 1.5 Flash for robust, high-fidelity resume copy optimization.
- Dynamic Role Auto-Detection
- The AI aggressively scans uploaded documents to automatically infer the candidate's target job title, seniority, and industry, providing highly contextualized scoring without manual input.
- Enterprise Authentication (Supabase)
- Full OAuth (Google, GitHub) and Email/Password integration with secure session management.
- Includes Password Recovery flows and strict clearance validation.
- AI Cover Letter Generator
- Instantly drafts highly targeted, persuasive cover letters tailored to the auto-detected role and the specific strengths/weaknesses of the candidate's ATS profile.
- Public Profile Sharing
- Generates secure, read-only public URLs (
/r/:id) to share ATS scores and heatmaps with mentors or recruiters while automatically stripping out raw PII text.
- Generates secure, read-only public URLs (
- Interactive PDF Reporting: Generates a downloadable, beautifully styled
pdfkitreport matching the platform's Industrial dark theme. - Protected User Dashboard
- Authenticated operators receive a permanent archive of their analysis history with complete GDPR-compliant manual deletion controls.
- Guests operate under a strict 1-Hour Auto-Purge TTL via MongoDB for maximum privacy.
- Actionable Diagnostics
- Performance Heatmap: Visual highlighting of strong, average, and critically weak segments within the resume text.
- ATS Visual Simulation: Automated diagnostics for structural and formatting risks.
| Domain | Technology |
|---|---|
| Frontend | React (Vite), React Router v7, Chart.js, Framer Motion |
| Backend | Node.js, Express.js |
| Database | MongoDB (Transient storage & User linking), Supabase (Auth) |
| AI Pipelines | Groq SDK, Google Generative AI |
| Parsing | pdf-parse, mammoth |
| Styling | Custom Industrial CSS (IBM Plex Mono, Signal Green #00E676) |
- AI Cover Letter Generator: Integrated Groq/Gemini to draft contextual cover letters based on the resume's ATS gaps.
- Public Share Links: Added secure routing (
/api/share/:id) to share read-only dashboards with stripped PII. - GDPR Dashboard Deletion: Implemented user-controlled history purging (
DELETE /api/history/:id). - Pre-Upload Validation: Added strict client-side file size validation (8MB limit) to prevent browser crashing on large PDFs.
- Rate Limit UX: Added a dedicated UI warning ("SYSTEM COOLDOWN") when users hit the Express 429 rate limit.
- Styled PDF Exports: Overhauled the
pdfkitgenerator to produce a dark-themed, Industrial-style PDF matching the website. - Multi-Page Routing: Migrated from a single-page app to a robust client-side routed application featuring
/about,/blog,/privacy,/terms, and/dashboard. - Supabase Authentication: Integrated
@supabase/supabase-jsfor complete user lifecycle management. - Dynamic Heatmaps: Added UI to visually segment and color-code resume text based on AI impact assessment.
- Testimonial Slider: Implemented a CSS-only infinite marquee slider for operator feedback.
- Custom Branding: Added a bespoke SVG favicon (
favicon.svg) and unified the "ResuMetric" identity across all meta tags.
- Total Groq Migration: Migrated the
Cover Letter GeneratorandResume Rewriteengines from Google Gemini to Groq LPU (Llama-3) to completely bypass Gemini API404/400availability errors and significantly reduce response latency. - Zod Validation Robustness: Implemented strict payload fallbacks in the frontend to ensure
inferredRoleandresumeTextare never transmitted asundefined, resolving400 Bad Requestschema rejections. - Backend Syntax Resolution: Resolved an unclosed function block in the Groq service layer that was causing fatal
500 Internal Server Errorsduring the initial resume ingestion. - Vite Production Routing: Resolved
localhost:8080connection refusal errors on live deployment by implementing dynamic relative pathing (apiRoot) for API calls. - Chart.js Rendering Crash: Fixed the "point is not a registered element" fatal error by explicitly registering
PointElementandLineElementin the main React entry point. - Express Rate-Limiter (Vercel): Resolved
ERR_ERL_UNEXPECTED_X_FORWARDED_FORby configuring Express totrust proxy, allowing accurate IP tracking behind Vercel's edge network. - Supabase WebSocket Support: Installed the
wspackage and passed it to the Supabase transport layer to resolve a Node.js 20 crash caused by a lack of native WebSockets. - Vite Environment Loading: Configured
envDir: '../'invite.config.jsto ensure the local dev server correctly captures Supabase credentials from the root.envfile, preventing null object crashes. - Supabase OAuth Redirects: Guided the configuration of the Supabase dashboard 'Site URL' and 'Redirect URIs' to point to the live Vercel domain, fixing the
localhost:3000/#access_tokendead-end.
1. Install dependencies
npm install2. Configure environment variables
cp .env.example .envOpen .env and configure the following keys:
GROQ_API_KEYGEMINI_API_KEYMONGODB_URIVITE_SUPABASE_URL&VITE_SUPABASE_ANON_KEYSUPABASE_SERVICE_ROLE_KEY
3. Start the development server
npm run devFrontend runs on http://localhost:5173 | API runs on http://localhost:8080
ResuMetric is optimized for serverless monorepo deployment on Vercel.
- Import the repository to Vercel.
- Ensure Framework Preset is set to
Other. - Set Build Command to
npm run buildand Output Directory toclient/dist. - Copy all environment variables from your
.envinto Vercel's Environment Settings. - Add an additional variable:
CLIENT_URL=https://<your-vercel-domain>.vercel.app. - Deploy. The included
vercel.jsonfile handles all API bridging and static fallback routing automatically.
- Transient Memory: Resumes are parsed entirely in memory (
multer.memoryStorage()) and never touch physical disk storage. - Data Expiration: Guest MongoDB analysis records are permanently purged 3600 seconds after creation via a Time-To-Live (TTL) index.
- Secure Transport: AES-256 encryption enforced on all external connections.
Creator: Chriz (@chriz-3656)
System Version: v1.2.0-stable
© 2026 ResuMetric. All rights reserved. Data-Driven Career Intelligence.
