Overview
Quarterly business reviews (QBRs) follow a predictable format: KPIs vs. plan, trends, risks, and next steps. The quarterly-review narrative guides that structure; your application authors the complete slides from your data.
The Quarterly Review Structure
Use the quarterly-review narrative to guide these authored sections:
- KPIs — quarterly metrics vs. plan, shown as charts
- Risks — identified risks with mitigations
Full API Example
Use this complete OPF document with the complete authenticated API recipe, which saves the response bytes as a .pptx file.
{
"$schema": "https://openpresentation.org/schema/opf/v1",
"name": "Q1 2026 Business Review",
"slides": [
{
"layout": "cover",
"title": "Q1 2026 Business Review",
"subtitle": "Board Meeting — March 28, 2026",
"design": {
"titleAlignment": "center"
}
},
{
"layout": "metrics",
"title": "Q1 Scorecard",
"blocks": [
{
"metric": {
"value": "$4.8M",
"label": "Revenue (Plan: $4.5M)"
}
},
{
"metric": {
"value": "92%",
"label": "Gross Margin"
}
},
{
"metric": {
"value": "1,240",
"label": "Active Customers"
}
},
{
"metric": {
"value": "72",
"label": "NPS Score"
}
}
],
"design": {
"titleAlignment": "center",
"contentAlignment": "center"
}
},
{
"layout": "chart",
"title": "Revenue: Actual vs. Plan",
"chart": {
"type": "column",
"data": {
"columns": [
"Series",
"Jan",
"Feb",
"Mar"
],
"rows": [
[
"Actual",
1500,
1600,
1700
],
[
"Plan",
1400,
1500,
1600
]
]
}
},
"design": {
"titleAlignment": "center",
"contentAlignment": "center"
}
},
{
"layout": "chart",
"title": "Customer Metrics",
"blocks": [
{
"chart": {
"type": "line-with-markers",
"data": {
"columns": [
"Series",
"Jan",
"Feb",
"Mar"
],
"rows": [
[
"New Customers",
45,
52,
68
]
]
}
}
},
{
"chart": {
"type": "doughnut",
"data": {
"columns": [
"Series",
"Enterprise",
"Mid-Market",
"SMB"
],
"rows": [
[
"Mix",
40,
35,
25
]
]
}
}
}
],
"design": {
"contentAlignment": "center"
}
},
{
"layout": "list",
"title": "Key Risks & Mitigations",
"blocks": [
{
"items": [
{
"text": "Churn in SMB segment",
"description": "Mitigation: Launching self-serve onboarding in Q2 to reduce time-to-value."
}
]
},
{
"items": [
{
"text": "Engineering hiring behind plan",
"description": "Mitigation: Opened remote positions and partnered with two new recruiting firms."
}
]
},
{
"items": [
{
"text": "Competitor pricing pressure",
"description": "Mitigation: Shipping enterprise tier with custom SLAs in April."
}
]
}
],
"design": {
"titleAlignment": "center",
"contentAlignment": "center"
}
},
{
"layout": "list",
"title": "Q2 Priorities",
"blocks": [
{
"items": [
{
"text": "Launch Enterprise Tier",
"description": "Custom pricing, SLAs, and SSO"
}
]
},
{
"items": [
{
"text": "Expand Sales Team",
"description": "Hire 3 AEs for mid-market segment"
}
]
},
{
"items": [
{
"text": "Reduce Churn",
"description": "Self-serve onboarding and health scoring"
}
]
}
],
"design": {
"titleAlignment": "center",
"contentAlignment": "center"
}
}
],
"narrative": "business-review",
"design": {
"colorScheme": "slate-gray",
"fontScheme": "calibri"
},
"catalogs": {
"default": {
"source": "https://www.pptx.gallery",
"narratives": {
"business-review": {
"name": "Business Review",
"summary": "Full-loop review of recent activities to identify achievements, address challenges, and plan improvements. Goes deeper than a status update — closer to a customer-facing or partner-facing relationship review.",
"audienceFit": [
"customers",
"partners",
"stakeholders",
"leadership"
],
"duration": {
"min": 30,
"max": 90
},
"tags": [
"customer-relationship",
"review",
"operations"
],
"beats": [
{
"id": "logo",
"name": "Logo",
"description": "Cover slide with logos and the review period. Establishes brand identity and signals the level of formality the rest of the deck will hold to.",
"layout": "cover",
"instructions": "Identity & representation",
"type": "text"
},
{
"id": "opening",
"name": "Opening",
"description": "Frame the meeting context and the goals for the next hour. What you'll cover, what decisions you want, what you don't intend to relitigate.",
"instructions": "Meeting context & goals",
"type": "text",
"layout": "text"
},
{
"id": "review",
"name": "Review",
"description": "Outline the recent activities in scope: launches, projects, programs. Just enough scope-setting that the rest of the deck has shared vocabulary.",
"instructions": "Outline recent activities",
"type": "text",
"layout": "text"
},
{
"id": "successes",
"name": "Successes",
"description": "Recognize the achievements in the review window. Lead with outcomes the audience cares about, not effort. Specific moves earn more credibility than aggregate progress.",
"instructions": "Recognize achievements",
"type": "text",
"layout": "text"
},
{
"id": "challenges",
"name": "Challenges",
"description": "Address the problems faced honestly. What didn't work, what's still hard. Naming challenges in front of the audience earns more trust than letting them ask.",
"instructions": "Address problems faced",
"type": "text",
"layout": "text"
},
{
"id": "solutions",
"name": "Solutions",
"description": "Discuss the fixes already implemented. Pair each with the result it produced, or, if it's still in flight, with the leading indicator you're watching.",
"instructions": "Discuss implemented fixes",
"type": "text",
"layout": "text"
},
{
"id": "outcome",
"name": "Outcome",
"description": "Display the results achieved across the review window. Let the data carry the slide; supporting commentary should explain context, not inflate the numbers.",
"instructions": "Display results achieved",
"type": "text",
"layout": "text"
},
{
"id": "insights",
"name": "Insights",
"description": "Highlight the key learnings. What was confirmed, what surprised you, what the audience should take away. Insights are the slides people quote in follow-on meetings.",
"instructions": "Highlight key learnings",
"type": "text",
"layout": "text"
},
{
"id": "future-strategy",
"name": "Future Strategy",
"description": "Define the next steps and the strategic direction that follows from the review. Specific enough to sequence; flexible enough to adapt.",
"instructions": "Define next steps",
"type": "text",
"layout": "text"
},
{
"id": "feedback",
"name": "Feedback",
"description": "Capture audience thoughts. Two or three explicit prompts where you want input or alignment. The strength of a relationship review is in the conversation it provokes.",
"instructions": "Capture audience thoughts",
"type": "text",
"layout": "text"
},
{
"id": "next-review",
"name": "Next Review",
"description": "Plan for follow-up: when the next review happens, what evidence you'll bring, what decisions are deferred until then. Continuity is the point of the cadence.",
"instructions": "Plan for follow-up",
"type": "text",
"layout": "text"
},
{
"id": "closing",
"name": "Closing",
"description": "Recap and express optimism about the path forward. Close with the next concrete step and the people responsible for it.",
"layout": "cover",
"instructions": "Recap and express optimism",
"type": "text"
}
]
}
},
"colorSchemes": {
"slate-gray": {
"name": "Slate Gray",
"summary": "Neutral gray palette for understated executive communication.",
"description": "A disciplined gray scale with strong neutral contrast. Use it when the content should feel calm, mature, and analytical.",
"accent1": "#9E9E9E",
"accent2": "#424242",
"accent3": "#616161",
"accent4": "#757575",
"accent5": "#9E9E9E",
"accent6": "#212121",
"dark1": "#000000",
"dark2": "#1B1B1B",
"light1": "#FFFFFF",
"light2": "#F8F8F8",
"hyperlink": "#212121",
"followedHyperlink": "#424242",
"tags": [
"neutral",
"minimal",
"mature",
"analytical",
"restrained"
]
}
},
"fontSchemes": {
"calibri": {
"name": "Calibri",
"major": "Calibri",
"minor": "Calibri",
"type": "sans-serif",
"app": "powerpoint",
"languageFamily": "latin",
"languages": [],
"textSample": "Smooth professional look",
"description": "Calibri is a sans serif OPF font scheme for Latin presentations, using Calibri for both headings and body text."
}
},
"layouts": {
"cover": {
"name": "Cover",
"summary": "The opening slide: title, subtitle and an optional picture.",
"tags": [
"Openers and closers"
],
"design": {
"titleAlignment": "center",
"contentAlignment": "center"
},
"direction": "row",
"regions": [
{
"name": "title"
},
{
"name": "media",
"accepts": [
"image",
"video"
],
"role": "media",
"flow": "none",
"bleed": true
}
],
"description": "Open a presentation with its subject and a short introduction. Add a picture when it helps establish the context.",
"preview": {
"vectorSrc": "https://www.pptx.gallery/layout-previews/cover.svg"
}
},
"metrics": {
"name": "Metrics",
"summary": "One to six headline numbers, with an optional note.",
"tags": [
"Numbers"
],
"design": {
"contentAlignment": "center"
},
"direction": "column",
"regions": [
{
"name": "title"
},
{
"name": "metrics",
"accepts": [
"metric",
"group"
],
"role": "primary",
"flow": "grid",
"anchor": "middle"
},
{
"name": "note",
"size": "auto",
"accepts": [
"text",
"list"
],
"role": "supporting",
"flow": "none"
}
],
"description": "Highlight a small set of important numbers. Give each number a label and the context needed to interpret it.",
"preview": {
"vectorSrc": "https://www.pptx.gallery/layout-previews/metrics.svg"
}
},
"chart": {
"name": "Chart",
"summary": "One to six charts, with an optional note.",
"tags": [
"Visuals"
],
"direction": "column",
"regions": [
{
"name": "title"
},
{
"name": "charts",
"accepts": [
"chart",
"group"
],
"role": "primary",
"flow": "grid"
},
{
"name": "note",
"size": "auto",
"accepts": [
"text"
],
"role": "supporting",
"flow": "none"
}
],
"description": "Give a chart enough space to show its evidence. Use the title to state the conclusion and labels to explain the measures.",
"preview": {
"vectorSrc": "https://www.pptx.gallery/layout-previews/chart.svg"
}
},
"list": {
"name": "List",
"summary": "Bulleted or numbered points; one long list flows into columns.",
"tags": [
"Text"
],
"direction": "column",
"regions": [
{
"name": "title"
},
{
"name": "body",
"accepts": [
"list",
"text",
"group"
],
"role": "primary",
"flow": "auto",
"listColumns": "auto"
}
],
"description": "Present several related points in a clear sequence. Use bullets for independent points or numbered items for an ordered list.",
"preview": {
"vectorSrc": "https://www.pptx.gallery/layout-previews/list.svg"
}
}
}
}
}
}
Automating QBR Generation
Since QBRs follow the same structure every quarter, you can automate deck generation by pulling data from your analytics tools:
const kpis = await fetchQuarterlyKPIs("2026-Q1");
const risks = await fetchRiskRegister();
const document = {
name: "Q1 2026 Business Review",
narrative: "business-review",
design: { colorScheme: "slate-gray", fontScheme: "calibri" },
slides: buildQBRSlides(kpis, risks),
};
The builder uses the current published business-review narrative; the portable example above embeds its own quarterly-review record. Your builder supplies the slides in the intended order. Send its complete document using the complete authenticated API recipe.
Best Practices for QBRs
- Always show plan vs. actual. Context matters more than raw numbers.
- Lead with the scorecard. Use a
metricslayout for the headline metrics. - Use
slate-grayorforest-greenfor a professional, understated tone. - End with priorities, not risks. Leave the audience with forward momentum.
Next Steps
- Learn about KPI number slides for scorecards
- Explore chart types for data visualization
- Browse all narratives