I’ve wanted to build a content recommendation engine for a long time. Buffer is sitting on a mountain of data, which some argue is the most valuable commodity on Earth. We used to provide content suggestions to users through manual curation, but we ended up retiring that feature/service.
In this analysis we’ll build a simple recommendation engine with the recommenderlab
R package, using collaborative filtering techniques. To keep it simple, we’ll only look at updates shared by Buffer team members.
Collaborative filtering
The basic idea behind collaborative filtering is that, if two people share similar interests (e.g. they’ve shared the same links), they will also share similar interests in the future. For example, if Rupert and I have similar histories in terms of the links that we’ve shared, it would make sense to recommend links that Rupert has shared (that I haven’t).
In this type of recommendation, filtering items from a large set of alternatives is done collaboratively between users preferences. Such systems are called collaborative filtering recommender systems.
There are two sub-branches of collaborative filtering that are worth mentioning:
Item-based: This recommends to a user the items that are most similar to the user’s purchases.
User-based: This recommends to a user the items that are the most preferred by similar users.
In this analysis we’ll use user-based collaborative filtering. With this method, ratings (or recommendations) for a user can be predicted by first finding a neighborhood of similar users and then aggregate the ratings of these users to form a prediction.
The big disadvantage of this approach is scalability since the whole user database has to be processed. This is why we’re starting with a small dataset.
The neighborhood is defined in terms of similarity between users, either by taking a given number of most similar users (k nearest neighbors) or all users within a given similarity threshold. Popular similarity measures for CF are the Pearson correlation coefficient and the Cosine similarity.
We want to create recommendations for people based on the preferences of people with similar interests. To find the k-neighborhood (i.e., the k nearest neighbors) we calculate the similarity between the user and all other users based on their ratings (1 for a shared url, 0 otherwise) in the dataset and then select the k users with the highest similarity.
Data mining and EDA
It’s worth noting that I’m not doing any exploratory analysis in this analysis. It’s Friday and I’m getting a little lazy. :) However this should absolutely be done at some point to give us a better underlying understanding of the dataset.
Data collection
Let’s collect all of the links shared by Buffer team members. The dataset will only include two columns, name
and url
.
# Read csv of updates
updates <- read.csv("~/Downloads/buffer_updates.csv", header = TRUE)
Alright, we have over 98 thousand links from 72 team members.
Data tidying
We need to clean up the column names and set the correct object types.
# Rename the columns
colnames(updates) <- c('name', 'url')
# Set urls as character vector
updates$url <- as.character(updates$url)
Now we need to clean up the links. We’ll use the gsub()
function and some regex to remove all characters after ?
in the urls.
updates$clean_url <- gsub("\\?.*", "", updates$url)
Nice. There are still some unique urls that we’d like to remove. We can do that manually.
# Define the urls we want to exclude
problem_urls <- c("nytimes.com/glogin", "buffer.com", "buffer.com/respond", "nytimes.com",
"facebook.com/photo.php", "myaccount.nytimes.com/auth/login", "google.com",
"bufferapp.com", "news.ycombinator.com/item")
# Filter out these urls
updates <- updates %>%
filter(!(clean_url %in% problem_urls))
Alright, now we’re ready to build our recommender!
Recommender
The recommenderlab
package can be used for collaborative filtering. To get started, we need to change the structure of our dataset to a wide matrix, which columns representing urls and rows representing users.
Our data is binary (i.e. either 1 or 0). If a user shared the url, then it’s a 1, otherwise it’s 0. Recommender systems using association rules produce recommendations based on a dependency model for items given by a set of association rules.
The binary profile matrix R
is seen as a dataset where each user is treated as a transaction that contains the subset of items in I with a rating of 1 (when the user has shared the link). Hence transaction k is defined as Tk = {ij ∈ I|rjk = 1}
, which indicates whether a link is an element of I or the rating of that specific link is 1.
The whole transaction dataset D = {T1, T2, . . . , TU }
where U is the number of users. This is a wide matrix that we have to build, that includes a rating for each user and each link.
To build the dependency model, a set of association rules is mined from the matrix. Association rules are rules of the form X → Y
where X , Y ⊆ I
and X ∩ Y = ∅.
This means that the links X
and Y
are a subset of the entire list of links I
and the intersection of X
and Y
is 0 (the user hasn’t shared both).
To select a set of useful association rules, thresholds on measures of significance and interestingness are used. Two widely applied measures are:
support(X → Y) = support(X ∪ Y) = Freq(X ∪ Y)/|D| = P(EX ∩ EY )
confidence(X → Y) = support(X ∪ Y)/support(X ) = P(EY |EX )
Freq(I)
gives the number of transactions in the data base D
that contains all items in I
. EX
is the event that the item X is contained in a transaction. So support(X → Y)
is the probability that link X or link Y is shared, and confidence(X → Y)
is the probability that link Y is shared given that link X was shared.
To make a recommendation for an active user ua given the set of items I
the user likes and the set of association rules R
(dependency model), the following steps are necessary:
- Find all matching rules
X → Y
. - Recommend N unique right-hand-sides (Y) of the matching rules with the highest con-fidence (or another measure of interestingness).
Let’s build our binary profile matrix.
# Cast as a giant matrix
updates_cast <- acast(updates, name ~ clean_url)
umatrix <- as.matrix(updates_cast)
# Replace NA values with 0
umatrix[is.nan(umatrix)] <- 0
# Set as a binary rating matrix type
binary_matrix = as(umatrix, 'binaryRatingMatrix')
binary_matrix
## 72 x 78203 rating matrix of class 'binaryRatingMatrix' with 94900 ratings.
We now have a 72 by 78203 matrix that we can work with.
The package comes with a lot of nifty built-in algorithms that can be used for both rating (e.g. 1-5 starts) and binary (0 or 1) data sets. The supported algoritms are:
- User-based collborative filtering (UBCF)
- Item-based collborative filtering (IBCF)
- SVD with column-mean imputation (SVD)
- Funk SVD (SVDF)
- Association rule-based recommender (AR)
- Popular items (POPULAR)
- Randomly chosen items for comparison (RANDOM)
- Re-recommend liked items (RERECOMMEND)
- Hybrid recommendations (HybridRecommender)
We’ll use the UBCF
algorithm in this analysis, and we won’t use the best practices of splitting the data into training and testing sets. We’ll only use the eyeball test to evaluate the model’s performance.
To generate an aggregated estimated rating, we compute the average ratings in the neighborhood for each url not shared by the user. To create a top-N recommendation list, the urls are ordered by predicted rating. The fact that some users in the neighborhood are more similar to the active user than others can be incorporated as weights.
# Build user-based collaborative filtering recommender
recommender <- Recommender(binary_matrix, method = "UBCF")
# Make top 10 recommendation list for each user
predictions <- predict(recommender, binary_matrix, type = "topNList")
Great, now let’s convert the predictions to a list and view the results!
# Convert prediction into list, user-wise
pred_list <- as(predictions, "list")
pred_list
## $`Adam Farmer`
## [1] "open.buffer.com/product"
## [2] "blog.bufferapp.com/social-media-2016"
## [3] "blog.bufferapp.com/new-social-media-tools-2017"
## [4] "medium.com/m/global-identity"
## [5] "theguardian.com/sustainable-business/2016/jun/06/silicon-valley-diversity-problem-tech-industry-solutions"
## [6] "open.buffer.com/pablo-startup-within-a-startup"
## [7] "open.buffer.com/diversity-in-technology"
## [8] "medium.com/@rdutel/200-startups-hiring-remotely-in-2016-1d4299e5163f"
## [9] "open.buffer.com/buffer-beta-program"
## [10] "open.buffer.com/stop-energy"
##
## $`Adnan Issadeen`
## [1] "medium.com/@sunils34/forward-motion-stop-energy-at-startups-c01624b7989"
## [2] "medium.com/@rdutel/200-startups-hiring-remotely-in-2016-1d4299e5163f"
## [3] "medium.com/m/global-identity"
## [4] "open.buffer.com/transparent-product-roadmap"
## [5] "open.buffer.com/remote-working-rv-part-one"
## [6] "open.buffer.com/product"
## [7] "open.buffer.com/equal-pay"
## [8] "buffer.com/journey"
## [9] "open.buffer.com/stop-energy"
## [10] "buffer.com/respond/blog/social-media-customer-service"
##
## $`Alfred Lua`
## [1] "open.buffer.com/27-question-to-ask-instead-of-what-do-you-do"
## [2] "blog.bufferapp.com/free-image-sources-list"
## [3] "buffer.com/2016"
## [4] "blog.bufferapp.com/10-scientifically-proven-ways-to-make-yourself-happier"
## [5] "blog.bufferapp.com/how-to-create-manage-facebook-business-page"
## [6] "open.buffer.com/pablo-startup-within-a-startup"
## [7] "producthunt.com/tech/customer-support-academy"
## [8] "blog.bufferapp.com/best-time-to-tweet-research"
## [9] "blog.bufferapp.com/social-media-marketing-resources-kit"
## [10] "open.buffer.com/stop-energy"
##
## $Andrew
## [1] "blog.bufferapp.com/7-vital-statistics-to-help-with-your-linkedin-marketing-strategy"
## [2] "open.bufferapp.com/transparent-pricing-buffer"
## [3] "open.bufferapp.com/buffer-distributed-team-how-we-work"
## [4] "blog.bufferapp.com/10-scientifically-proven-ways-to-make-yourself-happier"
## [5] "open.bufferapp.com/raising-3-5m-funding-valuation-term-sheet"
## [6] "blog.bufferapp.com/a-complete-guide-to-creating-awesome-visual-content"
## [7] "blog.bufferapp.com/best-social-media-tools-for-small-business"
## [8] "blog.bufferapp.com/the-most-popular-words-in-most-viral-headlines"
## [9] "blog.bufferapp.com/how-to-measure-progress-in-your-personal-goals-daily-weekly-and-monthly"
## [10] "blog.bufferapp.com/the-science-of-colors-in-marketing-why-is-facebook-blue"
##
## $`Arielle Tannenbaum`
## [1] "open.buffer.com/transparent-product-roadmap"
## [2] "overflow.buffer.com/2016/02/22/timezones"
## [3] "open.buffer.com/product"
## [4] "open.buffer.com/holidays-international-startup"
## [5] "theguardian.com/sustainable-business/2016/jun/06/silicon-valley-diversity-problem-tech-industry-solutions"
## [6] "medium.com/@sunils34/forward-motion-stop-energy-at-startups-c01624b7989"
## [7] "open.buffer.com/pablo-startup-within-a-startup"
## [8] "soundcloud.com/bufferapp/radical-culture-episode-one"
## [9] "open.buffer.com/buffer-beta-program"
## [10] "medium.com/m/global-identity"
##
## $`Åsa Nyström`
## [1] "open.buffer.com/buffer-acquires-respondly"
## [2] "buffer.com/journey"
## [3] "blog.bufferapp.com/the-science-of-colors-in-marketing-why-is-facebook-blue"
## [4] "inc.com/jeff-haden/the-7-million-startup-with-zero-managers.html"
## [5] "blog.bufferapp.com/10-scientifically-proven-ways-to-make-yourself-happier"
## [6] "open.bufferapp.com/blending-work-and-life-what-remote-work-looks-like-for-families-and-partners"
## [7] "blog.bufferapp.com/how-to-measure-progress-in-your-personal-goals-daily-weekly-and-monthly"
## [8] "open.buffer.com/product"
## [9] "timezone.io/team/buffer"
## [10] "open.bufferapp.com/transparent-pricing-buffer"
##
## $`Ash Read`
## [1] "open.buffer.com/transparent-product-roadmap"
## [2] "blog.bufferapp.com/social-media-analytics-tools"
## [3] "open.buffer.com/keep-going"
## [4] "open.buffer.com/product"
## [5] "open.buffer.com/diversity-in-technology"
## [6] "open.buffer.com/27-question-to-ask-instead-of-what-do-you-do"
## [7] "open.buffer.com/stop-energy"
## [8] "blog.bufferapp.com/social-media-marketing-resources-kit"
## [9] "open.buffer.com/top-words-of-buffer"
## [10] "open.buffer.com/buffer-acquires-respondly"
##
## $`Bonnie Porter Huggins`
## [1] "open.buffer.com/stop-energy"
## [2] "open.buffer.com/feedback"
## [3] "medium.com/@rdutel/200-startups-hiring-remotely-in-2016-1d4299e5163f"
## [4] "open.buffer.com/holidays-international-startup"
## [5] "open.buffer.com/pricing-2016"
## [6] "open.buffer.com/work-less"
## [7] "blog.bufferapp.com/social-media-2016"
## [8] "open.buffer.com/buffer-beta-program"
## [9] "open.buffer.com/why-startups-are-so-hard-the-future-of-buffer-and-my-biggest-mistake-so-far-tweets-from-my-airplane-ama"
## [10] "blog.bufferapp.com/facebook-reactions"
##
## $`Boris Troja`
## [1] "theguardian.com/sustainable-business/2016/jun/06/silicon-valley-diversity-problem-tech-industry-solutions"
## [2] "open.buffer.com/buffer-beta-program"
## [3] "buffer.com/2016"
## [4] "open.buffer.com/27-question-to-ask-instead-of-what-do-you-do"
## [5] "open.buffer.com/top-words-of-buffer"
## [6] "open.buffer.com/equal-pay"
## [7] "about.gitlab.com/2017/03/14/buffer-and-gitlab-ceos-talk-transparency"
## [8] "open.buffer.com/transparent-salaries"
## [9] "inc.com/jeff-haden/the-7-million-startup-with-zero-managers.html"
## [10] "blog.bufferapp.com/facebook-reactions"
##
## $`Brian Peters`
## [1] "open.buffer.com/buffer-acquires-respondly"
## [2] "kickstarter.com/projects/kevanlee/gone-ahead"
## [3] "open.buffer.com/transparency-timeline"
## [4] "buffer.com/bufferchat"
## [5] "open.buffer.com/remote-working-rv-part-one"
## [6] "open.buffer.com/starting-buffer-diary"
## [7] "blog.bufferapp.com/social-media-calendar"
## [8] "open.buffer.com/growth"
## [9] "forbes.com/forbes/welcome"
## [10] "open.buffer.com/remote-work-retreat"
##
## $`Carolyn Kopprasch`
## [1] "open.bufferapp.com/buffer-distributed-team-how-we-work"
## [2] "blog.bufferapp.com/the-10-most-important-marketing-lessons-i-learned-working-at-facebook-mint-and-appsumo"
## [3] "blog.bufferapp.com/free-image-sources-list"
## [4] "open.bufferapp.com/raising-3-5m-funding-valuation-term-sheet"
## [5] "inc.com/jeff-haden/the-7-million-startup-with-zero-managers.html"
## [6] "open.bufferapp.com/transparent-pricing-buffer"
## [7] "blog.bufferapp.com/5-ways-to-get-more-done-by-working-smarter-not-harder"
## [8] "blog.bufferapp.com/best-social-media-tools-for-small-business"
## [9] "theguardian.com/sustainable-business/2016/jun/06/silicon-valley-diversity-problem-tech-industry-solutions"
## [10] "blog.bufferapp.com/how-to-save-time-on-social-media"
##
## $Caryn
## [1] "medium.com/m/global-identity"
## [2] "open.buffer.com/top-words-of-buffer"
## [3] "open.buffer.com/buffer-acquires-respondly"
## [4] "open.buffer.com/equal-pay"
## [5] "blog.bufferapp.com/social-media-2016"
## [6] "open.buffer.com/work-less"
## [7] "open.buffer.com/remote-work-retreats"
## [8] "open.buffer.com/wholeness"
## [9] "open.buffer.com/transparency-meets-inconsistency"
## [10] "open.buffer.com/27-question-to-ask-instead-of-what-do-you-do"
##
## $`Colin Ross`
## [1] "open.buffer.com/buffer-acquires-respondly"
## [2] "open.bufferapp.com/buffer-distributed-team-how-we-work"
## [3] "open.bufferapp.com/transparent-pricing-buffer"
## [4] "blog.bufferapp.com/the-habits-of-successful-people-they-do-the-painful-things-first"
## [5] "blog.bufferapp.com/5-more-ways-to-work-smarter-not-harder"
## [6] "inc.com/jeff-haden/the-7-million-startup-with-zero-managers.html"
## [7] "open.bufferapp.com/decision-maker-no-managers-experiment"
## [8] "producthunt.com/e/tools-for-remote-teams"
## [9] "blog.bufferapp.com/the-science-of-time-perception-how-to-make-your-days-longer"
## [10] "blog.bufferapp.com/which-words-matter-the-most-when-we-talk-the-psychology-of-language"
##
## $`Courtney Seiter`
## [1] "medium.com/@sunils34/forward-motion-stop-energy-at-startups-c01624b7989"
## [2] "blog.bufferapp.com/the-mistake-smart-people-make-being-in-motion-vs-taking-action"
## [3] "medium.com/@michael_erasmus/how-i-found-my-ideal-lifestyle-through-working-remotely-deb7ba8be5c9"
## [4] "medium.com/m/global-identity"
## [5] "99u.com/articles/24401/a-makers-guidebook-9-stoic-principles-to-nurture-your-life-and-work"
## [6] "sparringmind.com/benefits-of-writing"
## [7] "producthunt.com/tech/customer-support-academy"
## [8] "quicksprout.com/2014/04/14/how-these-15-types-of-content-will-drive-you-more-traffic"
## [9] "socialmediaexaminer.com/16-blogging-resources-improve-blog"
## [10] "open.bufferapp.com/customer-development-interviews-using-twitter"
##
## $Dan
## [1] "open.bufferapp.com/buffer-distributed-team-how-we-work"
## [2] "buffer.com/journey"
## [3] "inc.com/jeff-haden/the-7-million-startup-with-zero-managers.html"
## [4] "medium.com/@sunils34/forward-motion-stop-energy-at-startups-c01624b7989"
## [5] "blog.bufferapp.com/the-science-of-colors-in-marketing-why-is-facebook-blue"
## [6] "blog.bufferapp.com/free-image-sources-list"
## [7] "open.bufferapp.com/transparent-pricing-buffer"
## [8] "buffer.com/gifs-for-social-media"
## [9] "producthunt.com/tech/customer-support-academy"
## [10] "blog.bufferapp.com/a-complete-guide-to-creating-awesome-visual-content"
##
## $`Dan Farrelly`
## [1] "open.buffer.com/buffer-acquires-respondly"
## [2] "inc.com/jeff-haden/the-7-million-startup-with-zero-managers.html"
## [3] "buffer.com/journey"
## [4] "medium.com/@sunils34/forward-motion-stop-energy-at-startups-c01624b7989"
## [5] "open.bufferapp.com/decision-maker-no-managers-experiment"
## [6] "open.bufferapp.com/raising-3-5m-funding-valuation-term-sheet"
## [7] "open.bufferapp.com/blending-work-and-life-what-remote-work-looks-like-for-families-and-partners"
## [8] "blog.bufferapp.com/buffer-for-video"
## [9] "open.bufferapp.com/diversity-dashboard"
## [10] "blog.bufferapp.com/improve-your-marketing-unique-new-ideas"
##
## $`Daniel Siemaszkiewicz`
## [1] "open.buffer.com/keep-going"
## [2] "open.buffer.com/wholeness"
## [3] "open.buffer.com/product"
## [4] "overflow.buffer.com/2016/02/22/timezones"
## [5] "blog.bufferapp.com/snapchat"
## [6] "open.buffer.com/pricing-2016"
## [7] "open.buffer.com/holidays-international-startup"
## [8] "open.buffer.com/top-words-of-buffer"
## [9] "medium.com/m/global-identity"
## [10] "open.buffer.com/diversity-in-technology"
##
## $`Danny Mulcahy`
## [1] "medium.com/m/global-identity"
## [2] "overflow.buffer.com/2016/02/22/timezones"
## [3] "open.buffer.com/product"
## [4] "medium.com/@rdutel/200-startups-hiring-remotely-in-2016-1d4299e5163f"
## [5] "medium.com/@sunils34/forward-motion-stop-energy-at-startups-c01624b7989"
## [6] "open.buffer.com/transparent-product-roadmap"
## [7] "open.buffer.com/why-startups-are-so-hard-the-future-of-buffer-and-my-biggest-mistake-so-far-tweets-from-my-airplane-ama"
## [8] "buffer.com/2016"
## [9] "open.buffer.com/keep-going"
## [10] "producthunt.com/tech/customer-support-academy"
##
## $`Darcy Peters`
## [1] "blog.bufferapp.com/new-social-media-tools-2017"
## [2] "open.buffer.com/product"
## [3] "blog.bufferapp.com/social-media-2016"
## [4] "open.buffer.com/be-less-busy"
## [5] "medium.com/@sunils34/forward-motion-stop-energy-at-startups-c01624b7989"
## [6] "blog.bufferapp.com/idea-curation-get-more-ideas"
## [7] "overflow.buffer.com/2016/02/22/timezones"
## [8] "open.buffer.com/top-10-learnings-growing-to-10-million-arr"
## [9] "blog.bufferapp.com/10-social-media-goals"
## [10] "blog.bufferapp.com/snapchat"
##
## $`dave chapman`
## [1] "open.buffer.com/buffer-acquires-respondly"
## [2] "blog.bufferapp.com/marketing"
## [3] "blog.bufferapp.com/the-science-of-colors-in-marketing-why-is-facebook-blue"
## [4] "blog.bufferapp.com/a-complete-guide-to-creating-awesome-visual-content"
## [5] "blog.bufferapp.com/get-more-followers-twitter-facebook-research"
## [6] "blog.bufferapp.com/7-vital-statistics-to-help-with-your-linkedin-marketing-strategy"
## [7] "blog.bufferapp.com/the-10-most-important-marketing-lessons-i-learned-working-at-facebook-mint-and-appsumo"
## [8] "blog.bufferapp.com/how-to-save-time-on-social-media"
## [9] "medium.com/m/global-identity"
## [10] "blog.bufferapp.com/twitter-tips-for-beginners"
##
## $`Dave O'Callaghan`
## [1] "overflow.buffer.com/2016/02/22/timezones"
## [2] "open.buffer.com/buffer-acquires-respondly"
## [3] "medium.com/@sunils34/forward-motion-stop-energy-at-startups-c01624b7989"
## [4] "medium.com/@rdutel/200-startups-hiring-remotely-in-2016-1d4299e5163f"
## [5] "open.buffer.com/transparency-timeline"
## [6] "timezone.io/team/buffer"
## [7] "open.buffer.com/transparent-product-roadmap"
## [8] "open.buffer.com/growth"
## [9] "open.bufferapp.com/startup-mindset"
## [10] "open.buffer.com/holidays-international-startup"
##
## $`David Gasquez`
## [1] "medium.com/@sunils34/forward-motion-stop-energy-at-startups-c01624b7989"
## [2] "overflow.buffer.com/2016/02/22/timezones"
## [3] "overflow.buffer.com/2016/02/11/slack-meet-looker-an-experiment-in-bringing-data-to-the-team"
## [4] "open.buffer.com/equal-pay"
## [5] "medium.com/@rdutel/200-startups-hiring-remotely-in-2016-1d4299e5163f"
## [6] "open.buffer.com/buffer-acquires-respondly"
## [7] "theguardian.com/sustainable-business/2016/jun/06/silicon-valley-diversity-problem-tech-industry-solutions"
## [8] "expeditedssl.com/aws-in-plain-english"
## [9] "overflow.buffer.com/2016/03/28/building-slack-slash-commands-with-aws-lambda"
## [10] "medium.com/@michael_erasmus/how-i-found-my-ideal-lifestyle-through-working-remotely-deb7ba8be5c9"
##
## $`David Saunders`
## [1] "medium.com/m/global-identity"
## [2] "open.buffer.com/keep-going"
## [3] "open.buffer.com/pricing-2016"
## [4] "inc.com/jeff-haden/the-7-million-startup-with-zero-managers.html"
## [5] "open.buffer.com/buffer-acquires-respondly"
## [6] "open.buffer.com/stop-energy"
## [7] "medium.com/@sunils34/forward-motion-stop-energy-at-startups-c01624b7989"
## [8] "open.buffer.com/product"
## [9] "buffer.com/journey"
## [10] "open.buffer.com/why-startups-are-so-hard-the-future-of-buffer-and-my-biggest-mistake-so-far-tweets-from-my-airplane-ama"
##
## $`Déborah RIPPOL`
## [1] "open.buffer.com/transparent-product-roadmap"
## [2] "open.buffer.com/product"
## [3] "medium.com/@rdutel/200-startups-hiring-remotely-in-2016-1d4299e5163f"
## [4] "open.buffer.com/holidays-international-startup"
## [5] "open.buffer.com/stop-energy"
## [6] "open.buffer.com/buffer-acquires-respondly"
## [7] "overflow.buffer.com/2016/03/31/how-we-saved-132k-a-year-by-spring-cleaning-our-back-end"
## [8] "open.buffer.com/wholeness"
## [9] "open.buffer.com/buffer-beta-program"
## [10] "open.buffer.com/keep-going"
##
## $`Emily Mae`
## [1] "medium.com/@sunils34/forward-motion-stop-energy-at-startups-c01624b7989"
## [2] "medium.com/@rdutel/200-startups-hiring-remotely-in-2016-1d4299e5163f"
## [3] "open.buffer.com/wholeness"
## [4] "open.buffer.com/buffer-acquires-respondly"
## [5] "overflow.buffer.com/2016/02/22/timezones"
## [6] "open.buffer.com/stop-energy"
## [7] "open.buffer.com/transparent-product-roadmap"
## [8] "bradfrost.com/blog/post/atomic-web-design"
## [9] "blog.bufferapp.com/optimal-work-time-how-long-should-we-work-every-day-the-science-of-mental-strength"
## [10] "medium.com/m/global-identity"
##
## $`Eric Khun`
## [1] "open.buffer.com/buffer-acquires-respondly"
## [2] "medium.com/@rdutel/200-startups-hiring-remotely-in-2016-1d4299e5163f"
## [3] "medium.com/m/global-identity"
## [4] "open.buffer.com/transparent-product-roadmap"
## [5] "open.buffer.com/27-question-to-ask-instead-of-what-do-you-do"
## [6] "blog.bufferapp.com/hello-respond"
## [7] "open.buffer.com/growth"
## [8] "buffer.com/2016"
## [9] "open.buffer.com/work-less"
## [10] "open.buffer.com/top-books-2015"
##
## $`Federico Weber`
## [1] "medium.com/m/global-identity"
## [2] "overflow.buffer.com/2016/03/31/how-we-saved-132k-a-year-by-spring-cleaning-our-back-end"
## [3] "open.buffer.com/buffer-acquires-respondly"
## [4] "theguardian.com/sustainable-business/2016/jun/06/silicon-valley-diversity-problem-tech-industry-solutions"
## [5] "open.buffer.com/feedback"
## [6] "open.buffer.com/stop-energy"
## [7] "producthunt.com/tech/customer-support-academy"
## [8] "open.buffer.com/buffer-beta-program"
## [9] "open.buffer.com/product"
## [10] "open.bufferapp.com/startup-mindset"
##
## $`Hailley Mari`
## [1] "open.buffer.com/product"
## [2] "open.buffer.com/keep-going"
## [3] "open.buffer.com/pablo-startup-within-a-startup"
## [4] "blog.bufferapp.com/marketing"
## [5] "blog.bufferapp.com/a-complete-guide-to-creating-awesome-visual-content"
## [6] "open.buffer.com/5-ways-to-break-your-filter-bubble-and-gain-new-perspectives"
## [7] "open.buffer.com/buffer-acquires-respondly"
## [8] "blog.bufferapp.com/free-twitter-tools"
## [9] "open.buffer.com/27-question-to-ask-instead-of-what-do-you-do"
## [10] "blog.bufferapp.com/free-image-sources-list"
##
## $`Hamish Macpherson`
## [1] "medium.com/@sunils34/forward-motion-stop-energy-at-startups-c01624b7989"
## [2] "overflow.buffer.com/2016/02/22/timezones"
## [3] "open.buffer.com/buffer-acquires-respondly"
## [4] "open.buffer.com/feedback"
## [5] "open.buffer.com/transparent-product-roadmap"
## [6] "medium.com/m/global-identity"
## [7] "buffer.com/respond/blog/why-everyone-at-respond-does-customer-support"
## [8] "open.buffer.com/equal-pay"
## [9] "open.buffer.com/stop-energy"
## [10] "theguardian.com/sustainable-business/2016/jun/06/silicon-valley-diversity-problem-tech-industry-solutions"
##
## $`Hannah Voice`
## [1] "medium.com/@rdutel/200-startups-hiring-remotely-in-2016-1d4299e5163f"
## [2] "medium.com/m/global-identity"
## [3] "open.buffer.com/feedback"
## [4] "theguardian.com/sustainable-business/2016/jun/06/silicon-valley-diversity-problem-tech-industry-solutions"
## [5] "open.buffer.com/equal-pay"
## [6] "open.buffer.com/no-office"
## [7] "medium.com/@sunils34/forward-motion-stop-energy-at-startups-c01624b7989"
## [8] "buffer.com/2016"
## [9] "blog.bufferapp.com/social-media-marketing-resources-kit"
## [10] "soundcloud.com/bufferapp/radical-culture-episode-one"
##
## $`Harrison Harnisch`
## [1] "blog.bufferapp.com/how-to-repost-on-instagram"
## [2] "open.buffer.com/keep-going"
## [3] "medium.com/@sunils34/forward-motion-stop-energy-at-startups-c01624b7989"
## [4] "open.buffer.com/buffer-values"
## [5] "t.co"
## [6] "overflow.buffer.com/2016/02/22/timezones"
## [7] "medium.com/@rdutel/200-startups-hiring-remotely-in-2016-1d4299e5163f"
## [8] "design.blog/2017/03/23/catt-small-on-designing-an-inclusive-workplace-culture"
## [9] "devex.com/news/no-cuts-to-uk-aid-in-2015-2016-81322"
## [10] "donutjs.club/speak"
##
## $`Humber Aquino`
## [1] "open.buffer.com/product"
## [2] "open.buffer.com/holidays-international-startup"
## [3] "open.buffer.com/equal-pay"
## [4] "open.buffer.com/buffer-beta-program"
## [5] "overflow.buffer.com/2016/03/31/how-we-saved-132k-a-year-by-spring-cleaning-our-back-end"
## [6] "open.buffer.com/stop-energy"
## [7] "open.buffer.com/keep-going"
## [8] "buffer.com/journey"
## [9] "timezone.io/team/buffer"
## [10] "open.buffer.com/transparency-timeline"
##
## $`Ivana Zuber`
## [1] "open.bufferapp.com/buffer-distributed-team-how-we-work"
## [2] "open.bufferapp.com/transparent-pricing-buffer"
## [3] "producthunt.com/e/tools-for-remote-teams"
## [4] "open.bufferapp.com/decision-maker-no-managers-experiment"
## [5] "open.bufferapp.com/raising-3-5m-funding-valuation-term-sheet"
## [6] "open.bufferapp.com/send-better-email"
## [7] "open.bufferapp.com/side-projects-creative-hobbies"
## [8] "blog.bufferapp.com/social-media-goals"
## [9] "blog.bufferapp.com/social-media-marketing-resources-kit"
## [10] "medium.com/@michael_erasmus/how-i-found-my-ideal-lifestyle-through-working-remotely-deb7ba8be5c9"
##
## $`James Morris`
## [1] "medium.com/@sunils34/forward-motion-stop-energy-at-startups-c01624b7989"
## [2] "medium.com/@rdutel/200-startups-hiring-remotely-in-2016-1d4299e5163f"
## [3] "medium.com/m/global-identity"
## [4] "open.buffer.com/buffer-acquires-respondly"
## [5] "open.buffer.com/buffer-beta-program"
## [6] "open.buffer.com/remote-working-rv-part-one"
## [7] "open.buffer.com/holidays-international-startup"
## [8] "open.buffer.com/product"
## [9] "open.buffer.com/stop-energy"
## [10] "overflow.buffer.com/2016/03/31/how-we-saved-132k-a-year-by-spring-cleaning-our-back-end"
##
## $`Jenny Terry`
## [1] "youtube.com/watch"
## [2] "open.buffer.com/stop-energy"
## [3] "open.buffer.com/transparent-product-roadmap"
## [4] "blog.bufferapp.com/social-media-2016"
## [5] "open.buffer.com/equal-pay"
## [6] "open.buffer.com/keep-going"
## [7] "overflow.buffer.com/2016/02/22/timezones"
## [8] "open.buffer.com/feedback"
## [9] "theguardian.com/sustainable-business/2016/jun/06/silicon-valley-diversity-problem-tech-industry-solutions"
## [10] "medium.com/@sunils34/forward-motion-stop-energy-at-startups-c01624b7989"
##
## $`Jess Williams`
## [1] "medium.com/@sunils34/forward-motion-stop-energy-at-startups-c01624b7989"
## [2] "open.buffer.com/buffer-acquires-respondly"
## [3] "medium.com/@rdutel/200-startups-hiring-remotely-in-2016-1d4299e5163f"
## [4] "overflow.buffer.com/2016/02/22/timezones"
## [5] "open.buffer.com/what-family-leave-really-looks-like-at-a-tech-startup"
## [6] "open.buffer.com/wholeness"
## [7] "open.buffer.com/keep-going"
## [8] "medium.com/m/global-identity"
## [9] "open.buffer.com/equal-pay"
## [10] "open.buffer.com/transparent-product-roadmap"
##
## $`Joe Birch`
## [1] "youtube.com/watch"
## [2] "medium.com/m/global-identity"
## [3] "overflow.buffer.com/2016/02/22/timezones"
## [4] "opensource.com/open-organization/16/5/buffer-open-culture"
## [5] "medium.com/@rdutel/200-startups-hiring-remotely-in-2016-1d4299e5163f"
## [6] "medium.com/@sunils34/forward-motion-stop-energy-at-startups-c01624b7989"
## [7] "open.buffer.com/transparent-product-roadmap"
## [8] "open.buffer.com/buffer-acquires-respondly"
## [9] "overflow.buffer.com/2016/03/31/how-we-saved-132k-a-year-by-spring-cleaning-our-back-end"
## [10] "open.buffer.com/holidays-international-startup"
##
## $`Joel Gascoigne`
## [1] "blog.bufferapp.com/the-10-most-important-marketing-lessons-i-learned-working-at-facebook-mint-and-appsumo"
## [2] "inc.com/jeff-haden/the-7-million-startup-with-zero-managers.html"
## [3] "open.bufferapp.com/customer-service-emails-words"
## [4] "blog.bufferapp.com/7-vital-statistics-to-help-with-your-linkedin-marketing-strategy"
## [5] "open.bufferapp.com/diversity-dashboard"
## [6] "medium.com/@sunils34/forward-motion-stop-energy-at-startups-c01624b7989"
## [7] "blog.bufferapp.com/how-to-create-manage-facebook-business-page"
## [8] "blog.bufferapp.com/how-to-measure-progress-in-your-personal-goals-daily-weekly-and-monthly"
## [9] "blog.bufferapp.com/the-science-of-colors-in-marketing-why-is-facebook-blue"
## [10] "buffer.com/journey"
##
## $`Jordan Morgan`
## [1] "overflow.buffer.com/2016/02/22/timezones"
## [2] "open.buffer.com/buffer-acquires-respondly"
## [3] "open.buffer.com/transparent-product-roadmap"
## [4] "open.buffer.com/holidays-international-startup"
## [5] "buffer.com/respond/blog/social-media-customer-service"
## [6] "open.buffer.com/feedback"
## [7] "open.buffer.com/product"
## [8] "open.buffer.com/top-words-of-buffer"
## [9] "open.buffer.com/partner-buffer-retreat"
## [10] "open.buffer.com/transparent-salaries"
##
## $`José Manuel`
## [1] "inc.com/jeff-haden/the-7-million-startup-with-zero-managers.html"
## [2] "open.buffer.com/buffer-acquires-respondly"
## [3] "overflow.buffer.com/2016/02/22/timezones"
## [4] "blog.bufferapp.com/the-10-most-important-marketing-lessons-i-learned-working-at-facebook-mint-and-appsumo"
## [5] "buffer.com/journey"
## [6] "blog.bufferapp.com/a-complete-guide-to-creating-awesome-visual-content"
## [7] "open.bufferapp.com/startup-mindset"
## [8] "blog.remotive.io/buffer-retreat-in-iceland-from-inside"
## [9] "open.bufferapp.com/buffer-distributed-team-how-we-work"
## [10] "medium.com/m/global-identity"
##
## $`Julia Breathes`
## [1] "open.buffer.com/transparent-product-roadmap"
## [2] "blog.bufferapp.com/social-media-analytics-tools"
## [3] "open.buffer.com/pricing-2016"
## [4] "thought-leadership.top-consultant.com/uk/FullArticle.aspx"
## [5] "open.buffer.com/product"
## [6] "blog.bufferapp.com/social-media-design-tips"
## [7] "open.buffer.com/why-startups-are-so-hard-the-future-of-buffer-and-my-biggest-mistake-so-far-tweets-from-my-airplane-ama"
## [8] "buffer.com/2016"
## [9] "open.buffer.com/productivity-tips-digital-nomads"
## [10] "blog.bufferapp.com/facebook-reactions"
##
## $`Julian Winternheimer`
## [1] "open.buffer.com/transparent-product-roadmap"
## [2] "open.buffer.com/holidays-international-startup"
## [3] "open.buffer.com/pricing-2016"
## [4] "open.buffer.com/feedback"
## [5] "open.buffer.com/stop-energy"
## [6] "open.bufferapp.com/blending-work-and-life-what-remote-work-looks-like-for-families-and-partners"
## [7] "open.buffer.com/wholeness"
## [8] "medium.com/@michael_erasmus/how-i-found-my-ideal-lifestyle-through-working-remotely-deb7ba8be5c9"
## [9] "open.buffer.com/keep-going"
## [10] "open.buffer.com/top-words-of-buffer"
##
## $`Juliet Chen`
## [1] "open.buffer.com/product"
## [2] "open.buffer.com/keep-going"
## [3] "open.buffer.com/transparent-product-roadmap"
## [4] "buffer.com/2016"
## [5] "open.buffer.com/pricing-2016"
## [6] "blog.bufferapp.com/new-social-media-tools-2017"
## [7] "blog.bufferapp.com/idea-curation-get-more-ideas"
## [8] "blog.bufferapp.com/7-vital-statistics-to-help-with-your-linkedin-marketing-strategy"
## [9] "blog.bufferapp.com/how-to-create-powerful-twitter-bio"
## [10] "open.buffer.com/no-office"
##
## $`Karinna Briseno`
## [1] "open.buffer.com/transparent-product-roadmap"
## [2] "medium.com/@sunils34/forward-motion-stop-energy-at-startups-c01624b7989"
## [3] "open.buffer.com/stop-energy"
## [4] "overflow.buffer.com/2016/02/22/timezones"
## [5] "open.buffer.com/top-10-learnings-growing-to-10-million-arr"
## [6] "open.buffer.com/transparency-meets-inconsistency"
## [7] "open.buffer.com/remote-working-rv-part-one"
## [8] "open.buffer.com/productivity-tips-digital-nomads"
## [9] "open.buffer.com/pricing-2016"
## [10] "open.buffer.com/pablo-startup-within-a-startup"
##
## $Katie
## [1] "open.buffer.com/transparent-product-roadmap"
## [2] "medium.com/@sunils34/forward-motion-stop-energy-at-startups-c01624b7989"
## [3] "open.buffer.com/product"
## [4] "medium.com/m/global-identity"
## [5] "open.buffer.com/holidays-international-startup"
## [6] "open.buffer.com/feedback"
## [7] "open.buffer.com/buffer-acquires-respondly"
## [8] "open.buffer.com/stop-energy"
## [9] "buffer.com/journey"
## [10] "open.buffer.com/equal-pay"
##
## $`Kelly Vass`
## [1] "open.buffer.com/transparent-product-roadmap"
## [2] "open.buffer.com/product"
## [3] "open.buffer.com/buffer-acquires-respondly"
## [4] "overflow.buffer.com/2016/02/22/timezones"
## [5] "open.buffer.com/holidays-international-startup"
## [6] "open.buffer.com/stop-energy"
## [7] "open.buffer.com/27-question-to-ask-instead-of-what-do-you-do"
## [8] "medium.com/@sunils34/forward-motion-stop-energy-at-startups-c01624b7989"
## [9] "open.buffer.com/what-family-leave-really-looks-like-at-a-tech-startup"
## [10] "theguardian.com/sustainable-business/2016/jun/06/silicon-valley-diversity-problem-tech-industry-solutions"
##
## $`Kevan Lee`
## [1] "producthunt.com/e/tools-for-remote-teams"
## [2] "open.buffer.com/no-office"
## [3] "open.bufferapp.com/distributed-team-benefits"
## [4] "theguardian.com/sustainable-business/2016/jun/06/silicon-valley-diversity-problem-tech-industry-solutions"
## [5] "open.buffer.com/transparent-product-roadmap"
## [6] "open.buffer.com/product"
## [7] "blog.bufferapp.com/social-media-calendar"
## [8] "open.buffer.com/diversity-in-technology"
## [9] "open.buffer.com/remote-work-gear"
## [10] "open.buffer.com/stop-energy"
##
## $`Marcus Wermuth`
## [1] "medium.com/@sunils34/forward-motion-stop-energy-at-startups-c01624b7989"
## [2] "open.buffer.com/product"
## [3] "open.buffer.com/wholeness"
## [4] "open.buffer.com/remote-working-rv-part-one"
## [5] "open.buffer.com/equal-pay"
## [6] "open.buffer.com/buffer-beta-program"
## [7] "buffer.com/respond/blog/social-media-customer-service"
## [8] "open.buffer.com/team-bonding-retreat"
## [9] "theguardian.com/sustainable-business/2016/jun/06/silicon-valley-diversity-problem-tech-industry-solutions"
## [10] "buffer.com/journey"
##
## $`Matt Allen`
## [1] "overflow.buffer.com/2016/02/22/timezones"
## [2] "medium.com/@rdutel/200-startups-hiring-remotely-in-2016-1d4299e5163f"
## [3] "open.buffer.com/transparent-product-roadmap"
## [4] "medium.com/m/global-identity"
## [5] "open.buffer.com/stop-energy"
## [6] "open.buffer.com/feedback"
## [7] "open.buffer.com/buffer-beta-program"
## [8] "open.buffer.com/equal-pay"
## [9] "overflow.buffer.com/2016/03/31/how-we-saved-132k-a-year-by-spring-cleaning-our-back-end"
## [10] "open.buffer.com/growth"
##
## $`maxime berthelot`
## [1] "inc.com/jeff-haden/the-7-million-startup-with-zero-managers.html"
## [2] "blog.bufferapp.com/improve-your-marketing-unique-new-ideas"
## [3] "blog.bufferapp.com/get-more-followers-twitter-facebook-research"
## [4] "blog.bufferapp.com/the-10-most-important-marketing-lessons-i-learned-working-at-facebook-mint-and-appsumo"
## [5] "open.buffer.com/product"
## [6] "blog.bufferapp.com/a-complete-guide-to-creating-awesome-visual-content"
## [7] "blog.bufferapp.com/how-to-create-powerful-twitter-bio"
## [8] "blog.bufferapp.com/instagram-for-business"
## [9] "open.bufferapp.com/transparent-pricing-buffer"
## [10] "buffer.com/journey"
##
## $`Melissa Alvarez`
## [1] "youtube.com/watch"
## [2] "overflow.buffer.com/2016/03/31/how-we-saved-132k-a-year-by-spring-cleaning-our-back-end"
## [3] "alexkras.com/19-git-tips-for-everyday-use"
## [4] "expeditedssl.com/aws-in-plain-english"
## [5] "jdlm.info/articles/2016/07/04/cto-time-minute-by-minute.html"
## [6] "kite.com"
## [7] "tranquilmonkey.com/hunter-s-thompsons-extraordinary-letter-on-finding-your-purpose"
## [8] "github.com/alex/what-happens-when"
## [9] "medium.com/@stewart/we-dont-sell-saddles-here-4c59524d650d"
## [10] "overflow.buffer.com/2016/02/08/retreat-app"
##
## $`Michael Eckstein`
## [1] "overflow.buffer.com/2016/02/22/timezones"
## [2] "open.buffer.com/holidays-international-startup"
## [3] "open.buffer.com/pricing-2016"
## [4] "blog.bufferapp.com/social-media-marketing-resources-kit"
## [5] "blog.bufferapp.com/facebook-reactions"
## [6] "open.buffer.com/why-startups-are-so-hard-the-future-of-buffer-and-my-biggest-mistake-so-far-tweets-from-my-airplane-ama"
## [7] "open.buffer.com/partner-buffer-retreat"
## [8] "blog.bufferapp.com/social-media-analytics-tools"
## [9] "open.buffer.com/remote-work-retreats"
## [10] "buffer.com/journey"
##
## $`Michael Erasmus`
## [1] "blog.bufferapp.com/free-image-sources-list"
## [2] "blog.bufferapp.com/the-10-most-important-marketing-lessons-i-learned-working-at-facebook-mint-and-appsumo"
## [3] "open.bufferapp.com/customer-service-emails-words"
## [4] "open.bufferapp.com/mainstream-news"
## [5] "blog.bufferapp.com/gifs"
## [6] "blog.bufferapp.com/how-to-save-time-on-social-media"
## [7] "blog.bufferapp.com/a-complete-guide-to-creating-awesome-visual-content"
## [8] "buffer.com/gifs-for-social-media"
## [9] "blog.bufferapp.com/facebook-tools"
## [10] "blog.bufferapp.com/marketing"
##
## $`Mick Mahady`
## [1] "open.buffer.com/transparent-product-roadmap"
## [2] "medium.com/m/global-identity"
## [3] "blog.bufferapp.com/social-media-analytics-tools"
## [4] "open.buffer.com/keep-going"
## [5] "blog.bufferapp.com/social-media-2016"
## [6] "blog.bufferapp.com/snapchat"
## [7] "blog.bufferapp.com/animated-gifs"
## [8] "medium.com/@rdutel/200-startups-hiring-remotely-in-2016-1d4299e5163f"
## [9] "open.buffer.com/pablo-startup-within-a-startup"
## [10] "open.buffer.com/diversity-in-technology"
##
## $`Miguel San Román`
## [1] "blog.bufferapp.com/the-science-of-colors-in-marketing-why-is-facebook-blue"
## [2] "blog.bufferapp.com/get-more-followers-twitter-facebook-research"
## [3] "open.buffer.com/transparent-product-roadmap"
## [4] "open.buffer.com/buffer-acquires-respondly"
## [5] "open.buffer.com/remote-work-gear"
## [6] "inc.com/jeff-haden/the-7-million-startup-with-zero-managers.html"
## [7] "open.buffer.com/sorry"
## [8] "blog.bufferapp.com/optimal-work-time-how-long-should-we-work-every-day-the-science-of-mental-strength"
## [9] "blog.bufferapp.com/social-media-analytics-tools"
## [10] "about.gitlab.com/2017/03/14/buffer-and-gitlab-ceos-talk-transparency"
##
## $`Nicole M Miller`
## [1] "open.buffer.com/buffer-acquires-respondly"
## [2] "blog.bufferapp.com/the-science-of-smiling-a-guide-to-humans-most-powerful-gesture"
## [3] "blog.bufferapp.com/twitter-tips-for-beginners"
## [4] "open.bufferapp.com/customer-service-emails-words"
## [5] "blog.bufferapp.com/social-media-analytics-tools"
## [6] "blog.bufferapp.com/which-words-matter-the-most-when-we-talk-the-psychology-of-language"
## [7] "blog.bufferapp.com/the-mistake-smart-people-make-being-in-motion-vs-taking-action"
## [8] "blog.bufferapp.com/optimal-work-time-how-long-should-we-work-every-day-the-science-of-mental-strength"
## [9] "blog.bufferapp.com/instagram-for-business"
## [10] "julheimer.com/blog/2015/4/23/what-i-learned-doing-customer-support-exclusively-for-a-week"
##
## $`Octavio Aburto`
## [1] "blog.bufferapp.com/the-habits-of-successful-people-they-do-the-painful-things-first"
## [2] "inc.com/jeff-haden/the-7-million-startup-with-zero-managers.html"
## [3] "blog.bufferapp.com/a-scientific-guide-to-hashtags-which-ones-work-when-and-how-many"
## [4] "open.bufferapp.com/raising-3-5m-funding-valuation-term-sheet"
## [5] "blog.bufferapp.com/free-twitter-tools"
## [6] "blog.bufferapp.com/improve-your-marketing-unique-new-ideas"
## [7] "open.bufferapp.com/decision-maker-no-managers-experiment"
## [8] "blog.bufferapp.com/3-remarkable-lessons-on-mental-strength-from-the-marathon-monks"
## [9] "buffer.com/journey"
## [10] "medium.com/@sunils34/forward-motion-stop-energy-at-startups-c01624b7989"
##
## $`Paul Thomson`
## [1] "open.buffer.com/keep-going"
## [2] "open.buffer.com/transparent-product-roadmap"
## [3] "blog.bufferapp.com/social-media-analytics-tools"
## [4] "open.buffer.com/sorry"
## [5] "blog.bufferapp.com/facebook-reactions"
## [6] "blog.bufferapp.com/social-media-slideshares-2016"
## [7] "blog.bufferapp.com/snapchat"
## [8] "blog.bufferapp.com/facebook-tips"
## [9] "open.buffer.com/top-words-of-buffer"
## [10] "blog.bufferapp.com/social-media-studies-2016"
##
## $Philippe
## [1] "medium.com/@michael_erasmus/how-i-found-my-ideal-lifestyle-through-working-remotely-deb7ba8be5c9"
## [2] "open.buffer.com/buffer-acquires-respondly"
## [3] "medium.com/@sunils34/forward-motion-stop-energy-at-startups-c01624b7989"
## [4] "overflow.buffer.com/2016/02/22/timezones"
## [5] "timezone.io/team/buffer"
## [6] "medium.com/@rdutel/200-startups-hiring-remotely-in-2016-1d4299e5163f"
## [7] "open.buffer.com/stop-energy"
## [8] "open.buffer.com/product"
## [9] "jobs.bufferapp.com/growth-hacker"
## [10] "open.bufferapp.com/job-descriptions-diversity"
##
## $`Philippe Miguet`
## [1] "open.buffer.com/product"
## [2] "inc.com/jeff-haden/the-7-million-startup-with-zero-managers.html"
## [3] "open.buffer.com/product-team-evolution"
## [4] "medium.com/@sunils34/forward-motion-stop-energy-at-startups-c01624b7989"
## [5] "open.buffer.com/stop-energy"
## [6] "blog.bufferapp.com/best-time-to-tweet-research"
## [7] "buffer.com/journey"
## [8] "open.buffer.com/no-office"
## [9] "overflow.buffer.com/2016/02/22/timezones"
## [10] "medium.com/@michael_erasmus/how-i-found-my-ideal-lifestyle-through-working-remotely-deb7ba8be5c9"
##
## $`Ross Parmly`
## [1] "inc.com/jeff-haden/the-7-million-startup-with-zero-managers.html"
## [2] "open.buffer.com/buffer-acquires-respondly"
## [3] "buffer.com/gifs-for-social-media"
## [4] "open.buffer.com/product"
## [5] "blog.bufferapp.com/improve-your-marketing-unique-new-ideas"
## [6] "open.buffer.com/stop-energy"
## [7] "buffer.com/journey"
## [8] "overflow.buffer.com/2016/02/22/timezones"
## [9] "open.buffer.com/transparency-timeline"
## [10] "medium.com/@sunils34/forward-motion-stop-energy-at-startups-c01624b7989"
##
## $`Roy Opata Olende`
## [1] "open.buffer.com/product"
## [2] "open.buffer.com/keep-going"
## [3] "open.buffer.com/transparent-product-roadmap"
## [4] "open.buffer.com/wholeness"
## [5] "open.buffer.com/stop-energy"
## [6] "open.buffer.com/buffer-acquires-respondly"
## [7] "medium.com/@sunils34/forward-motion-stop-energy-at-startups-c01624b7989"
## [8] "buffer.com/journey"
## [9] "overflow.buffer.com/2016/02/22/timezones"
## [10] "open.buffer.com/top-words-of-buffer"
##
## $`Spencer Lanoue`
## [1] "youtube.com/watch"
## [2] "medium.com/m/global-identity"
## [3] "medium.com/@sunils34/forward-motion-stop-energy-at-startups-c01624b7989"
## [4] "medium.com/@rdutel/200-startups-hiring-remotely-in-2016-1d4299e5163f"
## [5] "open.buffer.com/buffer-acquires-respondly"
## [6] "open.buffer.com/wholeness"
## [7] "open.buffer.com/transparent-product-roadmap"
## [8] "overflow.buffer.com/2016/02/22/timezones"
## [9] "twitter.com/getrespond/status/775966987633778688/photo/1"
## [10] "open.buffer.com/feedback"
##
## $`Stephanie Lee`
## [1] "overflow.buffer.com/2016/02/22/timezones"
## [2] "open.buffer.com/transparent-product-roadmap"
## [3] "open.buffer.com/buffer-acquires-respondly"
## [4] "open.buffer.com/product"
## [5] "medium.com/m/global-identity"
## [6] "buffer.com/journey"
## [7] "open.buffer.com/holidays-international-startup"
## [8] "open.buffer.com/wholeness"
## [9] "open.buffer.com/feedback"
## [10] "open.buffer.com/equal-pay"
##
## $`Steve Dixon`
## [1] "medium.com/@rdutel/200-startups-hiring-remotely-in-2016-1d4299e5163f"
## [2] "open.buffer.com/product"
## [3] "medium.com/m/global-identity"
## [4] "open.buffer.com/feedback"
## [5] "theguardian.com/sustainable-business/2016/jun/06/silicon-valley-diversity-problem-tech-industry-solutions"
## [6] "open.buffer.com/wholeness"
## [7] "open.buffer.com/remote-working-rv-part-one"
## [8] "open.buffer.com/remote-work-retreats"
## [9] "producthunt.com/tech/customer-support-academy"
## [10] "open.buffer.com/stop-energy"
##
## $`Steven Cheng`
## [1] "buffer.com/journey"
## [2] "open.buffer.com/buffer-acquires-respondly"
## [3] "overflow.buffer.com/2016/02/22/timezones"
## [4] "blog.bufferapp.com/optimal-work-time-how-long-should-we-work-every-day-the-science-of-mental-strength"
## [5] "open.buffer.com/product"
## [6] "open.buffer.com/holidays-international-startup"
## [7] "timezone.io/team/buffer"
## [8] "open.buffer.com/wholeness"
## [9] "medium.com/m/global-identity"
## [10] "open.buffer.com/transparent-product-roadmap"
##
## $`Suprasanna Mishra`
## [1] "open.buffer.com/buffer-acquires-respondly"
## [2] "open.buffer.com/stop-energy"
## [3] "opensource.com/open-organization/16/5/buffer-open-culture"
## [4] "open.buffer.com/product"
## [5] "open.buffer.com/holidays-international-startup"
## [6] "open.buffer.com/feedback"
## [7] "overflow.buffer.com/2016/03/31/how-we-saved-132k-a-year-by-spring-cleaning-our-back-end"
## [8] "open.buffer.com/growth"
## [9] "theguardian.com/sustainable-business/2016/jun/06/silicon-valley-diversity-problem-tech-industry-solutions"
## [10] "open.buffer.com/wholeness"
##
## $`Thomas Alexander Dunn`
## [1] "blog.bufferapp.com/how-to-create-manage-facebook-business-page"
## [2] "buffer.com/journey"
## [3] "open.buffer.com/buffer-acquires-respondly"
## [4] "open.bufferapp.com/buffer-distributed-team-how-we-work"
## [5] "blog.bufferapp.com/social-media-strategy"
## [6] "overflow.buffer.com/2016/02/22/timezones"
## [7] "blog.bufferapp.com/how-to-save-time-on-social-media"
## [8] "medium.com/m/global-identity"
## [9] "buffer.com/gifs-for-social-media"
## [10] "blog.bufferapp.com/idea-curation-get-more-ideas"
##
## $`Tigran Hakobyan`
## [1] "overflow.buffer.com/2016/02/22/timezones"
## [2] "medium.com/@rdutel/200-startups-hiring-remotely-in-2016-1d4299e5163f"
## [3] "medium.com/m/global-identity"
## [4] "medium.com/@sunils34/forward-motion-stop-energy-at-startups-c01624b7989"
## [5] "buffer.com/journey"
## [6] "producthunt.com/tech/customer-support-academy"
## [7] "open.buffer.com/buffer-acquires-respondly"
## [8] "open.buffer.com/transparent-product-roadmap"
## [9] "opensource.com/open-organization/16/5/buffer-open-culture"
## [10] "open.buffer.com/wholeness"
##
## $`todd balsley`
## [1] "open.buffer.com/buffer-acquires-respondly"
## [2] "medium.com/@rdutel/200-startups-hiring-remotely-in-2016-1d4299e5163f"
## [3] "open.buffer.com/transparent-product-roadmap"
## [4] "blog.bufferapp.com/hello-respond"
## [5] "open.bufferapp.com/startup-mindset"
## [6] "open.buffer.com/product"
## [7] "open.buffer.com/remote-working-rv-part-one"
## [8] "opensource.com/open-organization/16/5/buffer-open-culture"
## [9] "open.buffer.com/wholeness"
## [10] "overflow.buffer.com/2016/02/11/slack-meet-looker-an-experiment-in-bringing-data-to-the-team"
##
## $`Tom Redman`
## [1] "open.buffer.com/transparent-product-roadmap"
## [2] "open.buffer.com/stop-energy"
## [3] "theguardian.com/sustainable-business/2016/jun/06/silicon-valley-diversity-problem-tech-industry-solutions"
## [4] "medium.com/@sunils34/forward-motion-stop-energy-at-startups-c01624b7989"
## [5] "medium.com/@rdutel/200-startups-hiring-remotely-in-2016-1d4299e5163f"
## [6] "buffer.com/gifs-for-social-media"
## [7] "blog.bufferapp.com/optimal-work-time-how-long-should-we-work-every-day-the-science-of-mental-strength"
## [8] "open.buffer.com/no-office"
## [9] "open.buffer.com/feedback"
## [10] "julheimer.com/blog/2015/4/23/what-i-learned-doing-customer-support-exclusively-for-a-week"
##
## $`Tyler wanlass`
## [1] "overflow.buffer.com/2016/02/22/timezones"
## [2] "open.buffer.com/buffer-acquires-respondly"
## [3] "medium.com/m/global-identity"
## [4] "open.buffer.com/transparent-product-roadmap"
## [5] "buffer.com/respond/blog/why-everyone-at-respond-does-customer-support"
## [6] "buffer.com/respond/blog/eating-our-own-dogfood-building-a-support-tool-we-use-daily"
## [7] "producthunt.com/tech/customer-support-academy"
## [8] "buffer.com/respond/blog/social-media-customer-service"
## [9] "open.buffer.com/feedback"
## [10] "medium.com/@rdutel/200-startups-hiring-remotely-in-2016-1d4299e5163f"
It looks like there is quite a lot of overlap, and this makes sense. We all work for the same company and share similar things. I imagine that our similarity scores are all quite high. Notice all of the buffer blog posts in there. :)
Next steps
In the future I would love to build a recommender with a much larger dataset with a wider range of users. Proper training/testing and evaluation methods should also be utilized. I would also love to utilize time as a factor – I would be more likely to share a new article than an old one, so that could be factored in as well.