DEV Community

Thesius Code
Thesius Code

Posted on • Originally published at datanest-stores.pages.dev

Data Storytelling & Presentation Guide

Data Storytelling & Presentation Guide

Transform raw analysis into compelling narratives that drive action. Includes presentation templates, data visualization best practices, executive summary frameworks, and the narrative structures that turn data findings into business decisions.

Key Features

  • Narrative Frameworks — 5 story structures adapted for data presentations (Situation-Complication-Resolution, Pyramid, etc.)
  • Slide Templates — 15+ presentation layouts for insights, recommendations, and quarterly reviews
  • Chart Annotation Guide — how to add context, callouts, and narrative to every chart type
  • Executive Summary Templates — one-page formats for C-suite audiences
  • Audience Adaptation Matrix — tailor depth, language, and format to stakeholder type
  • Anti-Patterns Gallery — 20 common data presentation mistakes with before/after fixes
  • Color and Typography — accessible, professional defaults for presentations

Quick Start

  1. Identify your audience using docs/audience-matrix.md
  2. Choose a narrative structure from docs/frameworks/
  3. Select slide templates from templates/slides/
  4. Apply chart annotations using docs/annotation-guide.md

Usage Examples

Narrative Framework: SCR (Situation-Complication-Resolution)

## Monthly Retention Review — March 2026

**Situation:** Our D30 retention has been stable at 42% for the past 6 months,
aligned with our category benchmark of 40-45%.

**Complication:** In the last 3 weeks, D30 retention dropped to 34%,
concentrated in the mobile web segment (-12pp) while native app retention
held steady. This coincides with the checkout flow redesign shipped Feb 28.

**Resolution:** We recommend reverting the mobile web checkout to the
previous version while A/B testing the new flow with a 10% holdout.
Expected recovery: 2-3 weeks. Revenue impact if unaddressed: ~$45K/month.
Enter fullscreen mode Exit fullscreen mode

Python: Generating Annotated Charts

import statistics

def calculate_annotation_points(values: list[float],
                                 labels: list[str]) -> list[dict]:
    """Identify key data points worth annotating in a presentation.

    Highlights: maximum, minimum, largest change, and anomalies.
    """
    annotations = []
    max_idx = values.index(max(values))
    min_idx = values.index(min(values))

    annotations.append({
        "index": max_idx, "label": labels[max_idx],
        "value": values[max_idx], "type": "peak",
        "note": f"Peak: {values[max_idx]:,.0f}",
    })
    annotations.append({
        "index": min_idx, "label": labels[min_idx],
        "value": values[min_idx], "type": "trough",
        "note": f"Low point: {values[min_idx]:,.0f}",
    })

    # Find largest period-over-period change
    changes = [values[i] - values[i-1] for i in range(1, len(values))]
    max_change_idx = changes.index(max(changes, key=abs)) + 1
    annotations.append({
        "index": max_change_idx, "label": labels[max_change_idx],
        "value": values[max_change_idx], "type": "change",
        "note": f"Largest shift: {changes[max_change_idx-1]:+,.0f}",
    })

    return annotations

# Example usage
months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun"]
revenue = [120000, 135000, 128000, 142000, 155000, 148000]
points = calculate_annotation_points(revenue, months)
for p in points:
    print(f"  {p['label']}: {p['note']}")
Enter fullscreen mode Exit fullscreen mode

SQL: Building Presentation-Ready Summary Tables

-- Executive summary table: KPIs with period comparison
SELECT
    'Revenue' AS metric,
    SUM(CASE WHEN period = 'current' THEN amount END) AS current_value,
    SUM(CASE WHEN period = 'previous' THEN amount END) AS previous_value,
    ROUND(
        (SUM(CASE WHEN period = 'current' THEN amount END)
         - SUM(CASE WHEN period = 'previous' THEN amount END))
        / NULLIF(SUM(CASE WHEN period = 'previous' THEN amount END), 0)
        * 100, 1
    ) AS pct_change
FROM revenue_summary

UNION ALL

SELECT
    'Active Users',
    COUNT(DISTINCT CASE WHEN period = 'current' THEN user_id END),
    COUNT(DISTINCT CASE WHEN period = 'previous' THEN user_id END),
    ROUND(
        (COUNT(DISTINCT CASE WHEN period = 'current' THEN user_id END)
         - COUNT(DISTINCT CASE WHEN period = 'previous' THEN user_id END))
        * 100.0
        / NULLIF(COUNT(DISTINCT CASE WHEN period = 'previous' THEN user_id END), 0),
        1
    )
FROM user_activity;
Enter fullscreen mode Exit fullscreen mode

Audience Adaptation Matrix

Audience Depth Format Lead With Avoid
C-Suite High-level 3-5 slides Business impact ($) Technical jargon
VP/Director Summary + detail 8-12 slides Trends and recommendations Raw data tables
Manager Detailed 10-15 slides Actionable insights Abstract strategy
Analyst peers Full depth Notebook or doc Methodology and caveats Over-simplification

Best Practices

  1. Lead with the "so what" — state your conclusion on slide 1, then support it
  2. One message per chart — if a chart needs more than one sentence to explain, split it
  3. Annotate, don't decorate — every visual element must carry information
  4. Use the 3-minute rule — if you can't explain a slide in 3 minutes, it's too complex
  5. End with a clear ask — every presentation should close with a specific recommendation and next step
  6. Test with one person first — present to a colleague before the stakeholder meeting

Troubleshooting

Issue Cause Fix
Audience disengaged Too much data, no narrative Restructure with SCR framework; cut 50% of slides
"What should we do?" after presenting Analysis without recommendation Always end with a specific action and expected outcome
Stakeholders question your numbers No methodology context Add a brief "How we measured this" appendix slide
Charts look cluttered Too many series or data points Aggregate, filter to top N, or use small multiples

This is 1 of 11 resources in the Data Analyst Toolkit toolkit. Get the complete [Data Storytelling & Presentation Guide] with all files, templates, and documentation for $25.

Get the Full Kit →

Or grab the entire Data Analyst Toolkit bundle (11 products) for $129 — save 30%.

Get the Complete Bundle →


Related Articles

Top comments (0)