Narrative Snippets: Reusable Boilerplate Prose
Define reusable paragraph templates with embedded tokens. Write the boilerplate once, fill it per appraisal, ship it in any number of Word templates.
Every roof inspection report you write starts with roughly the same paragraph: "On [date], I inspected the roof at [address]. The roof is comprised of [material] with [age] years of service…" You retype it on every case, occasionally forgetting to update one of the fields, and over a hundred reports the time adds up to a full work week of pure boilerplate.
Narrative Snippets are how you write that paragraph once and never write it again. The boilerplate lives at the workspace level with tokens like {d.insuredName} and {d.custom.roofType} embedded. On every appraisal the snippet auto-fills with the case's actual data, and you can hand-edit before generating. This is an advanced feature, but if you write similar prose section across dozens of cases, the leverage is enormous.
This article covers creating a snippet slot, what tokens it accepts, how per-case editing works, the stale-token detection that catches when underlying data changes, and how to reference snippets in your Word templates.
The big idea
Creating a Snippet Slot
Go to Settings → Narrative Snippets
You'll see your existing slots (if any) and a New snippet button.
Click "New snippet"
Enter a Name (camelCase token, e.g. roofNarrative) and a Label (what shows on the dashboard and as the section header, e.g. Roof Inspection Narrative).
Write the Default body
This is the boilerplate. Use the Insert token button to embed standard tokens like {d.insuredName}, custom field tokens like {d.custom.causeOfLoss}, and filter expressions like {d.comparisonRows[where coverage='Coverage A'].awardRcv}.
Save
The slot is now available on every appraisal in the workspace.
What You Can Put in a Default Body
Snippet bodies accept three kinds of tokens. Loop iterators ([i], [i+1]) are NOT allowed — snippets resolve to literal text, so they need single-value tokens.
| Token Type | Example | Resolves To |
|---|---|---|
| Standard tokens | {d.insuredName} | The insured's name on the appraisal |
| Custom field tokens | {d.custom.causeOfLoss} | The custom field value on the appraisal |
| Data table filters | {d.comparisonRows[where coverage='Dwelling'].awardRcv} | A single value pulled from one matching row in a Data Table |
| Plain prose | On {d.dateOfLossLong}, the property… | Text wraps around tokens naturally |
No loop iterators
Per-Appraisal Editing
On any appraisal, the Report Details tab shows a Narrative Snippets card with one editor per active slot. The first time you click into the textarea, AwardLettr resolves your default body against this case's data and saves the result as the editable copy. From there you can tweak the wording, add details, delete sentences — whatever the case needs.
Default body
Workspace-level template
Click into editor
Tokens resolve against case data
Per-case copy saved
Edit freely; original is preserved
Render PDF
Your edited text is what generates
Stale Token Detection
When you first resolve a snippet, AwardLettr captures a snapshot of every token value used. Later, if the underlying data changes (new claim number, edited custom field, updated comparison row), the snapshot diverges from current values and the editor surfaces an amber tokens may be stale badge.
Refresh Tokens to re-resolve
Referencing Snippets in Templates
Each slot exposes a single token in your Word document — drop it where you want the resolved prose to appear:
# In your Word template:
{d.snippetLabel.roofNarrative} ← optional dynamic header (renders the slot's label)
{d.snippet.roofNarrative:html} ← the body, rendered as HTML so bullets, bold, italic flow through
# (use {d.snippet.x:html(nospace)} if you want tighter paragraph spacing)Always reference snippets with :html
Why use {d.snippetLabel.x} for the header
Worked Example: Roof Inspection Narrative
- Settings → Narrative Snippets → New snippet. Name: roofNarrative. Label: Roof Inspection Narrative.
- Default body: "On {d.inspectionDateLong}, I inspected the roof at {d.lossLocation}. The roof is comprised of {d.custom.roofType} with {d.custom.roofAge} years of service. Visible damage is consistent with the reported {d.custom.causeOfLoss} event."
- Save. The slot is now active on every appraisal.
- On a specific case: open Report Details, click into the Roof Inspection Narrative editor. The body resolves with the case's actual inspection date, address, roof type, age, and cause of loss.
- Edit as needed for the specific case (add specifics, mention notable conditions, etc.).
- In your Word template, put {d.snippetLabel.roofNarrative} as a header and {d.snippet.roofNarrative:html} as a paragraph. Generate the PDF — your edited prose lands in the right place.
Reserved Names
You can't name a snippet slot after a reserved AwardLettr token (snippet, snippetEnabled, snippetLabel, etc.) — the editor rejects the name.
Common Snippets Customers Build
- roofNarrative — Roof inspection findings
- interiorNarrative — Interior damage walkthrough
- exteriorNarrative — Exterior siding/trim/flashing review
- documentReview — Summary of materials reviewed
- riskParagraph — Coverage and policy risk discussion
- outcomeSummary — Closing paragraph with award rationale
- introductionParagraph — Standard opening per case type
Related Articles
Data Tables: Repeating Sections in Your Templates
Define per-appraisal tables (comparison rows, weather events, roof slopes) that loop in your Word templates with auto-totaled currency columns.
Computed Defaults: Auto-Fill Custom Fields
Make a custom field auto-compute its value from a Data Table cell or by aggregating other custom fields. The user can still type a value to override.
Master Templates: One Template, Many Variations
Build one Word template with every possible section, then enable only the relevant ones per appraisal. Disabled sections drop out of the rendered PDF.