ZK Job Verify is a privacy-preserving job application verification DApp designed for the Aleo ecosystem. It allows applicants to prove their eligibility (Age, Degree, Certifications, Skills) to employers using Zero-Knowledge Proofs (ZKP), ensuring their raw personal data (like birthdates, GPAs, or full transcripts) never leaves their device.
This project is part of the "Build a Privacy-focused Application on Aleo" event.
⚠️ Status: Wave 1 (UI & Prototype) This release represents the frontend interface and logic simulation. While the cryptographic concepts are implemented logically, the actual interaction with the Aleo blockchain and Leo Smart Contracts is simulated in this phase.
- Resume Parsing: Users can upload PDFs or Images of their resumes.
- Gemini Integration: Uses Google Gemini 2.5 Flash to analyze documents locally and extract structured claims (Age, Experience, GPA) automatically.
- Privacy Guard: Extraction happens on-the-fly; no data is stored on our servers.
- Client-Side Simulation: The "Generate Proof" step mimics a client-side WASM architecture.
- Data Hashing: Generates a deterministic, cryptographically secure hash (SHA-256) of the inputs combined with a secret nonce to represent a ZK commitment.
- Granular Status: Visualizes the heavy computational steps (witness generation, constraint checking) expected in a real ZK application.
- Proof Validation: Employers verify the "Proof String" to check eligibility.
- Expiration Logic: Proofs are valid for 24 hours. Older proofs are marked as Expired even if the cryptographic signature is valid, enhancing security.
- Verification History: Validations are saved locally (LocalStorage) allowing employers to track past verifications.
- Zero-Data Reveal: The employer sees only "Verified" status for criteria (e.g., "Age > 18"), never the raw value (e.g., "Age: 24").
- Integrated Chat: A floating chat widget powered by Google Gemini 3 Pro.
- Context Aware: The AI is trained to answer questions about Zero-Knowledge Proofs, Aleo, and how to use the DApp.
- Input: User uploads a resume or enters data manually.
- Constraint Check: System validates inputs (e.g., Age >= 18) before proof generation.
- Proof Generation: The app simulates a Leo circuit execution, producing a Base64 encoded proof string containing the public inputs and the cryptographic commitment.
- Input: Employer receives and pastes the "Proof String".
- Decoding & Check: The system decodes the proof, checks the timestamp for expiration, and validates the signature.
- Result:
- ✅ Success: Criteria met and proof is fresh.
⚠️ Expired: Proof is valid but too old (>24h).- ❌ Failure: Invalid signature or corrupted data.
- Frontend: React 19, TypeScript, Vite
- Styling: Tailwind CSS, Lucide Icons
- AI: Google GenAI SDK (Gemini 2.5 Flash & Gemini 3 Pro)
- Visualization: Recharts (for privacy exposure stats)
- Blockchain (Simulation): Mock Leo Service (
mockLeoService.ts) with Web Crypto API
| Phase | Description | Status |
|---|---|---|
| Wave 1 | UI, AI Parsing, Proof Simulation, Expiration Logic | ✅ Completed |
| Wave 2 | Develop verify_jobs.leo Smart Contracts & Circuits |
⏳ Pending |
| Wave 3 | Integrate Aleo Wallet Adapter & Testnet Deployment | ⏳ Pending |
| Wave 4 | Mainnet Launch & Verifiable Credentials Standard | ⏳ Pending |
- Node.js (v18+)
- A Google Cloud API Key (for Gemini AI features)
-
Clone the repo:
git clone https://github.com/Sheahni23/zk-job-verify.git cd zk-job-verify -
Install dependencies:
npm install
-
Configure API Key:
- Create a
.envfile (or set in your environment variables):
API_KEY=your_google_gemini_api_key_here
- Create a
-
Run the application:
npm start
-
Open in Browser: Navigate to
http://localhost:1234(or the port shown in your terminal).
MIT License. Built for the Aleo Privacy-Focused Application Event.