Skip to content

Long-term personalization and optional interests

Approved product/architecture direction, September 19, 2026. The user explicitly authorized implementation using existing data and access. Development is on codex/discovery-personalization, stacked on the prepared measurement changes. The implementation plan tracks the work. Approval to build is not evidence of recommendation uplift or production activation; those require the rollout and evaluation gates below.

Updated after the live catalog and audience audit. That evidence replaces the earlier generic genre examples below. It also confirms that production already has Railway Redis shared by the app and analytics worker.

Product objective

Help anonymous and signed-in readers discover new stories they enjoy enough to read, save and return to. Saved stories and their translations leave Discover; Library handles returns. Maintain variety and keep retrieving while eligible unseen stories remain. Finite eligible inventory cannot supply infinitely many unique stories. Do not conceal inventory limits through an artificial page cap or silently break exclusions to manufacture continuation.

Architecture to build

PartResponsibility
Authoritative catalog and preferences (Neon/Postgres)Publication, access, language, Library membership, explicit preferences and committed outcomes.
Story understanding (versioned descriptors, embeddings, pgvector)Describe themes, tone, relationship dynamics and interaction style from published material; find related stories even when wording differs. Descriptor quality must be audited; model guesses remain distinct from creator declarations.
User understanding (application models, Postgres/Redis)Keep explicit choices, multiple enduring interests and recent session intent separately. Idol companionship and open-world RPGs can both be interests without averaging them into one taste.
Candidate retrievalCombine related stories, behaviorally similar readers/stories, current intent, fresh content and deliberate exploration. This is a shortlist, not the complete feed.
Learned rankingEstimate the value of each user/story pairing using semantic affinity, collaborative affinity, current intent and trustworthy outcomes. Compare extensions of the existing LightGBM baseline before promoting a more complex model.
Feed composition and stateApply hard eligibility and Library/group exclusions, reduce creator/topic repetition, preserve exploration and continue retrieval. Existing Railway Redis supports initial work; a separately sized recommendation instance can isolate substantial feed state from existing cache/rate-limit workloads.
Evidence and learning (ClickHouse and versioned training jobs)Retain canonical observations and historical features, build temporally correct datasets and train candidates. Current verified outcomes are preferable to ambiguous legacy labels.
Product analysis and experiments (PostHog plus controlled assignment)Understand abandonment and discovery funnels; compare randomized experiences and operational guardrails. Mirrored events never become extra independent training evidence.

Use two update speeds: change session intent as people interact, and retrain shared models on a controlled schedule with enough valid data. Content embeddings update when relevant published content changes. Daily retraining is not a reason to wait until tomorrow to react to the current visit.

The vector index performs search over representations. The user/story models, behavioral learning and outcome objectives supply the meaning of a good match. A graph database is not required to represent useful user/story relationships.

Transfer preferences between different experiences

The user's intended behavior is broader than similarity to previously liked titles: infer which aspects of an experience appeal to a reader, then find other worlds that provide those aspects, including across genres and fandoms. Treat concepts such as curiosity as contextual, uncertain experience preferences. For example, "enjoys discovering hidden information in narrative worlds" is a useful hypothesis; one favorite does not establish a general personality trait.

Maintain two complementary representations:

  • Evidence-backed, interpretable affinities for experiences such as exploration, relationship development, agency, progression, puzzle solving, and ensemble interaction. Store confidence/support, evidence source, context, and freshness.
  • Learned behavioral representations that can capture useful associations which do not have a reliable human-readable explanation. Do not force every latent dimension into a psychological label or use an LLM's explanation as ground truth.

World content identifies available experiences, not which experiences a person actually encountered or enjoyed. Different openings, routes and generated scenes can produce different experiences inside one world. An initial favorite can weakly support several competing explanations: fandom, relationships, exploration, artwork, creator familiarity, or other features. Repeated evidence across different worlds, explicit feedback, and measured recommendations should update those hypotheses. Preserve multiple interests and current-session intent.

The current inspected event taxonomy captures discovery and general engagement, but does not provide a common recommendation-linked vocabulary for optional exploration, branch choices, lore discovery, or progression across authored worlds. Design such instrumentation where mechanics support it; distinguish server- confirmed changes from client claims and model-invented actions. Record the opportunity or alternatives available when interpreting a choice. Reverts, regenerations and repeated delivery must not manufacture independent evidence. Do not assume arbitrary world variables have comparable semantics.

Rich content features help new-world matching before substantial behavior exists. They do not create additional independent preference observations. In the audit, 66.6% of qualified readers engaged with only one story family during the five-day window, so broad preference certainty would be unjustified for many readers.

Evaluate whether adding these affinities predicts held-out new-story engagement better than content/collaborative baselines, splitting data in time and accounting for world age, language, and exposure. Use randomized, bounded exploration to test uncertain transfers online. Keep engagement in existing Library stories separate from incremental Discover success. Global trends, audience-specific trends, enduring preferences and visit intent are distinct model inputs.

Reference: MIND research supports representing multiple interests for recommendation; it does not validate a named psychological trait from one interaction or establish that this specific architecture will win on Yumina. The implementation adds multiple content interests, experience affinities and separate visit intent. Learned behavioral embeddings and cross-world action semantics remain evaluation-dependent extensions; they are not claimed as shipped.

Interest onboarding recommendation

Three options considered:

  1. Behavior only: least initial friction, but limited guidance for the first feed.
  2. One optional interest screen: useful initial evidence with little requested effort. Recommended initial experiment.
  3. A detailed quiz or many pairwise card choices: potentially more evidence, but greater interruption and exposure bias. Defer until a measured need.

Offer one lightweight screen on first Discover use, separate from required account/audience settings. Do not interrupt a direct link to a chosen story or require an account solely to provide taste choices. Existing users can access the same controls through an optional Discover entry point.

Proposed copy: What sounds interesting? Select any that appeal to you. Candidate experience choices from the live catalog audit: romance and character relationships; anime and game universes; idols and K-pop; open-world adventures and simulators; fantasy and cultivation; mystery and survival. These overlap and must seed separate soft interests, not force every story into one category.

The audit found 1,017 public story families, with 366 fandom-tagged, 228 simulator- tagged, 159 carrying romance labels, and only 30 each carrying horror or sci-fi labels. K-pop has 29 tagged families but 810 of 3,587 qualified readers in the five-day sample. Counts overlap, tags are incomplete, and observed demand depends on prior exposure. Labels need descriptor review and coverage checks in each reader's language and eligibility scope before they become final UI choices. Keep niche interests available through refinement/search; do not promise a large inventory in every category. A mood refinement can be tested separately later.

No minimum selection. Both Continue and Skip are obvious and available. Support keyboard/screen-reader interaction and existing supported languages. Use labels backed by enough eligible stories in the reader's language. Do not auto-save stories, auto-follow creators, or present rare categories with no viable supply.

Selections immediately seed candidate retrieval and ranking as soft preferences. Keep each selected interest distinct; unselected topics are unknown, not rejected. Skip supplies no taste inference and does not trigger repeated interruptions. Users can edit/reset these choices later. Explicit blocks and content settings remain hard constraints and are never overridden by inferred engagement.

Keep explicit and inferred preference sources separate. Later behavior can change relative soft-interest strength without deleting the user's declarations. Avoid overreacting to one click; use confirmed reading, saves and voluntary returns as stronger evidence. A fast skip is contextual, weak evidence. Exact weights and exploration share are experimental parameters, not guessed truths.

Guest choices belong to the anonymous browser actor; carry them through a verified sign-in handoff. Do not attach one browser user's choices to another account after account switching. Failure to save interests must leave browsing usable. Integrate preference deletion with the account-data lifecycle.

Scientific evaluation

Randomize whether an eligible actor is offered onboarding; analyze all assigned actors, including those who skip. Comparing only people who finish the picker would confuse self-selection with the feature's effect. Preserve assignment through the guest/sign-in flow and report unknown-history cohorts separately.

Primary outcomes: useful new-story discovery per assigned actor, based on confirmed saves and qualified reading. Guardrails: time to first story, abandonment, hides, feed variety, latency and errors. Assess later returns only after the follow-up window matures. Picker completion alone is not success.

Change one major mechanism at a time. Compare optional interests, immediate session adaptation, multiple-interest profiles, semantic negative preferences and learned user/story features through separate experiments. New-story reading and return metrics must not reward slow UI or technical retries.

Implementation order and spending

  1. Validate and roll out the already-prepared serving/measurement foundations through their existing warehouse, completeness and capacity gates.
  2. In parallel, build versioned story descriptors, explicit preference storage, multiple-interest/session profile interfaces and the proposed optional picker behind separate flags. These do not require waiting for a D7 result to code.
  3. Integrate those profiles into retrieval and the ranking feature contract; preserve exact serving-time feature versions and guest identity semantics.
  4. Compare the initial policies, then train richer user/story models on the corrected observations. A two-tower or sequence model is a candidate to test, not an automatic upgrade merely because it is more complicated.

No new vendor account is a prerequisite. Production already has Railway Redis; the app and analytics worker share it, and testing has a separate instance. A dedicated recommendation instance means another Redis service, potentially on Railway, not a mandatory subscription with another vendor. Size that isolation, the test deployment and warehouse/training capacity from representative load and retained data volume before purchase or activation. The live Redis snapshot alone does not establish a need for immediate expansion.

Keep replaceable boundaries for a dedicated vector service (retrieval scale), a feature store (shared consistent online/offline inputs), an event bus (high-volume delivery and replay), and GPU training (neural-model experiments). Introduce each when its benchmark or operational requirement warrants it.

The user need not choose infrastructure vendors or provide another broad authorization to continue the previously approved architecture work. The new interest experience remains a concrete product proposal in this document.

Official references

  • Meta's published Explore architecture: multiple retrieval sources, ranking and final reranking. This supports the staged architecture; it is not a description of every current proprietary Meta model.
  • Reddit's recommendation explanation: includes interests provided at account creation alongside subsequent activity.
  • TikTok's recommendation explanation: documents optional initial categories, a fallback when skipped, and subsequent interaction signals. Actual signup screens need not be identical for every user; this research did not inspect a live signup UI.