Inspiration
Traditional automated applicant tracking systems (ATS) force candidates to surrender massive amounts of sensitive personal data just to prove they satisfy basic job requirements. As a computer science student specializing in AI and Machine Learning, I wanted to eliminate this privacy compromise. Veri-Skill was born out of a desire to combine advanced AI-driven evaluation with Zero-Knowledge Cryptography on the Midnight Network. The goal was to create a system where recruiters get automated, validated proof that a candidate is qualified, while the candidate’s full resume data and exact evaluation score remain entirely confidential.
What it does
Veri-Skill is a Zero-Knowledge Resume Verification System that allows recruiters to verify candidate qualifications without ever seeing the actual AI scores or resume details. For Candidates: It extracts text from their uploaded resume, scores it securely using an AI engine, and generates a zero-knowledge proof. For Recruiters: It provides a simple "Verified" or "Not Verified" badge. The system guarantees the verification is authentic and algorithm-driven while keeping the underlying data strictly private.
How we built it
We designed Veri-Skill using a modular, cross-stack architecture optimized for enterprise scalability and cryptographic privacy: Backend Orchestrator: A Java/Spring Boot REST API manages job configurations, applicant metadata, and orchestration using a MySQL database. AI/ML Evaluation Engine: A Python/Flask microservice uses PyPDF2 for memory byte stream extraction and LangChain to parse text using Google's Gemini 3.5 Flash model. It normalizes qualification fitness into a precise integer score between 0 and 100. ZK Bridge & Smart Contract: A Node.js TypeScript wrapper pulls the private score and acts as the cryptographic interface to the Midnight Network. The smart contract uses a zero-knowledge circuit to assert the candidate's score meets the recruiter's threshold. This cryptographic relation is expressed as: $$\mathcal{R}(x, w) = \begin{cases} 1 & \text{if } w \ge x \ 0 & \text{if } w < x \end{cases}$$ where $x$ is the public required_threshold and $w$ is the private witness (private_score).
Challenges we ran into
Bridging cross-stack data pipelines was our biggest hurdle. Passing raw uploaded PDFs seamlessly across a Spring Boot backend, converting them into memory buffers using Python's BytesIO inside a WSL environment, and finally feeding that data into a TypeScript-driven cryptographic runtime required meticulous handling. Additionally, hitting a deprecated API model mid-hackathon forced a rapid upgrade to the gemini-3.5-flash model, requiring us to quickly adapt our AI scoring engine to ensure clean, isolated JSON outputs for the ZK circuit.
Accomplishments that we're proud of
We successfully engineered a complete, full-stack "walking skeleton" where data flows seamlessly from a REST API to an AI evaluator, and finally through a Midnight ZK circuit. Orchestrating this zero-cost verification pipeline entirely within a local Docker and WSL environment, and achieving proof generation and verification times in under one second, is a massive technical win.
What we learned
We discovered that ZK applications do not need to choose between traditional corporate backend power and blockchain privacy. By integrating a robust Spring Boot framework with the Midnight Network, we proved that privacy-preserving technology has a highly viable path in corporate infrastructure. Furthermore, separating the computational weight of LLM text extraction from the cryptographic verification circuit allowed each microservice to do what it does best.
What's next for Veri-Skill:Zero-Knowledge AI Screener
With the backend REST API, AI engine, and ZK circuits fully implemented, our immediate next step is building out the React and TypeScript frontend to finalize the Candidate Upload form and Recruiter Dashboard. Moving forward, we plan to implement JWT authentication for secure sessions and deploy the entire smart contract infrastructure to the Midnight Preview Testnet.
Log in or sign up for Devpost to join the conversation.