
Pretuit
Transform Telegram Threads into NFTs
Demo
About
The problem it solves ## The Problem It Solves Telegram is one of the most active platforms for real-time knowledge sharing — whether in crypto groups, developer chats, alpha circles, or DAO discussions. However, it suffers from several limitations: - Valuable insights are buried in constant message noise - Long-form content is lost in fast-moving conversations - There's no built-in way to preserve or re-surface meaningful discussions - Collective intelligence is transient and difficult to retain - Users lack ownership or attribution for their contributions ## What *Pretuit* Enables **Pretuit** addresses these problems by turning Telegram content into structured, AI-enhanced, and onchain-preserved digital assets. It provides tangible benefits across different user categories, essentially, it's about decentralising creatorship: ### For individuals: - Save personal insights, updates, or commentary permanently - Mint Telegram threads as NFTs, providing verifiable authorship - Create a public, accessible archive of contributions ### For communities: - Identify and preserve high-value content from chats - Curate or reward insightful content submitted by members - Build a lasting, searchable knowledge base from group activity ### For the ecosystem: - Archive meaningful discourse from Telegram-native organisations - Make valuable content portable and accessible outside Telegram - Enable new models for content curation, discovery, and attribution ## How Chainlink was used To prevent duplication and perhaps plagiarism and to also ensure content authenticity, a SHA-256 hash is generated for each content, embedded into the NFT metadata stored on Pinata IPFS. Using chainlink function, the CID/IPFS hash sent alongside the user wallet address & content hash is used to fetch the nft metadata from IPFS, then the sent hash and the fetched hash are compared for equivalence, if they don't match, it's a new content and thus, a new NFT is assigned for minting to the user's address. If the hashes **match**, the content is verified as authentic and previously minted.
How it's made
Challenges we ran into - Contract: missing DON id for the intended contract network: Ethereum Sepolia - Chainlink function error: there was a mismatch in the return type of the function from the IPFS flow relative to the one expected in the contract: the sent—received hash process - Missing chainlink function credential aside from DON ID, the subscription ID of the function - DB Schema & DB mismatch, I had to reset the DB. It was an inexpensive decision - Auth flow: verification of the user during the Telegram bot process: getting the currently signed in user details from NextAuth wasn't possible due to the originating request context: outside of the browser so no cookies are available to be read, had to fetch the user from the DB indexed by the supplied Telegram auth code/token - Reflecting user verification status: Since the auth session is computed from the DB on initial sign-in, when a user is verified following the interaction with the bot, and a user decides to not click the callback URL displayed, I had to make sure the session is updated with new data from the database: an easy fix, after a few rethinks All things considered, aside from the contract issue which was frustrating, (I had about 4 contract deployments) all were relatively easy to fix