Investor Data Room - analiza danych startupu w R Shiny

Piotr Sidoruk
Ikona kalendarza
17 maja 2023

Czym jest Investor Data Room?

Data Room to narzędzie służące do udostępniania kluczowych informacji o firmie, których potrzebują inwestorzy lub potencjalni partnerzy biznesowi. Jest to przestrzeń, w której zgromadzone są metryki oraz dokumenty dotyczące działalności startupu. Data Room może zawierać dokumenty finansowe, umowy z klientami i dostawcami, wizję i strategię rozwoju, dane o produktach i usługach oraz informacje o zespole zarządzającym. Dzięki temu inwestorzy mogą szybciej i łatwiej ocenić potencjał biznesowy startupu i podjąć decyzję o inwestycji. Data Room jest zwykle zabezpieczony hasłem i dostęp do niego ma tylko wybrane grono osób, które otrzymały zaproszenie do udziału w procesie inwestycyjnym. Ważne jest również, aby dokumenty były uporządkowane i łatwe do znalezienia, aby osoby korzystające z Data Room mogły szybko znaleźć potrzebne informacje.

Jakie metryki warto przedstawić inwestorom?

W Data Room powinny znaleźć się metryki, które pomogą potencjalnym inwestorom w dokładnej ocenie wartości i perspektyw rozwoju firmy. Warto uwzględnić: Wskaźniki finansowe: Takie jak rachunki zysków i strat, bilans finansowy, przepływ pieniężny i inne raporty finansowe, które zapewniają pełny obraz wyników finansowych firmy. KPI: Metryki przedstawiające postępy i wzrost firmy, takie jak wzrost przychodów, koszt pozyskiwania klienta, retencja klientów i LTV. Analiza rynku i badań: Informacje o wielkości rynku, konkurencji i grupie docelowej firmy. Metryki operacyjne: Takie jak koszty produkcji, rotacja zapasów i zarządzanie łańcuchem dostaw. Metryki zasobów ludzkich: Takie jak rotacja pracowników i plany wynagradzania. Dokumenty prawne: Takie jak statut, regulaminy i wszelkie umowy prawne, do których firma przystąpiła.

Jakich metryk nie warto przedstawiać?

Należy unikać metryk próżności. Są to statystyki pozornie imponujące i zachęcające, ale w rzeczywistości nie odzwierciedlają faktycznego sukcesu firmy. Niektóre z takich metryk to:

  1. Liczba użytkowników: To popularna metryka, która nie zawsze odzwierciedla wartość i zaangażowanie użytkowników. Liczba użytkowników może być napompowana przez fałszywe konta, nieaktywnych użytkowników lub użytkowników, którzy korzystają z darmowej wersji produktu, ale nie przekładają się na przychody firmy. Lepiej skupić się na analizie użytkowników, którzy są płatnymi subskrybentami czy też na liczbie użytkowników, którzy są faktycznie zaangażowani i regularnie korzystają z kluczowej funkcjonalności produktu.
  2. Liczba pobrań aplikacji: Podobnie jak w przypadku liczby użytkowników, ilość pobrań może być myląca, ponieważ nie każdy, kto pobiera aplikację, z niej korzysta. Dodatkowo ta metryka nie mówi nic o przychodach, jakie generuje aplikacja.
  3. Czas spędzony na stronie: Wysoki czas spędzony na stronie może wydawać się zachęcający, ale w rzeczywistości nie mówi nic o tym, czy użytkownicy wykonują pożądane przez firmę akcje, takie jak zakup produktu lub rejestracja na stronie.
  4. Statystyki dotyczące mediów społecznościowych: Liczba polubień, udostępnień i komentarzy na stronie firmy na portalach społecznościowych może wydawać się imponująca, ale w rzeczywistości nie przekłada się na przychody ani na wartość marki.
  5. Liczba wyświetleń: Ta metryka może być myląca, ponieważ nie mówi nic o tym, czy użytkownicy przeszli do konkretnej akcji na stronie, taka jak rejestracja, pobranie e-booka, dokonanie zakupu czy wypełnienie formularza kontaktowego.

Przygotowując Data Room, warto skupić się na metrykach, które rzeczywiście odzwierciedlają wartość firmy i pozwalają na ocenę jej potencjału do generowania przyszłych zysków i wzrostu.

Dlaczego Data Storytelling jest ważny?

W Data Room warto nadać kontekst danym i zbudować odpowiednią narrację, ponieważ ułatwia to zrozumienie prezentowanych informacji i pozwala na szybsze i bardziej trafne wnioskowanie. Dane bez kontekstu mogą być trudne do zrozumienia i interpretacji, a jedynie pokazanie kilku liczb i wykresów niekoniecznie dostarczy inwestorom wyczerpującej wiedzy o biznesie. Z kolei odpowiedni data storytelling pozwala na pokazanie inwestorom, jak dana firma osiąga swoje cele biznesowe, jakie ma wyzwania i jak zamierza je przekuć w sukces. Dzięki temu inwestorzy mogą łatwiej zrozumieć, w jaki sposób dany startup działa, jakie ma cele i jakie wyzwania przed nim stoją. Pomaga to również w budowaniu pozytywnego wizerunku firmy i przekonywaniu inwestorów o jej potencjale. Zmienności w danych startupu powinny być objaśnione. Jeśli wprowadziliśmy do naszego produktu funkcjonalność, która przyczyniła się do wzrostu sprzedaży czy zaangażowania użytkowników, to dobrze jest o tym opowiedzieć. W ten sposób pokażemy sprawczość naszych inicjatyw i sukcesy, jakie osiągnęliśmy. Jeśli w statystykach widoczne są spadki, to dobrze jest pokazać, że firma rozumie, dlaczego one wystąpiły. Mogą wynikać choćby z sezonowości charakterystycznej dla naszego produktu. Dobrze jest takie czynniki podkreślić. Nawet jeśli wydają się oczywiste dla osób zarządzających firmą. Dla potencjalnych inwestorów nie muszą być oczywiste.

Czy można szybko zbudować Data Room własnego startupu przy pomocy języka programowania R i biblioteki Shiny?

Tak, jest możliwe zbudowanie własnego Data Room przy użyciu języka programowania R oraz biblioteki Shiny. Shiny to narzędzie, które umożliwia tworzenie interaktywnych aplikacji w języku R, dzięki czemu można zbudować intuicyjny i łatwy w użyciu interfejs. Aby zbudować własny Data Room przy użyciu Shiny, należy najpierw utworzyć odpowiednie połączenia z bazami danych, z których będą pobierane i przetwarzane dane. Dla uproszczenia, w niniejszym artykule, przykładowe dane będą podane bezpośrednio w kodzie. W zależności od potrzeb firmy przygotowującej Data Room, można bezpośrednio połączyć się z bazą danych, czy też wczytać wyeksportowane dane w postaci pliku CSV. Istnieje wiele bibliotek, które to umożliwiają. Następnie można utworzyć aplikację Shiny, która będzie wyświetlała wybrane metryki i informacje o firmie, takie jak rachunki zysków i strat, bilans finansowy, informacje o inwestorach i inne ważne informacje. W Shiny można również dodać różne narzędzia, takie jak filtry, wykresy, tabelki i inne elementy, które ułatwiają wizualizację i analizę danych. Po zbudowaniu aplikacji można ją udostępnić potencjalnym inwestorom za pomocą zabezpieczonego logowania lub innych narzędzi kontroli dostępu.

Investor Data Room w R Shiny - przykład

Na mojej stronie internetowej www.startupdataguy.com znajdziesz przykład, który może posłużyć jako inspiracja dla stworzenia własnej aplikacji. Startup Investor Data Room składa się z dwóch zakładek. Pierwsza przedstawia najważniejsze z punktu widzenia danego startupu metryki.

Sages-Blog-Banery-1199x250-KZ-

Druga zakładka przedstawia kohorty retencyjne oraz objaśnienia budujące narrację - wyjaśniające zmienności danych przedstawiające wnioski z analizy oraz plan firmy na polepszenie sytuacji.

Sages-Blog-Banery-1199x250-KZ-

Biblioteki przydatne w budowie aplikacji

library(shiny)
library(argonR)
library(argonDash)
library(magrittr)

Przykładowa aplikacja składa się z czterech skryptów:

app.R

Ten skrypt tworzy interaktywną aplikację za pomocą biblioteki Shiny w języku R. Tu definiujemy nazwę aplikacji oraz jej opis. W tym miejscu możemy zaimportować biblioteki, jakie będą potrzebne w aplikacji. W tym przykładzie zdefiniowane są trzy źródła: "sidebar.R", "keyStatsTab.R", "retentionTab.R". Plik "sidebar.R" definiuje pasek boczny, "keyStatsTab.R" definiuje pierwszą kartę, a "retentionTab.R" drugą. Aplikacja jest tworzona za pomocą funkcji "shinyApp", która składa się z dwóch argumentów. Pierwszym argumentem jest interfejs użytkownika, który jest definiowany za pomocą funkcji "argonDashPage", a drugim argumentem jest serwer, który jest definiowany za pomocą funkcji "server". Interfejs użytkownika składa się z tytułu opisu, paska bocznego oraz dwóch kart. Pierwsza karta zawiera elementy zdefiniowane w pliku "keyStatsTab.R", a druga karta zawiera elementy zdefiniowane w pliku "retentionTab.R".

source("sidebar.R")
source("keyStatsTab.R")
source("retentionTab.R")

shiny::shinyApp(
  ui = argonDashPage(
    title = "Tytuł",
    author = "Twoje Imię",
    description = "Twój Opis",
    sidebar = argonSidebar,
    body = argonDashBody(
      argonTabItems(
        keyStatsTab,
        retentionTab
      )
    )
  ),
  server = function(input, output) {}
)

sidebar.R

Plik "sidebar.R" definiuje pasek boczny, w którym mamy menu, gdzie znajdują zakładki "keyStats" i "retention". Skrypt może wyglądać podobnie do tego:

argonSidebar <- argonDashSidebar(
  vertical = TRUE,
  skin = "light",
  background = "white",
  size = "md",
  side = "left",
  id = "my_sidebar",
  brand_url = "Adres Twojej Strony Internetowej",
  brand_logo = "Twoje Logo",
  dropdownMenus = argonDropNav(
    title = "Dropdown Menu", 
    src = "Twoje Logo", 
    orientation = "right",
    argonDropNavTitle(title = "Welcome!"),
    argonDropNavItem(
      title = "Item 1", 
      src = "https://www.google.com", 
      icon = argonIcon("single-02")
    ),
    argonDropNavItem(
      title = "Item 2", 
      src = NULL, 
      icon = argonIcon("settings-gear-65")
    ),
    argonDropNavDivider(),
    argonDropNavItem(
      title = "Item 3", 
      src = "#", 
      icon = argonIcon("calendar-grid-58")
    )
  ),
  argonSidebarMenu(
    argonSidebarItem(
      tabName = "keyStats",
      icon = argonIcon(name = "spaceship", color = "info"),
      "Key Stats"
    ),
    argonSidebarItem(
      tabName = "retention",
      icon = argonIcon(name = "watch-time", color = "green"),
      "Retention"
    )
  )
)

keyStatsTab.R

Ten skrypt tworzy zakładkę "Key Stats" w aplikacji, zawierającą kilka kart z metrykami biznesowymi oraz tabelę z danymi dotyczącymi przychodów, subskrypcji i ruchu na stronie internetowej. Na kartach wykorzystane są elementy graficzne, takie jak ikony, aby łatwiej wizualizować zmiany w poszczególnych metrykach. W tabeli przedstawione są dane dotyczące przychodów, subskrypcji i innych metryk biznesowych dla każdego miesiąca, co umożliwia łatwe śledzenie zmian w czasie. Przykład w jaki można napisać taki skrypt:

keyStatsTab <- argonTabItem(
  tabName = "keyStats",
  # info cards
  argonH1("Key Stats", display = 4),
  argonRow(
    argonInfoCard(
      value = "350,897", 
      title = "WEB TRAFFIC", 
      stat = 3890, 
      stat_icon = icon("arrow-up"),
      description = "Since last month", 
      icon = argonIcon("planet"), 
      icon_background = "green",
      hover_lift = TRUE
    ),
    argonInfoCard(
      value = "32,356", 
      title = "NEW USERS", 
      stat = -61, 
      stat_icon = icon("arrow-down"),
      description = "Since last week", 
      icon = icon("trophy"), 
      icon_background = "yellow",
      shadow = TRUE
    ),
    argonInfoCard(
      value = "294,321", 
      title = "Total Subs", 
      stat = 115, 
      stat_icon = icon("arrow-up"),
      description = "Since yesterday", 
      icon = icon("users"), 
      icon_background = "green",
      background_color = "default"
    ),
    argonInfoCard(
      value = "49,65%", 
      title = "Annual vs Monthly Subs", 
      stat = 2.13, 
      stat_icon = icon("arrow-up"),
      description = "% on annual sub since last month", 
      icon = icon("percent"), 
      icon_background = "info",
      gradient = TRUE,
      background_color = "orange",
      hover_lift = TRUE
    )
  ),
  br(), br(),
  argonTable(
    cardWrap = TRUE,
    headTitles = c(
      "Metric",
      "January",
      "February",
      "March",
      "April",
      "May",
      "June"
    ),
    argonTableItems(
      argonTableItem("MRR"),
      argonTableItem(dataCell = TRUE, "$225,500"),
      argonTableItem(dataCell = TRUE, "$245,500"),
      argonTableItem(dataCell = TRUE, "$275,500"),
      argonTableItem(dataCell = TRUE, "$295,500"),
      argonTableItem(dataCell = TRUE, "$325,500"),
      argonTableItem(dataCell = TRUE, "$425,500")
    )
  )
)

retentionTab.R

Ten skrypt odpowiada za zawartość zakładki "Retention". Umożliwia analizę kohort retencyjnych dla różnych rodzajów subskrypcji oferowanych przez startup (subskrypcje miesięczne, roczne, wszystkie razem). Pod tabelą z kohortami retencyjnymi przedstawiono krótkie objaśnienia sytuacji firmy, pozwalające na zbudowanie narracji wokół danych retencji.

Dalsze kroki

W zależności od potrzeb biznesowych, profilu startupu i danych, które startup chciałby udostępnić inwestorom, aplikację można rozwinąć w różnych kierunkach. Oto kilka z nich:

  1. Dodanie mechanizmu logowania.
  2. Interaktywne wykresy.
  3. Dodatkowe metryki.
  4. Sekcja z załącznikami.
  5. Dodanie treści wideo budujących narrację.

Podsumowanie

Data Room to przydatne narzędzie, które może okazać się bardzo pomocne w procesie pozyskiwania finansowania startupu. Niewielkim wysiłkiem można zbudować własny Data Room przy wykorzystaniu języka programowania R oraz biblioteki Shiny. Oto szkolenia, które mogą Ci pomóc w budowie podobnych aplikacji:

  • Podstawy programowania w R
  • Nowoczesne przetwarzanie danych w R
  • Wizualizacja danych w R
  • Tworzenie aplikacji z R Shiny
  • Zaawansowane programowanie z R
  • Warsztat analityka danych w R
  • Raportowanie z wykorzystaniem R
  • Analiza danych w języku R

Przeczytaj także

Ikona kalendarza

19 kwiecień

Przegląd i porównanie algorytmów klasyfikacyjnych w Pythonie
Sztuczna inteligencja, w tym algorytmy oparte o głębokie sieci neuronowe stają się w ostatnim czasie coraz bardziej popularne. Genera...
Ikona kalendarza

23 marzec

5 istotnych kompetencji miękkich Scrum Mastera
Scrum – słowo, które ostatnimi czasy w IT jest odmieniane przez wszystkie przypadki. Można powiedzieć, że jest to jedno z najbardziej...
Ikona kalendarza

27 luty

Looker Studio z danymi z własnego API
Looker Studio powszechnie zwane Google Reports jest działającą w przeglądarce odpowiedzią Googla na potrzeby analityki biznesowej. Da...