A web application that validates CV/resume information by comparing user-submitted form data against the content of an uploaded PDF document. Built with the T3 Stack.
- Form-based Data Entry: Users input their personal information including name, email, phone number, skills, and experience
- PDF Upload: Support for PDF CV/resume uploads with text extraction
- Intelligent Validation: Advanced text matching algorithms that compare form data against PDF content
- Detailed Feedback: Provides specific information about which fields match or don't match the uploaded document
- Real-time Processing: Instant validation results with loading states
- Fill the Form: Enter your personal details in the web form
- Upload PDF: Select and upload your CV/resume in PDF format
- Automatic Validation: The system extracts text from your PDF and compares it with your form data
- Get Results: Receive detailed feedback on matches and mismatches
- Framework: Next.js 15 with App Router
- Database: PostgreSQL with Prisma ORM
- API: tRPC for type-safe API layer
- Styling: Tailwind CSS v4
- PDF Processing: pdf-parse for text extraction
- Validation: Zod schemas for runtime type checking
- Node.js 18+
- PostgreSQL database
- npm or yarn
-
Clone the repository
-
Install dependencies:
npm install
-
Set up environment variables:
cp .env.example .env
Edit
.envand configure your database URL:DATABASE_URL="postgresql://postgres:password@localhost:5432/validate-cv" -
Set up the database:
npm run db:push
-
Start the development server:
npm run dev
Open http://localhost:3000 to view the application.
npm run dev # Start development server
npm run build # Build for production
npm run start # Start production server
npm run lint # Run ESLint
npm run typecheck # Run TypeScript type checking
npm run db:studio # Open Prisma StudioThe system uses sophisticated text matching to validate CV content:
- Text Normalization: Removes special characters and normalizes whitespace
- Flexible Phone Matching: Compares last 7 digits of phone numbers
- Skills Validation: Individual validation of comma-separated skills
- Experience Matching: Word-based matching with configurable similarity thresholds
- Fuzzy Matching: Handles variations in formatting and minor discrepancies
To learn more about the T3 Stack and its components:
This application can be deployed on platforms like Vercel, Netlify, or any Node.js hosting service. Make sure to:
- Set up a PostgreSQL database
- Configure environment variables
- Run database migrations
- Build the application
For detailed deployment guides, see the T3 Stack deployment documentation.