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!
For more check out
OpenAI Update: Blokfeed meet OpenAI
Part 4: Email Alerts
Till next time - Happy coding!