Documents & Proposals
Generate client-ready SOWs and proposals straight from your engagement data. Scope, pricing, deliverables, and team flow into branded DOCX or PDF in one click—no copy-paste.
Servantium generates client-ready documents from your engagement data. Scope, pricing, deliverables, and team information flow directly from your quotes and engagement details into professional PDFs, eliminating manual copy-pasting.
Generating a document
The Generate Document button automatically hides itself if your organization has no active templates configured for the record type you are currently viewing.
-
Open the record you want to generate a document from (such as a Quote, Engagement, Project Plan, Account, or Contact).
-
Click the Generate Document button (pen icon).
-
A dialog appears showing available document templates. The system automatically filters this list to show templates matching your current context.
-
Servantium analyzes the template against your current data. If the template contains invalid variables or logic errors, a Template Evaluation Errors dialog details the specific issues to fix.
-
If the template is valid but missing required information, a Missing Information dialog appears. Servantium automatically deduplicates repeated variables across the template into a single input field while prioritizing clean, unpiped variable names, preserving existing values, and retaining error diagnostics. Embedded list properties and mapped subcollection section attributes are rendered as editable fields or interactive grids, with section writes targeting child subcollection records directly.
-
Servantium merges your record’s data with the template. The available merge data is dynamically defined by the template’s Data Spec.
-
If your template includes AI snippets undergoing generation, the document displays a real-time Awaiting Snippets progress screen. This view shows completed vs. total counts (e.g., “Generating snippets (3 of 5 completed)… ”), percentage progress, and a collapsible failure diagnostics list if any snippet encounters an issue. Once all snippets complete, the document automatically resumes compiling the final PDF.
-
The generated PDF is securely stored and added to the target record’s Documents tab.
Viewing documents
You can view generated documents in two places:
- Engagement Level: Navigate to the Documents tab within an engagement to see all documents generated across all quotes.
- Quote Level: Open a specific quote and navigate to its dedicated Documents tab to see only the documents generated from that quote.
Click any document to open its dedicated workspace. The workspace features an interactive split-screen layout:
- PDF Viewer: Displays the generated document.
- Variables Panel: A side panel displaying all the template variables, custom fields, embedded lists, and snippets used in the document. It is organized into two dedicated tabs: Snippets and Variables. Within the Variables tab, field groups (like Engagement, Quote, Document, or Resource) are sequenced strictly based on their first appearance in your document template. Subcollection section properties (such as quote section attributes) are partitioned into distinct sub-cards grouped by section name with section iconography and counts. Section headers and sub-cards automatically truncate long titles to prevent layout overflow on narrow viewports or when collapsed. Template variables automatically hydrate live values from ancestor records (Engagement, Account, Contact, Quote) upon mount, ensuring forms display up-to-date data. Embedded list variables render as interactive tabular grids where you can edit rows directly. Tab badges show the count of editable items. The Snippets tab strictly displays instantiated snippets attached to the parent engagement or quote, excluding uninstantiated library templates. You can add new snippets directly from the panel using the Add Snippet button, or delete existing snippets using the delete icon on any snippet card (with confirmation). Snippets support rich editing natively within the panel with real-time reactivity: Markdown snippets feature a visual editor (with a raw source toggle), HTML snippets provide a live preview with a source code toggle (which gracefully displays a paused placeholder when modals are open to prevent click interference), and plain text is handled via standard fields. Each snippet card displays a last-modified indicator or progress spinner while saving. Deleting or updating a snippet updates its local state immediately without triggering full panel reloads or resetting active form entries. All edits are protected by a server-silent handshake, ensuring your active keystrokes are never overwritten by delayed background saves. You can edit values across both tabs and save them simultaneously without navigating back to the parent records.
- Status Dropdown: Located in the header, this allows you to manage the document’s lifecycle state (e.g., Draft, Under Review, Approved) using interactive status chips.
Use the Expand/Collapse icon in the header to toggle the split view between 25% and 75% widths. Expanding the Variables Panel to 75% on larger screens automatically shifts the Variables tab into a two-column layout, giving you a wider form for editing complex data.
Document templates
Document templates define the structure and formatting of your generated output. They are managed in Settings > Document Templates.
Creating a document template
-
Go to Settings and navigate to the Document Templates tab.
-
Click Create to add a new template.
-
Enter a title for the template (e.g., “Standard SOW”).
-
Upload the template file or configure the HTML Content. If using a DOCX file, include merge fields that correspond to your data structure.
Template merge fields
Templates can reference any data dynamically mapped by the template’s Data Spec. Jinja tag extraction automatically resolves embedded custom lists (with inferred column schemas), expands mapped section attributes into per-section fields, supports whitespace control syntax ({%-, -%}), and filters out Jinja loop built-ins (like loop.index) and loop-local variables from top-level merge tags.
Root Objects: Merge payloads only include valid top-level objects defined by the template’s Data Spec (e.g., engagement, quote).
Custom Data: Ensure keys match your Data Dictionary exactly. Do not chain deeply.
Subcollections: Document merge payloads provide subcollections as dictionary maps. Iterate using .values().
HTML Syntax: Use bracket notation for dictionary properties (quote['total']). Avoid dot notation for keys like items to prevent rendering crashes.
Snippets: Markdown snippets (md, aimd) are automatically converted to HTML during generation.
Regenerating documents
Documents are snapshots. If you update your quote or engagement details, generate a new document to reflect the changes. Previous versions remain in the Documents tab for reference.
Document regeneration controls (such as the toolbar refresh button) are strictly available when the document is in the Generated state. Regeneration cannot be triggered while the document is actively compiling or in the Awaiting Snippets state. If generation fails, a dedicated Try Again button on the error screen allows you to re-trigger compilation safely. When regenerating a document, any missing or deleted engagement snippets are safely skipped rather than re-created, preserving your intentional deletions.
Alternatively, if you expand the Variables Panel, make edits to the data, and then collapse the panel back to its default size, Servantium will automatically save your changes and regenerate the document asynchronously in the background.
What’s next?
- Quotes & Pricing: The data that feeds your documents
- Notes & AI: Capture context that enriches your proposals
- Document Templates: Manage document templates
Need more help?
Our support team is available to assist you.
Contact Support