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

Scrolled till here?

Don’t be a stranger,

let’s talk!

natashg@umich.edu

Scrolled till here?

Don’t be a stranger,

let’s talk!

natashg@umich.edu

Scrolled till here?

Don’t be a stranger,

let’s talk!

natashg@umich.edu

Scrolled till here?

Don’t be a stranger,

let’s talk!

natashg@umich.edu

Scrolled till here?

Don’t be a stranger,

let’s talk!

natashg@umich.edu