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

1library(shiny)
2library(argonR)
3library(argonDash)
4library(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".

1source("sidebar.R")
2source("keyStatsTab.R")
3source("retentionTab.R")
4
5shiny::shinyApp(
6  ui = argonDashPage(
7    title = "Tytuł",
8    author = "Twoje Imię",
9    description = "Twój Opis",
10    sidebar = argonSidebar,
11    body = argonDashBody(
12      argonTabItems(
13        keyStatsTab,
14        retentionTab
15      )
16    )
17  ),
18  server = function(input, output) {}
19)

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:

1argonSidebar <- argonDashSidebar(
2  vertical = TRUE,
3  skin = "light",
4  background = "white",
5  size = "md",
6  side = "left",
7  id = "my_sidebar",
8  brand_url = "Adres Twojej Strony Internetowej",
9  brand_logo = "Twoje Logo",
10  dropdownMenus = argonDropNav(
11    title = "Dropdown Menu", 
12    src = "Twoje Logo", 
13    orientation = "right",
14    argonDropNavTitle(title = "Welcome!"),
15    argonDropNavItem(
16      title = "Item 1", 
17      src = "https://www.google.com", 
18      icon = argonIcon("single-02")
19    ),
20    argonDropNavItem(
21      title = "Item 2", 
22      src = NULL, 
23      icon = argonIcon("settings-gear-65")
24    ),
25    argonDropNavDivider(),
26    argonDropNavItem(
27      title = "Item 3", 
28      src = "#", 
29      icon = argonIcon("calendar-grid-58")
30    )
31  ),
32  argonSidebarMenu(
33    argonSidebarItem(
34      tabName = "keyStats",
35      icon = argonIcon(name = "spaceship", color = "info"),
36      "Key Stats"
37    ),
38    argonSidebarItem(
39      tabName = "retention",
40      icon = argonIcon(name = "watch-time", color = "green"),
41      "Retention"
42    )
43  )
44)

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:

1keyStatsTab <- argonTabItem(
2  tabName = "keyStats",
3  # info cards
4  argonH1("Key Stats", display = 4),
5  argonRow(
6    argonInfoCard(
7      value = "350,897", 
8      title = "WEB TRAFFIC", 
9      stat = 3890, 
10      stat_icon = icon("arrow-up"),
11      description = "Since last month", 
12      icon = argonIcon("planet"), 
13      icon_background = "green",
14      hover_lift = TRUE
15    ),
16    argonInfoCard(
17      value = "32,356", 
18      title = "NEW USERS", 
19      stat = -61, 
20      stat_icon = icon("arrow-down"),
21      description = "Since last week", 
22      icon = icon("trophy"), 
23      icon_background = "yellow",
24      shadow = TRUE
25    ),
26    argonInfoCard(
27      value = "294,321", 
28      title = "Total Subs", 
29      stat = 115, 
30      stat_icon = icon("arrow-up"),
31      description = "Since yesterday", 
32      icon = icon("users"), 
33      icon_background = "green",
34      background_color = "default"
35    ),
36    argonInfoCard(
37      value = "49,65%", 
38      title = "Annual vs Monthly Subs", 
39      stat = 2.13, 
40      stat_icon = icon("arrow-up"),
41      description = "% on annual sub since last month", 
42      icon = icon("percent"), 
43      icon_background = "info",
44      gradient = TRUE,
45      background_color = "orange",
46      hover_lift = TRUE
47    )
48  ),
49  br(), br(),
50  argonTable(
51    cardWrap = TRUE,
52    headTitles = c(
53      "Metric",
54      "January",
55      "February",
56      "March",
57      "April",
58      "May",
59      "June"
60    ),
61    argonTableItems(
62      argonTableItem("MRR"),
63      argonTableItem(dataCell = TRUE, "$225,500"),
64      argonTableItem(dataCell = TRUE, "$245,500"),
65      argonTableItem(dataCell = TRUE, "$275,500"),
66      argonTableItem(dataCell = TRUE, "$295,500"),
67      argonTableItem(dataCell = TRUE, "$325,500"),
68      argonTableItem(dataCell = TRUE, "$425,500")
69    )
70  )
71)

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:

Przeczytaj także

Ikona kalendarza

23 kwiecień

Chatbot w e-commerce: Jak stworzyć narzędzie, które rozumie klientów?

Odkryj, jak chatboty AI rewolucjonizują e-commerce, wspierając zakupy i komunikację z klientami dzięki zaawansowanym algorytmom i int...

Ikona kalendarza

18 kwiecień

400 mln złotych na dostępność uczelni: Jak skorzystać ze środków FERS?

Uczelnie w Polsce mogą uzyskać do 97% wsparcia finansowego z Funduszy Europejskich dla Rozwoju Społecznego, eliminując bariery dla os...

Ikona kalendarza

28 marzec

Akcja RABATKA - Poznaj wiosenną promocję!

Trwa tegoroczna wiosenna promocja: Akcja RABATKA, dzięki której możesz zaoszczędzić na szkoleniach otwartych z naszej autorskiej ofer...