Steering Readerly Dynamics: Trajectory-Guided Story Generation with Large Language Models
Organizations: Department of Computer Science, Rutgers University, USA · Netflix, USA
Abstract
Large language models (LLMs) are increasingly used to generate stories, but these stories struggle to reproduce engaging readerly dynamics, the evolving reader responses that shape narrative experience. To address this challenge, we propose a framework that learns readerly dynamics from high-quality human-written stories and uses them to guide story generation. Instead of directly modeling high-dimensional story content, we train a small LLM to predict future reader responses as low-dimensional trajectories. We then leverage the strong instruction-following capability of a larger, off-the-shelf writer LLM to generate story segments that follow these predicted trajectories within a given story setting. Our framework improves trajectory-based fidelity to human-written stories by 12%-35% while largely preserving story coherence.
Figures & tables
| Suspense | Humor | |
|---|---|---|
| All complete rows | 94/114 (82.5%) | 91/126 (72.2%) |
| Excluding 3:2 votes | 75/82 (91.5%) | 65/83 (78.3%) |
Appendix figures & tables20 assets
Supplementary material from the paper’s appendix.
Appendix
| GPT-5.5 writer | Qwen3.5-27B writer | |||||||
| Thinking off | Thinking on | Thinking off | Thinking on | |||||
| Prompt condition | Min- MAE | CRPS | Min- MAE | CRPS | Min- MAE | CRPS | Min- MAE | CRPS |
| Humor | ||||||||
| Off-the-shelf | 14.94 [14.08, 15.83] | 17.53 [16.64, 18.46] | 15.14 [14.27, 16.04] | 17.85 [16.96, 18.78] | 8.97 [8.30, 9.67] | 11.50 [10.76, 12.26] | 7.62 [7.06, 8.20] | 9.84 [9.22, 10.48] |
| One-shot ICL | 15.08 [14.21, 15.98] | 17.82 [16.93, 18.72] | 15.65 [14.78, 16.56] | 18.40 [17.49, 19.34] | 9.67 [8.99, 10.37] | 12.26 [11.51, 13.02] | 7.82 ‡ [6.33, 9.40] | 9.97 ‡ [8.46, 11.63] |
| Explicit off-the-shelf | 15.30 [14.46, 16.18] | 18.18 [17.27, 19.12] | 16.10 [15.20, 17.02] | 18.54 [17.62, 19.48] | 10.14 [9.43, 10.90] | 13.04 [12.25, 13.86] | 8.88 [8.22, 9.56] | 11.35 [10.61, 12.09] |
| Dataset | Reasoning free | Reasoning on | Total multiplier |
|---|---|---|---|
| Suspense | 54.3 | 4,493.0 | 82.7 |
| Humor | 75.5 | 3,881.2 | 51.4 |
| Method | Min- MAE |
|---|---|
| Ours | 2.49 [2.13, 2.89] |
| Numeric prediction | 3.01 [2.61, 3.44] |
| Delta sampling | 4.76 [4.11, 5.44] |
| GPT-5.5 direct prediction | 7.06 [6.19, 7.98] |
| Ours | Selection-only | (ours Selection-only) | |||||
| Writer | Min- MAE | CRPS | Min- MAE | CRPS | Min- MAE | CRPS | |
| Suspense | |||||||
| Qwen3.5-27B | 1 | 9.25 [8.13, 10.40] | 12.04 [10.82, 13.31] | 8.29 [7.19, 9.42] | 11.04 [9.79, 12.29] | +0.95 [-0.04, +1.94] | +1.01 [-0.19, +2.22] |
| Qwen3.5-27B | 6 | 7.32 [6.44, 8.25] | 10.11 [9.08, 11.19] | 7.40 [6.41, 8.41] | 10.33 [9.14, 11.55] | -0.08 [-0.85, +0.71] | -0.22 [-1.13, +0.71] |
| GPT-5.5 | 1 | 6.94 [6.12, 7.80] | 9.56 [8.53, 10.59] | 7.32 [6.40, 8.29] | 10.00 [8.84, 11.20] | -0.38 [-1.10, +0.35] | -0.44 [-1.19, +0.35] |
| GPT-5.5 | 6 | 6.14 [5.43, 6.87] | 8.70 [7.82, 9.61] | 6.51 [5.61, 7.49] | 9.25 [8.17, 10.39] | -0.37 [-1.07, +0.27] | -0.55 * [-1.09, -0.02] |
| Task | Suspense | Humor |
|---|---|---|
| Readerly dynamics rating | 27.85 | 23.63 |
| Head-to-head comparison | 33.81 | 38.62 |
| Story quality rating | 12.45 | 11.13 |
| Total participant time | 74.11 | 73.38 |
| Method | MAE | to Off-the-shelf | |
|---|---|---|---|
| Humor | |||
| Off-the-shelf LLM | 1.44 [0.90, 2.03] | – | – |
| Ours | 0.95 [0.66, 1.19] | -0.49 [-1.22, +0.18] | 0.25 |
| One-shot ICL | 1.48 [0.95, 2.08] | +0.04 [-0.62, +0.64] | 0.91 |
| SWAG w/o DPO | 1.34 [0.88, 1.84] | -0.10 [-0.86, +0.64] | 0.80 |
| Suspense | |||
| Setting | Value |
|---|---|
| Model | |
| Base model | Qwen3.5-27B |
| LoRA | |
| Rank / scaling / dropout | 16 / 32 / 0.05 |
| Training | |
| Epoch | 1 |
| Output Format | Min-K MAE | CRPS |
|---|---|---|
| Structured YAML | 2.42 [2.03, 2.86] | 6.70 [6.09, 7.37] |
| Plain Integer | 2.53 [2.17, 2.92] | 7.09 [6.46, 7.76] |
| Dynamics fidelity | Story quality | |||||||
| Min- MAE | CRPS | Relevance | Coherence | Empathy | Surprise | Engagement | Complexity | |
| Off-the-shelf Qwen | ||||||||
| 0.7 | 8.80 [7.64, 10.03] | 11.67 [10.37, 13.04] | 4.31 [4.28, 4.34] | 4.20 [4.17, 4.21] | 3.05 [3.03, 3.08] | 2.65 [2.61, 2.67] | 3.58 [3.54, 3.61] | 3.16 [3.13, 3.20] |
| 1.0 | 8.30 [7.19, 9.47] | 11.49 [10.19, 12.87] | 4.31 [4.27, 4.32] | 4.19 [4.17, 4.20] | 3.04 [3.01, 3.07] | 2.65 [2.61, 2.70] | 3.58 [3.55, 3.60] | 3.17 [3.12, 3.21] |
| 1.5 | 7.82 [6.73, 8.96] | 10.45 [9.27, 11.70] | 4.27 [4.24, 4.30] | 4.17 [4.14, 4.18] | 3.05 [3.01, 3.09] | 2.68 [2.63, 2.71] | 3.58 [3.56, 3.61] | 3.19 [3.15, 3.24] |
| Ours (Qwen writer) | ||||||||
| Suspense | Humor | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| Model | Metric | 0–100 | 1–9 | 1–5 Likert | Token logits | 0–100 | 1–9 | 1–5 Likert | Token logits |
| GPT-5.4-mini | Pearson | .87 [.80, .93] | .88 [.79, .93] | .88 [.81, .92] | – | .83 [.78, .88] | .79 [.73, .85] | .76 [.69, .84] | – |
| Direction (%) | 78.1 [69.4, 85.7] | 68.4 [57.5, 77.4] | 61.0 [51.8, 68.0] | – | 66.3 [59.4, 73.4] | 57.7 [47.5, 69.2] | 48.5 [39.0, 60.0] | – | |
| Qwen3.5-27B | Pearson | .80 [.70, .88] | .85 [.78, .91] | .86 [.78, .92] | .86 [.78, .93] | .75 [.69, .83] | .72 [.63, .82] | .72 [.64, .81] | .72 [.64, .82] |
| Direction (%) | 69.0 [60.9, 79.4] | 71.1 [63.9, 79.7] | 55.1 [47.2, 63.3] | 80.7 [74.7, 87.3] | 66.3 [59.1, 75.0] | 65.6 [59.0, 75.2] | 52.1 [44.8, 60.7] | 66.3 [58.0, 74.8] | |
| GPT-5.5 | Pearson | .87 [.81, .92] | .89 [.84, .92] | .87 [.81, .91] | – | .81 [.75, .87] | .79 [.72, .86] | .81 [.75, .86] | – |
| Learning rate | Epochs | Min- MAE | CRPS |
|---|---|---|---|
| Position-wise | |||
| 1 | 2.59 [2.22, 2.98] | 7.20 [6.51, 7.92] | |
| 2 | 2.69 [2.29, 3.13] | 7.12 [6.40, 7.89] | |
| 1 | 2.74 [2.34, 3.17] | 7.46 [6.74, 8.22] | |
| 2 | 2.88 [2.50, 3.30] | 7.26 [6.59, 7.96] | |
| Autoregressive | |||
| Stage | Removed | Remaining |
|---|---|---|
| Source records | — | 24,438 |
| Fewer than five candidate segments | 14,994 | 9,444 |
| More than ten segments or preprocessing failure | 1,080 | 8,364 |
| LLM-based genre and quality filtering | 4,268 | 4,096 |
| Remove duplicates | 84 | 4,012 |
| Post-split leakage audit | 88 | 3,924 |
| Stage | Removed | Remaining |
| Corpus | ||
| Raw records available | — | 3,715 |
| Source collection and initial cleaning | 653 | 3,062 |
| 200–1,000 words | 965 | 2,097 |
| Fable-family restriction | 158 | 1,939 |
| Near-duplicate removal | 12 | 1,927 |