After recently announcing the release of Relate MVP, I thought I'd share more info about its design.
Relate is a content discovery and recommendation engine for social networks on the Hive blockchain. I am currently running it on http://relate.imwatsi.com
and the aim is to develop and avail API endpoints that frontends and anyone else on Hive can use to get relevancy-based content discovery, user profiling and stats.
I am working on hosted API documentation, but in the meantime you can try out two endpoints that are currently available as part of the MVP. Read more about these on this post: Relate MVP now released.
Inspiration
A few months back, as I was working on Hivemind X, there were a couple of suggestions made by community members for a way to keep track of comments on posts of interest. This led me to think about possible ways of implementing this and eventually to the broader idea of content discovery.
Design
Relate uses a PostgreSQL database to maintain a strict 7 day dataset, for its core features that deal with fluid data (user activity). Data from blocks added to the Hive blockchain within the last 7 days is parsed and then processed to create various data sets and old data is discarded, periodically. More persistent and long term data will also be incorporated into the design, but only where it's useful, to maintain data sets that reflect the state of current conversations across the blockchain.
Why 7 days?
I chose 7 days because most conversations die off within this period. An example I recently used was the Steem Hostile Takeover and the conversations around that. A lot of new perspectives were being shared all over a large number of posts and it became hard to keep up with new comments as people added their perspectives.
By the time the post came to payout, the activity had significantly reduced and attention was shifted to newer posts.
A 7 day data set avails insights into "current conversation" which can be useful when tracking a current topic (for example Steem Hostile Takeover) across all communities and posts.
Not all data will have to be 7 days old. As I develop the project more, shorter timeframes may be employed to shape data sets for specific use-cases. A combination of historical and persistent data will also be used, as explained more in the next section.
User profiling
I mentioned this feature in posts I wrote more than 2 years ago, in response to a "request for community feedback" by Steemit Inc. The ideas are generalized, but you can see where I'm going with it:
User Engagement and Content Discovery Features
User Profiling: Detailed Metrics (Steemit Feature Proposal)
In short, I'm designing a system that uses a combination of topics users talk about and the posts they vote for, as well as other future data sets, to create a profile that can be used when matching or scoring content.
Persistent preferences will be factored in when building a profile, allowing users more control if they so wish.
On voting, I'm investigating the usefulness of this vote-based approach, as opposed to a new "relate" custom op that people can use to "like" content and therefore train the recommendation engine.
Future plans
Hivemind plugin
Among the future plans I have for this project is a Hivemind plugin, that would allow a front-end to pass user_profile
data to Hivemind through an API endpoint and get posts/comments/communities as a response ready to display. This would be for a "Discover" feed.
There are a number of implementation methods available and I'm still investigating the various options.
Analytics
From the data sets created, I will also design endpoints to get analytics. These could include things like total number of users talking about a particular topic, most/least popular topics, etc.
In conclusion, these are very early days and I'm iterating the product every day and I'll be posting regular updates.
@tipu curate 2 :)
Hello buddy, where can I get in touch with you, I have been reading about your Hive projects, I would like to collaborate with you. My Discord account is Ignacio Figx#4221 and my twitter is https://twitter.com/NFigx
Hi, I can't find you on Discord. Would you send me a message there. My username is imwatsi#8991
Hey, yes, I sent you a friend request on Discord