The problem we are trying to solve is that it is very difficult to track what is going on in the DeFi space and to track all the new projects coming out due to lack of information. We decided to use collective intelligence to solve this problem using the Telegram bot API.
Right now in its current form, JamBot allows the admin to suggest a trade. The group then votes on whether or not the admin should execute the trade.
Once there is a majority vote, then the admin can execute on the trade on a DApp linked to the telegram bot. JamBot also keeps track of portfolio performance, and helps the group find all the resources they need to do diligence on each token.
If you're new to crypto and want to start investing, you can use JamBot to help you. You can get friends to help suggest investments, while the bot helps you with research and learning what the token is and how it's been performing.
While we did not get round to implementing this during the hackathon, our long term vision for this project is to have a rolling list of 20 tokens from the Uniswap top 100 invested at any one time in a portfolio. Any member can suggest a new coin to enter that roster at any time when there is a free slot available. Once the token has surpassed a target growth, e.g. 25%, JamBot will trigger an automatic vote to the group on whether we hold our position or sell our position, thereby freeing up a new slot in our 20 token roster for new investment. JamBot will also then execute the trade depending on whether we are selling or holding that particular asset.
The project had a large amount of specifics to decide in order to narrow the problem scope into a minimum viable product implementation.
First, decision intervals and the UX for the bot had to be decided. Additionally, automatic actions and monitoring events needed to be decided and communicated to users in a clear way as to what was happening without creating too much noise.
Building the Telegram bot was fairly straightforward using NodeJS and AWS Lambda. The part that became more difficult was retrieving real-time market data for owned assets from TheGraph and EtherScan.
The Graph was a really performant tool for retrieving real-time Uniswap data to power this project but there were many dependent APIs to determine historical percentage change for owned assets in one wallet over time to automatically make suggestions from the bot.
The next step was building the trading DApp. Uniswap's javacript SDK and Ethers.js made this fairly easy.
Using dynamodb we were able to tie together the voting results to the trade execution DApp where the fund manager would execute the trades to match chosen actions by the telegram app using a web3 browser.
Discussion