The Problem: LinkedIn, AngelList, and other platforms force you to reveal sensitive career data to prove credibility. This creates privacy risks, discrimination, and fake profiles.
Our Solution: Prove your professional credentials with cryptographic certainty — without exposing private details like employer names, exact salaries, or personal endorsements. 🛡️✨
- Experience Verification: Circuit validates you worked X years without revealing where
- Education Proof: Confirms your degree is from a verified institution (hash-based)
- Salary Range Check: Proves your compensation falls within a range (exact amount stays private)
- Skill Endorsements: Weighted validation from verified professionals (endorser identities protected)
- Certification Status: Active, unexpired credentials from trusted registries
María's Situation:
- 5 years of blockchain consulting experience
- Studied at MIT (wants to keep private for security)
- Has active AWS certification
- Wants to apply for a $150k premium project requiring verification
What María Does:
- Installs zkLinked app and completes verification form
- Uploads documents (CV, diplomas, certifications) - app generates hashes automatically
- Generates ZK proof using our circuits
- Shares proof + public outputs (keeps raw data private)
- Employer verifies the proof cryptographically
- Result: María accesses the $150k project without revealing she worked at Google, earned exactly $85k, or studied at MIT
Real scenarios where hiding university is valuable:
1. Socioeconomic Discrimination 💰
- Problem: "We only hire from Ivy League"
- ZK Solution: Prove quality education without revealing if it was Harvard or public university
- Result: Opportunities based on competence, not prestige
2. Geographic Prejudice 🌍
- Problem: "We don't hire from X country/region universities"
- ZK Solution: Verify education without revealing nationality/location
- Result: Global talent without geographic bias
3. Identity Protection 🛡️
- Problem: Stalkers, harassers can track by university
- ZK Solution: Verify credentials without exposing personal information
- Result: Personal security + professional credibility
4. Unfair Competition ⚔️
- Problem: Competitors can "steal" talent based on university
- ZK Solution: Headhunters can't easily identify candidates
- Result: Protection of valuable talent
5. Market Flexibility 🚀
- Problem: "We only hire from Stanford for blockchain"
- ZK Solution: Prove technical competence without university brand bias
- Result: True meritocracy based on skills
Freelancers & Consultants 💼
- Prove expertise without exposing client names
- Access premium projects requiring verified credentials
- Command higher rates through cryptographic credibility
Job Seekers 🎯
- Stand out in applicant pools with verified profiles
- Prevent discrimination based on employer history
- Build reputation portably across platforms
Employers & Recruiters 🏢
- Filter candidates automatically with verified credentials
- Reduce time wasted on fake profiles and inflated resumes
- Ensure compliance with hiring regulations
Networking & Mentorship 🤝
- Connect with real professionals (anti-bot verification)
- Find mentors based on verified expertise, not marketing
- Build relationships on cryptographic trust
- Cryptographic Integrity: Impossible to forge ZK proofs
- Sybil Resistance: Requires multiple endorsements from different verified users
- Registry Validation: Institutions/certifications must be in official databases
- Temporal Decay: Older endorsements have reduced weight
- Cross-Validation: Multiple verification sources prevent single points of failure
circuits/— the ZK factory (Noir circuits)src/main.nr— orchestrates all checkssrc/experience.nr— work experience logicsrc/education.nr— education validitysrc/certifications.nr— active certificationssrc/skills.nr— endorsements-based skillssrc/reputation.nr— final aggregate scoresrc/utils.nr— helpers (Poseidon2 hash, Merkle, etc.)Prover.toml— ready-to-run example inputsNargo.toml— Noir project configuration
- You give the circuit your private data (years worked, school hash, skills).
- The circuit checks everything secretly.
- It only reveals tiny truths: “meets min years?”, “education OK?”, “skills OK?”, and a final score.
- Anyone can verify you’re honest — without seeing your private info.
- Edit
circuits/Prover.toml(we’ve included a complete example). - Run the commands to build a proof.
- Share the proof + public outputs (keep raw data private).
cd circuits
nargo check # compile the circuit
nargo execute # generate the witness from Prover.toml
# generate the ZK proof (Barretenberg's bb CLI tool)
bb prove -b ./target/circuits.json -w ./target/circuits.gz -o ./target
# verify the proof using public outputs
bb write_vk -b ./target/circuits.json -o ./target
bb verify -k ./target/vk -p ./target/proof -i ./target/public_inputs
# verifier solidity contract
bb write_solidity_verifier -k ./target/vk -o ./target/Verifier.solNote: If you edit Prover.toml, keep array sizes exact (e.g., 100 institutions, 200 certs).
- Experience: years computed from
start_years/end_years+ sanity checks (no future dates, etc.). - Salary: “is current salary within [min, max]?” (it doesn’t reveal the exact salary).
- Education: the
institution_hashmust be present in a provided whitelist. - Certifications: each must exist in a registry and be unexpired.
- Skills: endorsements are weighted and averaged; requires a minimum count.
- Reputation: a weighted sum of the above into a final score.
- Poseidon2 hashing for ZK-friendly commitments & nullifiers (in
utils.nr). - Merkle root helper available to move large lists to membership proofs (future step).
- Only aggregated public outputs are revealed; raw inputs stay private.
{
"experience_verified": 1,
"salary_range_verified": 1,
"education_verified": 1,
"certifications_verified": 1,
"skills_verified": 1,
"overall_reputation_score": 100
}- Company names, exact salaries, specific institutions (we use hashes), raw endorsements.
- Replace whitelists with Merkle roots and private membership proofs
- Emit public nullifiers (anti-replay) and integrate on-chain verification
- Smart contracts: verify proofs on-chain and mint badges based on scores
- Frontend: generate proofs client-side with Noir.js + Web Workers for UX
- Mobile app with biometric verification integration
- Noir v1 beta compatible (nargo 1.0.0-beta.11).
- Poseidon2 dependency
poseidon@v0.1.1for efficient hashing. - Modular circuits for maintainability and cheaper constraints.
- If
nargo executefails, double-check array sizes inProver.toml(must match exact lengths). - If hashing libraries conflict, ensure your
Nargo.tomlusesposeidon = { tag = "v0.1.1", git = "https://github.com/noir-lang/poseidon" }.
For Individuals: Take control of your professional data while proving credibility
For Organizations: Reduce hiring risks and improve talent quality
For Society: Create a more trustworthy, privacy-preserving professional ecosystem
forge script script/DeployNFT.s.sol --rpc-url $RPC_URL --private-key 0x$PRIVATE_KEY --broadcast[Success] Hash: 0x33e64a9705e70a66484b38405ea4814b860a37ee6a5427e794120e11c78c7f42 Contract Address: 0x7b28E980b9FCAD6d83cDECdBBC71e4e130a0aeF7
Ready to prove your worth — privately? 🧪✨