Inspiration Today, resumes and certificates are static and easy to fake. Anyone can claim skills without real proof, and recruiters often struggle to verify authenticity. I wanted to build something that represents a person’s real growth over time, not just self-declared skills.
That led to the idea of Skill Passport, a living digital identity for skills that evolves as you learn, backed by AI intelligence and blockchain trust.
What it does Skill Passport is an Gemini-powered dynamic NFT that acts as a verifiable digital profile for your skills. Users paste their learning evidence (like course completion, coding challenges, projects, achievements). The system then: 1)Uses Gemini AI to analyze the evidence 2)Extracts skills, proficiency levels, and a summary 3)Stores this structured data on IPFS 4)Updates the user’s NFT metadata on the blockchain 5)Produces a public, tamper-proof record of skill growth Each update creates an on-chain transaction that can be verified on Etherscan, making the profile transparent and trustworthy.
How we built it The project consists of three main layers: Frontend (Next.js + React) 1)Clean UI where users enter their learning evidence 2)Displays skills, summary, confidence score 3)Shows IPFS metadata link 4)Shows blockchain transaction link
Backend (Node.js + Express) 1)Receives evidence from frontend 2)Sends prompt to Gemini API for structured skill analysis 3)Parses Gemini’s JSON output 4)Uploads metadata to IPFS using Pinata 5)Interacts with smart contract using ethers.js 6)Calls updateTokenURI() to update the NFT
Blockchain (Solidity + Hardhat + Sepolia testnet) 1)ERC-721 smart contract for Skill Passport NFT 2)Supports minting and updating metadata 3)Stores IPFS URI immutably 4)All updates are publicly verifiable on-chain
Challenges we ran into 1)Dealing with inconsistent Gemini JSON outputs and cleaning responses 2)Debugging IPFS authentication (Pinata JWT issues) 3)Handling ethers.js v6 changes compared to older tutorials 4)Fixing Hardhat dependency conflicts 5)Understanding why transactions reverted 6)Making sure frontend/backend communication was stable 7)Debugging why Etherscan links were failing (missing txHash in response) Each issue forced deeper understanding of Web3 + APIs.
Accomplishments that we’re proud of 1)Built a full end-to-end AI + Web3 pipeline 2)Successfully connected Gemini → IPFS → Smart Contract → UI 3)Deployed and tested transactions on Sepolia testnet 4)Each skill update produces a real blockchain transaction 5)Created a concept that is both technically strong and socially meaningful 6)Built everything from scratch instead of using templates This is not a demo-only project, it actually works.
What we learned 1)How large language models can structure real-world unstructured data 2)How decentralized storage (IPFS) works in practice 3)How NFT metadata updates function 4)Smart contract interactions using ethers.js 5)Full-stack Web3 architecture 6)Debugging real-world integration issues 7)Importance of designing systems for trust and transparency
What’s next for Gemini-powered Dynamic NFT 1)Deeper skill reasoning with Gemini Gemini can move beyond extracting skills to actually reasoning about depth, consistency, and growth patterns, producing more accurate and trustworthy evaluations.
2)Multimodal evidence verification Future versions can allow users to upload certificates, screenshots, PDFs, and project demos, with Gemini validating visual proof instead of relying only on text.
3)Continuous learning agent Gemini can track a user’s historical updates over time and intelligently evolve the passport, making it a living AI-driven profile rather than periodic manual updates.
4)Personalized career guidance Gemini can recommend next skills, projects, and learning paths based on gaps in the user’s current profile.
5)Natural-language verification for recruiters Recruiters could query Gemini directly (e.g., “Is this candidate strong in ML?”), and Gemini would generate answers grounded in the user’s on-chain, verifiable data.
To see demo: Terminal 1: Run commands from the root folder: cd backend node index.js Terminal 2: Run commands from the root folder: cd frontend npm run dev visit localhost 3000
Built With
- api
- ethers.js
- etherscan
- express.js
- gemini
- ipfs
- next.js
- node.js
- pinata
- react
- sepolia
- solidity
- typescript
Log in or sign up for Devpost to join the conversation.