DISCOVER YOUR NEXT FAVORITE STORY

CiBook

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

banner

Scroll to explore ↓

Many readers finish a book feeling deeply satisfied, but moments later feel lost when trying to pick their next read.

CiBook bridges this gap by encouraging readers to track books that truly excited them and using those records to recommend future reads based on similar authors and genres.

DIVE INTO THE PROBLEM

The Problem Starts After Reading

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:

  • 83% want to read books similar to ones that previously excited them
  • Readers mainly rely on author and genre when choosing similar books

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

Turning insight into a clear next step

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.

feat

BUILDING THE RECOMMENDATION SYSTEM

From Product Insight to Technical Direction

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:

  • The recommendation must work immediately, even for new users
  • It must align closely with individual reading preferences
  • It must be reliable and explainable enough to run entirely on-device

From earlier research and surveys, two factors consistently stood out in how readers choose similar books:

  • Author
  • Genre

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

Designing an On-Device Recommendation System

A step-by-step journey from offline data preparation to on-device recommendations.

01

Book Metadata (Offline / Preprocessing)

Fiction book metadata, including author and genre, is collected and cleaned ahead of time. Non-fiction titles are explicitly filtered out to keep the recommendation space aligned with the product goal.
02

Vectorization (On-Device, Native ML)

Each book is converted into a 512-dimensional vector using Apple’s NaturalLanguage sentence embeddings.
  • Genre embedding × 1
  • Author embedding × 2

These weighted embeddings are combined into a single representation per book.

03

Vector Storage

All vectors are precomputed and stored locally as JSON within the app bundle. This enables fast access and eliminates the need for network calls or external inference services.
04

Similarity Engine (Runtime)

When a user selects an exciting book, the app computes cosine similarity between the selected book vector and all other book vectors on-device.
05

Recommendation Output

The system returns the top 10 most similar fiction books, which are then presented directly in the UI.

This architecture prioritizes privacy, performance, and reliability, while remaining simple enough to maintain and iterate on entirely on-device.

RESULT

Turning Research and Engineering into Real User Impact

finalshowcase

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.

Back to Top