A prediction market layer for X Community Notes, incentivizing accurate fact-checking
communitynotes.fun adds a prediction market layer to Twitter's Community Notes system. Users stake cryptocurrency (USDC) to predict whether tweets will receive fact-checks and what those fact-checks will say. Accurate predictions earn financial rewards.
Twitter's Community Notes system has a critical flaw: it's too slow. Studies show it takes an average of seven hours for notes to appear on misleading tweets—by which time millions may have already been misled. Additionally, contributors lack strong incentives beyond altruism.
communitynotes.fun creates financial incentives for identifying potentially misleading tweets early, drafting accurate fact-checks quickly, and voting on the most accurate community-submitted fact-checks.
Users can create a prediction market for any tweet by inputting its Tweet ID. They stake USDC to predict what a future Community Note might say. Others can bet the tweet will not receive a Community Note, support an existing prediction, or submit their own competing prediction.
When Twitter adds an official Community Note, predictions are scored based on similarity to the official note. Rewards are distributed based on accuracy, stake amount, and how early the prediction was made. If no note appears within 24 hours, the "No Community Note" position wins.
Financial rewards motivate accurate fact-checking beyond pure altruism. By rewarding early, accurate predictions, we accelerate the identification of misleading content. Financial stakes ensure participants are committed to accuracy rather than partisanship. The system creates a financial cost to spreading misinformation, as it becomes profitable to identify and bet against misleading content.
This is not a replacement for X's Community Notes—it complements it by providing immediate market signals while the full community consensus develops. It's a "truth acceleration machine" that harnesses market mechanisms to identify misinformation at internet speed.
Prediction markets are created manually using a tweet's ID—anyone can kick off a market the moment they suspect a tweet may be misleading. As Community Notes evolve, markets resolve automatically based on which notes achieve consensus. Winners receive payouts proportional to their stakes. This turns fact-checking into a financially rewarding activity, not just a social contribution.
We built a prediction market layer on top of X’s Community Notes, using some of the newest primitives in verifiable web infrastructure. The core innovation is our use of zkTLS, which lets us fetch web2 data—like whether a tweet has received a Community Note—directly from Twitter’s CDN, along with cryptographic proofs that verify the data was fetched correctly and untampered. This effectively turns a web2 endpoint into a trustable oracle for smart contracts. It’s a new design space, and we’re among the first to apply it in a real, working application.
The flow starts when a user creates a market by entering a Tweet ID. This opens a 24-hour window where others can stake POL and make predictions. Users can bet “Yes” (the tweet is factual and won’t receive a Note) or “No” (the tweet will get fact-checked). For “No” predictions, users must also write what they think the Community Note will say. These predictions are turned into 768-dimensional text embeddings using OpenAI’s API, then encoded as hex strings and stored onchain—so they can be compared later to the actual Community Note, if it appears.
If a Community Note appears before the deadline, the market can be resolved by submitting zero-knowledge proofs (via Reclaim Protocol) that verify the note’s existence on Twitter’s official CDN and that the embedding was generated using OpenAI’s API. These proofs are verified onchain, and the contract scores each “No” prediction using a cosine similarity check between the submitted and official embeddings. The pot is then distributed to the most accurate predictors, factoring in prediction quality, stake size, and how early they participated. If no Community Note appears after 24 hours, the “Yes” side wins, and rewards are distributed based on stake and timing.
The frontend is built with Next.js and TailwindCSS, and we use Curvegrid’s MultiBaas to index contract events and keep the UI synced with onchain data. Everything is deployed to Polygon PoS for low fees and fast confirmations. We also integrated ENS to improve the user experience with wallet identification.
The hackiest part of the build was integrating all the verifiers and implementing the similarity scoring logic fully onchain. There were multiple steps involved—offchain and onchain—to correctly encode, decode, and store these embeddings. Executing cosine similarity directly in the smart contract, in a gas-efficient and accurate way, was especially challenging. But pulling it off means we now have a fully trustless way to score semantic predictions onchain—a key building block for bringing truth markets to life.