Grail: Streamlining Identity Verification in Web3
Grail: Streamlining Identity Verification in Web3
Grail: Streamlining Identity Verification in Web3
A trusted portal for decentralized application (dApp) owners to verify user identities securely—without compromising privacy.
A trusted portal for decentralized application (dApp) owners to verify user identities securely—without compromising privacy.
A trusted portal for decentralized application (dApp) owners to verify user identities securely—without compromising privacy.





Client
Client
Grail Verification
Grail Verification
Grail Verification
Date
Date
May 2023 - June 2023
May 2023 - June 2023
May 2023 - June 2023
Team
Team
1 stakeholders, 1 product manager, 1 frontend developer, 1 designer
1 stakeholders, 1 product manager, 1 frontend developer, 1 designer
1 stakeholders, 1 product manager, 1 frontend developer, 1 designer
Role and Contribution
Role and Contribution
Brainstorming, user flows, information architecture, wireframes, prototypes, visual design
Brainstorming, user flows, information architecture, wireframes, prototypes, visual design
Brainstorming, user flows, information architecture, wireframes, prototypes, visual design
Problem
Problem
Problem
Manual credential verification became a bottleneck
Manual credential verification became a bottleneck
Manual credential verification became a bottleneck
Manual credential verification became a bottleneck
As Grail began issuing credentials like Know Your Customer (KYC) and BrightID facial recognition to users, decentralized application owners (verifiers) had to validate each user manually.
With a growing number of users, this once-simple process became a time-consuming bottleneck.
As Grail began issuing credentials like Know Your Customer (KYC) and BrightID facial recognition to users, decentralized application owners (verifiers) had to validate each user manually.
With a growing number of users, this once-simple process became a time-consuming bottleneck.
As Grail began issuing credentials like Know Your Customer (KYC) and BrightID facial recognition to users, decentralized application owners (verifiers) had to validate each user manually.
With a growing number of users, this once-simple process became a time-consuming bottleneck.
Core challenge
Core challenge
Core challenge
How might we make the credential verification process simpler, reliable and efficient for verifiers?
How might we make the credential verification process simpler, reliable and efficient for verifiers?
How might we make the credential verification process simpler, reliable and efficient for verifiers?
How might we make the credential verification process simpler, reliable and efficient for verifiers?
Solution
Solution
Solution
From manual checks to scalable workflows
From manual checks to scalable workflows
From manual checks to scalable workflows
From manual checks to scalable workflows
To reduce verifier effort and improve consistency, I redesigned the process as a shareable, flexible portal.
To reduce verifier effort and improve consistency, I redesigned the process as a shareable, flexible portal.
To reduce verifier effort and improve consistency, I redesigned the process as a shareable, flexible portal.
Generate a verification page based on selected credential criteria
Generate a verification page based on selected credential criteria
Generate a verification page based on selected credential criteria
Create new verification pages based on selected credential types.
View and manage all existing pages in one place.
Share links directly from the homepage—each page has a unique URL for easy distribution.
Preview the user flow before sharing to ensure it matches your verification criteria.
Create new verification pages based on selected credential types.
View and manage all existing pages in one place.
Share links directly from the homepage—each page has a unique URL for easy distribution.
Preview the user flow before sharing to ensure it matches your verification criteria.
Create new verification pages based on selected credential types.
View and manage all existing pages in one place.
Share links directly from the homepage—each page has a unique URL for easy distribution.
Preview the user flow before sharing to ensure it matches your verification criteria.
Set filters like age thresholds or document type
Set filters like age thresholds or document type
Set filters like age thresholds or document type
Choose from the list of credentials issued by Grail (e.g., KYC, age, ID type).
Apply filters such as “age over 18” or “valid government ID.”
Add one or multiple criteria to suit your specific use case.
We provide predefined operators to make setup simple and human-readable.
Choose from the list of credentials issued by Grail (e.g., KYC, age, ID type).
Apply filters such as “age over 18” or “valid government ID.”
Add one or multiple criteria to suit your specific use case.
We provide predefined operators to make setup simple and human-readable.
Choose from the list of credentials issued by Grail (e.g., KYC, age, ID type).
Apply filters such as “age over 18” or “valid government ID.”
Add one or multiple criteria to suit your specific use case.
We provide predefined operators to make setup simple and human-readable.
Preview the verification flow before sending it to users and receive real-time confirmation once a user successfully verifies
Preview the verification flow before sending it to users and receive real-time confirmation once a user successfully verifies
Preview the verification flow before sending it to users and receive real-time confirmation once a user successfully verifies
View the user-facing verification page before sending.
Ensure all criteria are configured correctly.
Users scan a QR code using a supported wallet (e.g., Polygon ID).
Verifiers receive real-time confirmation upon successful verification.
View the user-facing verification page before sending.
Ensure all criteria are configured correctly.
Users scan a QR code using a supported wallet (e.g., Polygon ID).
Verifiers receive real-time confirmation upon successful verification.
View the user-facing verification page before sending.
Ensure all criteria are configured correctly.
Users scan a QR code using a supported wallet (e.g., Polygon ID).
Verifiers receive real-time confirmation upon successful verification.
Background
Background
Background
Wait, what even is Grail?
Wait, what even is Grail?
Wait, what even is Grail?
Wait, what even is Grail?
Grail is a privacy-first identity platform for the blockchain ecosystem. It leverages zero-knowledge proofs (ZKPs), a cryptographic method that verifies the truth of a statement without revealing the actual data, to help users verify their identities without sharing personal information.
Grail integrates with Polygon ID, allowing users to store credentials privately in a decentralized wallet while providing dApp owners with a way to confirm user identity securely.
Grail is a privacy-first identity platform for the blockchain ecosystem. It leverages zero-knowledge proofs (ZKPs), a cryptographic method that verifies the truth of a statement without revealing the actual data, to help users verify their identities without sharing personal information.
Grail integrates with Polygon ID, allowing users to store credentials privately in a decentralized wallet while providing dApp owners with a way to confirm user identity securely.
Grail is a privacy-first identity platform for the blockchain ecosystem. It leverages zero-knowledge proofs (ZKPs), a cryptographic method that verifies the truth of a statement without revealing the actual data, to help users verify their identities without sharing personal information.
Grail integrates with Polygon ID, allowing users to store credentials privately in a decentralized wallet while providing dApp owners with a way to confirm user identity securely.
Background
Background
Background
How Grail actually works
How Grail actually works
How Grail actually works
How Grail actually works
STEP 1
Credential Issuance
Users go through a one-time identity verification on Grail.
Credentials are encrypted and stored both privately (in their wallet) and on the blockchain (as proof of issuance).
Users go through a one-time identity verification on Grail.
Credentials are encrypted and stored both privately (in their wallet) and on the blockchain (as proof of issuance).
Users go through a one-time identity verification on Grail.
Credentials are encrypted and stored both privately (in their wallet) and on the blockchain (as proof of issuance).




STEP 2
Credential Storage
No third party sees the user's credentials.
They remain encrypted in the user's Polygon ID wallet.
An immutable log of the credential state is saved on-chain.
No third party sees the user's credentials.
They remain encrypted in the user's Polygon ID wallet.
An immutable log of the credential state is saved on-chain.
No third party sees the user's credentials.
They remain encrypted in the user's Polygon ID wallet.
An immutable log of the credential state is saved on-chain.



Credentials stored in wallet privately
Credentials stored in wallet privately
Credentials stored in wallet privately
Credentials encrypted
in the blockchain
Credentials encrypted
in the blockchain
Encrypted and credential state added
Encrypted and credential state added
State: Issued
Blockchain
STEP 3
Credential Verification
To verify, users simply scan a QR code with a supported wallet.
The verifier receives a yes/no result based on predefined conditions, without accessing sensitive data.
To verify, users simply scan a QR code with a supported wallet.
The verifier receives a yes/no result based on predefined conditions, without accessing sensitive data.
To verify, users simply scan a QR code with a supported wallet.
The verifier receives a yes/no result based on predefined conditions, without accessing sensitive data.




User Flow
User Flow
User Flow
Designing for two very different users
Designing for two very different users
Designing for two very different users
Designing for two very different users
We developed parallel flows for:
dApp Verifiers who configure and share verification pages
End Users who complete the verification via wallet scan
These flows shaped our interface design and page architecture.
We developed parallel flows for:
dApp Verifiers who configure and share verification pages
End Users who complete the verification via wallet scan
These flows shaped our interface design and page architecture.
We developed parallel flows for:
dApp Verifiers who configure and share verification pages
End Users who complete the verification via wallet scan
These flows shaped our interface design and page architecture.





Flow for dApp verifiers
Flow for dApp verifiers





Flow for end users
Flow for end users
Wireframes
Wireframes
Wireframes
Quick sketches. Fast iterations. Real screens.
Quick sketches. Fast iterations. Real screens.
Quick sketches. Fast iterations. Real screens.
Quick sketches. Fast iterations. Real screens.
Because we had clear feature requirements and were working within the Finity Design System, I opted for quick paper wireframes before jumping into high-fidelity designs in Figma.
This helped us iterate quickly and maintain visual consistency across components.
Because we had clear feature requirements and were working within the Finity Design System, I opted for quick paper wireframes before jumping into high-fidelity designs in Figma.
This helped us iterate quickly and maintain visual consistency across components.
Because we had clear feature requirements and were working within the Finity Design System, I opted for quick paper wireframes before jumping into high-fidelity designs in Figma.
This helped us iterate quickly and maintain visual consistency across components.










Constraints
Constraints
Constraints
We made “age > 18” easy for humans, not just engineers
We made “age > 18” easy for humans, not just engineers
We made “age > 18” easy for humans, not just engineers
We made “age > 18” easy for humans, not just engineers
One of the major challenges we faced was allowing verifiers to define conditional logic like "age > 18" without overwhelming them. Backend limitations prevented fully custom logic, so we:
Offered predefined operators per credential type (e.g., greater than, less than)
Let verifiers enter just the value, keeping the UI clean and constrained
We balanced technical feasibility with intuitive interaction.
One of the major challenges we faced was allowing verifiers to define conditional logic like "age > 18" without overwhelming them. Backend limitations prevented fully custom logic, so we:
Offered predefined operators per credential type (e.g., greater than, less than)
Let verifiers enter just the value, keeping the UI clean and constrained
We balanced technical feasibility with intuitive interaction.
One major challenge: allowing verifiers to define conditional logic like "age > 18" without overwhelming them. Backend limitations prevented fully custom logic, so we:
Offered predefined operators per credential type (e.g., greater than, less than)
Let verifiers enter just the value, keeping the UI clean and constrained
We balanced technical feasibility with intuitive interaction.
One of the major challenges we faced was allowing verifiers to define conditional logic like "age > 18" without overwhelming them. Backend limitations prevented fully custom logic, so we:
Offered predefined operators per credential type (e.g., greater than, less than)
Let verifiers enter just the value, keeping the UI clean and constrained
We balanced technical feasibility with intuitive interaction.
One of the major challenges we faced was allowing verifiers to define conditional logic like "age > 18" without overwhelming them. Backend limitations prevented fully custom logic, so we:
Offered predefined operators per credential type (e.g., greater than, less than)
Let verifiers enter just the value, keeping the UI clean and constrained
We balanced technical feasibility with intuitive interaction.
Prototype
Prototype
Prototype
Testing the experience
Testing the experience
Testing the experience
Testing the experience
Reflection
Reflection
Reflection
What this taught me about designing for trust
What this taught me about designing for trust
What this taught me about designing for trust
What this taught me about designing for trust
This project taught me how to:
Design for a technical, privacy-first product with no room for error
Align with cryptographic constraints while maintaining clarity for users unfamiliar with blockchain
Work end-to-end, from discovery to visual design, on a fast-paced team
This project taught me how to:
Design for a technical, privacy-first product with no room for error
Align with cryptographic constraints while maintaining clarity for users unfamiliar with blockchain
Work end-to-end, from discovery to visual design, on a fast-paced team
This project taught me how to:
Design for a technical, privacy-first product with no room for error
Align with cryptographic constraints while maintaining clarity for users unfamiliar with blockchain
Work end-to-end, from discovery to visual design, on a fast-paced team
Thank you for reading!
Thank you for reading!
Thank you for reading!
Thank you for reading!
Go back to top
More Projects




UMSI Career Development Office
UMSI Career Development Office
A multi-method evaluation of UMSI's Career Development Office Canvas page to uncover why students weren’t using it, and what we could do to
A multi-method evaluation of UMSI's Career Development Office Canvas page to uncover why students weren’t using it, and what we could do to
A multi-method evaluation of UMSI's Career Development Office Canvas page to uncover why students weren’t using it, and what we could do to
UX Research
UX Research
UI Design




EazyCart: Navigating Groceries
EazyCart: Navigating Groceries
A smart shopping cart that uses real-time navigation, BLE beacon technology, and NFC syncing to turn grocery chaos into clarity.
A smart shopping cart that uses real-time navigation, BLE beacon technology, and NFC syncing to turn grocery chaos into clarity.
A smart shopping cart that uses real-time navigation, BLE beacon technology, and NFC syncing to turn grocery chaos into clarity.
UX Research
UX Design
Prototyping