Quote Templates
Build reusable quote templates with predefined sections, default line items, markup rules, and dynamic formulas. Generate complex quotes in seconds, not hours.
For a high-level comparison of how templates and data schemas differ, see the Templates vs. Data Dictionaries overview.
Quickstart
Navigate to Settings > Quote Templates to build a library of standardized pricing models. Click the Add (plus) icon to quickly create a new template. You can also save any active quote as a template directly from the quote editor.
In-Depth
Quote Templates encode your organization’s pricing logic, ensuring complex quotes are generated in seconds.
Anatomy of a template
A quote template captures:
- Name: The title used to identify the pricing model.
- Description: A brief summary of the template’s intended use case.
- Sections: Logical groupings of work (e.g., “Phase 1: Discovery”). Must either contain items directly or have at least two subgroups.
- Line Items: Default roles or materials. Includes a mandatory Type (Resource or Material). Mark specific items as Optional to exclude them from overall totals.
- Repeat Contexts: Sections and items can include a “Repeat” value pointing to a list variable. Generated instances inherit properties, allowing child items to reference sub-field variables directly.
- Pricing Logic: Default costs, markup percentages, and discounts.
- Dynamic Formulas: Expressions that evaluate against engagement data to automatically calculate pricing.
AI Template Generation
Automatically build or modify your quote templates using AI.
- Open the Quote Template editor and expand the Template Details.
- Upload an Example Document Link (PDF, DOCX, XLSX).
- Click the AI generate button (sparkle icon).
- Enter instructions and optionally select Start Fresh.
- Click Continue. A progress dialog shows real-time steps as the AI generates the template.
Dynamic Formulas
Servantium includes a robust evaluation engine for item formulas. Beyond standard math (+, -, *, /), you can use specialized functions:
- Standard Operations: Use
len(),max(),min(),int(),float(),str(),bool(),sum(),sum_ints(),round(),abs(),divmod(), andpow(). - Data Structures: Use
any(),all(),list(),dict(),set(),sorted(), andrange(). Use aliasestrue,false,null,True,False,None. - Tiered Pricing: Use
tier(value, thresholds, results). Business field names liketierare now safely recognized as variables without conflicting with the built-in function. - Product Lookups: Use
product(external_id). - Bitmasks: Use
get_bitmask(product_id). - Label Resolution: Use
label(field)to translate a chip/tag key to its display label (e.g.,label(service_tier)). The formula engine is schema-aware and automatically pulls options from your linked engagement template. Or use auto-generated<field>_labelvariables (e.g.,service_tier_label). - String Literals: Text wrapped in single or double quotes (e.g.,
status == 'Active') is evaluated strictly as a string constant and will not trigger false variable dependency errors. - Repeat Context Variables: Use
_item(current list value),_item_label(display label), and_index(position). Child items inherit sub-field variables automatically. - Dynamic Text & Financials: Calculate
name,cost,markup, ordiscountwith formulas prefixed by=. String methods (.title(),.upper()) and concatenation are supported. Failures safely fall back to 0.0 or raw strings.
The system validates formulas for proper Python syntax before execution.
The Hydration Process
When applied to a quote:
- The system pulls the latest rates from your Service Catalog.
- It evaluates all dynamic formulas against the engagement’s data.
- It populates the quote with the resulting structure.
Related
Need more help?
Our support team is available to assist you.
Contact Support