For AI agents: a documentation index is available at https://docs.coverbase.com/llms.txt. This page is also available in markdown by appending .md to the URL.
This is the complete list of placeholders you can write in an assessment report template. Field names are matched case-insensitively, and whitespace around the entity, the ::, and the field name is ignored.
Vendor
{{vendor::<field>}} resolves against the vendor that the assessment belongs to.
Assessment
{{assessment::<field>}} resolves against the assessment being exported. Dates are formatted YYYY-MM-DD in the timezone supplied at export time.
Services
{{services::<field>}} covers all services in scope on the assessment, flattened into a single value.
When the assessment has one service, the value is the bare field value. When it has more than one, the value becomes a bulleted block of • Service name - value, and services with no value for that field are dropped. When the assessment has no services, every services placeholder is empty.
Reviews
{{reviews::<field>}} covers the whole-assessment reviews on the assessment. Domain-scoped reviews from the risk profile are excluded, matching the other exports.
Formatting follows the same rule as services: a single review renders bare, several reviews render as a bulleted block keyed by a row label. The row label is the review name, falling back to the reviewer, falling back to Review 1, Review 2, and so on.
Findings
{{findings::<set>::<column>}} only works inside a table row. The row is cloned once per finding in the set. See repeating findings tables for how to lay the table out, and one table per risk domain to split findings by risk domain.
Sets:
Columns, usable with either set:
Rows where a column has no value render that cell empty. Each set is capped at 100 rows.
Scoping a table to one risk domain
{{findings::<set>::<risk domain>::<column>}} narrows a table to the findings whose controls belong to one risk domain, so a report can carry a separate table per domain:
Agent
{{agent::<your prompt>}} generates prose from the assessment. The whole text after :: is the prompt.
**bold**, *italic*, ***bold italic***, ==highlight==, and bulleted and numbered lists. Headings and markdown tables are not rendered. See AI-written sections for the full behavior, including timeout and failure markers.
Custom field formatting
Custom fields render according to their configured type.Select and multi-select fields with more than 10 options collapse to a plain comma-separated list of only the selected values. A marked list of 70 country options is unreadable in a report, so Coverbase drops the unselected ones automatically.
Quick lookup
I need the vendor's name and description
I need the vendor's name and description
{{vendor::name}} and {{vendor::description}}.I need the risk rating that came out of this assessment
I need the risk rating that came out of this assessment
{{assessment::residual risk}} for the outcome, {{assessment::inherent risk}} for the starting point, {{assessment::assessment score}} for the numeric score.I need a table of the issues we raised
I need a table of the issues we raised
A two-row table with
{{findings::new::id}}, {{findings::new::title}}, {{findings::new::risk level}}, and {{findings::new::due date}} in the body row.I need a separate issues table for each risk domain
I need a separate issues table for each risk domain
One table per domain, each using
{{findings::new::<risk domain>::<column>}}, for example {{findings::new::Privacy::title}}. Or keep one table and add a {{findings::new::risk domain}} cell to label each row.I need the approver and their decision
I need the approver and their decision
{{reviews::summary}} for everything on one line per reviewer, or {{assessment::approval option}} for the approval decision recorded on the assessment itself.I need a narrative paragraph that is not a field
I need a narrative paragraph that is not a field
{{agent::...}} with a specific prompt. Say who the audience is and how long the answer should be.