The idea
What if online debates had real stakes?
The product turns an online callout into a structured challenge. A user chooses an X account, puts money behind the challenge, and gives the target a chance to accept and respond.
The product turns online debates into real challenges. Users search for an X account, create a challenge, stake money from their wallet, and share it publicly. Others can add money to the pot. The target can accept or reject it and submit a response. The challenge then moves through a realtime lifecycle until completion and payout. I designed and built the entire product end to end: the interface, challenge system, wallet, PayPal payments, X integration, authentication, realtime backend, crowd contributions, sharing, and production UX.
A complete social challenge platform designed and built end to end, combining realtime social interactions with X identity, wallet funding, crowd contributions, challenge state management, and payout workflows.
The idea
The product turns an online callout into a structured challenge. A user chooses an X account, puts money behind the challenge, and gives the target a chance to accept and respond.
End-to-end
I designed and developed the complete experience, from the social feed and challenge composer to the realtime backend, wallet, PayPal integration, X API, authentication, and production UX.
The core system
The interesting part is what happens after the post is published. The challenge moves through explicit states as the crowd contributes, the target responds, and the challenge reaches completion.
Create challenge
Fund stake
Crowd contributes
Target accepts
Target responds
Approval
Payout
Money
Users fund their wallets through PayPal, use those balances to stake or contribute to challenges, and the resulting pot can eventually move to the target's wallet.
PayPal
User wallet
Initial stake
Crowd contributions
Challenge pot
Target wallet
X integration
Users can look up an X account directly inside the challenge composer. The platform retrieves profile information such as username, avatar, verification, followers, and other public account data before the challenge is created.
Realtime
Convex powers the realtime data layer, so challenge states, contributions, wallet information, and other changes update through reactive queries instead of polling.
UX
The challenge composer progressively guides users through authentication, challenge text, target selection, stake amount, wallet funding, and publishing. The primary CTA changes based on exactly what is missing.
Under the hood
Next.js and React power the product experience, Convex handles realtime state and backend mutations, Clerk manages identity, X provides account discovery, and PayPal provides wallet funding.
Next.js + React
Clerk
Convex
Twitter API
PayPal
Svix
Engineering
Authentication, X identity, realtime state, wallet balances, payment events, crowd contributions, challenge transitions, and payout logic all have different failure modes. The challenge was connecting them without making the user experience feel like a collection of separate systems.
The result
I took a fairly unusual product idea — putting real money behind social challenges — and built the complete system around it, from the social feed and X integration to wallet funding, crowd contributions, challenge state management, and payout.
Challenge lifecycle
Published challenges move through active, accepted, response submitted, completed, or cancelled. The author controls completion. The target must accept before responding. Payout needs a linked X identity.
Wallet
USD wallets with PayPal deposits, challenge funding, crowd contributions, and transaction history. Balances are stored in cents and cannot go negative. The client is never trusted to write financial state.
PayPal deposits
Order creation, capture, pending/completed/failed transactions, sandbox and production, and request idempotency. Capture credits the wallet on the server.
X account lookup
Twitter API v2 handle lookup with profile, verification, followers, avatar, and location. Handles are normalized, responses are cached for five minutes, and API errors are handled explicitly.
Crowd funding
Anyone can add money and an optional message. The pot, contribution count, and realtime feed update together.
Target experience
Connected X users get a dedicated flow: callout-for-you, accept or reject, response textarea, and a waiting state until completion.
Social feed and sharing
A public newest-first feed of challenge cards, plus share to X, WhatsApp, Facebook, or clipboard with stake, handle, and public URL.
Progressive composer
The CTA tracks what's missing: login, challenge text, X user, amount, wallet top-up, then publish. Low balance drops the user into funding before they can post.
Clerk + Svix
Email and X OAuth, protected routes, identity linking, and user.created / updated / deleted webhooks to keep Convex in sync.
More work
2024
Pet healthcare website · booking and local SEO
2024
Performance-focused business website · 3s to 450ms
2023
Corporate website · frontend & performance engineering
2024
Personal brand website · content, search and performance