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

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

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

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

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

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.

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

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.

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

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.

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

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 · 10 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.

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

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_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

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.