CiBook
Akhmad Aji Permadi
As a Researcher, Machine Learning Engineer, and iOS Developer

Scroll to explore ↓
DIVE INTO THE PROBLEM
Reading fiction is often driven by enjoyment rather than obligation. However, the most emotionally intense moment of reading doesn’t happen during the process, it happens after finishing the book.
Psychology describes this through the recency effect, where people remember the ending of an experience most vividly. For readers, this post-reading phase is when excitement, satisfaction, and emotional attachment peak.
Yet, this excitement fades quickly.
As a researcher, I worked with my team to conduct a survey involving 28 respondents aged 18–35 to identify the core problems. Based on the insights gathered, I identified the following key findings:
However, despite knowing what they like, readers still struggle to decide what to read next. The abundance of choices creates friction, not freedom.
This reveals a core problem: Readers lose the excitement they just gained because there’s no clear bridge between finishing a book and choosing the next one.
DESIGNING THE SOLUTION
Rather than asking readers to actively search for books similar to what they liked, I reframed the problem around a single question:
What if the last book that excited them could guide the next decision?
Through research and survey findings, I learned that readers strongly associate their excitement with specific authors and genres, and that this excitement is most vivid immediately after finishing a book. However, this moment was often left unsupported by existing tools.
Building on this insight, I worked with my team to design CiBook as a recency-based recommender. When users add a book they find exciting, the app treats it as a meaningful reference point and generates 10 recommended fiction books based on similar authors and genres. By limiting the recommendations to a small, curated set, CiBook reduces decision fatigue while preserving a sense of exploration.
This approach allows excitement from the post-reading phase to flow naturally into pre-reading, turning emotion into guidance and helping readers confidently choose what to read next.

BUILDING THE RECOMMENDATION SYSTEM
Before jumping into implementation, I first needed to determine what kind of recommendation system best matched the problem CiBook was trying to solve.
CiBook focuses on helping users choose their next fiction book based on what recently excited them. Because this experience is highly personal and does not depend on other users’ behavior, collaborative filtering was not a good fit, especially given the cold-start problem for new users.
Instead, I chose a content-based recommendation approach, where books are recommended based on their intrinsic characteristics rather than crowd behavior.
This decision was driven by three key considerations:
From earlier research and surveys, two factors consistently stood out in how readers choose similar books:
Rather than overloading the model with many weak signals, I intentionally constrained the system to these two features and weighted author preference twice as strongly as genre, reflecting how readers often follow authors they already trust. This weighting strategy ensured that recommendations felt familiar without becoming repetitive.
SYSTEM ARCHITECTURE OVERVIEW
A step-by-step journey from offline data preparation to on-device recommendations.
These weighted embeddings are combined into a single representation per book.
This architecture prioritizes privacy, performance, and reliability, while remaining simple enough to maintain and iterate on entirely on-device.
RESULT

CiBook was released via TestFlight to more than fifteen testers, allowing the recommendation system to be evaluated in real reading scenarios rather than controlled experiments.
Testers consistently reported that the recommendations felt relevant and helpful, particularly in guiding them toward their next fiction book after finishing one they enjoyed. Many noted that CiBook made the transition from post-reading to pre-reading feel more natural, helping them sustain the excitement they felt after completing a book.
After building and releasing CiBook, I began to see even more potential for improvement beyond the initial implementation. One key area is enriching the dataset, as the current dataset is still limited in language diversity, recency, and regional representation. Expanding the dataset would allow recommendations to feel more current and inclusive. Additionally, broadening the feature representation (such as incorporating book descriptions or thematic elements) could help capture nuances that go beyond author and genre alone. These reflections have shaped how I think about evolving CiBook from a solid foundation into a more adaptive and expressive recommendation system.