Pulse is a mobile-first social client built on top of Lens and Farcaster. We developed a dynamic recommendation engine that shows you content based on what you posted and liked on Lens and Farcaster, on the POAPS you collected, and finally on your interactions within the Pulse app.
The UX of the app is inspired by a Tinder-like experience and is designed to challenge the traditional scrolling behavior through an alternative way of engaging with content. There are three main types of interactions:
- Swipe left, to skip content you don't like
- Swipe right, to like content that you appreciate
- Swipe up, to super like and mint on-chain the content
The goal of Pulse is to create a relevant feed for users and offer a more curated and slow-paced approach to content consumption. The product focuses on quality over quantity, encouraging users to engage more deeply with content that truly interests them.
Pulse’s peculiarity is in hiding the author of the posts in the first part of the user’s experience, creating a feed based on unbiased opinions more than the names of popular content creators. By liking content or minting the NTFs the authors are then revealed, bringing the user to a more conscious approach to the social experience.
Finally, by hiding the author, Pulse is giving more chances to less popular creators to get noticed even if they don't yet have a big audience.
Pulse is a Progressive Web App optimized for mobile usage built on the following stack:
- Next JS and React for the frontend
- Node JS for the data processing and recommendation engine
- Supabase as a database for collecting social data and for resolving ENS subdomains offchain
- Pinecone as vector database storing embedded feed of contents
- Cohere for generating embeddings
- OpenAI to generate the profiles topics of interest based on their onchain social graph
- Airstack to fetch onchain users' social graph
- The Graph for indexing EAS and NFTs creating a new subgraph
- Custom ENS gateway to resolve subdomains offchain
- ENS Thorin library for React components
- Privy for frictionless onboarding creating smart accounts using email
- Base as the layer for deploying smart contracts representing ERC1155 tokens when superliking contents and for deploying EAS both for content creators and users
- Base Account Abstraction and Paymaster for frictionless and gasless interactions preventing users from signing every onchain transaction
- Ethereum Attestation Service for attest a content creator when users superlike (mint onchain) its contents and for attesting users' activities within the app such as 10 days in a row using the app or liking contents
- Lens to populate the social feed retrieving contents from their BigQuery tables
- Farcaster to populate the social feed retrieving contents from their network
- Push Protocol to notify creators when their contents are liked/superliked and we use it as a webhook on our backend to populate the NFT metadata
- NFT storage for storing NFT (ERC1155) metadata when contents are superliked
Find here some additional repositories that we created during the ETHGlobal Weekend to support our mobile-first application:
- https://github.com/PaoloRollo/pulse-push-subgraph-webhook
- https://github.com/PaoloRollo/pulse-subgraph
- https://github.com/PaoloRollo/ens-supabase-cf-gateway
- https://github.com/PaoloRollo/graph-node
- https://github.com/pulse-social/rec-engine