Variable injection vocabulary
Pendraic substitutes {{token}} placeholders in your prompt body at run time. Always uses live state from the database, your prompt body is never a vehicle for stale or tampered data. Unknown tokens stay literal in the rendered prompt so a typo is visible to you instead of silently disappearing.
103 static tokens · 8 parameterized templates · across 10 scopes.
Pendraic auto-injects structured project + scene context into every prompt at run time. Use these tokens to pull additional context into your prompt body.
Parameterized templates
These tokens take a number you fill in. e.g. {{prose_last_500}} for the trailing 500 words of prose before your cursor.
{{prose_all}}Full plain text of the active scene.{{prose_last_<N>}}Last N words of prose before the writer's cursor. e.g. {{prose_last_500}} for the trailing 500 words.{{prose_next_<N>}}Next N words of prose after the writer's cursor (within the active scene).{{chapter_<N>}}Full prose of the Nth chapter (1-indexed across the project).{{chapter_<N>_scene_<M>}}Full prose of the Mth scene inside the Nth chapter (both 1-indexed).{{scene_<N>}}Nth scene of the active chapter (1-indexed). Falls back to empty when no chapter is active.{{act_<N>}}Full prose of every scene inside the Nth act (1-indexed).{{series_metadata}}Composite block: every series-level field as a labeled summary (title, logline, shape, POV strategy, continuity, audience, planned books, time span, thematic argument).
Project · 21 tokens
| Token | Description |
|---|---|
| {{title}} | Project title. |
| {{logline}} | One-sentence pitch. |
| {{elevator_pitch}} | Two-to-three-sentence back-cover blurb. |
| {{description}} | Free-form project description. |
| {{format_preset}} | Format preset (e.g. fiction-thriller, memoir). |
| {{structure_preset}} | Structure preset (simple, standard, discovery, heavy). |
| {{status}} | Project status (planning / drafting / revising / finished / published). |
| {{synopsis_1p}} | 1-page synopsis (~2,000 chars). |
| {{synopsis_3p}} | 3-page synopsis (~6,000 chars). |
| {{synopsis_5p}} | 5-page synopsis (~12,000 chars). |
| {{narrative_style}} | Narrative style (linear, non-linear, epistolary, …). |
| {{pov}} | Point of view (first, third limited, omniscient, …). |
| {{tense}} | Past, present, or mixed. |
| {{target_length}} | Target length category (flash, novelette, novel, epic, …). |
| {{target_word_count_floor}} | Lower bound of the target word count. |
| {{target_word_count_ceiling}} | Upper bound of the target word count. |
| {{genre}} | Top-level genre derived from format preset. |
| {{subgenre}} | Subgenre when set (e.g. epic fantasy). |
| {{project_arcs}} | Bullet list of every active project-scope arc, ordered by position_index. Each line carries the arc's kind + status + summary (truncated 200 chars). |
| {{open_arc_threads}} | Project-scope arcs filtered to the not-yet-resolved subset (planned + active). Keeps prose drafts aware of which threads are still in play. |
| {{best_synopsis}} | Fallback chain: synopsis_5p > synopsis_3p > synopsis_1p > logline. Prefer this over a hard-coded tier so a prompt drops cleanly into any project regardless of which synopsis tiers are populated. |
Series · 16 tokens
| Token | Description |
|---|---|
| {{series_title}} | Series title. |
| {{series_logline}} | One-sentence series pitch. |
| {{series_description}} | Free-form series description. |
| {{series_elevator_pitch}} | Two-to-three-sentence series pitch. |
| {{series_synopsis_1p}} | 1-page series synopsis. |
| {{series_synopsis_3p}} | 3-page series synopsis. |
| {{series_thematic_argument}} | Central thematic argument the saga is making. |
| {{series_time_span}} | In-universe time span the series covers. |
| {{series_shape}} | Trilogy / quartet / planned saga / open saga / serialized / … |
| {{series_pov_strategy}} | Single POV / rotating / multi / one per book / ensemble. |
| {{series_continuity}} | Cliffhanger / arc-complete / standalone / episodic. |
| {{series_audience}} | MG / YA / NA / adult — including age-up paths. |
| {{series_planned_book_count}} | Planned book count (when known). |
| {{series_book_position}} | Phrase like 'Book 2 of 4' for the active project's slot in its parent series. Empty when the project isn't part of a series. |
| {{series_open_threads}} | Bullet list of cross-book threads from the parent series that are scoped to the active book (open in this volume, or active across this volume). Keeps prose drafts honoring multi-book setup/payoff cadence. |
| {{series_arcs}} | Bullet list of active series-scope arcs, same shape as project_arcs. Empty when the project isn't part of a series. |
World · 31 tokens
| Token | Description |
|---|---|
| {{world_name}} | Active world name. |
| {{world_description}} | Free-form world description. |
| {{world_logline}} | One-sentence world distinctiveness. |
| {{entry_name}} | Active world-index entry name. |
| {{entry_objective}} | Entry's canonical objective description. |
| {{entry_rules}} | Entry's hard rules + tendencies as a bulleted list. |
| {{entry_tags}} | Entry's concept tags, comma-joined. |
| {{entry_aliases}} | Entry's aliases, comma-joined. |
| {{entry_notes}} | Entry's free-form notes. |
| {{world_foundation}} | Foundation-template name applied to the active world (e.g. 'Secondary World Fantasy', 'Hidden World — Masquerade'). Empty when fully custom. |
| {{world_overlays}} | Comma-joined active overlay names (e.g. 'Dragons, Inherited Magic, Mountain Geography, Mythic Lyrical'). Empty when none. |
| {{world_modifiers}} | Human-readable modifier list: tone, tech level, magic mode, religion cosmology, political complexity, portal access, creature ecology, apocalypse history. Empty when none set. |
| {{world_template_lens}} | Prompt-ready block: WORLD FOUNDATION + ACTIVE OVERLAYS + WORLD MODIFIERS + CUSTOM LENS NOTES. Drop directly into a system prompt to anchor LLM output to the world's nature. Empty when fully custom and no modifiers set. |
| {{world_template_custom_lens}} | The writer's free-form lens override (worlds.world_template_custom_lens). Used only when the writer wants their own hand-written framing in addition to (or instead of) the catalog. |
| {{world_geography_summary}} | Bullet list of geography-domain World Index entries on the project's bound world (places, regions, landmarks). Anchors scene location references in established places. |
| {{world_magic_rules}} | Bullet list of rules, magic, and cosmology World Index entries on the project's bound world. Forces the LLM to obey hard limits when drafting prose involving those systems. |
| {{universe_shared_continuity}} | Saga-level threads + facts the manuscript must respect when the project's series belongs to a saga. Keeps cross-series continuity honest. Empty when the project isn't part of a saga. |
| {{universe_name}} | Name of the universe / saga the project belongs to. Empty when the project isn't part of a saga. |
| {{universe_premise}} | One-paragraph high concept of the universe — what the saga is about across every world and series. |
| {{universe_cosmology}} | Long-form cosmology / universal canon — the metaphysics and shape of reality every world inherits. |
| {{universe_era_span}} | Time range the universe covers (e.g. Bronze age → far future, ~30,000 years). |
| {{universe_tone}} | Overall mood of the universe (epic / grimdark / hopeful / mythic / dystopian / …). |
| {{universe_themes}} | What the universe is arguing about — the questions every book in it returns to. |
| {{universe_inspirations}} | Works the universe is in conversation with (Sanderson's Cosmere, Asimov's Foundation, etc.). |
| {{universe_shared_systems}} | Magic / tech / religion / government structures common to every world in the saga. |
| {{universe_multiverse_rules}} | How (or whether) the worlds connect. Travel rules, communication, metaphysical bridges. |
| {{universe_recurring_protagonists}} | Characters / figures present across multiple worlds or series in the universe (worldhoppers, immortals, gods, recurring antagonists). |
| {{universe_central_conflicts}} | Universe-spanning threats, recurring antagonist forces, the conflicts every book sits inside. |
| {{universe_author_intent}} | What the writer wants readers to feel or take away from time spent in the universe. |
| {{universe_universal_rules}} | Bullet list of structured key/value invariants that hold across every world in the saga. |
| {{saga_arcs}} | Bullet list of active saga-scope arcs (resolved via series.saga_id), same shape as project_arcs. Empty when the project isn't part of a saga. |
Scene · 11 tokens
| Token | Description |
|---|---|
| {{scene_title}} | Active scene title. |
| {{scene_text}} | Full plain text of the active scene. |
| {{scene_status}} | Scene status (drafting, revising, done, …). |
| {{scene_word_count}} | Live word count of the active scene. |
| {{selection}} | The writer's current text selection. Cheapest scope for paragraph edits. |
| {{current_scene}} | Composite envelope: scene text plus story_index and world_index entries referenced inside it. In xml mode renders to a nested <current_scene> block. |
| {{pov_last_scene}} | Synopsis (one paragraph, ~600 chars) of the most recent prior scene where the active scene's POV character had POV. Spans chapters and acts. Empty when this is the character's first POV scene. |
| {{pov_last_scene_tail}} | Last ~600 characters of prose from the active scene's POV character's most recent prior POV scene. Anchors the character's emotional + physical state when the camera comes back to them after a gap. |
| {{character_last_appearance}} | Title + synopsis + last 400 chars of prose from the most recent scene where the active scene's POV character had POV. Friendly form of pov_last_scene + pov_last_scene_tail combined into a single block. |
| {{active_scene_arc}} | Single-line render of the first arc the active scene is a member of: name + kind + summary (truncated 400 chars). Empty when no scene is bound or the scene serves no arcs. |
| {{active_scene_arc_beat}} | Single-line render of the beat in active_scene_arc's ledger whose advanced_in_scene_id matches the active scene. Carries ordinal + status + description (truncated 400 chars). |
Chapter · 5 tokens
| Token | Description |
|---|---|
| {{chapter_title}} | Active chapter title. |
| {{chapter_synopsis}} | Active chapter synopsis. |
| {{chapter_word_count}} | Sum of scene word counts in the chapter. |
| {{chapter_ordinal}} | 1-based chapter position in the project. |
| {{chapter_prior_synopses}} | Bullet list of every prior scene's synopsis in the active chapter, in position order. Anchors chapter-level coherence so scene 3 of 4 knows what scenes 1 and 2 set up. |
Act · 3 tokens
| Token | Description |
|---|---|
| {{act_title}} | Active act title. |
| {{act_purpose}} | Active act purpose / function. |
| {{act_ordinal}} | 1-based act position in the project. |
Beat / Engine · 5 tokens
| Token | Description |
|---|---|
| {{active_beat_name}} | Name of the beat anchored to the active scene. |
| {{active_beat_role}} | Beat framework role (rising-action, midpoint, climax, …). |
| {{active_beat_description}} | Beat description. |
| {{previous_beat_name}} | Name of the previous beat on the spine. |
| {{next_beat_name}} | Name of the next beat on the spine. |
Story Index in scene · 10 tokens
| Token | Description |
|---|---|
| {{characters_in_scene}} | Comma-joined character names detected in the scene text. Each name appears once regardless of how many times the prose mentions it. |
| {{factions_in_scene}} | Comma-joined factions / organizations detected in the scene. |
| {{locations_in_scene}} | Comma-joined locations detected in the scene. |
| {{relationships_in_scene}} | Story-Index relationships involving any in-scene entry, rendered as bullet lines ("Tom married_to Mary: Mary died..."). Deduplicated; each edge once. |
| {{world_relationships_in_scene}} | World-Index relationships involving any in-scene world entry. Same shape as relationships_in_scene. |
| {{character_roster}} | Bullet list of every project-scope story_index character / person, ordered by importance desc, capped at 50. Descriptions truncated to 200 chars per line. |
| {{principal_characters}} | Top 10 project-scope characters by importance desc, same bullet shape as character_roster. |
| {{series_characters}} | Bullet list of series-scope characters, ordered by importance desc, capped at 50. Empty when the project isn't part of a series. |
| {{universe_characters}} | Bullet list of universe-scope characters resolved via the project's series.saga_id (universe scope = saga, post-SOLLY-326), capped at 50. Empty when the project isn't part of a saga. |
| {{universe_principal_characters}} | Top 10 universe-scope characters by importance desc, same bullet shape as universe_characters. |
Voice / Anchors · 11 tokens
| Token | Description |
|---|---|
| {{voice_register}} | Project-level voice register. |
| {{voice_tone}} | Primary tone from the voice profile. |
| {{voice_diction}} | Composite diction sliders (formality, density, contractions, latinate). |
| {{voice_taboos}} | Words and patterns the voice profile bans. |
| {{voice_reference_authors}} | Comma-joined reference authors. |
| {{author_persona_description}} | Free-form author persona description applied to this project. Drawn from the 380-template persona catalog when one is bound, otherwise the writer's saved user-persona. Resolved with project < series < world precedence. |
| {{voice_emulation}} | Composed emulation cue: '[target] — [notes]'. Style-level only. |
| {{voice_emulation_target}} | Style descriptor to emulate (e.g. 'tight prose with hard magic limits', 'lyrical historical-fantasy with quiet menace'). Describe the style itself, not a specific author. Style-level only; Pendraic never reproduces copyrighted prose verbatim. |
| {{voice_emulation_notes}} | Specifics of what to emulate from the target: sentence length, dialogue style, image density. Up to 2000 chars. |
| {{ai_writer_persona}} | Position the LLM should write FROM. Distinct from voice_emulation_target (style); this is point-of-view stage direction. Up to 1000 chars. |
| {{voice_block}} | Prompt-ready block assembling AUTHOR PERSONA / STYLE EMULATION / AI WRITER PERSONA with the safe-emulation disclaimer. Drop directly into a system prompt. Empty when no layer has voice fields set. |
Promise / Engine / Nexus · 3 tokens
| Token | Description |
|---|---|
| {{promises_summary}} | Promise rows summarized with stakes + type + statement. |
| {{nexus_summary}} | Nexus rows summarized with weight + type + statement. |
| {{engine_framework}} | Engine framework preset (Save the Cat, Hero's Journey, …). |
Pick the smallest scope that carries the meaning: {{selection}} for paragraph edits is cheaper and sharper than {{scene_text}}, which is cheaper than {{synopsis_5p}}. Match the scope to the job; don't pay for tokens you won't use.

