Inspiration

Most accountability systems still run on the honor system. Someone says, “I’ll get to it soon,” but nothing is actually committed, and when it falls through, there is no real ground truth. That was the core inspiration behind VeriSnap.

I wanted to build something where trust was not required in the first place. Instead of relying on reminders, promises, or social pressure, I wanted accountability to be enforced by code. If someone commits to a challenge, bet, or bounty, the stake should already be locked, the proof should be verifiable, and the payout should happen automatically when the work is actually done.

What it does

VeriSnap is a Web3 accountability platform for challenges, bets, and bounties.

Users lock XRP in escrow before anyone takes action. To complete a challenge and claim the reward, the participant submits photo or video proof. That proof is stored immutably using Pinata’s private IPFS, verified by Gemini 2.0 Flash with fraud detection, and if it passes verification, the escrow is automatically settled and paid out.

Each successful completion also mints a SUI NFT trophy with the proof CID embedded directly into the on-chain metadata, making the outcome permanently verifiable by anyone.

We also focused on making the experience frictionless. There is no sign-up and no login. Users can generate an XRPL testnet wallet with one tap and immediately create or accept challenges. The wallet becomes the user’s identity, which allows the product to feel fast and lightweight from the first interaction.

How we built it

VeriSnap is built as a four-layer system, with each layer handling the part it does best.

XRPL handles financial enforcement. We use EscrowCreate to lock XRP with a 24-hour auto-cancel, and once proof passes verification, EscrowFinish and Payment are triggered automatically with retry logic.

Pinata handles proof storage through private IPFS. Files are content-addressed by CID, which makes tampering mathematically impossible. We also use short-lived signed URLs so Gemini can temporarily access proof files without ever making them public.

Gemini 2.0 Flash handles proof verification. It returns structured results including pass or fail, confidence, reasoning, and fraud detection for cases like screenshots, photo-of-photo artifacts, and stock images.

SUI powers the trophy layer. A Move smart contract mints an NFT trophy containing the proof CID, confidence, and winner address as queryable on-chain metadata.

The application itself is deployed on Vultr. Our Next.js app runs on a Vultr cloud instance, which gives us low-latency API routes for the time-sensitive verification pipeline. That matters because escrow settlement, IPFS upload, and AI verification all need to happen in one flow without timing out.

We used Supabase to manage mutable off-chain state across the challenge lifecycle. That gave us a fast and practical way to handle status transitions, proof flow, and coordination logic without forcing everything onto the blockchain.

Challenges we ran into

One of the biggest challenges was cross-device state without authentication. VeriSnap has no login system, so the creator might make a challenge on their computer while the acceptor joins by scanning a QR code on their phone. We had to keep state synchronized across devices using server polling, cookie-based identity, and local storage fallbacks, all without user accounts.

Another major challenge was creator and acceptor role detection. Since the XRPL escrow is created by the app wallet rather than the user’s wallet, the on-chain owner address did not match the creator’s wallet. That made it difficult to distinguish who initiated the challenge versus who accepted it. We solved this by cross-referencing the server-side challenge record with local state where the creator’s wallet was preserved.

Handling video proof on mobile browsers was also difficult. Base64-encoded video can easily exceed browser storage limits, especially on mobile Safari and Chrome, which caused silent failures. To solve that, we built a module-level memory store that could pass large video data between pages without relying on sessionStorage.

We also ran into reliability issues with Gemini’s JSON mode on edge-case inputs. In some cases, structured output could fail unexpectedly, so we added a regex-based fallback parser to prevent the verification pipeline from hard-crashing.

A broader system design challenge was deciding what belonged on-chain versus off-chain while coordinating across four different protocols at once. Getting that split right was important for both performance and clarity.

XRPL escrow timing constraints also took multiple iterations to get right. EscrowCreate requires a FinishAfter field, not just CancelAfter, so making short-duration challenges work correctly while staying valid on the XRPL testnet was more difficult than expected.

Accomplishments that we're proud of

We are proud that VeriSnap turns accountability into something enforceable instead of just social. The product does not simply record promises; it creates a real stake, verifies proof, and settles outcomes automatically.

We are also proud of the zero-friction onboarding. Removing sign-up and login while still allowing users to generate a wallet and start participating in under 10 seconds made the experience feel much more usable than a typical Web3 application.

Another accomplishment is the multi-protocol architecture itself. We successfully connected XRPL for escrow, Pinata and IPFS for proof storage, Gemini for verification, SUI for on-chain trophies, Supabase for mutable state, and Vultr for deployment into one working end-to-end flow.

Finally, we are proud that every successful challenge produces a permanent on-chain record through a SUI NFT trophy with proof metadata baked in. That makes each verified win more than just a one-time transaction; it becomes a lasting and publicly verifiable achievement.

What we learned

Building across four protocols forced us to think much more carefully about where trust actually lives in a system. Web3 is not just about payments. It can be used for programmable enforcement. In our case, XRPL handles financial guarantees, SUI makes achievement metadata permanent and queryable, and IPFS provides tamper-proof storage through content addressing.

We also learned that not everything belongs on-chain. Supabase is better for mutable challenge state, privacy filtering, and dispute handling because that data changes often and does not need consensus. The real architectural lesson was learning to distinguish between what truly needs trustless enforcement and what simply needs a fast, reliable database.

Another big lesson was that the right Web3 stack is not one chain trying to do everything. The best design came from letting each layer do exactly what it is best at instead of forcing one protocol to carry the entire system.

What's next for VeriSnap

The next step for VeriSnap is improving the verification and dispute flow. Right now, the platform already verifies proof with AI fraud detection, but the system could become much stronger with richer challenge types, better dispute resolution, and more nuanced verification policies depending on the task.

We also want to expand beyond a hackathon proof of concept into a more polished product. That means improving the user experience, tightening the challenge lifecycle, making wallet generation and proof submission even smoother, and hardening the infrastructure for more real-world usage.

Longer term, VeriSnap could grow beyond simple bets and bounties into a broader accountability layer for the internet. The same architecture could support creator challenges, fitness accountability, habit commitments, social coordination, and other cases where users want verifiable outcomes instead of empty promises.

Built With

Share this project:

Updates