Overview
Quarterly business reviews (QBRs) follow a predictable format: KPIs vs. plan, trends, risks, and next steps. The pptx.dev API's quarterly-review narrative automates this structure so you can generate consistent QBR decks from your data.
The Quarterly Review Structure
The quarterly-review narrative generates:
- KPIs — quarterly metrics vs. plan, shown as charts
- Risks — identified risks with mitigations
Full API Example
curl -X POST https://api.pptx.dev/v1/presentations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Q1 2026 Business Review",
"narrative": "quarterly-review",
"colorScheme": "slate-gray",
"fontScheme": "calibri",
"slides": [
{
"layout": "title-center",
"content": {
"heading": "Q1 2026 Business Review",
"subheading": "Board Meeting — March 28, 2026"
}
},
{
"layout": "number-4x-title-center",
"content": {
"heading": "Q1 Scorecard",
"items": [
{ "value": "$4.8M", "label": "Revenue (Plan: $4.5M)" },
{ "value": "92%", "label": "Gross Margin" },
{ "value": "1,240", "label": "Active Customers" },
{ "value": "72", "label": "NPS Score" }
]
}
},
{
"layout": "chart-1x-title-center",
"content": {
"heading": "Revenue: Actual vs. Plan",
"chart": {
"type": "CLUSTERED_COLUMN",
"categories": ["Jan", "Feb", "Mar"],
"series": [
{ "name": "Actual", "values": [1500, 1600, 1700] },
{ "name": "Plan", "values": [1400, 1500, 1600] }
]
}
}
},
{
"layout": "chart-2x",
"content": {
"heading": "Customer Metrics",
"items": [
{
"chart": {
"type": "LINE_WITH_MARKERS",
"categories": ["Jan", "Feb", "Mar"],
"series": [{ "name": "New Customers", "values": [45, 52, 68] }]
}
},
{
"chart": {
"type": "DOUGHNUT",
"categories": ["Enterprise", "Mid-Market", "SMB"],
"series": [{ "name": "Mix", "values": [40, 35, 25] }]
}
}
]
}
},
{
"layout": "list-3x-title-center",
"content": {
"heading": "Key Risks & Mitigations",
"items": [
{
"heading": "Churn in SMB segment",
"body": "Mitigation: Launching self-serve onboarding in Q2 to reduce time-to-value."
},
{
"heading": "Engineering hiring behind plan",
"body": "Mitigation: Opened remote positions and partnered with two new recruiting firms."
},
{
"heading": "Competitor pricing pressure",
"body": "Mitigation: Shipping enterprise tier with custom SLAs in April."
}
]
}
},
{
"layout": "list-3x-title-center",
"content": {
"heading": "Q2 Priorities",
"items": [
{ "heading": "Launch Enterprise Tier", "body": "Custom pricing, SLAs, and SSO" },
{ "heading": "Expand Sales Team", "body": "Hire 3 AEs for mid-market segment" },
{ "heading": "Reduce Churn", "body": "Self-serve onboarding and health scoring" }
]
}
}
]
}'
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 response = await fetch("https://api.pptx.dev/v1/presentations", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.PPTX_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
title: `Q1 2026 Business Review`,
narrative: "quarterly-review",
colorScheme: "slate-gray",
fontScheme: "calibri",
slides: buildQBRSlides(kpis, risks),
}),
});
This pattern lets you generate consistent QBR decks in seconds instead of hours.
Best Practices for QBRs
- Always show plan vs. actual. Context matters more than raw numbers.
- Lead with the scorecard. Use a
number-4xlayout 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