Inspiration

Credential fraud is a widespread problem, yet verifying legitimate documents is still slow, manual, and dependent on institutional trust. Most existing solutions either rely on centralized databases or produce inconsistent digital formats that cannot be verified cryptographically. We wanted a system where the authenticity of a credential can be proven mathematically, not institutionally. This project was built around a simple question: can we verify academic data using only deterministic hashing and cryptographic signatures, without needing a centralized authority?

What it does

VerifAI converts a structured credential into a deterministic, canonical JSON format and generates a SHA-256 hash that acts as its digital fingerprint. The issuer’s wallet signs this hash through MetaMask, producing cryptographic proof that ties the credential to the issuer. During verification, the submitted credential is canonicalized and hashed in exactly the same way. If the resulting hash matches the registered reference, the credential is authentic; if not, it has been altered. This makes tampering immediately detectable and allows trust to be established based on pure cryptography.

How we built it

The system is built with Vite, React, and TypeScript for speed and simplicity. We implemented a canonicalization function that recursively sorts JSON keys to ensure deterministic serialization across environments. Hashing is done client-side using the Web Crypto API to produce a SHA-256 fingerprint. MetaMask integration is handled through Ethers.js, allowing the issuer to sign the hash to simulate credential issuance. The verification logic is fully deterministic and runs entirely in the browser without external dependencies, which keeps the architecture simple and predictable.

Challenges we ran into

Ensuring deterministic hashing was the primary challenge. Different JSON representations of the same logical data produce different byte sequences, which break verification. We had to build and refine a canonicalizer to enforce stable field ordering and consistent serialization. Another challenge was integrating cryptographic signing through MetaMask in a way that was consistent across browsers and safely handled edge cases such as locked wallets or missing providers.

Accomplishments that we're proud of

We produced a clean, reliable verification pipeline that requires no backend, no centralized storage, and no trust assumptions. A credential can be proven authentic entirely through hashing and signing operations that run locally in the browser. We successfully demonstrated that a minimal cryptographic workflow can detect any modification to a credential and that issuer signatures can be incorporated without complicating the user experience.

What we learned

We learned the importance of canonicalization when working with cryptographic hashes. Without deterministic serialization, even well-designed verification systems fail. We also gained insight into how digital signatures can be used to prove origin and authorization without relying on external infrastructure. The combination of hashing and signing provides a foundation for credential verification that is both lightweight and secure.

What's next for VerifAI

The next step is to anchor the credential hashes on a blockchain smart contract so verification can be performed against a public, tamper-proof registry instead of local state. We also plan to add a backend API for storing signed credential metadata, implement zero-knowledge proofs for property-based verification, and introduce a standardized credential format compatible with decentralized identity ecosystems.

Built With

Share this project:

Updates