SYNTOLOGY HomeExplorerAtlasCodeMethodologyAboutDevelopersFeedPricing
Paper · 2601.06039 · NeurIPS · 2025

Operation Veja: Fixing Fundamental Concepts Missing from Modern Roleplaying Training Paradigms

Yichi Zhang, Hao Yang, Yueze Liu, Ajay Nagi, Reddy Kumdam, Ronit Kanjilal

arXiv · PDF · Open in the Atlas

Code that ran

We have not lifted any functions out of this paper's repositories yet, so there is nothing we have run. If it links a repository, it is listed below.

Repositories linked to this paper

Some links come from the archived Papers with Code dataset (CC BY-SA 4.0): attribution and licence.

Abstract

Modern roleplaying models are increasingly sophisticated, yet they consistently fail to capture the essence of believable, engaging characters. We argue this failure stems from training paradigms that overlook the dynamic interplay of a character's internal world. Current approaches, including Retrieval-Augmented Generation (RAG), fact-based priming, literature-based learning, and synthetic data generation, are fundamentally limited in their ability to model the deliberative, value-conflicted reasoning that defines human interaction. In this paper, we identify four core classic concepts essential for character authenticity: Values, Experiences, Judgments, and Abilities (VEJA). We propose the VEJA framework as a new paradigm for data curation that addresses these systemic failures. To illustrate the qualitative ceiling that our framework enables, we present a pilot study comparing a manually-curated, VEJA-grounded dataset against a state-ofthe-art synthetic baseline. Using an LLM-as-judge, our findings demonstrate a significant quality gap, suggesting that a fundamental shift towards conceptuallygrounded data curation, as embodied by VEJA, is necessary for creating roleplaying agents with genuine depth and narrative continuity. The full dataset is available at https://github.com/HyouinKyoumaIRL/Operation-Veja.

For agents

The same record, over MCP at https://syntology.ai/mcp:

get_harvested_code_for_paper("2601.06039")
get_code_for_paper("2601.06039")
have("2601.06039")

Connect an agent — have() is free.