Recommendations are now available

We’ve been experimenting with a recommendation engine for a few weeks now, and recently we made it available to everyone!

This has been an interesting project for us because it was our first experience with machine learning. We had a lot to learn, and will definitely continue to learn more as we improve the engine over time.

How does it work?

Our recommendation engine looks at all the books you’ve rated to build up a profile of what kind of books you like, then uses that to find similar books from our pool of ~18 million distinct works. For example: if you rate fantasy romance books with gay main characters highly, it will look for more fantasy romances with gay characters.

The engine is based purely on your reading tastes and what the books is about. We don’t boost anything based on popularity, awards, or bestseller lists; it’s purely about the books.

Getting started

If you go to Explore > Recommendations, you will be taken to the recommendation settings page, where you’ll be asked a few questions:

Recommendation questionnaire form
  • Exclude Library: By default, books you’ve read or didn’t finish are always excluded. You can optionally choose to exclude all books in your library (such as to-be read books). You might set this to “No” if you’ve forgotten which books are on your TBR and you might want to have recommendations pulled from there.
  • Released Books Only: You might want to set this to “Yes” if you’re looking to read a new book immediately and only want recommendations that are available for purchase now.
  • Ratings From Date: Recommendations are built based on your rating history. This setting is useful if your tastes have dramatically changed. For example, if you used to read a lot of middle grade, but in the last 1-2 years you’ve mostly read young adult books, then you might want to set this cut-off date so that only your last one or two years of ratings are factored in. The engine will then see you mostly like young adult, as opposed to a mixture of YA and middle grade.
  • Age Groups: This allows you to limit the books you get recommended. If you’re definitely only interested in certain age groups, you can select those here.

At the end, you will be shown an age group breakdown to help you figure out if your settings are a good fit. It looks at the ratings you’ve made within the selected time period, and shows you which age groups they fit into.

Ratings broken down by age group

In order to get good recommendations, you ideally want your largest age groups to not be greyed out. If it’s greyed out, that means it’s not in your settings and thus you won’t get recommendations in that age group.

Rating breakdown where your most commonly read age groups haven't been selected and are greyed out.

However, if you mostly read young adult books and young adult isn’t selected, that means the recommendation engine might struggle to find good books for you, because it will know you mostly read YA but won’t be allowed to recommend you YA!

After saving your settings, your recommendations will start building in the background. This typically takes about a minute, but might take up to five. Refresh the page after a couple minutes to check on it. Once it’s done, you’ll see your results!

Grid of recommended books

If you’re not interested in a particular book, you can click the “X” in the top right to remove it. You’ll be given a short questionnaire about why you’re not interested, then the book will be removed from the results and won’t be recommended to you again.

A few times a day you can click the “Refresh” icon in the top right to regenerate your recommendations. This is useful to do if you decide to change your recommendation settings or if you’ve read a few more books and want a fresh set of results.


As previously noted, this is our first foray into the world of machine learning and recommendations. We’ll likely continue to tweak the engine over time as we get feedback and learn more about improving it. If you have any thoughts, you’re welcome to let us know here or on Twitter. We’d love to hear what you think!