Welcome back to the how I built Blokfeed series! Where I discuss design decisions for Blokfeed. In the part I run through how I went about building in daily briefs for Blokfeed.
Let's jump right into it!
Based on previous parts you can venture a guess as to what services I am going to use to handle compiling daily briefs... but before we get there, we should define what daily briefs are.
Daily Briefs provide daily market values (BTC / ETH for now), Fear & Greed index for the today and the previous two, along with trending topics and articles.
Cool, let's see how we want to get the data...
- Market values currently come from Nomics
- Fear & Greed comes from Alternative.me
- Trending articles internally
Here comes the fun!
Were you able to guess what I am going to use to compile daily briefs? That's right - AWS Lambdas. Same as with email alerts, I am going to build and schedule a Lambda to compile the briefs.
For the market data and the Fear & Greed index I fetch the data from their APIs and store it to be used in the compilation stage.
The fun begins with trending topics. Since I don't have a large volume of users (yet!) It's hard to determine trending topics based only on article clicks, so for now I am employing cosine similarity to determine similar articles. Based on the similarity I group them, and determine how many articles are associated with those a choose the top 5 trending topics.
Cosine similarity works by measuring the similarity between two vectors and we can construct these vectors between article titles. Wikipedia for more
I run the cosine similarity check in two stages, the first where I get the initial bucketing of articles, and the second where I break down similar terms. This helps whittle down to the best combinations and helps prevent duplicate topics (even though it does happen on occasion).
After I run the multi-step process for trending topics, I store the information to be pulled and compiled by the front-end.
But I'm missing something... Articles generally have an image associated with them. I don't really have images for daily briefs. 🤔 This is where I turn to Unsplash! I use a little more than 30 images which I randomly pull from as the main image for the daily brief. Awesome, now I have similarity between pages in regards to images.
After building the service to compile the information, I updated the front-end to load the daily briefs. Done right?! No! After I had this up and running, I thought to myself, this is a good opportunity to distribute the briefs. So I decided to then build a way to distribute the briefs on Twitter and Facebook.
So how did I do this?
I built Airtable automations to post to both Twitter and Facebook. After a daily brief is compiled, I post relevant data to Airtable which triggers automations to run, which post to the platforms. Super simple to set up and a win for low-code solutions.
There you have it the breakdown of Blokfeed's Daily Briefs. With that being said, I've run through all of the major functionality of Blokfeed. 🦾 A simple website to help me keep track of crypto news. Feel free to check it out!
Till next time - Happy coding!