BookWise
BookWise recommends books with explanations you can understand—and influence. No mystery, just good reads
Motivation
Recommendation systems shape much of our digital lives—guiding what we watch, read, buy, and scroll through. Yet, despite their reach, these systems remain black boxes to users. We rarely know how our clicks influence what we’re shown or how to adjust recommendations without tedious trial and error. This lack of transparency and control often leads to a frustrating user experience. Worse, many systems reinforce the same patterns over time, creating echo chambers that limit discovery and bury niche or unexpected content.
Our project addresses this problem in the book industry. We built BookWise, a recommendation system that learns from user behavior, clearly explains why each book is suggested, and lets users reshape future recommendations through real-time feedback. Combining personalized results with transparency and user input, BookWise gives readers more control, clarity, and a better path to discovering books that truly match their interests.
Our Product
Our product is an innovative book recommendation platform built for anyone looking for their next great read and designed around user control and transparency.
The user journey begins with a personalized onboarding process, where readers share their favorite genres, authors, books, and specific reading preferences. This information creates a comprehensive reading profile that serves as the foundation for our recommendation engine.
Unlike traditional "black box" recommendation systems, BookWise makes the recommendation process visible and understandable. The platform features a clean, intuitive interface with three main components: a personalized recommendation feed, an interactive user profile, and a personal library for saved books. Each recommendation comes with a custom explanation that connects the suggested book to the user's stated preferences, reading history, or similar readers' patterns. For example, rather than simply suggesting "Dracula," BookWise might explain it was recommended because of the way in which its Gothic horror elements and Victorian-era writing style align to other dark classics the user rated highly, as well as their preference for atmospheric novels with unique narrative structures.
What truly sets BookWise apart is its feedback loop. Users can rate books they’ve already read, save them to their virtual library, or mark them as "not interested," with each interaction refining future recommendations. They can also explicitly change their preferences at any time, putting the power to shape recommendations directly in their hands. This creates a dynamic system that continually improves through usage. Additionally, the profile section includes an interactive genre map that visualizes connections between book genres and highlights the user's preferences within the broader reading landscape.
By demystifying the recommendation process and empowering readers with both information and control, BookWise creates a more engaging and satisfying path to discovering books that can resonate with all individual tastes and preferences.
Model Architecture
The following outlines the high-level model architecture of our solution. By following the steps illustrated in the image, we can trace the information flow of our system and gain a better understanding of its operation.
Step 1: We begin by gathering all the necessary data to run the model. This includes both the data used for training and the data provided directly by the user.
Step 2: Next, we input the user-provided data into a pre-trained recommendation system, which generates suggestions based on the user's preferences and their historical likes.
Step 3: Once the recommendations are generated, we pass them along with the user-provided data to a Large Language Model (LLM). The LLM analyzes the relationship between the recommendations and the data, generating an explanation for why each specific recommendation was made.
Step 4: We then return the recommendations, along with the LLM-generated explanations, back to the users for their consideration.
Step 5: Finally, we solicit feedback from the users regarding the recommendations. This feedback is then fed back into our two models, creating a feedback loop designed to enhance recommendations over time based on the user's preferences.
Data Sources
- Books Reviews Dataset
To train our recommendation model and populate our application, we utilized the Kaggle dataset titled "Goodreads Books Reviews." This dataset was specifically designed for building recommendation systems and contains a total of 3 million reviews submitted by over 1 million users for more than 200,000 books. It served two primary purposes: first, to provide the underlying data (i.e., books) for our application, and second, to train our recommendation model based on the historical book reviews available. - User Data
The second data source we used was user data, which users directly input while using our product. This included information such as books, authors, and genres that users liked, as well as those they disliked, along with their personal reading preferences.
Recommendation System
Our recommendation system is built on the Two-Tower architecture, a widely adopted deep learning framework for matching queries with items—commonly used in personalized recommendation engines.
As we can see from the animated image below, the model consists of two separate neural network encoders:
- Query Tower (left): Encodes user-related information
- Item Tower (right): Encodes book-related metadata
During training, the model learns to position the embeddings of users and books in a shared vector space such that users are placed closer to the books they're likely to prefer. This is done using techniques like contrastive learning or cosine similarity loss.
In our setup:
- User inputs include their past ratings and declared preferences
- Book inputs include metadata such as title, author, genre, and other relevant features
At inference time, we pass a user's profile through the query tower to generate a user embedding. This embedding is then compared with pre-computed book embeddings from the item tower to retrieve the nearest neighbors—i.e., books most relevant to the user. This approach enables efficient retrieval from large catalogs and allows real-time personalization.
For evaluation, we used the precision@50 metric on a held-out validation set to assess the model's ranking performance. This metric measures the proportion of relevant items among the top 50 recommendations returned for each user. Our latest model achieved a precision@50 score of 0.20, meaning that, on average, 20% of the top 50 recommended books are relevant to the user's preferences. While there is room for improvement, this result demonstrates that the model is effectively surfacing meaningful recommendations within a large candidate pool—laying a strong foundation for further tuning and personalization.
Large Language Model (LLM)
We used an LLM to generate personalized explanations for book recommendations, leveraging user preferences and content-based insights. The system connects to AWS Bedrock and utilizes a pre-trained, state-of-the-art model, selected for its strong performance with few-shot prompting. This approach yielded robust, high-quality outputs that met the requirements of our use case without the need for full model fine-tuning.
At runtime, the system loads a dataset containing book metadata and reviews. When a user profile and a recommendation from our internal recommendation engine are received, it constructs a context-rich prompt. This prompt incorporates the user’s liked and disliked books, preferred genres and authors, as well as relevant attributes of the recommended title. The prompt is then sent to the model via Bedrock’s API, using generation parameters such as a temperature of 0.3 and a top-p value of 0.9. These settings promote coherent and focused responses while maintaining a degree of diversity.
The model generates a concise, personalized explanation aligned with the user's reading preferences. The output provides a clear and empathetic rationale, enhancing user understanding of why a particular book has been recommended.
For model evaluation, we tested three different models available from the Bedrock Model Catalogue. The results of our evaluation tests are as follows.
See the metrics definition here.
Overall, we found that the Mistral-Large-2402 model outperformed the other two models in terms of Faithfulness, which measures how closely the output aligns with the input, and most importantly, Completeness, which assesses how well the response addresses the given requests.
Future Works
Our Minimum Viable Product (MVP) demonstrates how we can enhance the user experience of recommendation engines by providing users with explanations for specific recommendations and giving them the ability to control their preferences. From this point, we identified several directions for future enhancements, including:
- Data Improvement: The dataset we used to train the model and populate the application is adequate for our MVP; however, it is relatively small compared to other book catalogs. If given the opportunity, we would focus on acquiring a larger book dataset to enhance user choices.
- Containerization / Microservices: Our current production architecture requires scalability improvements to efficiently manage high website traffic. We plan to optimize the system through containerization and microservices architecture.
- Modeling: There are several avenues for refining our models:
- Recommendation Model: We are prioritizing enhancements to our recommendation algorithms, including mechanisms for real-time user feedback to fine-tune recommendations continuously.
- LLM: We are exploring advanced techniques to customize our LLM model further, tailoring it precisely to our specific needs for even better performance.
- Product Enhancements: Looking ahead, our focus includes integrating third-party links that allow users to directly access recommended books for reading or purchase.
Our mission at Bookwise is to bring the excitement and joy back to reading by providing insightful recommendations and empowering users
Image credits:
- Banner image: https://unsplash.com/photos/a-pile-of-books-sitting-next-to-each-other-Hqbkgga0rNQ
- Model Architecture Chart: created with draw.io
- Two-Tower Example: https://cloud.google.com/blog/products/ai-machine-learning/scaling-deep-retrieval-tensorflow-two-towers-architecture
- Teaser image: created with MS Paint
References:
- DeLeon, H. (2021, December 9). The ethical and privacy issues of recommendation engines on media platforms. Medium. https://medium.com/data-science/the-ethical-and-privacy-issues-of-recommendation-engines-on-media-platforms-9bea7bcb0abc
- Tufekci, Z. (2018, March 10). YouTube, the great radicalizer. The New York Times. https://www.nytimes.com/2018/03/10/opinion/sunday/youtube-politics-radical.html
- Sonboli, N., Smith, J., Berenfus, F., Burke, R., & Fiesler, C. (2021a). Fairness and transparency in recommendation: The users’ perspective. Proceedings of the 29th ACM Conference on User Modeling, Adaptation and Personalization, 274–279. https://doi.org/10.1145/3450613.3456835