Skip to main content
User Guide

For You Recommendation

The For You tab is NeoQN’s personalized content discovery dashboard. It analyzes your reading habits locally and suggests light novels matching your taste without tracking your personal data.

Taste Profile Wizard

When you launch NeoQN for the first time, you are guided through the Taste Profile Wizard to seed your recommendations:

  1. Tag Selections: Select at least 3 topics of interest (such as Action, Reincarnation, Cultivation, System, or Romance).
  2. Harem vs. Solo MC Slider: Adjust the slider to tune your preference between Harem stories and Solo Protagonist novels. This value is mapped to your profile's diversityScore.
  3. Re-tuning: You can rebuild your taste profile at any time. Simply tap the Tune icon in the top bar of the For You screen to reset the wizard and choose new tags.

Recommendation Engine (Backend Specifications)

NeoQN uses a lightweight, privacy-focused recommendation engine that runs entirely on your device.

1. Data Pipeline

The recommendation pipeline reactively combines three data streams using Kotlin Flows:

  • Base Profile: The genres and preferences you selected in the Wizard, stored in DataStore (user_taste_profile).
  • User Bookmarks: Your bookmarked novels from the Room database. To prevent memory bloat, this is capped at the 200 most recently updated, downloaded, or read books.
  • Implicit Interactions: The app tracks user actions (up to 1,000 items) like clicks, reading history, and dismissed recommendations.

2. Tag Affinities & Recency Boost

Every tag you interact with is assigned a TagAffinity consisting of a score (0.0 to 1.0) and a confidence rating (0.0 to 1.0):

  • Reading Action: Reading a chapter adds a major boost (+0.4 score) to the novel's corresponding tags.
  • Click Action: Clicking to view a novel's details adds a minor boost (+0.15 score).
  • Dismiss Action: Dismissing a card adds the tags to avoidedTags (with a 0.5 starting penalty) and removes them from your preferred list.
  • Recency Multiplier: Tags associated with novels read or downloaded within the last 24 hours receive a 1.2x recency multiplier, prioritizing your current reading interests.

3. Candidate Indexing & Matching

  • Candidate Pool: The RecommendationPoolManager runs background sync tasks (PluginSyncWorker) to pull page 1 listings from active provider categories (Popular, Latest, Trending) and save them to the local RecommendationCandidateEntity database table.
  • Score Calculation: Candidates are scored using the formula:

$$\text{Score} = \frac{\sum \text{Preferred Tag Weights} - \sum \text{Avoided Tag Penalties}}{\sum \text{Total Weights}}$$

  • Grouping: Candidates with a match score $> 0.4$ are grouped and presented in horizontal swipe carousels under sections like For You, Top [Genre Name], Highest Rated, and Hidden Gems.