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.

83 static tokens · 8 parameterized templates · across 10 scopes.

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 · 18 tokens

TokenDescription
{{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).

Series · 13 tokens

TokenDescription
{{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).

World · 14 tokens

TokenDescription
{{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.

Scene · 5 tokens

TokenDescription
{{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.

Chapter · 4 tokens

TokenDescription
{{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.

Act · 3 tokens

TokenDescription
{{act_title}}Active act title.
{{act_purpose}}Active act purpose / function.
{{act_ordinal}}1-based act position in the project.

Beat / Engine · 5 tokens

TokenDescription
{{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 · 5 tokens

TokenDescription
{{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.

Voice / Anchors · 13 tokens

TokenDescription
{{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}}Composed: 'Age N, [description]'. The author persona applied to this project, resolved through project<series<world inheritance.
{{author_persona_age}}Author age (1-120) applied to this project. Empty when no layer in the inheritance chain has set it.
{{author_persona_description}}Free-form author persona description applied to this project. Up to 1000 chars. 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

TokenDescription
{{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.