08 retail user journey
Overview
The retail user journey is designed to be simple and non-crypto complex, enabling individual consumers to easily discover, purchase, hold, and retire carbon credits for personal ESG proof.
Goal
Make carbon offsetting accessible to everyone, starting at 0.01 tons.
Complete User Journey
Visit Marketplace
Browse Projects
View Project Details
Connect Wallet / Create Account
Purchase Credits (Fractional)
Hold Credits
Retire Credits
Download Certificate
Step-by-Step Journey
Step 1: Visit Marketplace
User Action: User navigates to platform marketplace
What They See:
Project cards with:
Project name and type
Location/geography
PoAI verification badge
Vintage year
Price per ton
Remaining units available
Project image/visual
Key Features:
Filter by project type
Filter by geography
Filter by price range
Search by project name
Sort by price, vintage, availability
Marketing Hook: "Carbon offsetting starts at 0.01 tons"
Step 2: Browse Projects
User Action: User explores available projects
What They See:
Grid or list view of projects
Each project card shows:
PoAI Badge: Visual indicator of verification status
Project Type: Renewable Energy, Reforestation, etc.
Location: Country/region
Vintage: Year of credit generation
Price: Price per ton CO₂
Availability: Units remaining
Impact: Brief description of project impact
User Can:
Click project cards to see details
Filter and search
Compare projects
View project rankings/ratings (if applicable)
Step 3: Open Project Page
User Action: User clicks on a project to view details
What They See:
Project Header:
Project name and type
PoAI verification badge (prominent)
Project image/gallery
Project Details:
Geography: Exact location
Methodology: Verification standard (VCS, Gold Standard, etc.)
Vintage Year: When credits were generated
Verifier: Verification body name and reference
Project Description: What the project does
Impact Metrics: Tons CO₂ reduced/sequestered
PoAI Verification Section:
Asset Integrity: ✅ Verified
Data Integrity: ✅ Verified
Process Integrity: ✅ Verified
Link to proof bundle (optional, access-controlled)
Pricing & Availability:
Price per ton
Units available
Minimum purchase (if any)
Maximum purchase per user (if any)
Purchase Section:
Quantity input (supports decimals: 0.01, 0.25, 1.0, etc.)
Total price calculation
Purchase button (disabled if wallet not connected)
Project Documents (if public):
Verifier reports
Impact assessments
Project photos
Step 4: Connect Wallet / Create Account
User Action: User clicks "Connect Wallet" or "Create Account"
Options:
Option A: Non-Custodial Wallet
Connect MetaMask, WalletConnect, etc.
User controls private keys
Direct on-chain transactions
Option B: Custodial Account (Optional)
Email/password signup
Platform manages wallet
Simpler UX for non-crypto users
If KYC Required (jurisdiction-dependent):
User completes KYC verification
May be required before purchase or retirement
Platform handles compliance
After Connection:
Wallet address displayed
User can see balance (if any credits already owned)
Purchase button becomes active
Step 5: Buy Units
User Action: User selects quantity and confirms purchase
Purchase Flow:
Select Quantity
User enters amount (e.g., 0.25 tons)
UI shows total price
UI validates: minimum/maximum, availability
Review Purchase
Project details summary
Quantity and price
Payment method
Estimated gas fees (if applicable)
Confirm Purchase
User clicks "Purchase"
Transaction initiated
Payment Patterns:
Pattern A (Non-Custodial On-Chain):
User pays in stablecoin/native token
Marketplace contract transfers credits from treasury to user
Transaction confirmed on-chain
Credits appear in user's wallet
Pattern B (Off-Chain Payment):
User pays via credit card/fiat
Backend processes payment
Backend instructs issuer wallet to transfer credits to user
Credits appear in user's account
After Purchase:
Success message displayed
Credits credited to wallet
Transaction hash shown (for on-chain purchases)
User redirected to holdings dashboard
Status States:
✅ Success: Credits received
⏳ Pending: Transaction processing
❌ Failed: Transaction failed (refund if applicable)
Step 6: View Holdings
User Action: User navigates to "My Holdings" or dashboard
What They See:
Holdings Summary:
Total credits owned (across all projects)
Total value (if applicable)
Number of projects
Holdings by Project:
List of projects user owns credits from
For each project:
Project name and type
Quantity owned (e.g., "0.25 tons")
Purchase date
Purchase price (if applicable)
Current value (if applicable)
Actions: View details, Retire
Purchase History:
List of all purchases
Transaction details
Receipts/downloads
Step 7: Retire Credits
User Action: User selects credits to retire
Retirement Flow:
Select Project
User chooses project from holdings
Or selects from project page
Enter Retirement Amount
User enters quantity to retire (e.g., 0.25 tons)
UI validates: user has sufficient balance
UI shows retirement impact summary
Optional: Add Retirement Details
Purpose (personal offset, event, etc.)
Retirement message/note
Certificate recipient email (optional)
Confirm Retirement
User reviews retirement details
User clicks "Retire Credits"
Transaction initiated
On-Chain Retirement:
Contract burns units from user's balance
Increments
retired[projectTokenId]Emits
CreditsRetiredeventTransaction confirmed
Certificate Generation (Off-Chain):
Indexer listens to
CreditsRetiredeventReporting service generates certificate:
PDF certificate
JSON metadata
Includes:
Project details
Quantity retired
Retirement timestamp
Transaction hash
PoAI proof hash reference
Certificate stored and linked to retirement record
After Retirement:
Success message displayed
Certificate available for download
Retirement appears in history
Credits removed from holdings (burned)
Status States:
✅ Success: Credits retired, certificate generated
⏳ Pending: Transaction processing
❌ Failed: Transaction failed
Step 8: View Certificates
User Action: User navigates to "My Certificates"
What They See:
Certificate List:
All retirement certificates user has received
For each certificate:
Project name
Quantity retired
Retirement date
Certificate status
Actions: Download PDF, View JSON, Share
Certificate Details:
Full certificate content
On-chain proof link
PoAI verification link
Shareable link (optional)
User Can:
Download PDF certificate
Download JSON metadata
Share certificate (social media, email)
Print certificate
Verify certificate on-chain (via transaction hash)
UX States & Edge Cases
Disconnected Wallet State
What User Sees:
"Connect Wallet" prompt
Purchase buttons disabled
Holdings not visible
Can still browse projects
Connected but No Holdings
What User Sees:
Empty holdings message
"Browse Projects" CTA
Purchase history empty
Certificates list empty
Buy Success / Pending / Failed
Success:
Green success message
Credits appear in holdings
Transaction hash link
"View Holdings" CTA
Pending:
Loading spinner
"Transaction pending..." message
Transaction hash link (to explorer)
Auto-refresh when confirmed
Failed:
Red error message
Error details
"Try Again" button
Support contact link
Retirement Success / Pending / Failed
Success:
Green success message
Certificate download link
Retirement appears in history
Credits removed from holdings
Pending:
Loading spinner
"Retiring credits..." message
Transaction hash link
Failed:
Red error message
Error details
Credits remain in holdings
"Try Again" button
Certificate Download
What User Gets:
PDF certificate (printable)
JSON metadata (for verification)
Both include:
Project details
Retirement details
On-chain proof references
PoAI verification references
Key Features for Retail Users
Fractional Ownership
Buy as little as 0.01 tons
No minimum purchase requirements
Exact quantity purchasing
Simple Experience
No crypto knowledge required (with custodial option)
Clear project verification status
Transparent pricing
Proof of Impact
One-click retirement
Lifetime certificate
On-chain proof
Shareable certificates
Transparency
PoAI verification visible
Project details accessible
On-chain transaction history
Verifiable certificates
Last updated