Pitch Decks
  • Home
  • VC and BA Survey
  • Benchmarking Study
  • Manipulation Checks
  • Study 1 (Field Experiment)
  • Study 2 (Online Experiments)

On this page

  • 1 Introduction
  • 2 Data
  • 3 Descriptives
  • 4 Plot

VC and BA Survey

  • Show All Code
  • Hide All Code

  • View Source

Replication Report

Author
Affiliation

blinded for review

blinded for review

1 Introduction

To investigate investors’ perceptions of visual design, we conducted a survey with 188 venture capitalists (VCs) and business angels (BAs). They were first asked to independently assess the importance of content quality and visual design. Subsequently, they were required to directly compare the relative importance of the two factors.

In what follows, we will shortly describe the results of the survey. As this report is dynamically created with R and Quarto, we also report all code. However, for readability, code is hidden by default and only the relevant results are shown. You can expand individual code blocks by clicking on them, or use the </> Code button (top-right) to reveal all code or view the complete source.

Code
# setup
library(dplyr)
library(ggplot2)
library(patchwork)
library(knitr)
library(kableExtra)
# further packages that are loaded on demand are:
# - here
# - readr

# set option to disable showing the column types when loading data with `readr`
options("readr.show_col_types" = FALSE)

2 Data

We asked all investors the following three questions regarding the importance of content quality and visual design:

  • Importance of content: From your experience, how important is the quality of the content for your initial decision when evaluating a startup pitch deck? (scale from 1 = not important to 7 = extremely important)
  • Importance of design: From your experience, how important is the visual design for your initial decision when evaluating a startup pitch deck? (scale from 1 = not important to 7 = extremely important)
  • Relative importance: Which aspect is more important for your initial decision when evaluating a pitch deck? (slider from 0–100; left anchor: visual design is more important, right anchor: quality of content is more important; default at mid-point)

Note that in this report, we load the de-identified and anonmyzed dataset. Please consult the online repository for the code that processed the raw data.

Code
data_dir <- 'replication_reports/data'

# -----------------------------------------------------------------------------
#
# Getting and preparing the datasets
d <- readr::read_csv(here::here(data_dir, 'Survey.csv'))

# make variable names more coding friendly and easier to understand
d <- d |>
  rename(duration_study = `Duration (in seconds)`,
         relative = relative_1,
         investment_experience = inv_exp,
         gender = `gender `
         )

# convert gender to factor
d$gender <- factor(d$gender)

3 Descriptives

Table 1 gives a demographic overview of the dataset, and the importance ratings are shown in Table 2.

Code
d |> 
  summarize(N = n(),
            Age = round(mean(age, na.rm = T), 1),
            `% Female`= round(prop.table(table(gender))["Female"]*100, 1),
            `Years Invest. Exp.` = round(mean(d$investment_experience), 1)
            ) |> kbl(align = rep('c', 4))
Table 1: Demographic overview of survey data
N Age % Female Years Invest. Exp.
188 35.7 36.2 5.8
Code
d |> summarize(N = n(), Mean = mean(content), SD = sd(content), Min = min(content), Max = max(content)) -> imp_content
d |> summarize(N = n(), Mean = mean(design), SD = sd(design), Min = min(design), Max = max(design)) -> imp_design
d |> summarize(N = n(), Mean = mean(relative), SD = sd(relative), Min = min(relative), Max = max(relative)) -> imp_relative

bind_rows(imp_content, imp_design, imp_relative, .id = "Outcome") -> res_importance
res_importance$Outcome <- c("Content", "Design", "Relative")

res_importance |> kbl(digits = 2, format.args = list(decimal.mark = ".", big.mark = ",")) |> kable_styling()
Table 2: Importance ratings for content quality, visual design, and their relative tradeoff
Outcome N Mean SD Min Max
Content 188 6.32 0.71 3 7
Design 188 5.77 1.04 2 7
Relative 188 74.64 22.71 0 100

When asked to rate the importance of content quality and visual design independently, the VCs and BAs rated their importance similarly high (content quality: M = 6.32, SD = 0.71; visual design: M = 5.77, SD = 1.04). However, when forced to make a direct comparison of the relative importance, the investors rated content to be about 3 times more important than design (74.64% vs. 25.36%; SD = 22.71).

4 Plot

Figure 1 summarizes the results of the survey.

Code
# define colors
blue_main <- "#297FB8"
blue_dark <- "#2D3E50"
blue_light <- "#A0ABBF"

# create new dataset for plotting which has transformed means that add up to 100
# (to be used in a stacked bar plot)

# calculate means
d |> summarise(mean_content = mean(content), mean_design = mean(design)) -> means
# transform means
means |> mutate(mean_content_100 = mean_content / (mean_content + mean_design) * 100,
                mean_design_100 = mean_design / (mean_content + mean_design) * 100) -> means
# reshape data for plotting
data.frame(category = factor(c("Content Quality", "Visual Design")),
           importance = c(means$mean_content_100, means$mean_design_100),
           importance_raw = c(means$mean_content, means$mean_design)) -> plot_data
# change reference level of category
plot_data$category <- relevel(plot_data$category, ref = "Visual Design")

# create plot (importance ratings of content and design)
p1 <- ggplot(plot_data, aes(x = "", y = importance_raw, fill = category)) +
  geom_bar(stat = "identity", width = .5, position = "fill") +
  geom_text(aes(label = round(importance_raw, 2)), position = position_fill(vjust = 0.75), size = 5.5, color = c("white", "black"), family = "Roboto Condensed") +
  geom_text(aes(label = category), position = position_fill(vjust = 0.35), size = 5.5, color = c("white", "black"), family = "Roboto Condensed") +
  scale_fill_manual(values = c(blue_light, blue_dark)) +
  theme_void() +
  theme(legend.position = "none") +
  labs(title = "Importance Ratings") +
  coord_flip()


# create second dataset for plotting relative importance
data.frame(category = c("Priority of Content over Design", ""),
           priority = c(mean(d$relative), 100 - mean(d$relative))) -> plot_data2
# create plot (relative importance)
p2 <- ggplot(plot_data2, aes(x = "", y = priority, fill = category)) +
  geom_bar(stat = "identity", width = .5, position = "fill") +
  geom_text(aes(label = c(round(priority, 2)[1], "")), position = position_fill(vjust = 0.785), size = 5.5, color = "white", family = "Roboto Condensed") +
  geom_text(aes(label = category), position = position_fill(vjust = 0.385), size = 5.5, color = "white", family = "Roboto Condensed") +
  scale_fill_manual(values = c("gray90", blue_main)) +
  theme_void() +  
  theme(legend.position = "none") +
  labs(title = "Relative Importance") +
  coord_flip()

# combine plots (needs package patchwork loaded)
p1 / p2 + plot_layout(guides = 'collect') +
  plot_annotation(
    caption = paste0("Data:\nN = ",
                     nrow(d),
                     " VCs and BAs rated how important content quality and visual design are for their initial evaluation\n", 
                     "(scale 1–7). They were also asked about the relative importance of content over design (scale 0–100).")
) & theme(
  plot.title = element_text(hjust = .055, size = 18, family = "Roboto Condensed", face = "bold", margin = margin(t = 18, r = 0, b = -35, l = 0)),
  plot.subtitle = element_text(size = 14, family = "Roboto Condensed"),
  plot.caption = element_text(size = 12, hjust= 0, family = "Roboto Condensed", margin = margin(t = -10, r = 0, b = 0, l = 38)),
  aspect.ratio = 0.2
)
Figure 1: Survey results about the importance of content quality and visual design for investors’ initial evaluation
Source Code
---
title: "VC and BA Survey"
subtitle: "Replication Report"
authors:
  - name: "*blinded for review*"
    affiliations:
      - name: "*blinded for review*"
number-sections: true
format:
  html:
    theme: journal
    toc: true
    code-fold: true
    code-tools:
      source: true
    code-line-numbers: true
    embed-resources: true
    self-contained-math: true
---

<!--
# Last update: 09-12-2025
# Author: <blinded for review>
-->

# Introduction

To investigate investors' perceptions of visual design, we conducted a survey with 188 venture capitalists (VCs) and business angels (BAs). They were first asked to independently assess the importance of content quality and visual design. Subsequently, they were required to directly compare the relative importance of the two factors.

In what follows, we will shortly describe the results of the survey. As this report is dynamically created with R and Quarto, we also report all code. However, for readability, code is hidden by default and only the relevant results are shown. You can expand individual code blocks by clicking on them, or use the <kbd></> Code</kbd> button (top-right) to reveal all code or view the complete source.

```{r}
#| label: setup
#| warning: false
#| message: false

# setup
library(dplyr)
library(ggplot2)
library(patchwork)
library(knitr)
library(kableExtra)
# further packages that are loaded on demand are:
# - here
# - readr

# set option to disable showing the column types when loading data with `readr`
options("readr.show_col_types" = FALSE)
```

# Data

We asked all investors the following three questions regarding the importance of content quality and visual design: 

- **Importance of content**: *From your experience, how important is the quality of the content for your initial decision when evaluating a startup pitch deck?*  (scale from 1 = not important to 7 = extremely important)
- **Importance of design**: *From your experience, how important is the visual design for your initial decision when evaluating a startup pitch deck?* (scale from 1 = not important to 7 = extremely important)
- **Relative importance**: *Which aspect is more important for your initial decision when evaluating a pitch deck?* (slider from 0–100; left anchor: visual design is more important, right anchor: quality of content is more important; default at mid-point)

Note that in this report, we load the de-identified and anonmyzed dataset. Please consult the [online repository](https://researchbox.org/1836&PEER_REVIEW_passcode=NKVZFU) for the code that processed the raw data.

```{r}
#| label: load data
#| warning: false
#| message: false
#| results: 'hide'

data_dir <- 'replication_reports/data'

# -----------------------------------------------------------------------------
#
# Getting and preparing the datasets
d <- readr::read_csv(here::here(data_dir, 'Survey.csv'))

# make variable names more coding friendly and easier to understand
d <- d |>
  rename(duration_study = `Duration (in seconds)`,
         relative = relative_1,
         investment_experience = inv_exp,
         gender = `gender `
         )

# convert gender to factor
d$gender <- factor(d$gender)
```


# Descriptives

@tbl-obs gives a demographic overview of the dataset, and the importance ratings are shown in @tbl-importance.

```{r}
#| label: tbl-obs
#| tbl-cap: Demographic overview of survey data
#| warning: false

d |> 
  summarize(N = n(),
            Age = round(mean(age, na.rm = T), 1),
            `% Female`= round(prop.table(table(gender))["Female"]*100, 1),
            `Years Invest. Exp.` = round(mean(d$investment_experience), 1)
            ) |> kbl(align = rep('c', 4))
```

```{r}
#| label: tbl-importance
#| tbl-cap: Importance ratings for content quality, visual design, and their relative tradeoff
#| warning: false

d |> summarize(N = n(), Mean = mean(content), SD = sd(content), Min = min(content), Max = max(content)) -> imp_content
d |> summarize(N = n(), Mean = mean(design), SD = sd(design), Min = min(design), Max = max(design)) -> imp_design
d |> summarize(N = n(), Mean = mean(relative), SD = sd(relative), Min = min(relative), Max = max(relative)) -> imp_relative

bind_rows(imp_content, imp_design, imp_relative, .id = "Outcome") -> res_importance
res_importance$Outcome <- c("Content", "Design", "Relative")

res_importance |> kbl(digits = 2, format.args = list(decimal.mark = ".", big.mark = ",")) |> kable_styling()
```

When asked to rate the importance of content quality and visual design independently, the VCs and BAs rated their importance similarly high (content quality: M = `r round(mean(d$content), 2)`, SD = `r round(sd(d$content), 2)`; visual design: M = `r round(mean(d$design), 2)`, SD = `r round(sd(d$design), 2)`).
However, when forced to make a direct comparison of the relative importance, the investors rated content to be about `r round(mean(d$relative)/(100-mean(d$relative)), 0)` times more important than design 
(`r round(mean(d$relative), 2)`% vs. `r 100-round(mean(d$relative), 2)`%; SD = `r round(sd(d$relative), 2)`).

# Plot

@fig-survey summarizes the results of the survey.

```{r}
#| label: fig-survey
#| fig-cap: Survey results about the importance of content quality and visual design for investors’ initial evaluation
#| fig-width: 12
#| fig-asp: .75
#| out-width: 100%
#| warning: false

# define colors
blue_main <- "#297FB8"
blue_dark <- "#2D3E50"
blue_light <- "#A0ABBF"

# create new dataset for plotting which has transformed means that add up to 100
# (to be used in a stacked bar plot)

# calculate means
d |> summarise(mean_content = mean(content), mean_design = mean(design)) -> means
# transform means
means |> mutate(mean_content_100 = mean_content / (mean_content + mean_design) * 100,
                mean_design_100 = mean_design / (mean_content + mean_design) * 100) -> means
# reshape data for plotting
data.frame(category = factor(c("Content Quality", "Visual Design")),
           importance = c(means$mean_content_100, means$mean_design_100),
           importance_raw = c(means$mean_content, means$mean_design)) -> plot_data
# change reference level of category
plot_data$category <- relevel(plot_data$category, ref = "Visual Design")

# create plot (importance ratings of content and design)
p1 <- ggplot(plot_data, aes(x = "", y = importance_raw, fill = category)) +
  geom_bar(stat = "identity", width = .5, position = "fill") +
  geom_text(aes(label = round(importance_raw, 2)), position = position_fill(vjust = 0.75), size = 5.5, color = c("white", "black"), family = "Roboto Condensed") +
  geom_text(aes(label = category), position = position_fill(vjust = 0.35), size = 5.5, color = c("white", "black"), family = "Roboto Condensed") +
  scale_fill_manual(values = c(blue_light, blue_dark)) +
  theme_void() +
  theme(legend.position = "none") +
  labs(title = "Importance Ratings") +
  coord_flip()


# create second dataset for plotting relative importance
data.frame(category = c("Priority of Content over Design", ""),
           priority = c(mean(d$relative), 100 - mean(d$relative))) -> plot_data2
# create plot (relative importance)
p2 <- ggplot(plot_data2, aes(x = "", y = priority, fill = category)) +
  geom_bar(stat = "identity", width = .5, position = "fill") +
  geom_text(aes(label = c(round(priority, 2)[1], "")), position = position_fill(vjust = 0.785), size = 5.5, color = "white", family = "Roboto Condensed") +
  geom_text(aes(label = category), position = position_fill(vjust = 0.385), size = 5.5, color = "white", family = "Roboto Condensed") +
  scale_fill_manual(values = c("gray90", blue_main)) +
  theme_void() +  
  theme(legend.position = "none") +
  labs(title = "Relative Importance") +
  coord_flip()

# combine plots (needs package patchwork loaded)
p1 / p2 + plot_layout(guides = 'collect') +
  plot_annotation(
    caption = paste0("Data:\nN = ",
                     nrow(d),
                     " VCs and BAs rated how important content quality and visual design are for their initial evaluation\n", 
                     "(scale 1–7). They were also asked about the relative importance of content over design (scale 0–100).")
) & theme(
  plot.title = element_text(hjust = .055, size = 18, family = "Roboto Condensed", face = "bold", margin = margin(t = 18, r = 0, b = -35, l = 0)),
  plot.subtitle = element_text(size = 14, family = "Roboto Condensed"),
  plot.caption = element_text(size = 12, hjust= 0, family = "Roboto Condensed", margin = margin(t = -10, r = 0, b = 0, l = 38)),
  aspect.ratio = 0.2
)
```

Copyright © 2025, author names blinded for review