← Back to home

Voltz

Intelligent event connections using AI-powered verified matching on 0G Infrastructure

Problem Statement

Voltz is a decentralized, AI-enhanced event networking platform designed to solve the "cold start problem" at technical conferences and hackathons. The platform helps attendees make meaningful connections before, during, and after events through intelligent matchmaking and privacy-preserving credential verification.The Problem: At large events, attendees struggle to find relevant connections among thousands of participants. Traditional networking is inefficient, and attendees often miss opportunities to connect with people who share their interests, skills, or goals.The Solution: Voltz combines zero-knowledge proofs, decentralized AI, and blockchain infrastructure to create a trustless, privacy-first networking experience:Privacy-Preserving Identity: Users verify credentials (GitHub, Twitter, LinkedIn) using vlayer's zero-knowledge proofs, proving their qualifications without revealing personal dataAI-Powered Matching: Decentralized AI running on 0G Compute analyzes attendee profiles, verified skills, interests, and event goals to generate ranked matches with explanationsVerifiable Reputation: On-chain reputation system with soulbound profile NFTs on 0G Chain, tracking event attendance, connections made, workshops attended, and verified credentialsDecentralized Messaging: End-to-end encrypted XMTP messaging that persists across events, enabling seamless communicationScalable Infrastructure: Built on 0G's high-throughput blockchain infrastructure to support events with 10,000+ attendeesHow It Works:Users onboard via Privy authentication and create a soulbound profile NFTCredentials are verified through ZK proofs without exposing sensitive informationBefore events, AI analyzes all attendees and generates personalized match recommendations stored on 0G DADuring events, users can message matches via XMTP, check in with QR codes, and track workshop attendancePost-event, reputation scores update on-chain and users receive insights and follow-up recommendationsTechnology Stack: 0G Chain for smart contracts, 0G Storage for profile data, 0G Compute for AI inference, vlayer for ZK-TLS proofs, XMTP for messaging, and Privy for seamless Web3 authentication.Voltz transforms event networking from random chance into intelligent, verified connections while maintaining user privacy and data sovereignty.

Solution

Technical Architecture & ImplementationVoltz was built as a full-stack Web3 application with four main components: smart contracts, backend API, frontend, and an XMTP messaging agent. Here's how we pieced everything together:🏗️ Smart Contracts on 0G ChainWe deployed four core contracts using Solidity 0.8.28 and Hardhat with the Ignition deployment framework:VoltzProfile.sol - Soulbound NFT profiles with metadata pointers to 0G StorageVoltzEvent.sol - Event management with registration tracking and check-in verificationVoltzReputation.sol - Point-based reputation across categories (events, connections, workshops, credentials) with tier achievementsVoltzAttestation.sol - ZK proof verification for credentials using vlayer's proof systemKey Implementation Details:Used Hardhat Ignition modules for deterministic, resumable deployments to 0G Chain (EVM-compatible L1)Contracts reference off-chain data on 0G Storage via URI pointers, keeping gas costs lowAccessControl patterns for role-based permissions (admin, verifier roles)Soulbound tokens implemented via blocking transfers in the profile NFTPartner Integration - 0G Chain: We configured wagmi to support 0G's testnet (chain ID 16600) alongside mainnet and Sepolia, creating a custom chain config with RPC endpoints at https://rpc-testnet.0g.ai. The high-throughput EVM layer allowed us to handle frequent on-chain updates without worrying about congestion.⚙️ Backend API - Fastify on SteroidsBuilt with Fastify (faster than Express) as a high-performance REST API with real-time capabilities:Tech Stack:Fastify with WebSocket support for live updatesPrisma ORM with PostgreSQL for relational data (user sessions, cached profiles, analytics)Redis + Bull Queue for background job processing (AI matching, event sync)Ethers.js v6 for blockchain interactions with 0G ChainPrivy Server Auth for JWT validation and user authenticationRate limiting via Redis-backed @fastify/rate-limitArchitecture Highlights:Modular service layer: contract.service.ts handles all blockchain writes, storage.service.ts manages 0G Storage uploads, auth.service.ts validates Privy tokensBull queues process expensive operations asynchronously (AI matching runs in background when users register for events)WebSocket endpoint provides real-time match notifications and event updatesStructured logging with Pino for production debuggingPartner Integration - 0G Storage: We built a StorageService class that uploads profile and event metadata to 0G's decentralized storage. The service generates content IDs (CIDs), uploads JSON blobs, and returns URIs that get stored on-chain. This keeps sensitive profile data off-chain while maintaining verifiability.Partner Integration - vouch SDK: Integrated @getvouch/sdk to verify credentials through vlayer's ZK-TLS proofs. When users connect GitHub/Twitter/LinkedIn, vouch generates zero-knowledge proofs that we submit to the VoltzAttestation contract without exposing raw OAuth tokens or personal data.Hacky Bit #1: Since 0G Storage SDK wasn't fully available, we built a mock implementation for development that simulates CID generation using SHA-256 hashes. The architecture is abstraction-ready for swapping in the real SDK.🎨 Frontend - Next.js 15 with React 19Built on the bleeding edge with Next.js 15's App Router and React 19 Server Components:Tech Stack:Next.js 15.1 with App Router for file-based routingReact 19 (RC) with new hooks and concurrent featuresPrivy React SDK for authentication (email, social, wallet)wagmi + viem for blockchain interactionsXMTP React SDK for decentralized messaging UIRadix UI primitives for accessible componentsTailwind CSS v4 (beta) for stylingZustand for client-side state managementTanStack Query for server state and cachingFramer Motion for animationsIntegration Architecture: Providers (providers.tsx): PrivyProvider (auth layer) └─ WagmiProvider (blockchain layer) └─ QueryClientProvider (data layer) └─ App ComponentsPartner Integration - Privy: Configured Privy with embedded wallets that auto-create for users without wallets. Supports multiple login methods (wallet, email, Google, Twitter) with a custom purple theme. The embedded wallet flow was crucial for onboarding non-crypto users at events.Partner Integration - XMTP: Used @xmtp/react-sdk v9 to build the messaging interface. XMTP client initializes from the user's Privy wallet signer, enabling end-to-end encrypted conversations that persist across events.Hacky Bit #2: Next.js 15 + React 19 caused type conflicts with XMTP and Radix UI (expecting React 18). We used @ts-ignore comments strategically and configured package.json with React 18.3 while using Next 15's React 19 runtime - it works because of React's backwards compatibility.Hacky Bit #3: Built a "demo mode" that disables Privy auth if environment variables aren't set, showing a helpful setup screen instead of crashing. This made development iteration faster.🤖 XMTP Agent - Autonomous Messaging BotBuilt a standalone agent using XMTP's Agent SDK to provide automated support:Architecture:Event-driven handlers for conversation starts, text messages, reactionsMiddleware pipeline: logging → rate limiting → filtering → authCommand routing for /help, /profile, /matches, /eventsBackend API integration for fetching user data and matchesPartner Integration - XMTP: The agent uses @xmtp/agent-sdk with environment-based initialization (wallet key, DB encryption). It runs as a separate process, listening for messages and responding autonomously. This was perfect for sending match notifications pre-event.Implementation Pattern: agent.on('text', async (ctx) => { // Route to appropriate handler if (text.includes('match')) { await handleMatchNotification(ctx); } });🧠 AI Integration - 0G Compute (Planned)Designed for 0G Compute's decentralized AI inference:Planned Architecture:Background job triggers when event fills with attendeesJob sends all profile metadata to 0G Compute endpointAI model (running on decentralized nodes) performs semantic matchingResults include match scores + explanationsProofs stored on 0G DA, match data cached in PostgreSQLXMTP agent notifies users of top matchesWhy 0G Compute: Eliminates centralized AI dependencies. Match results are verifiable through proofs on DA layer, preventing manipulation.Hacky Bit #4: Built the queue infrastructure and API endpoints first, then planned to swap in 0G Compute client. For hackathon demo, we can use a mock AI service that returns random matches with LLM-generated explanations.🔐 vlayer ZK Proofs IntegrationHow it Works:User clicks "Verify GitHub" in frontendFrontend calls vouch SDK which initiates ZK-TLS proof generation via vlayervlayer's prover fetches GitHub API over TLS, generates proof of commit count/stars without revealing auth tokenProof hash + claim returned to frontendBackend receives proof, submits to VoltzAttestation contractContract stores: { subject: userAddress, claim: "100+ Solidity commits", proofHash: 0x... }Privacy Win: We prove credentials without storing GitHub tokens, usernames, or any PII on-chain or in our database.📊 Data Flow ArchitectureOn-Chain (0G Chain):Profile NFT ownershipEvent registrations & check-insReputation points & tiersAttestation claims & proof hashes0G Storage:Full profile metadata (skills, bio, interests) - encryptedEvent metadata (description, schedule, venue)Large data blobs (profile images as IPFS CIDs)0G DA:ZK proof payloads from vlayerAI computation proofs (verifiable match results)Historical event data for analyticsPostgreSQL:Cached on-chain data for fast queriesUser sessions & JWT refresh tokensAnalytics & event insightsXMTP message metadata (pointers only, not content)Redis:Rate limiting countersWebSocket connection stateBull job queue dataReal-time leaderboard cache🚀 Deployment StrategySmart Contracts:Hardhat Ignition deployment to 0G testnetDeterministic addresses via CREATE2 patternsDeployment artifacts in contracts/ignition/deployments/Backend:Dockerized Fastify app with multi-stage buildsPrisma migrations run on startupEnvironment-based config (dev/staging/prod)Frontend:Next.js SSR deployment (Vercel-ready)Environment variables for Privy App ID, backend API URLStatic optimization for public pagesAgent:Long-running Node process with PM2/systemdSeparate wallet for agent identityEncrypted local database for XMTP state⚡ Notable Technical DecisionsFastify over Express: ~20% faster request handling, built-in schema validationPrisma over raw SQL: Type-safe queries, auto-generated client, easy migrationsBull over custom queues: Battle-tested, Redis-backed, retry logic out-of-boxSoulbound NFTs: Prevents profile trading, ensures reputation stays with individualOff-chain metadata: Keeps gas costs low while maintaining verifiability through URIsModular contract design: Easier to upgrade individual components without redeploying entire system🛠️ Challenges & SolutionsChallenge 1: 0G Storage SDK not production-ready Solution: Built abstraction layer with mock implementation, ready to swapChallenge 2: Next.js 15 + React 19 type incompatibilities Solution: Used React 18 types with strategic @ts-ignore flags, works at runtimeChallenge 3: XMTP agent needs separate wallet but should act on behalf of Voltz Solution: Created dedicated agent identity, stores relationship in backendChallenge 4: Expensive AI matching for 10,000+ attendee events Solution: Background jobs with Bull queue, results cached in Redis/PostgreSQLChallenge 5: Managing real-time WebSocket state at scale Solution: Redis pub/sub for cross-instance communication, graceful reconnection handling📦 Partner Technology Benefits0G Chain: High throughput (handles frequent on-chain updates), low fees, EVM compatibility (reuse existing Solidity/Hardhat tooling)0G Storage: Decentralized storage cheaper than on-chain, censorship-resistant profile data0G DA: Verifiable proof storage without bloating blockchain statevlayer: Privacy-preserving credentials without trusted oracles or KYC providersXMTP: Messaging that persists across events, no central server to shut downPrivy: Smooth Web3 onboarding, embedded wallets eliminate MetaMask frictionvouch SDK: Simplified ZK proof generation, works with vlayer out-of-box

Hackathon

ETHGlobal Buenos Aires

2025

Contributors